我有一个BGL图,想要使用BGL创建生成树。
从指定的顶点开始,我想将最短边添加到与此顶点连接的图形中。从那时起,我想总是选择与目前存在的图形相连的最短边缘。
所以,我想添加约束,即每个新边都必须连接到图,同时保持生成树标准没有周期。
用手做这件事并不是很难;但是既然我想学习一些关于BGL的知识,我想知道哪种算法最适合我的问题。
答案 0 :(得分:4)
听起来你正在种植一棵树,从你指定的顶点开始,添加最轻的边缘,将树中的顶点连接到不在树中的顶点。如果是这种情况,那么您正在实施Prim算法,它会为您提供MST。在Cormen,Leiserson,Rivest& Sons的“算法”的MST章节中很好地描述了它。斯坦。
(我说“听起来像”,因为声明“与目前存在的图形连接的最短边缘”有点模糊。)
答案 1 :(得分:2)
这是Prim算法:http://en.wikipedia.org/wiki/Prim%27s_algorithm
您将获得最小生成树!
不确定你是否会倾向于使用BGL,但无论如何,这个想法的难点在于找到“最小边缘”:查看维基百科页面上的伪代码以了解如何使用它来完成它二进制堆。为了更好的复杂性,你需要斐波那契堆。