最小生成树Prim算法
来源:互联网 发布:windows桌面文件管理 编辑:程序博客网 时间:2024/05/01 21:36
数据结构使用的是斐波那契堆,复杂度 O(E+VlgV)
- package com.eshore.sweetop.mintree;
- import com.eshore.sweetop.exdataframe.FibHeap;
- public class Prim {
- public void mst(Graphics g, Vertex r) {
- for (Vertex u : g) {
- u.setKey(Integer.MAX_VALUE);
- u.setParent(null);
- }
- r.setKey(0);
- FibHeap fh = new FibHeap();
- for (Vertex u : g) {
- u.setCont(true);
- fh.insert(u);
- }
- while(fh.min()!=null){
- // System.out.println("======root=======");
- // fh.displayRoot();
- // System.out.println("==============");
- System.out.println(((Vertex)fh.min()).getPath());
- Vertex u=(Vertex)fh.extractMin();
- // System.out.println(u.getId());
- u.setCont(false);
- for (Vertex v : u.getList().keySet()) {
- // System.out.println(v.getId()+":"+v.getKey());
- if(
- // v.getKey()>=fh.min().getKey()
- v.isCont()
- && u.getList().get(v).intValue()<v.getKey()){
- // v.setParent(u);
- // v.setKey(u.getList().get(v).intValue());
- // System.out.println(u.getId()+" "+v.getId()+"="+u.getList().get(v).intValue());
- v.setPath(""+u.getId()+"->"+v.getId());
- fh.decereaseKey(v, u.getList().get(v).intValue());
- }
- }
- }
- }
- public static void main(String[] args) {
- Vertex a=new Vertex('a');
- Vertex b=new Vertex('b');
- Vertex c=new Vertex('c');
- Vertex d=new Vertex('d');
- Vertex e=new Vertex('e');
- Vertex f=new Vertex('f');
- Vertex g=new Vertex('g');
- Vertex h=new Vertex('h');
- Vertex i=new Vertex('i');
- a.getList().put(b, 4);
- a.getList().put(h, 8);
- b.getList().put(a, 4);
- b.getList().put(h, 11);
- b.getList().put(c, 8);
- c.getList().put(b, 8);
- c.getList().put(i, 2);
- c.getList().put(f, 4);
- c.getList().put(d, 7);
- d.getList().put(c, 7);
- d.getList().put(f, 14);
- d.getList().put(e, 9);
- e.getList().put(d, 9);
- e.getList().put(f, 10);
- f.getList().put(e, 10);
- f.getList().put(d, 14);
- f.getList().put(c, 4);
- f.getList().put(g, 2);
- g.getList().put(f, 2);
- g.getList().put(i, 6);
- g.getList().put(h, 1);
- h.getList().put(g, 1);
- h.getList().put(a, 8);
- h.getList().put(b, 11);
- h.getList().put(i, 7);
- i.getList().put(h, 7);
- i.getList().put(c, 2);
- i.getList().put(g, 6);
- Graphics gph=new Graphics(a,b,c,d,e,f,g,h,i);
- Prim p=new Prim();
- p.mst(gph,c);
- }
- }
- Prim最小生成树算法
- 最小生成树Prim算法
- 最小生成树Prim算法
- 最小生成树----Prim算法
- 最小生成树Prim算法
- Prim 最小生成树算法
- 最小生成树:Prim算法
- Prim算法 ----最小生成树
- 最小生成树-prim 算法
- 最小生成树(prim算法)
- 最小生成树 prim算法
- 最小生成树 prim算法
- Prim最小生成树算法
- 最小生成树prim算法
- 最小生成树--prim算法
- 最小生成树Prim算法
- 最小生成树(Prim算法)
- 最小生成树----Prim算法
- 在Oracle中使用字符串数组参数
- Bluez D-Bus Architecture
- 质数(也叫素数)判断
- 关于ImageMagick
- 解决 "GStreamer 遇到了常规流错误"问题
- 最小生成树Prim算法
- Javascript 操作select控件大全(新增、修改、删除、选中、清空、判断存在等)
- 金山系列下载-金山词霸和金山快译2009破解版
- 电脑屏幕视力保护色
- 最小生成树Kruskal算法
- busybox的init
- VC学习经验
- 什么是DEMO?
- 什么是Spring(详细介绍)