最小生成树算法与最短路径算法的区别_第1页
最小生成树算法与最短路径算法的区别_第2页
最小生成树算法与最短路径算法的区别_第3页
最小生成树算法与最短路径算法的区别_第4页
最小生成树算法与最短路径算法的区别_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最小生成树算法与最短路径算法的区别一、引言

最小生成树(MinimumSpanningTree,MST)算法和最短路径(ShortestPath)算法是图论中两种重要的算法,它们在解决不同问题时有各自独特的应用场景和实现方式。尽管两者都与路径优化相关,但其目标、约束和适用范围存在显著差异。本篇文档将系统阐述这两种算法的区别,并通过条目式和分步骤的方式清晰呈现其核心概念和操作流程。

二、最小生成树算法

最小生成树算法旨在寻找一个无向、连通、权值最小的树,该树包含图中所有顶点且无环。其核心目标是优化网络结构的总权值,而非特定顶点间的最短距离。

(一)核心目标

1.连接所有顶点:确保生成的树覆盖图中所有节点。

2.无环结构:树中不存在重复边,形成一棵树状结构。

3.最小权值和:所有边的权值总和最小。

(二)典型应用场景

1.网络设计:如电话线、网络布线,需以最低成本连接所有节点。

2.聚类分析:将数据点以最小代价聚合为若干簇。

3.路径规划:在所有路径可选的情况下,构建覆盖范围最广的树状网络。

(三)常见算法实现

1.克鲁斯卡尔算法(Kruskal):

-步骤:

(1)将所有边按权值升序排序。

(2)从最小边开始,依次加入边,若加入后不形成环则保留。

(3)直至所有顶点连通。

2.普里姆算法(Prim):

-步骤:

(1)选择任意起始顶点,初始化树。

(2)在当前树与未连接顶点间找到最小权值边,扩展树。

(3)重复直至所有顶点连通。

三、最短路径算法

最短路径算法用于在加权图中寻找从单一源点或所有顶点对之间的最短路径,其关注点在于路径长度而非整体网络结构。

(一)核心目标

1.单源最短路径:从指定起点到所有其他顶点的最短路径。

2.全对最短路径:图中任意两顶点间的最短路径。

3.动态路径优化:根据边权动态调整路径选择。

(二)典型应用场景

1.交通导航:如地图应用中的路线规划。

2.网络路由:数据包传输的最优路径选择。

3.工程预算:任务分配的最小成本路径。

(三)常见算法实现

1.迪杰斯特拉算法(Dijkstra):

-步骤:

(1)初始化:将起点距离设为0,其他顶点设为无穷大。

(2)遍历相邻顶点,更新最短路径估计值。

(3)重复直至所有顶点被确定。

2.贝尔曼-福特算法(Bellman-Ford):

-步骤:

(1)初始化:同Dijkstra。

(2)对所有边进行V-1次松弛操作,更新路径。

(3)检测负权值环。

四、算法对比

(一)目标差异

1.最小生成树:全局优化,关注整个网络的总权值最小。

2.最短路径:局部优化,关注特定起点到目标点的路径长度最短。

(二)约束差异

1.最小生成树:必须形成一棵树(无环且连通)。

2.最短路径:允许形成链式或环状路径,但需满足权值最小。

(三)适用场景差异

|场景|最小生成树|最短路径|

|------------|----------------------------------|------------------------------------|

|数据规模|适用于稀疏图(边数远小于顶点数)|适用于稠密图或动态路径查询|

|动态性|静态网络优化|支持动态边权更新(如交通流量变化)|

|输出结果|一棵树(包含所有顶点)|路径列表或距离矩阵|

(四)时间复杂度差异

1.普里姆/Kruskal:O(ElogE)(排序开销较大)。

2.Dijkstra:O((V+E)logV)(适用于无负权图)。

3.Bellman-Ford:O(VE)(支持负权但较慢)。

五、结论

最小生成树算法和最短路径算法在图论中各有侧重:最小生成树适用于网络结构优化,而最短路径适用于单点或全局路径规划。在实际应用中,需根据问题需求选择合适的算法。例如,布线工程应优先考虑MST,而导航系统则依赖最短路径算法。理解二者差异有助于在特定场景下高效建模与求解。

