我正在写一个网络爬虫,我需要找到两个网址之间的最小距离。查找网络节点之间的路径距离?
我用hash表示网络。每个节点,这是不在网的末端,键接到节点的向量,其所连接的:
hash = {:v0 => [:v1, :v2, :v3],
:v1 => [:v4, :v5, :v6],
:v2 => [:v7, :v8, :v9],
:v3 => [:v10, :v11, :v12],
:v4 => [:v13, :v14, :v15]}
该溶液不工作。问题是,我只递增的距离(距离变量),当它发现目标,所以结果总是1
:
def path src, target, hash, dist
return -1 if hash[src] == nil # invalid distance if source is invalid
return dist += 1 if hash[src].include? target
arr = Array.new
for i in hash[src] do
arr.push path(i, target, hash, dist)
end
arr = arr.delete_if {|x| x < 0} # delete invalid values
return -1 if arr.empty?
return arr.min # return the shortest distance
end
如何解决它,所以它会在网的每一层上增加?