老鼠走迷宮 最古老的人工 AI 問題,如下圖老鼠在座標 (2, 1) 位置,如何找到座標 (2, 3)的乳酪? 在不考慮老鼠的嗅覺等物理特性,只論老鼠如何遍巡所有迷宮路徑找到目標。這在實際應用上可用在火場救援的機器人自走車,在不怕高溫的情況下,搜尋火場可存在空間救援急需逃脫的生物。 電腦程式解決此問題從 2 個方向著手。 一、資料結構: 使用二維陣列紀錄迷宮狀態,假設上圖可到達之路徑以 空白 字元表示,不可到達之障礙物以 * 表示,老鼠以 @ 表示,乳酪以 $ 表示,則陣列狀態應如下。
char map[4][4]={ {' ',' ',' ',' '}, {'*',' ','*','*'}, {' ','@',' ','$'}, {' ','*','*','*'} }; 接下來定義老鼠移動方向,如下圖假設方向順序上右下左,則往上移動則座標 y 值須減 1,依此類推。 下面是移動差值陣列的定義: int move[4][2]={// 4 個方向,y 與 x 值 {-1, 0},{0, 1},{1, 0},{0, -1}//上{dy, dx}, 右{dy, dx}, 下{dy, dx}, 左{dy, dx}, }; 方向上的 y 差值為 move[0][0] = -1,x 差值為 move[0][1] = 0 方向右的 y 差值為 move[1][0] = 0,x 差值為 move[1][1] = 1 方向下的 y 差值為 move[2][0] = 1,x 差值為 move[2][1] = 0 方向左的 y 差值為 move[3][0] = 0,x 差值為 move[3][1] = -1 |