[英]How can I create multiple edges with the same weight and same source vertex?
我正在使用jgrapht,在這里遇到問題。 從一個源頂點創建具有相同權重的兩個邊后,我最終只有一個邊:
DirectedWeightedPseudograph<Object, Object> Grph1 = new DirectedWeightedPseudograph<>(Object.class);
Grph1.addVertex("a");
Grph1.addVertex("b");
Grph1.addVertex("c");
Grph1.addEdge("a", "b", "55");
Grph1.addEdge("a", "c", "55");
我期望輸出:
a--55-->b
a--55-->c
但是實際輸出:
a--55-->b
c
您沒有創建兩個邊緣。 您僅創建了一條邊,該邊為"55"
。 右:字符串"55"
是示例中的邊緣。
為了創建具有真實權重的多個邊緣(預期為雙關語),應聲明圖形具有正確的類型,即使用例如DefaultWeightedEdge
作為邊緣類型的圖形。
然后,當通過調用addEdge
添加新邊緣時,將收到DefaultWeightedEdge
實例。 使用此實例,可以通過調用setEdgeWeight
將權重分配給該邊緣。
Graph<String, DefaultWeightedEdge> g = new DirectedWeightedPseudograph<>(DefaultWeightedEdge.class);
g.addVertex("a");
g.addVertex("b");
g.addVertex("c");
DefaultWeightedEdge e0 = g.addEdge("a", "b");
g.setEdgeWeight(e0, 55.0);
DefaultWeightedEdge e1 = g.addEdge("a", "c");
g.setEdgeWeight(e1, 55.0);
System.out.println(g.edgeSet());
從文檔中:
如果此圖不包含邊e2,則將指定的邊e添加到該圖,使得e2.equals(e)
Object o1=Grph1.addEdge("a", "b", "55");
Object o2=Grph1.addEdge("a", "c", "55");
boolean test=o1.equals(o2); //this will return true
不用使用<Object,Object>
創建圖形,而是使用不同的東西,例如<String,DefaultWeightedEdge>
如示例中所示:
Graph<String,DefaultWeightedEdge> g=new DirectedWeightedPseudograph<>(DefaultWeightedEdge.class);
g.addVertex("a");
g.addVertex("b");
g.addVertex("c");
g.addEdge("a", "b", "55");
g.addEdge("a", "c", "55");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.