C++中级第12讲 图的优先遍历.pptxVIP

  • 1
  • 0
  • 约 11页
  • 2024-05-30 发布于广西
  • 举报
C++中级第12讲 图的优先遍历.pptx

学科竞赛编程教研研究院C++NOIPNOIIOI

图的深度优先遍历第一步顶点vi出发,访问,标记,找邻接顶点vi1第二步vi1出发,DFS访问和它邻接的所有顶点第三步转到第一步,直到所有和vi邻接的顶点全部被访问第四步继续选取图中其他未被访问顶点作为起始顶点,转第一步遍历完成算法思想:

【图的深度优先遍历1→2→5,然后退回到2,退回到1。315241

图的深度优先遍历5431212【1→2→5,然后退回到2,退回到1。【从1开始再访问点3,3没有未访问邻接点,退回到1

图的深度优先遍历25341【从1开始再访问点3,3没有未访问邻接点,退回到1123【1→2→5,然后退回到2,退回到1。【再从1开始访问未被访问过的点4,再退回到1

【图的深度优先遍历voiddfs(inti)//图用数组模拟邻接表存储,访问点i{visited[i]=true;//标记为已访问for(intj=1;j=num[i];j++)//遍历与i相关联的所有未访问过的顶点if(!visited[g[i][j]])dfs(g[i][j]);}

图的深度优先遍历【intmain(){……memset(visited,false,sizeof(visited));for(inti=1;i=n;i++)//每一个点都作为起点尝试访问,因为不是从任何//一点开始都能遍历整个图的,例如下图。if(!visited[i])dfs(i);……return0;}12543以3为起点根本不能遍历整个图

第一步顶点vi出发,访问第二步访问vi的所有邻接顶点第三步转第一步,分别以vi邻接的顶点进行遍历第四步继续选取图中未被访问顶点作为起始顶点,转第一步,直到全部遍历全部顶点遍历完成算法思想:图的广度优先遍历

图的广度优先遍历下图是有向图的广度优先搜索遍历示例(箭头)。下图的BFS次序是:___________________________v1v2v3v4v5V12V20?V33V41V5113?012?3?4?v1→v2→v4→v3→v5

【图的广度优先遍历voidbfs(inti){ intj,k,open,closed; memset(q,0,sizeof(q)); open=0;closed=1;q[1]=i; couti; visited[i]=1; while(openclosed){ open++;k=q[open]; for(j=1;j=n;j++) if((a[k][j]==1)(visited[j]==0)){ visited[j]=1; closed++; q[closed]=j; } }}

FutureX科学教育-创新课程像科学家一样思考像工程师一样解决问题

文档评论(0)

1亿VIP精品文档

相关文档