数据结构-6.4图

前言-数据结构

数据结构是需要反复咀嚼,不管什么时候都可以重中获取现在在开发中的遇到的问题答案。

生成树

图->生成树

  • 深度优先搜索生成树 广度优先搜索生成树

  • 在图论中,常常将树定义为无回路的连通图,例如,如下就是两个没有回路的连通图。乍一看似乎不是树,但只要选定某个顶点做根并以数为起点对每条边定向,就可以将它们变为通常的树。如果没有回路的图,就可以把它生成为树
    在这里插入图片描述

  • 使用深度和广度优先搜索可以变成树
    在这里插入图片描述

  • 变成如下
    在这里插入图片描述
    在这里插入图片描述

图->最小生成树(无向网)

  • 是指带权的图 生成树中边上权值和最小 若生成树中每条边上的权值最小,称为最小生成树(普里姆(prim)算法和克鲁斯卡尔(kelusikare)算法)

普里姆(prim)算法:

  • Kruskal算法因为只与边相关,则适合求稀疏图的最小生成树
  • 在图中任取一个顶点K作为开始顶点,令U={k},W = V(图中所有顶点集合) - U(剩下的顶点,是最短的一条边,也就是权最小 并且作为最小生成树的边保存起来),一开始W是所有的顶点,知道最后W为空就完成算法
  • 例子:注意虚线、∞
    • step1
      在这里插入图片描述
    • step2
      在这里插入图片描述
    • step3 (这里可以任选2,5因为两条边一样大的权然后再看一遍图中的根哪个权最小,继续连接) u = {1,3,6} w = {2,4,5} 在这里插入图片描述
    • step最后(一共有6个顶点,5条边(因为生成的是树) + 初始化,一共六步骤)
      在这里插入图片描述

克鲁斯卡尔(kruskal)算法

  • prime算法因为只与顶点有关,所以适合求稠密图的最小生成树
  • 将所有边按权递增
  • 挑选最小的边,不能与前面的边构成回路
  • 直到n个顶点有n-1条边结束,此时的树就是权值最小的最小生成树
  • 例子:克鲁斯卡尔最小生成树的过程
    • 其中的权都是先知道的
      在这里插入图片描述

例题

  • 下面()算法适合构成一个稠密图G的最小生成树
    • A Prim
    • B Kruskal

猜你喜欢

转载自blog.csdn.net/weixin_41732253/article/details/109631385