@nullundefine "回答这位同学,获取最小边之前,会把待选边放到集合里面,而把边放到待选边集合里面的条件就是另外一个顶点不能是访问过的,如果访问过的,就continue不放待选边里面,就排除了环的情况。"
反问一下如果是先加入待选边然后在访问的另外一个点呢 eg:点A 待选边A-B,A-C,A-D --->选A-C 待选边加入 C-B,C-E ---->选C-B 不增加待选边---->这个时候选A-B 也没有任何限制吧 确实也成环了
反问一下如果是先加入待选边然后在访问的另外一个点呢 eg:点A 待选边A-B,A-C,A-D --->选A-C 待选边加入 C-B,C-E ---->选C-B 不增加待选边---->这个时候选A-B 也没有任何限制吧 确实也成环了
2017-08-11
@醉独醒“除了边没有被访问过这个条件外,是不是还要考虑两个顶点是不是都被访问过。例如:A-B的权值为2时,不考虑两个顶点是否都被访问过的话,A、B、F就成了一个环,明显不对“
回答这位同学,获取最小边之前,会把待选边放到集合里面,而把边放到待选边集合里面的条件就是另外一个顶点不能是访问过的,如果访问过的,就continue不放待选边里面,就排除了环的情况。
回答这位同学,获取最小边之前,会把待选边放到集合里面,而把边放到待选边集合里面的条件就是另外一个顶点不能是访问过的,如果访问过的,就continue不放待选边里面,就排除了环的情况。
2017-08-10
这里有很多要优化的,在这里做了没有最小边的判断返回了-1,返回之后prim算法没有对其进行处理。另外,获取最小边的两个循环完全可以合在一个。
2017-08-10