2017-06-18 62 views
1

問題之間存在被以下我們必須找到至C這會突破下面的示例曲線圖 -G-F- -L- Ç節點B或從A路徑。格拉夫檢查是否路徑三個節點

現在實現從A到C很容易使用BFS,但我不知道如何確保這條路徑通過B?

+0

是您的圖形指示?我們是否需要找到**簡單的路徑**? – DAle

回答

1

'路徑'你可能是'簡單路徑' - 一個沒有重複頂點的路徑。

首先,確保A,B和C已連接。

的甲-...-乙-..- C路線存在當且僅當:

  • 沒有切口頂點其將A,B,和C爲3個不同的部件
  • A是不是切頂點是分割B和C到不同的組件
  • C不是一個臨界頂點,其分離B和A成不同的組件
+0

http://c2n.me/3Lr1pya。在這個圖表中,你永遠不會通過'B'使用BFS達到'C'。 – DAle

+0

@DAle:謝謝。回答修改。 –

+0

@LiorKogan但你會如何找到路徑? – fafl

0

首先運行一個bfs到達中間節點,然後從該中間節點運行一個bfs到所需的目標節點。

+2

否。這兩條路徑可能包含B旁邊的公共頂點。 –

+0

@LiorKogan只保留訪問節點的列表,然後 – fafl

+0

@fafl:仍然不好。 BFS算法中不同的頂點排序可能會給出不同的結果。 –