- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对下面所示无向图,请列出从顶点A出发的深度优先搜索遍历序列
预习内容和重点
无向图及有向图的邻接矩阵和邻接表存储结构(能画出并理解构建算法)
图的两种遍历方法(能根据要求写出遍历序列,掌握遍历算法)
连通图的最小生成树(能说出两种求最小生成树的算法思想,会写出两种求最小生成树的生成过程、理解Prim算法)
回答问题1
如下所示为一带权有向图,写出其邻接矩阵、邻接表和十字链表。
回答问题2
如何构建邻接表?请写出其构建算法。
对下面所示无向图G7,从顶点1出发的深度优先搜索遍历序列可有多种,请至少列举出三种;请列出从顶点3出发的深度优先搜索遍历序列(至少两种) 。
回答问题3
回答问题4
对下面所示无向图,请列出从顶点A出发的深度优先搜索遍历序列。
回答问题5
对下面所示有向图,请分别列出从顶点A和顶点B出发的深度优先搜索遍历序列。
回答问题6
图采用邻接矩阵存储表示,请分别写出从顶点1和顶点3出发的深度优先搜索序列。
回答问题7
图采用邻接表存储表示,请分别写出从顶点1和顶点3出发的深度优先搜索序列。
回答问题8
图采用邻接表存储表示,请分别写出从顶点V0出发的深度优先搜索序列。
回答问题9
下面是图的深度优先搜索算法,请解释其含义。
Boolean visited[MAX];
Status (*visitfunc)(int v);
void DFSTraverse(Graph G, Status (*Visit)(int v))
{ VisitFunc = Visit;
for (v=0; vG.vexnum; ++v)
visited[v] = FALSE;
for (v=0; vG.vexnum; ++v)
if (!visited[v]) DFS(G, v);
}
回答问题9
void DFS(Graph G, int v)
{ visited[v] = TRUE;
VisitFunc(v);
for(w=FirstAdjVex(G, v);
w!=0; w=NextAdjVex(G,v,w))
if (!visited[w]) DFS(G, w);
}
对下面所示无向图G7,从顶点1出发的广度优先搜索遍历序列可有多种,请至少列举出三种;请列出从顶点7出发的深度优先搜索遍历序列(至少两种) 。
回答问题10
回答问题11
对下面所示有向图,请分别列出从顶点A和顶点B出发的广度优先搜索遍历序列。
回答问题12
下面是图的广度优先搜索算法,请解释其含义。
void BFSTraverse(Graph G, Status (*Visit)(int v))
{
for (v=0; vG.vexnum; ++v)
visited[v] = FALSE;
InitQueue(Q);
for ( v=0; vG.vexnum; ++v )
if ( !visited[v]) {
visited[v] = TRUE; Visit(v);
EnQueue(Q, v);
while (!QueueEmpty(Q))
{ DeQueue(Q, u);
for(w=FirstAdjVex(G, u); w!=0;
w=NextAdjVex(G,u,w))
if ( ! visited[w])
{ visited[w]=TRUE; Visit(w);
EnQueue(Q, w);
} // if
} // while
} //if
} // BFSTraverse
回答问题13
深度广度优先搜索和广度优先搜索遍历图的时间复杂度与何有关?分别是多少?
以邻接矩阵作图的存储结构时,查找每个顶点的邻接点所需时间为O(n2),其中n为图中顶点数。
以邻接表作图的存储结构时,找邻接点所需时间为O(e)。由此,当以邻接表作存储结构时,深度优先搜索遍历图的时间复 杂度为O(n+e)。
画出下图的DFS和BFS生成树
邻接表
0
1
2
3
4
回答问题14
回答问题15
画出下图的DFS和BFS生成森林
回答问题16
说出Prim算法的算法思想。
1
文档评论(0)