一、引言

最小生成树(MinimumSpanningTree,MST)算法和最短路径(ShortestPath)算法是图论中两种基础且重要的算法,它们在解决不同问题时有各自独特的应用场景和实现方式。尽管两者都与路径优化相关,但其目标、约束和适用范围存在显著差异。本篇文档将系统阐述这两种算法的区别,并通过条目式和分步骤的方式清晰呈现其核心概念和操作流程。通过本篇文档,读者将能够理解两种算法的适用条件、实现细节及实际应用差异,为具体问题选择合适的算法提供理论依据。

二、最小生成树算法

最小生成树算法旨在寻找一个无向、连通、权值最小的树,该树包含图中所有顶点且无环。其核心目标是优化网络结构的总权值,而非特定顶点间的最短距离。

(一)核心目标与约束

1.目标:在保证所有顶点连通的前提下,使所有边的权值总和最小。

-数学表达:若图G=(V,E),边权为w(e),则寻找一棵树T,满足:

-T包含V中所有顶点。

-T中的边构成无环连通子图。

-Σw(e)|e属于T|最小。

2.约束:

-无环性:树中不能存在重复边或环结构。

-连通性:所有顶点必须通过树边相连,无孤立子图。

-唯一性:若存在多条等权重边,选择任意一条即可(如Kruskal算法中)。

(二)典型应用场景与实例

1.网络设计:

-电力网络布线:在多个居民区间铺设电线,需以最低成本连接所有区域。具体步骤如下:

(1)收集各区域间可能的连接线路及其成本。

(2)构建带权无向图,顶点代表区域,边权代表线路成本。

(3)应用MST算法(如Kruskal或Prim)选择总成本最低的线路组合。

-示例数据:假设有5个区域(A-E),连接成本如下表:

|边|成本|

|-----------|------|

|A-B|3|

|A-C|5|

|B-C|1|

|B-D|6|

|C-D|2|

|C-E|4|

|D-E|7|

-Kruskal算法执行结果:边(B-C,A-C,C-D,A-B,C-E),总成本=1+5+2+3+4=15。

2.聚类分析:

-在数据挖掘中,将相似度高的数据点以最小代价聚合为簇。例如,基因表达数据中,顶点为基因,边权为基因相似度,MST可发现基因簇。

3.设施布局:

-如消防站、医院选址,需覆盖最大区域且成本最低。顶点为区域,边权为建设成本,MST可提供覆盖性强的布局方案。

(三)常见算法实现

1.克鲁斯卡尔算法(Kruskal):

-适用场景:稀疏图(边数远少于顶点数),适合边集形式输入。

-步骤:

(1)排序:将所有边按权值升序排列。若存在多条等权重边,可任意顺序排列。

-示例:按上表排序为(B-C,A-C,C-D,A-B,C-E,D-E,B-D)。

(2)初始化:创建一个空集合MST,用于存储生成树中的边。

(3)遍历边集:依次取出每条边,检查其是否与MST中现有边形成环。

-检测方法:使用并查集(Union-Find)数据结构,判断两个顶点是否属于同一连通分量。

-若不形成环:将边加入MST,并合并其顶点所属的连通分量。

-若形成环:跳过该边,继续下一条。

(4)终止:当MST包含V-1条边时,算法结束。

-时间复杂度:O(ElogE),主要开销来自排序和并查集操作。

2.普里姆算法(Prim):

-适用场景:稠密图(边数接近顶点平方),适合邻接矩阵输入。

-步骤:

(1)初始化:

-选择任意起始顶点s,将其加入MST集合U,初始化距离数组dist(dist[v]=无穷大,dist[s]=0)。

-创建优先队列(最小堆)存储待扩展顶点,初始只包含s。

(2)循环扩展:

-从优先队列中取出距离最小的顶点u。

-若u已在U中,跳过;否则,将u加入U。

-遍历u的所有邻边(v,w),若v不在U中且w<dist[v],更新dist[v]=w,并将v加入优先队列。

(3)终止:当U包含所有顶点时,算法结束。

-时间复杂度:O(ElogV),若使用二叉堆实现优先队列。

三、最短路径算法

