老鼠走迷宮
最古老的人工 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