// 初始化每个顶点在最短路径中的父结点,及它们之间的权重,权重-1表示无连通 parents = new Side[nodes.length]; parents[0] = new Side(-1, nodes[0], 0); for (int i = 0; i < blueAgg.size(); i++) ...{ int n = blueAgg.get(i); parents[i + 1] = new Side(nodes[0], n, getWeight(nodes[0], n)); }
// 找从蓝点集中找出权重最小的那个顶点,并把它加入到红点集中 while (blueAgg.size() > 0) ...{ MinShortPath msp = getMinSideNode(); if(msp.getWeight()==-1) msp.outputPath(nodes[0]); else msp.outputPath(); int node = msp.getLastNode(); redAgg.add(node); // 如果因为加入了新的顶点,而导致蓝点集中的顶点的最短路径减小,则要重要设置 setWeight(node); } }
/** *//**
(出处:清风网络学院)