簡體   English   中英

如何創建具有相同權重和相同源頂點的多個邊?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM