溫馨提示×

人工智能廣度優(yōu)先搜索算法怎么實現

小億
92
2023-11-29 09:31:33
欄目: 深度學習

人工智能廣度優(yōu)先搜索算法(Breadth-First Search,BFS)可以通過以下步驟進行實現:
1. 創(chuàng)建一個隊列(queue)用于存儲待訪問的節(jié)點。
2. 將起始節(jié)點放入隊列中,并將其標記為已訪問。
3. 當隊列不為空時,執(zhí)行以下步驟:
  a. 從隊列中取出一個節(jié)點。
  b. 檢查該節(jié)點是否是目標節(jié)點,如果是,則搜索結束,返回結果。
  c. 如果不是目標節(jié)點,則將該節(jié)點的所有鄰居節(jié)點(未被訪問過的)放入隊列中,并標記為已訪問。
4. 如果隊列為空且沒有找到目標節(jié)點,則搜索失敗。
下面是一個示例的Python代碼實現:

def bfs(graph, start, target):

????visited?=?set()??#?存儲已訪問的節(jié)點

????queue?=?[]??#?存儲待訪問的節(jié)點

????queue.append(start)

????visited.add(start)

????while?queue:

????????node?=?queue.pop(0)

????????if?node?==?target:

????????????return?True??#?找到目標節(jié)點

????????for?neighbor?in?graph[node]:

????????????if?neighbor?not?in?visited:

????????????????queue.append(neighbor)

????????????????visited.add(neighbor)

????

????return?False??#?沒有找到目標節(jié)點 #?示例圖的鄰接表表示 graph?=?{

????'A':?['B',?'C'],

????'B':?['A',?'D',?'E'],

????'C':?['A',?'F'],

????'D':?['B'],

????'E':?['B',?'F'],

????'F':?['C',?'E'] } start_node?=?'A' target_node?=?'F' result?=?bfs(graph,?start_node,?target_node) print(result)

在上述示例中,我們創(chuàng)建了一個圖的鄰接表表示,并調用bfs函數進行廣度優(yōu)先搜索。輸出結果為True,表示在給定的圖中可以從起始節(jié)點A找到目標節(jié)點F。

0