摘要:
在无向加权图中,n个顶点的最小生成树有n-1条边,这些边使得n个顶点之间可达,且总的代价最小。prim算法是一种贪心算法,将全部的顶点划分为2个集合,每次总在2个集合之间中找最小的一条边,局部最优最终达到全局最优,这正是贪心的思想。具体的描述参见相关书籍:描述从单一顶点开始,普里姆算法按照以下步骤逐步扩大树中所含顶点的数目,直到遍及连通图的所有顶点。输入:一个加权连通图,其中顶点集合为V,边集合为E;初始化:Vnew = {x},其中x为集合V中的任一节点(起始点),Enew = {};重复下列操作,直到Vnew = V:在集合E中选取权值最小的边(u, v),其中u为集合Vnew中的元素,而 阅读全文
摘要:
在无向图的基础上,稍作修改就可以实现有向图:1)public void addEdge(int start,int end)在无向图中要调用2次private void addEdgeToVNodeList(VNode node,Edge edge),将2个端点的边链表中都加上边,有向图中只需要在一个方向添加2)public void removeEdge(int start,int end)同上,只调用一次private void removeEdgeFromVNodeList(VNode node,Edge edge)3)public void addVNode(Object elemen 阅读全文