我的理解如下,若有疏漏煩請指教:
ㅤㅤ
廣度優先搜尋是使用佇列(queue)的走訪法,順序是先設定起點、將與起點相鄰的所有節點放入佇列、重複操作。以本題為例,我的解題流程如下:
- A為起點,將與A相鄰的B與C加入佇列:q = [B, C]
- 走訪並取出佇列中的第一個元素B,然後把與B相鄰的D、E加入佇列:q = [C, D, E]
- 走訪並取出佇列中的第一個元素C,然後把與C相鄰的F、G加入佇列:q = [D, E, F, G]
- 走訪並取出佇列中的第一個元素D,然後把與D相鄰的H加入佇列:q = [E, F, G, H]
- 走訪並取出佇列中的第一個元素E,此時與E相鄰的H已在佇列中M,故不新增進佇列:q = [F, G, H]
- 重複第五步,依序取出F、G、H,得出廣度優先走訪順序為ABCDEFGH。
有一點值得提的是,走訪順序並非唯一,所以得出其他順序也並非一定錯誤。
附上不錯的教學影片:https://www.youtube.com/watch?v=pcKY4hjDrxk&ab_channel=AbdulBari