最短路径算法用于在加权图中寻找从单一源点或所有顶点对之间的最短路径,其关注点在于路径长度而非整体网络结构。

(一)核心目标与分类

1.目标:在带权图中寻找路径长度(权值之和)最短的路径。

-单源最短路径:从指定起点到所有其他顶点的最短路径。

-全对最短路径:图中任意两顶点间的最短路径。

2.分类:

-非负权值图:所有边权值≥0,如现实世界中的距离、成本。

-允许负权值图:边权值可为负,但需无负权值环(否则路径无限缩短)。

(二)典型应用场景与实例

1.交通导航:

-地图应用路线规划:用户输入起点和终点,系统返回最短(时间或距离)路径。

-输入:起点A,终点B,地图图G=(V,E),边权w(e)代表时间/距离。

-处理:应用Dijkstra算法计算A-B最短路径。

-输出:路径序列(如A→C→B)及总距离/时间。

-示例数据:

|边|权值(时间,距离)|

|-----------|-------------------|

|A-B|(10,5)|

|A-C|(3,2)|

|B-C|(1,1)|

|B-D|(5,4)|

|C-D|(2,2)|

-Dijkstra从A出发,最短路径A→C→B,总时间=3+1=4,距离=2+1=3。

2.网络路由:

-在互联网中,路由器通过最短路径算法选择数据包传输的最低延迟路径。

-边权可表示带宽、延迟或丢包率。

3.工程优化:

-如任务调度,顶点为任务,边权为任务依赖时间,最短路径可最小化总工期。

(三)常见算法实现

1.迪杰斯特拉算法(Dijkstra):

-适用场景:非负权值图,最常用算法。

-步骤:

(1)初始化:

-设置起点s,dist[s]=0,dist[v]=无穷大(v≠s)。

-创建优先队列(最小堆),初始包含(s,0)。

(2)循环更新:

-从优先队列中取出顶点u(dist[u]最小)。

-遍历u的所有邻边(v,w),若存在更短的路径:

-更新dist[v]=dist[u]+w。

-若v不在队列中,加入队列;否则,调整堆以反映新距离。

(3)终止:当优先队列为空时,算法结束。

-路径重建:通过保存每个顶点的前驱节点pre[v],可回溯得到最短路径。

-时间复杂度:O((V+E)logV),取决于优先队列实现。

2.贝尔曼-福特算法(Bellman-Ford):

-适用场景:允许负权值图,可检测负权值环。

-步骤:

(1)初始化:同Dijkstra。

(2)松弛操作:对边集进行V-1次迭代,每次更新所有边的最短路径估计:

-对于每条边(u,v),若dist[u]+w<dist[v],则更新dist[v]=dist[u]+w。

(3)负权值环检测:进行第V次迭代,若仍有更新,则图中存在负权值环。

-时间复杂度:O(VE),效率较低但功能更强。

四、算法对比

(一)目标差异

1.最小生成树:全局优化,关注整个网络的总权值最小。

-输出:一棵树(包含所有顶点)。

2.最短路径:局部优化,关注特定起点到目标点的路径长度最短。

-输出:路径序列或距离矩阵。

(二)约束差异

1.最小生成树:必须形成一棵树(无环且连通)。

-算法不关心路径长度,只关心覆盖范围。

2.最短路径:允许形成链式或环状路径,但需满足权值最小。

-算法需动态选择边以最小化当前路径长度。

(三)适用场景差异

|场景|最小生成树|最短路径|

|------------|----------------------------------|------------------------------------|

|数据规模|适用于稀疏图(边数远小于顶点数)|适用于稠密图或动态路径查询|

|动态性|静态网络优化|支持动态边权更新(如交通流量变化)|

|输出结果|一棵树(包含所有顶点)|路径列表或距离矩阵|

|边权类型|无需非负约束|非负权值图(Dijkstra);负权值图(Bellman-Ford)|

(四)时间复杂度差异

1.普里姆/Kruskal:

-Kruskal:O(ElogE)(排序开销较大)。

-Prim:O((V+E)logV)(邻接矩阵实现为O(V^2logV))。

2.Dijkstra:

-O((V+E)logV)(优先队列实现)。

-优化版(如堆优化):O(V^2)。

3.Bellman-Ford:

-O(VE)(支持负权但较慢)。

