美文网首页
通用的深度优先搜索+图的应用3:最小生成树

通用的深度优先搜索+图的应用3:最小生成树

作者: 腹黑君 | 来源:发表于2020-06-29 12:18 被阅读0次

问题描述:

选取具有最小权重的生成树,图G的最小生成树,包括所有顶点V及最少的边E,其中边权重最小。
要求是:每个点只需要处理一次信息,并且加起来权重最小。

image.png

解决办法:

采用贪心策略,每步沿着权重最小的边向前搜索。
代码如下:

from pythonds.graphs import PriorityQueue, Graph, Vertex
import sys


# 贪心算法
def prim(G, start):
    pq = PriorityQueue()
    # 把所有顶点初始化最大值
    for v in G:
        v.setDistance(sys.maxsize)
        v.setPred(None)
    start.setDistance(0)
    pq.buildHeap([(v.getDistance(), v) for v in G])
    while not pq.isEmpty():
        currentVert = pq.delMin()
        for nextVert in currentVert.getConnections():
            newCost = currentVert.getWeight(nextVert)
            if nextVert in pq and newCost < nextVert.getDistance():
                nextVert.setPred(currentVert)
                nextVert.setDistance(newCost)
                pq.decreaseKey(nextVert, newCost)

相关文章

  • python数据结构教程 Day16

    本章内容 通用深度优先DFS算法 单源最短路径问题 最小生成树 一、通用深度优先DFS算法 一般的深度优先搜索目标...

  • 通用的深度优先搜索+图的应用3:最小生成树

    问题描述: 选取具有最小权重的生成树,图G的最小生成树,包括所有顶点V及最少的边E,其中边权重最小。要求是:每个点...

  • [考研]数据结构必考代码

    (十二)图的遍历 深度优先搜索 广度优先搜索 示例: BFS算法求解非带权图单源最短路径算法: (十三)最小生成树...

  • 11.6

    今天学习了图的遍历,深度优先搜索和广度优先搜索,prime最小生成树。 数电实验做了74138感觉自己做的...

  • 图的存储与遍历

    图的存储与遍历 一.实验目的 掌握图的存储结构以及图的深度优先搜索遍历、最小生成树算法。 二.实验要求与内容 自构...

  • Prim算法

    在之前的文章里,我们共同探讨了广度优先搜索算法和深度优先搜索算法,这些算法构成了生成树。生成树是无向图的一个子图,...

  • 数据机构探险之图(下)篇:代码实战

    数据机构探险之图篇(代码编写) 图的存储(邻接矩阵) & 图的深度优先 & 广度优先图的编码实战-最小生成树(普里...

  • 图的相关算法

    深度优先搜索非递归形式 DFS 深度优先搜索非递归形式 广度优先搜索 BFS 判断无向图是否是树 判断有向图中两...

  • 搜索

    一、深度优先搜索 图深度优先遍历、深度优先搜索算法求有权图两点最短路径 二、广度优先搜索 图广度优先遍历、广度优先...

  • DFS(深搜)算法

    深度优先搜索算法(Depth-First-Search):是一种用于遍历或搜索树或图的算法。 沿着树的深度遍历树的...

网友评论

      本文标题:通用的深度优先搜索+图的应用3:最小生成树

      本文链接:https://www.haomeiwen.com/subject/sqlofktx.html