Prolog 迷宮鼠

2009-01-01

有一隻神奇鼠,叫 “智能鼠" 。有一天它來到一座迷宮,它敏銳的嗅覺告訴它,就在迷宮出口有一大塊乳酪,已經餓了 3 天的它,必須要找出最短的路徑,一嘗美味。它之所以被稱為 “智能鼠" 是因為它學過 Prolog 。鳥瞰迷宮如下圖 a 是入口,e 是出口:

“智能鼠" 本能迅速地使用 Prolog 描繪出迷宮如下:

child(a, b) b 是 a 的子節點
child(a, c) c 是 a 的子節點
child(b, d) d 是 b 的子節點
child(b, e) e 是 b 的子節點
child(c, e) e 是 c 的子節點
child(d, c) c 是 d 的子節點

“智能鼠" 運用它多年偷吃乳酪的經驗,寫出 Prolog 程式如下:

child(a, b).
child(a, c).
child(b, d).
child(b, e).
child(c, e).
child(d, c).

children(X, Y, N):-
	(X=e),
	N2 is N + 1,
	write(X),write(' ('),write(N2),write(')'),nl, 
	false.

children(X, Y, N):-
	child(X, Z),
	N2 is N + 1,
	write(X),write('->'),
	children(Z, Y, N2).
main:-
	children(a, e, 0).

程式運行結果如下:

a->b->d->c->e (5) 需要 5 站
b->e (3) 需要 3 站,(b 節點之前路徑已省略)
a->c->e (3) 需要 3 站

“智能鼠" 在 “搏缽" 後,選擇 a->c->e 路徑,順利吃到香氣四溢的乳酪,並且嘲諷著迷宮的主人 – Prolog 是人工智慧語言,最適合解迷宮問題。

廣告
%d 位部落客按了讚: