2014-11-25 49 views
0

我是R和IGraph的新手。非循環圖 - 頂點之間每條路徑的最小權重

我想獲得從一個節點到另一個節點的所有邊的最小權重(也可以是邊的標籤)。但是我的實際目標是對每個節點執行相同的操作,這將爲我提供從每個節點到每個其他節點的每個路徑中的所有最小權重。 編輯(圖是循環的) 我的圖是循環的和無向的。我的目標

例子:

節點1> NODE2

NODE2> NODE3

NODE2>節點4

NODE3>節點4

重量邊緣

EDGE1 - 2

EDGE2 - 1

EDGE3 - 0.5

EDGE4 - 0.2

我想獲得

1作爲結果從NODE1到NODE3

0.5從NODE1至節點4(一個路徑)

0.2從NODE1到節點4(另一路徑)

是否有可能這樣做呢?

回答

1

get.shortest.paths(..., output="epath")將爲您提供在結果項目的$epath組件中找到的每條最短路徑中涉及的邊的索引。然後您可以使用min(E(g)$weight[some.path$epath])獲取路徑中的最小權重(其中some.pathget.shortest.paths返回的路徑之一)。

更新:好吧,如果你的圖不是無環的,可以有任意兩個頂點之間的多條路徑,而據我所知的igraph有枚舉所有的簡單路徑無功能(即沒有頂點路徑重複)。下一個主要版本(igraph 0.8)將有一個名爲get.all.simple.paths的函數,它可能會做你所需要的,但它還沒有發佈,所以如果你想嘗試它,你必須自己從開發樹編譯它。此外,該API可能還不穩定。

+0

我已經編輯了一些問題。在前面的情況下,它沒有顯示重量爲0.2的邊緣 – Th3B0Y 2014-11-25 14:53:18

+0

更新了我的答案。 – 2014-11-25 22:49:23