java 最小生成树_java 最小生成树

小白最近自学java,书是java语言程序设计(基础篇和进阶篇),都是书中的例子和代码,边看边敲,学到进阶篇的图论时有两个问题。问题1:如第一张图,,WeightedGraph的构造函数向上调...

小白最近自学java,书是java语言程序设计(基础篇和进阶篇),都是书中的例子和代码,边看边敲,学到进阶篇的图论时有两个问题。 问题1:如第一张图,,WeightedGraph的构造函数向上调用父类AbstractGraph的构造函数一直报错。 错误是The constructor AbstractGraph(List, List) is undefined。 我的想法: 琢磨了一阵,虽然WeightedEdge 是AbstractGraph.Edge的子类,AbstractGraph的构造函数实际的两个参数是 (List,V[] vertices),子类的构造函数传递的是List,而List并不是 List的子类,所以不能用多态的形式调用。所以报错。 一种解决方法是在父类中添加AbstractGraph(List, List)的构造方法,但是同样报错,与AbstractGraph(List, List) 重复了。感觉就是子类里面区分List和List,而父类反而区分不了。

问题2:如第二张图,关于有权图的最小生成树的查找实现。算法是prim算法,就是将起始点加入T,然后持续的将顶点(v),从剩下未加入T的部分(V-T)中,添加到V。其中,每次寻找v需要是寻找T中任一顶点到V-T的最小权值边,我的理解是每次寻找v需要遍历T中每个顶点的每个现存的边,但是我读这个程序感觉只是遍历T中的每个顶点的现存第一条边。 可能存在问题是:比如我选起始顶点2开始,2具有5条权值分别为{100,2,10,1,7}的边,根据算法,将2加入顶点后,2首先寻找到的是权值为100的边所对应的顶点,而不是权值为1的边所对应的顶点。

展开

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值