(五)关键操作差异

|算法|核心操作|适用数据结构|

|------------|----------------------------------|-------------------------------|

|Kruskal|并查集检测环,按权值排序边|并查集、链表|

|Prim|优先队列维护最小距离顶点|优先队列(最小堆)|

|Dijkstra|优先队列动态松弛最短路径估计|优先队列、距离数组|

|Bellman-Ford|双重迭代松弛所有边,检测负环|数组、队列(或循环数组)|

五、结论

最小生成树算法和最短路径算法在图论中各有侧重:最小生成树适用于网络结构优化,而最短路径适用于单点或全局路径规划。选择合适的算法需考虑以下因素:

1.问题需求:

-若需覆盖所有顶点的最小成本网络,选MST。

-若需特定起点到终点的最短路径,选最短路径算法。

2.图特性:

-稀疏图优先Kruskal,稠密图优先Prim。

-允许负权值时选Bellman-Ford。

3.实时性要求:

-动态路径查询需考虑算法动态性(如Dijkstra支持边权实时更新)。

通过本篇文档的对比分析,读者可更清晰地理解两种算法的适用边界,并在实际工程中高效建模与求解。

一、引言

最小生成树(MinimumSpanningTree,MST)算法和最短路径(ShortestPath)算法是图论中两种重要的算法,它们在解决不同问题时有各自独特的应用场景和实现方式。尽管两者都与路径优化相关,但其目标、约束和适用范围存在显著差异。本篇文档将系统阐述这两种算法的区别,并通过条目式和分步骤的方式清晰呈现其核心概念和操作流程。

二、最小生成树算法

最小生成树算法旨在寻找一个无向、连通、权值最小的树,该树包含图中所有顶点且无环。其核心目标是优化网络结构的总权值,而非特定顶点间的最短距离。

(一)核心目标

1.连接所有顶点:确保生成的树覆盖图中所有节点。

2.无环结构:树中不存在重复边,形成一棵树状结构。

3.最小权值和:所有边的权值总和最小。

(二)典型应用场景

1.网络设计:如电话线、网络布线,需以最低成本连接所有节点。

2.聚类分析:将数据点以最小代价聚合为若干簇。

3.路径规划:在所有路径可选的情况下,构建覆盖范围最广的树状网络。

(三)常见算法实现

1.克鲁斯卡尔算法(Kruskal):

-步骤:

(1)将所有边按权值升序排序。

(2)从最小边开始,依次加入边,若加入后不形成环则保留。

(3)直至所有顶点连通。

2.普里姆算法(Prim):

-步骤:

(1)选择任意起始顶点,初始化树。

(2)在当前树与未连接顶点间找到最小权值边,扩展树。

(3)重复直至所有顶点连通。

三、最短路径算法

最短路径算法用于在加权图中寻找从单一源点或所有顶点对之间的最短路径,其关注点在于路径长度而非整体网络结构。

(一)核心目标

1.单源最短路径:从指定起点到所有其他顶点的最短路径。

2.全对最短路径:图中任意两顶点间的最短路径。

3.动态路径优化:根据边权动态调整路径选择。

(二)典型应用场景

1.交通导航:如地图应用中的路线规划。

2.网络路由:数据包传输的最优路径选择。

3.工程预算:任务分配的最小成本路径。

(三)常见算法实现

1.迪杰斯特拉算法(Dijkstra):

-步骤:

(1)初始化:将起点距离设为0,其他顶点设为无穷大。

(2)遍历相邻顶点,更新最短路径估计值。

(3)重复直至所有顶点被确定。

2.贝尔曼-福特算法(Bellman-Ford):

-步骤:

(1)初始化:同Dijkstra。

(2)对所有边进行V-1次松弛操作,更新路径。

(3)检测负权值环。

四、算法对比

(一)目标差异

1.最小生成树:全局优化,关注整个网络的总权值最小。

2.最短路径:局部优化,关注特定起点到目标点的路径长度最短。

(二)约束差异

1.最小生成树:必须形成一棵树(无环且连通)。

2.最短路径:允许形成链式或环状路径,但需满足权值最小。

(三)适用场景差异

|场景|最小生成树|最短路径|

|------------|----------------------------------|------------------------------------|

