- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构[严蔚敏]7
V1到V2 :最短路径是{ 1, 2 } ,路径长度是4 ; V2到V0 :最短路径是{ 2, 0 } ,路径长度是5 ; V2到V1 :最短路径是{ 2, 0, 1 } ,路径长度是7 ; 算法实现 int A[MAX_VEX][MAX_VEX] ; int Path[MAX_VEX][MAX_VEX] ; void Floyd_path (AdjGraph *G) { int j, k, m ; for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) { A[j][k]=G-adj[j][k] ; Path[j][k]=-1 ; } /* 各数组的初始化 */ for ( m=0; mG-vexnum; m++) for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) if ((A[j][m]+A[m][k])A[j][k]) { A[j][k]=A[j][m]+A[m][k] ; Path[j][k]=k ; } /* 修改数组A和Path的元素值 */ for ( j=0; jG-vexnum; j++) for ( k=0; kG-vexnum; k++) if (j!=k) { printf(“%d到%d的最短路径为:\n”, j, k) ; printf(“%d ”,j) ; prn_pass(j, k) ; printf(“%d ”, k) ; printf(“最短路径长度为: %d\n”,A[j][k]) ; } } /* end of Floyd */ void prn_pass(int j , int k) { if (Path[j][k]!=-1) { prn_pass(j, Path[j][k]) ; printf(“, %d” , Path[j][k]) ; prn_pass(Path[j][k], k) ; } } 习 题 七 ⑴ 分析并回答下列问题: ① 图中顶点的度之和与边数之和的关系? ② 有向图中顶点的入度之和与出度之和的关系? ③ 具有n个顶点的无向图,至少应有多少条边才能确保是一个连通图? 若采用邻接矩阵表示,则该矩阵的大小是多少? ④ 具有n个顶点的有向图,至少应有多少条弧才能确保是强连通图的? 为什么? ⑵ 设一有向图G=(V,E),其中V={a,b,c,d,e} , E={a,b, a,d, b,a, c,b, c,d, d,e,e,a, e,b, e,c} ① 请画出该有向图,并求各顶点的入度和出度。 ② 分别画出有向图的正邻接链表和逆邻接链表。 ⑶ 对图7-27所示的带权无向图。 ① 写出相应的邻接矩阵表示。 ② 求出各顶点的度。 ⑷ 已知有向图的逆邻接链表如图7-28所示。 ① 画出该有向图。 ② 写出相应的邻接矩阵表示。 ③ 写出从顶点a开始的深度优先和广度优先遍历序列。 ④ 画出从顶点a开始的深度优先和广度优先生成树。 1 4 5 2 6 3 9 6 8 2 7 5 5 3 4 9 图7-27 带权无向图 图7-28 有向图的逆邻接链表 4 ? 0 2 0 4 ? 1 3 ? 2 2 ? 4 ? 3 MAX_VEX-1 0 1 2 3 4 v1 v2 v3 v4 v5 ┇ ┇ 图7-29 带权有向图 V2 V4 V5 V6 V1 10 10 15 4 30 6 10 15 5 20 V3 图7-30 带权有向图 a d e c f b 3 5 4 4 2 3 9 5 6 ⑸ 一个带权连通图的最小生成树是否唯一?在什么情况下可能不唯一? ⑹ 对于图7-27所示的带权无向图。 ① 按照Prime算法给出从顶点2开始构造最小生成树的过程。 ② 按照Kruskal算法给出最小生成树的过程。 ⑺ 已知带权有向图如图7-29所示,请利用Dijkstra算法从顶点V4出发到其余顶点的最短路径及长度,给出相应的求解步骤。 ⑻ 已知带权有向图如图7-30所示,请利用Floyd算法求出每对顶点之间的最短路径及路径长度。 ⑼ 一个AOV网用邻接矩阵表示,如图7-31。用拓扑排序求该AOV网的一个拓扑序列,给出相应的步骤。 ⑽ 拓扑排序的结果不是唯一的,请给出如图7-32所示的有向图的所有可能的拓扑序列。 ⑾ 请在深度优先搜索算法的基础上设计一个对有向无环图进行拓扑排序的算法。 ⑿ 设计一个算法利用图的遍历方法输出一个
原创力文档


文档评论(0)