Maktub_Wiki Maktub_Wiki
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
主站 (opens new window)
  • 服务搭建
  • 网络服务
  • 开源框架
  • 操作系统
  • iOS/MacOS
  • 算法导论(Python)
  • Leetcode
  • 线性代数
  • 数据结构

    • 树状数组
    • 位存储
    • 并查集
  • 算法

    • Floyd算法
    • Dijkstra算法
    • Bellman-Ford算法
    • Prim算法
      • Kruskal算法
      • KMP算法
    • Leetcode
    • 算法
    Maktub_小明
    2024-01-09
    目录

    Prim算法

    # 说明

    最小生成树算法,获取经过每个点的最小路径

    # 代码模版

    #G是路径图,s是开始点
    def prim(G, s):
        P, Q = {}, [(0, None, s)]
        while Q:
            w, p, u = heappop(Q)
            if u in P: continue # 如果目标点在生成树中,跳过
            P[u] = p # 记录目标点不在生成树中
            for v, w in G[u].items():
                heappush(Q, (w, u, v)) # 将u点的出边入堆
        return P
    # T = prim(G, 1)
    # sum_count = 0
    # for k, v in T.items():
    # if v !=None:
    # sum_count += G[k][v]
    #
    # print(sum_count)
    # print(T)
    # 结果为19
    # {1: None, 2: 1, 3: 1, 4: 3, 5: 6, 6: 4}
    
    上次更新: 2025/08/03, 09:26:17
    Bellman-Ford算法
    Kruskal算法

    ← Bellman-Ford算法 Kruskal算法→

    Theme by Vdoing | Copyright © 2021-2025 Maktub_小明 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式