|数据规模|适用于稀疏图(边数远小于顶点数)|适用于稠密图或动态路径查询|

|动态性|静态网络优化|支持动态边权更新(如交通流量变化)|

|输出结果|一棵树(包含所有顶点)|路径列表或距离矩阵|

(四)时间复杂度差异

1.普里姆/Kruskal:O(ElogE)(排序开销较大)。

2.Dijkstra:O((V+E)logV)(适用于无负权图)。

3.Bellman-Ford:O(VE)(支持负权但较慢)。

五、结论

最小生成树算法和最短路径算法在图论中各有侧重:最小生成树适用于网络结构优化,而最短路径适用于单点或全局路径规划。在实际应用中,需根据问题需求选择合适的算法。例如,布线工程应优先考虑MST,而导航系统则依赖最短路径算法。理解二者差异有助于在特定场景下高效建模与求解。

一、引言

最小生成树(MinimumSpanningTree,MST)算法和最短路径(ShortestPath)算法是图论中两种基础且重要的算法,它们在解决不同问题时有各自独特的应用场景和实现方式。尽管两者都与路径优化相关,但其目标、约束和适用范围存在显著差异。本篇文档将系统阐述这两种算法的区别,并通过条目式和分步骤的方式清晰呈现其核心概念和操作流程。通过本篇文档,读者将能够理解两种算法的适用条件、实现细节及实际应用差异,为具体问题选择合适的算法提供理论依据。

二、最小生成树算法

最小生成树算法旨在寻找一个无向、连通、权值最小的树,该树包含图中所有顶点且无环。其核心目标是优化网络结构的总权值,而非特定顶点间的最短距离。

(一)核心目标与约束

1.目标:在保证所有顶点连通的前提下,使所有边的权值总和最小。

-数学表达:若图G=(V,E),边权为w(e),则寻找一棵树T,满足:

-T包含V中所有顶点。

-T中的边构成无环连通子图。

-Σw(e)|e属于T|最小。

2.约束:

-无环性:树中不能存在重复边或环结构。

-连通性:所有顶点必须通过树边相连,无孤立子图。

-唯一性:若存在多条等权重边,选择任意一条即可(如Kruskal算法中)。

(二)典型应用场景与实例

1.网络设计:

-电力网络布线:在多个居民区间铺设电线,需以最低成本连接所有区域。具体步骤如下:

(1)收集各区域间可能的连接线路及其成本。

(2)构建带权无向图,顶点代表区域,边权代表线路成本。

(3)应用MST算法(如Kruskal或Prim)选择总成本最低的线路组合。

-示例数据:假设有5个区域(A-E),连接成本如下表:

|边|成本|

|-----------|------|

|A-B|3|

|A-C|5|

|B-C|1|

|B-D|6|

|C-D|2|

|C-E|4|

|D-E|7|

-Kruskal算法执行结果:边(B-C,A-C,C-D,A-B,C-E),总成本=1+5+2+3+4=15。

2.聚类分析:

-在数据挖掘中,将相似度高的数据点以最小代价聚合为簇。例如,基因表达数据中,顶点为基因,边权为基因相似度,MST可发现基因簇。

3.设施布局:

-如消防站、医院选址,需覆盖最大区域且成本最低。顶点为区域,边权为建设成本,MST可提供覆盖性强的布局方案。

(三)常见算法实现

1.克鲁斯卡尔算法(Kruskal):

-适用场景:稀疏图(边数远少于顶点数),适合边集形式输入。

-步骤:

(1)排序:将所有边按权值升序排列。若存在多条等权重边,可任意顺序排列。

-示例:按上表排序为(B-C,A-C,C-D,A-B,C-E,D-E,B-D)。

(2)初始化:创建一个空集合MST,用于存储生成树中的边。

(3)遍历边集:依次取出每条边,检查其是否与MST中现有边形成环。

-检测方法:使用并查集(Union-Find)数据结构,判断两个顶点是否属于同一连通分量。

-若不形成环:将边加入MST,并合并其顶点所属的连通分量。

-若形成环:跳过该边,继续下一条。

(4)终止:当MST包含V-1条边时,算法结束。

-时间复杂度:O(ElogE),主要开销来自排序和并查集操作。

