簡體   English   中英

如何通過Boost Graph庫在廣度優先搜索期間訪問祖先頂點?

[英]How to access the ancestor vertex during a breadth-first search with the Boost Graph Library?

我正在嘗試使用Boost Graph庫中包含的廣度優先搜索算法來編寫自己的連接組件發現版本,並且我需要使用來訪問祖先(導致發現當前頂點的頂點)頂點。訪問者的discover_vertex回調,用於設置當前頂點的組件號。 任何方式都可以輕松完成嗎?

創建一個inspect_vertex回調,該回調記錄要檢查的頂點(從隊列中彈出)。 該頂點將是所發現的任何頂點的祖先。

從BGL的BFS文檔中的偽代碼:

vis.examine_vertex(u,g)在從隊列中刪除時會在每個頂點中調用。

BFS(G, s)
  for each vertex u in V[G]
    color[u] := WHITE 
    d[u] := infinity 
    p[u] := u 
  end for
  color[s] := GRAY 
  d[s] := 0 
  ENQUEUE(Q, s)
  while (Q != Ø) 
    u := DEQUEUE(Q)                   # `u` is recorded in examine_vertex callback 
    for each vertex v in Adj[u]
      if (color[v] = WHITE)
        color[v] := GRAY
        d[v] := d[u] + 1  
        p[v] := u  
        ENQUEUE(Q, v)                 # `v` is discovered, `u` is its ancestor.
      else
        if (color[v] = GRAY) 
          ...
        else 
          ...
    end for
    color[u] := BLACK
  end while
  return (d, p)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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