hashmap储存有向图_java-对后边缘进行运算以获取有向图中的循环数
我一直在編寫代碼,以在有向圖中獲得所有可能的周期. Here是一種跟蹤后沿的實現,只要找到一個后沿,它就會返回true,即檢測到一個循環.我將其擴展到以下內容:
計算一棵樹中所有可能的后邊緣,后邊緣的數量應給出循環數.不知道這是否正確.使用此方法,我實現了以下操作:下面的count變量沒有用.最初,我用它來給出每個周期的計數.但這不能給出正確的答案.但是存儲所有后邊緣的edgeMap的大小似乎在某些圖中給出了正確的循環數,但并不是全部.
該代碼適用于圖片中的G2和G3,但不適用于G1. (G1只有兩個循環,但是我得到了三個后沿).任何有關我可能會出錯的建議都將有所幫助
public int allCyclesDirectedmain(){
clearAll();
int count=0;
Map edgeMap = new HashMap<>();
for (Vertex v : vertexMap.values()) {
if (!v.isVisited && allCyclesDirected(v,edgeMap))
count++;
}
System.out.println(edgeMap);
return count;
}
public boolean allCyclesDirected(Vertex v, Map edgeMap ){
if (!v.isVisited){
v.setVisited(true);
Iterator e = v.adj.iterator();
while (e.hasNext()){
Vertex t = e.next().target;
if (!t.isVisited && allCyclesDirected(t,edgeMap)){
edgeMap.put(v, t);
return true;
}
else
return true;
}
}
return false;
}
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的hashmap储存有向图_java-对后边缘进行运算以获取有向图中的循环数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: foxmail收件不及时_临近双11,多
- 下一篇: pandas 固定值 增加一列_pand