2.普里姆算法(Prim):

-适用场景:稠密图(边数接近顶点平方),适合邻接矩阵输入。

-步骤:

(1)初始化:

-选择任意起始顶点s,将其加入MST集合U,初始化距离数组dist(dist[v]=无穷大,dist[s]=0)。

-创建优先队列(最小堆)存储待扩展顶点,初始只包含s。

(2)循环扩展:

-从优先队列中取出距离最小的顶点u。

-若u已在U中,跳过;否则,将u加入U。

-遍历u的所有邻边(v,w),若v不在U中且w<dist[v],更新dist[v]=w,并将v加入优先队列。

(3)终止:当U包含所有顶点时,算法结束。

-时间复杂度:O(ElogV),若使用二叉堆实现优先队列。

三、最短路径算法

最短路径算法用于在加权图中寻找从单一源点或所有顶点对之间的最短路径,其关注点在于路径长度而非整体网络结构。

(一)核心目标与分类

1.目标:在带权图中寻找路径长度(权值之和)最短的路径。

-单源最短路径:从指定起点到所有其他顶点的最短路径。

-全对最短路径:图中任意两顶点间的最短路径。

2.分类:

-非负权值图:所有边权值≥0,如现实世界中的距离、成本。

-允许负权值图:边权值可为负,但需无负权值环(否则路径无限缩短)。

(二)典型应用场景与实例

1.交通导航:

-地图应用路线规划:用户输入起点和终点,系统返回最短(时间或距离)路径。

-输入:起点A,终点B,地图图G=(V,E),边权w(e)代表时间/距离。

-处理:应用Dijkstra算法计算A-B最短路径。

-输出:路径序列(如A→C→B)及总距离/时间。

-示例数据:

|边|权值(时间,距离)|

|-----------|-------------------|

|A-B|(10,5)|

|A-C|(3,2)|

|B-C|(1,1)|

|B-D|(5,4)|

|C-D|(2,2)|

-Dijkstra从A出发,最短路径A→C→B,总时间=3+1=4,距离=2+1=3。

2.网络路由:

-在互联网中,路由器通过最短路径算法选择数据包传输的最低延迟路径。

-边权可表示带宽、延迟或丢包率。

3.工程优化:

-如任务调度,顶点为任务,边权为任务依赖时间,最短路径可最小化总工期。

(三)常见算法实现

1.迪杰斯特拉算法(Dijkstra):

-适用场景:非负权值图,最常用算法。

-步骤:

(1)初始化:

-设置起点s,dist[s]=0,dist[v]=无穷大(v≠s)。

-创建优先队列(最小堆),初始包含(s,0)。

(2)循环更新:

-从优先队列中取出顶点u(dist[u]最小)。

-遍历u的所有邻边(v,w),若存在更短的路径:

-更新dist[v]=dist[u]+w。

-若v不在队列中,加入队列;否则,调整堆以反映新距离。

(3)终止:当优先队列为空时,算法结束。

-路径重建:通过保存每个顶点的前驱节点pre[v],可回溯得到最短路径。

-时间复杂度:O((V+E)logV),取决于优先队列实现。

2.贝尔曼-福特算法(Bellman-Ford):

-适用场景:允许负权值图,可检测负权值环。

-步骤:

(1)初始化:同Dijkstra。

(2)松弛操作:对边集进行V-1次迭代,每次更新所有边的最短路径估计:

-对于每条边(u,v),若dist[u]+w<dist[v],则更新dist[v]=dist[u]+w。

(3)负权值环检测:进行第V次迭代,若仍有更新,则图中存在负权值环。

-时间复杂度:O(VE),效率较低但功能更强。

四、算法对比

(一)目标差异

1.最小生成树:全局优化,关注整个网络的总权值最小。

-输出:一棵树(包含所有顶点)。

2.最短路径:局部优化,关注特定起点到目标点的路径长度最短。

-输出:路径序列或距离矩阵。

(二)约束差异

1.最小生成树:必须形成一棵树(无环且连通)。

-算法不关心路径长度,只关心覆盖范围。

2.最短路径:允许形成链式或环状路径,但需满足权值最小。

-算法需动态选择边以最小化当前路径长度。

(三)适用场景差

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论