数据结构图习题课案.docx
- 文档编号:1265848
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:29
- 大小:49.90KB
数据结构图习题课案.docx
《数据结构图习题课案.docx》由会员分享,可在线阅读,更多相关《数据结构图习题课案.docx(29页珍藏版)》请在冰豆网上搜索。
数据结构图习题课案
第8章图
8-1画出1个顶点、2个顶点、3个顶点、4个顶点和5个顶点的无向完全图。
试证明在n个顶点的无向完全图中,边的条数为n(n-1)/2。
【解答】
2个顶点的
无向完全图
1个顶点的
无向完全图
5个顶点的
无向完全图
4个顶点的
无向完全图
3个顶点的
无向完全图
【证明】
在有n个顶点的无向完全图中,每一个顶点都有一条边与其它某一顶点相连,所以每一个顶点有n-1条边与其他n-1个顶点相连,总计n个顶点有n(n-1)条边。
但在无向图中,顶点i到顶点j与顶点j到顶点i是同一条边,所以总共有n(n-1)/2条边。
D
A
8-2右边的有向图是强连通的吗?
请列出所有的简单路径。
E
B
【解答】
F
C
判断一个有向图是否强连通,要看从任一顶点出发是否能够回到该顶点。
右面的有向图做不到这一点,它不是强连通的有向图。
各个顶点自成强连通分量。
所谓简单路径是指该路径上没有重复的顶点。
从顶点A出发,到其他的各个顶点的简单路径有A→B,A→D→B,A→B→C,A→D→B→C,A→D,A→B→E,A→D→E,A→D→B→E,A→B→C→F→E,A→D→B→C→F→E,A→B→C→F,A→D→B→C→F。
从顶点B出发,到其他各个顶点的简单路径有B→C,B→C→F,B→E,B→C→F→E。
从顶点C出发,到其他各个顶点的简单路径有C→F,C→F→E。
从顶点D出发,到其他各个顶点的简单路径有D→B,D→B→C,D→B→C→F,D→E,D→B→E,D→B→C→F→E。
从顶点E出发,到其他各个顶点的简单路径无。
从顶点F出发,到其他各个顶点的简单路径有F→E。
8-3给出右图的邻接矩阵、邻接表和邻接多重表表示。
D
A
【解答】
(1)
邻接矩阵
E
B
F
C
(2)
∧
3
1
1A
2B
3C
4D
5E
6F
邻接表
∧
4
2
(出边表)
∧
5
∧
4
1
∧
∧
4
∧
1A
2B
3C
4D
5E
6F
(入边表)
∧
3
0
∧
1
∧
0
∧
5
3
1
∧
2
datafinfout
(3)邻接多重表(十字链表)
ijilinkjlink
01(A,B)
∧
1A
2B
3C
4D
5E
6F
∧
∧
03(A,D)
∧
∧
12(B,C)
14(B,E)
∧
∧
∧
25(C,F)
31(D,B)
34(D,E)
54(F,E)
∧
∧
8-4用邻接矩阵表示图时,若图中有1000个顶点,1000条边,则形成的邻接矩阵有多少矩阵元素?
有多少非零元素?
是否稀疏矩阵?
【解答】
一个图中有1000个顶点,其邻接矩阵中的矩阵元素有10002=1000000个。
它有1000个非零元素(对于有向图)或2000个非零元素(对于无向图),因此是稀疏矩阵。
8-5用邻接矩阵表示图时,矩阵元素的个数与顶点个数是否相关?
与边的条数是否相关?
【解答】
用邻接矩阵表示图,矩阵元素的个数是顶点个数的平方,与边的条数无关。
矩阵中非零元素的个数与边的条数有关。
8-6有n个顶点的无向连通图至少有多少条边?
有n个顶点的有向强连通图至少有多少条边?
试举例说明。
【解答】
n个顶点的无向连通图至少有n-1条边,n个顶点的有向强连通图至少有n条边。
例如:
特例情况是当n=1时,此时至少有0条边。
8-7对于有n个顶点的无向图,采用邻接矩阵表示,如何判断以下问题:
图中有多少条边?
任意两个顶点i和j之间是否有边相连?
任意一个顶点的度是多少?
【解答】
用邻接矩阵表示无向图时,因为是对称矩阵,对矩阵的上三角部分或下三角部分检测一遍,统计其中的非零元素个数,就是图中的边数。
如果邻接矩阵中A[i][j]不为零,说明顶点i与顶点j之间有边相连。
此外统计矩阵第i行或第i列的非零元素个数,就可得到顶点i的度数。
①
8-8对于如右图所示的有向图,试写出:
③
②
(1)从顶点①出发进行深度优先搜索所得到的深度优先生成树;
(2)从顶点②出发进行广度优先搜索所得到的广度优先生成树;
⑤
④
【解答】
(1)以顶点①为根的深度优先生成树(不唯一):
②③④⑤⑥
③
②
①
或
①
③
②
④
⑤
④
⑤
(2)以顶点②为根的广度优先生成树:
①
③
②
④
⑤
8-9试扩充深度优先搜索算法,在遍历图的过程中建立生成森林的左子女-右兄弟链表。
算法的首部为voidGraph:
:
DFS(constintv,intvisited[],TreeNode
(提示:
在继续按深度方向从根v的某一未访问过的邻接顶点w向下遍历之前,建立子女结点。
但需要判断是作为根的第一个子女还是作为其子女的右兄弟链入生成树。
)
【解答】
为建立生成森林,需要先给出建立生成树的算法,然后再在遍历图的过程中,通过一次次地调用这个算法,以建立生成森林。
template
:
DFS_Tree(constintv,intvisited[],TreeNode
//从图的顶点v出发,深度优先遍历图,建立以t(已在上层算法中建立)为根的生成树。
Visited[v]=1;intfirst=1;TreeNode
intw=GetFirstNeighbor(v);//取第一个邻接顶点
while(w!
=-1){//若邻接顶点存在
if(vosited[w]==0){//且该邻接结点未访问过
p=newTreeNode
if(first==1)//若根*t还未链入任一子女
{t->setFirstChild(p);first=0;}//新结点*p成为根*t的第一个子女
elseq->setNextSibling(p);//否则新结点*p成为*q的下一个兄弟
q=p;//指针q总指示兄弟链最后一个结点
DFS_Tree(w,visited,q);//从*q向下建立子树
}
w=GetNextNeighbor(v,w);//取顶点v排在邻接顶点w的下一个邻接顶点
}
}
下一个算法用于建立以左子女-右兄弟链表为存储表示的生成森林。
template
:
DFS_Forest(Tree
//从图的顶点v出发,深度优先遍历图,建立以左子女-右兄弟链表表示的生成森林T。
T.root=NULL;intn=NumberOfVertices();//顶点个数
TreeNode
int*visited=newint[n];//建立访问标记数组
for(intv=0;v for(v=0;v if(visited[v]==0){//若尚未访问过 p=newTreeNode if(T.root==NULL)T.root=p;//原来是空的生成森林,新结点成为根 elseq->setNextSibling(p);//否则新结点*p成为*q的下一个兄弟 q=p; DFS_Tree(v,visited,p);//建立以*p为根的生成树 } } 8-10用邻接表表示图时,顶点个数设为n,边的条数设为e,在邻接表上执行有关图的遍历操作时,时间代价是O(n*e)? 还是O(n+e)? 或者是O(max(n,e))? 【解答】 在邻接表上执行图的遍历操作时,需要对邻接表中所有的边链表中的结点访问一次,还需要对所有的顶点访问一次,所以时间代价是O(n+e)。 ⑧ ⑦ ⑨ 8-11右图是一个连通图,请画出 ② ⑥ ① ⑩ (1)以顶点①为根的深度优先生成树; ③ (2)如果有关节点,请找出所有的关节点。 (3) ④ ⑤ 如果想把该连通图变成重连通图,至少在图中加几条边? 如何加? 【解答】 (1)以顶点①为根的深度优先生成树: ⑧ ⑨ ⑦ ① ② ⑥ ⑩ ③ ⑤ ④ (2)关节点为①,②,③,⑦,⑧ (3)至少加四条边(1,10),(3,4),(4,5),(5,6)。 从③的子孙结点⑩到③的祖先结点①引一条边,从②的子孙结点④到根①的另一分支③引一条边,并将⑦的子孙结点⑤、⑥与结点④连结起来,可使其变为重连通图。 ⑨ ⑧ ⑦ ⑥ ② ① ⑩ ⑤ ④ ③ 8-12试证明在一个有n个顶点的完全图中,生成树的数目至少有2n-1-1。 【证明】略 7 11 10 7 ② ④ 5 ③ 8 ⑤ 6 ⑥ ① 9 8-13编写一个完整的程序,首先定义堆和并查集的结构类型和相关操作,再定义Kruskal求连通网络的最小生成树算法的实现。 并以右图为例,写出求解过程中堆、并查集和最小生成树的变化。 【解答】 求解过程的第一步是对所有的边,按其权值大小建堆: 345 127 127 127 2310 2310 249 2310 1311 1311 加(1,2),(1,3),(2,3) 249 1311 加(3,4) 加(2,4) 345 345 357 127 127 357 368 2310 249 1311 1311 2310 249 加(3,5) 加(3,6) 345 357 566 加(5,6) 368 2310 249 127 1311 求解过程中并查集与堆的变化: 127 ⑥ ④ 566 ③ 368 357 ⑤ ③ 357 127 ④ 2310 249 1311 选(5,6,6) 368 2310 249 1311 选(3,4,5) 368 ③ ① 357 ⑤ ③ ① 2310 368 249 2310 ⑥ ② ④ ⑥ ④ ② 1311 选(3,5,7) ⑤ 249 1311 选(1,2,7) 2310 ③ ① ③ 249
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图 习题