JAVA:Knight's tour

張文賢

 



首頁 | 搜尋

.作者台大數學系90年班
 


說明

這個問題是由數學家 Euler 提出的:西洋棋的騎士能否走完一個空棋盤的六十四格,而且每格只走過一次。這條路徑,在圖論上稱為「Hamiltonian path」 ,而每個格子稱為「vertex」,每個格子能向外走出的步數稱為「該vertex的degree」。
本程式利用一種方法(accessibility heuristic),由任意點出發,找出一條Hamiltonian path:先走到degree少的格子,如此的話,越到後面,剩餘格子的degree可能比較大,則不容易因無路可走而失敗。運用此方法,在八格見方的棋盤上,由任一點找出一條Hamiltonian path的機率非常高。


程式

Start
點選棋盤上任意一點做為起點,按Start開始。

Reset
若要重新開始,請按Reset。

second/step
選擇一數字,該數字代表「走一步停的秒數」。

過程
    1.騎士的位置代表下一步的選擇。
    2.走過的格子將會變為藍色,並有一綠色數字,表示該格為第幾步。
    3.每格右下角有紅色數字,為該格的degree,會隨著騎士的移動而改變。
    4.騎士走完棋盤之後,會在棋盤上每一格印出綠色數字,代表其為第幾步。

回頁首

(若有指正、疑問……,可以在此 留言寫信 給我們。)

EpisteMath

EpisteMath (c) 2000 中央研究院數學所、台大數學系
各網頁文章內容之著作權為原著作人所有


最後修改日期:7/16/2004