Igraph:获得最长的测地距离

时间:2010-08-06 22:10:01

标签: r graph igraph

我的问题如下: 考虑具有10000个节点和4800个边的非直接图。 给定此图并给出该图的节点(例如,节点1),我需要igraph(R)中的命令以获得该节点1与图中最远节点之间的距离。非常感谢你的帮助! :)

亲切的问候, 伊格纳西奥。

2 个答案:

答案 0 :(得分:2)

这实际上是一个探路者/搜索。

假设isConnected(a,b)在两个节点连接时返回

(我在Lua中编写代码,翻译起来应该不难)

function search(list)

local i = 0

while i < 10000 do

i = i + 1

if isConnected(i,list[#list]) then

--This expression refers to the last member

search(list ++ i)  

--Although not technically a proper operator, ++ adds the element to the end of the list

end

end


submit_list(list)
end

submit_list是一个获取列表并检查它们的函数。它找到最长的提交列表,不包含重复项。该列表将成为您解决问题的方法。

哦,还有一件事;我的代码没有考虑到什么。如果列表包含重复节点,则该函数应终止,以便它不会永远递归。

答案 1 :(得分:1)

> g <- erdos.renyi.game(100,1/20)
> s <- c(shortest.paths(g,2))
> s
  [1] 3 2 0 3 3 3 3 3 3 3 3 3 3 2 1 2 3 1 3 3 3 4 2 4 3 2 3 2 2 3 3 2 3 2 4 4 3
 [38] 3 3 2 2 3 3 4 2 3 3 2 2 4 3 2 3 3 2 1 2 4 2 2 2 2 1 2 4 3 2 2 2 4 3 4 3 3
 [75] 3 3 3 3 3 2 1 3 2 4 2 1 3 1 3 3 3 3 4 3 2 3 2 2 3 3
> which(s == max(s))
 [1] 22 24 35 36 44 50 58 65 70 72 84 93
> get.shortest.paths(g,2,21)
[[1]]
[1]  2 55 33 50 21

让我们制作图表

g <- erdos.renyi.game(100,1/20)

这将找到到顶点2的距离

s <- c(shortest.paths(g,2))

找到最远点的索引

which(s == max(s))

显示路径

get.shortest.paths(g,2,21)