ruby 广度优先搜索

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby 广度优先搜索相关的知识,希望对你有一定的参考价值。

def breadth_first_search(v)
  raise ArgumentError, "No such vertex" if v < 0 or
vertices <= v
  queue = LinkedQueue.new
  is_visited = []
  queue.enter(Edge.new(-1,v))
  while !queue.empty? do
    edge = queue.leave
    next if is_visited[edge.w]
    yield edge.v,edge.w
    is_visited[edge.w] = true
    each_edge(edge.w) do |w,x|
      queue.enter(Edge.new(w,x)) if !is_visited[x]
    end
end end

以上是关于ruby 广度优先搜索的主要内容,如果未能解决你的问题,请参考以下文章

深度优先搜索法和广度优先搜索法

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

图的广度、深度优先搜索和拓扑排序

图的遍历之 深度优先搜索和广度优先搜索

广度优先搜索算法

Python算法-深度优先搜索&广度优先搜索(DFS&BFS)