ScholarGate
助手

最小生成树

最小生成树以最小的总边权重连接加权连通图的所有顶点;Kruskal算法和Prim算法等贪婪算法可以有效地计算出最小生成树。

用 PaperMind 寻找选题即将推出Find papers & topics
Tools & resources
下载幻灯片
Learn & explore
视频即将推出

Definition

连通的、边加权图的最小生成树是边的子集,它连接所有顶点,不包含环,并且在所有此类生成树中具有最小的总权重。

Scope

本主题涵盖了最小生成树问题及其经典的贪婪解法——Kruskal算法(使用不相交集结构按权重递增顺序添加边)和Prim算法(使用优先队列生长单个树),以及证明这些算法正确性的割性质和环性质。它还涉及支持性的不相交集(并查集)数据结构。

Core questions

  • 什么是生成树,以及什么使其具有最小权重?
  • 为什么贪婪的边添加会产生全局最小生成树?
  • 割性质和环性质如何证明MST算法的正确性?
  • Kruskal算法和Prim算法在策略和数据结构上有何不同?
  • 不相交集(并查集)结构如何使Kruskal算法高效?

Key concepts

  • 生成树
  • 割性质
  • 环性质
  • Kruskal算法
  • Prim算法
  • 不相交集(并查集)
  • 贪婪安全边
  • 边权重

Key theories

割性质
对于将顶点划分为两个集合的任何划分,跨越该划分的最小权重边属于某个最小生成树;这种安全边保证是Kruskal算法和Prim算法这两种贪婪算法正确性的基础。
不相交集并查集支持
Kruskal算法使用带有按秩合并和路径压缩的并查集结构,以接近常数的均摊时间测试添加边是否会创建环。

Clinical relevance

最小生成树模拟了成本最低的网络设计:铺设连接所有站点的廉价通信、电力或交通网络。它们还在聚类、图像分割、旅行商问题的近似算法以及点集分析中作为构建块。

History

最小生成树问题最早由Otakar Borůvka于1926年为电力网络设计而解决。Vojtěch Jarník(1930年)以及后来的Prim(1957年)和Dijkstra发展了树生长方法,而Kruskal(1956年)提出了边排序的贪婪方法,使其成为最早被充分理解的组合优化问题之一。

Key figures

  • Joseph Kruskal
  • Robert Prim
  • Otakar Borůvka
  • Vojtěch Jarník

Related topics

Seminal works

  • kruskal1956
  • cormen2009

Frequently asked questions

Kruskal算法和Prim算法有什么区别?
Kruskal算法对所有边进行排序,并按权重递增的顺序添加它们,跳过任何会形成环的边,并使用并查集来检测环。Prim算法从一个起始顶点开始生长一棵连通树,重复添加离开当前树的最便宜的边,并使用优先队列。两者都产生一个最小生成树。
最小生成树是唯一的吗?
如果所有边的权重都不同,则最小生成树是唯一的。当某些权重相等时,可能存在几个不同的最小生成树,所有这些树都具有相同的最小总权重。

Methods for this concept

Related concepts