圍棋程式 圍棋資料結構 圍棋演算法

2021-08-26 00:23:08 字數 3194 閱讀 3092

圍棋程式=圍棋資料結構+圍棋演算法

e.g.

各種典型的棋局或對弈程式=棋盤的資料結構(19x19 二維陣列)+各種典型的下棋步驟即記錄棋局對弈過程的一系列具體的演算法

曉輝是這樣想的:

如果所有可能的布局都蘊含在棋盤的序位關係之中,那麼,這種蘊含的棋局只有在被具體的對弈雙方選用的時候,才能由隱而顯。

(2011-7-23 17:56):

曉輝設想:

1. (2011-7-23 17:53)+(2011-7-23 17:46)

記錄棋局的「資料結構型別」提取裝置

+體現棋局的「演算法」記錄與驗算裝置

=再現棋局的「程式」記錄與執行裝置

2.(2011-7-23 17:53)+(2011-7-23 17:41):

體現棋局的棋盤「介面」生成器

+體現棋局的布子「程式」記錄儀

=展示對弈過程的「軟體」編輯器

(2011-7-24 08:10):曉輝是這樣想的:

(可見且可操作的實物的)棋=棋盤+棋子

(例如:圍棋、中國象棋、西洋棋)

(可知且可思考的虛物的)棋理=棋盤呈現的序位+棋子體現的點位

(例如:對弈雙方思想或心目中的圍棋或中國象棋或西洋棋的布局)

(2011-7-24 08:12):何謂「虛物」?

其實就是不確定的資訊。

from:

什麼是序位關係?可見:

附錄1

陣列是變數的集合,陣列的下標可用變數或其表示式來表示:

陣列元素panmian(1,1);panmian(19,1);panmian(1,19);panmian(19,19)分別表示棋盤四個角端

陣列元素panmian(1,2~18);panmian(19,2~18);panmian(2~18,1);panmian(2~18,19)分別代表棋盤四條邊線及邊線上的各個位點

陣列元素panmian(2~18,2~18) 分別表示除角端和邊線外其餘位點

panmian(1,1)=2表示左上角端的一枚黑棋,且panmian(1,1) 的下向點位panmian(y+1,1)和右向點位panmian(1,x+1)的值均=0;實際編寫**時則正好逆反,使用選擇判斷:

若panmian(y+1,1)=0,panmian(1,x+1)=0 則panmian(1,1)=2或-2

著子位點元素值及四向相鄰位點元素值的計算規則

據上所述及根據圍棋規律和規則在棋盤某位點著子,各鄰向位點的狀態可能為:<= -2;= -1;0;= 1;>= 2五種,即大於等於兩口氣的白棋活棋;僅剩一口氣的白棋;空點;僅剩一口氣的黑棋;大於等於兩口氣的黑棋活棋這五種情況

若panmian(y+1,1)= -1,panmian(1,x+1)=1

且panmian(1,1)>0

則panmian(1,1)=1; panmian(1,x+1)=0.5; panmian(y+1,1)白棋被提。

若panmian(y+1,1)= -1,panmian(1,x+1)= -1

且panmian(1,1)<0

附錄2

1. 方天豐 八段 主編的《死活通》軟體 是乙個很好的學習軟體。

2. 俞斌 九段 編制的程式中,有乙個《棋譜管理》程式,屬於這一類軟體。

這個程式從2023年開始編制,用來管理國家圍棋隊的棋譜,經6年來實踐使用,不斷改進,已經趨於完善。它有輸入棋譜、顯示棋譜、大容量棋譜庫管理、列印棋譜、製作參考圖等等功能。現在,國家圍棋隊、中國棋院圍棋部、《圍棋天地》、《新民圍棋》等圍棋事業單位都在使用這個程式來管理棋譜,受到廣泛好評。經多年積累,它已經擁有4千局左右中外職業棋手對弈的棋譜庫。大多數棋迷朋友們都希望看到這4千局棋,因為多數棋局是從任何圍棋書籍中都無法找到的,卻又實實在在是職業棋們的漚心力作。

附錄3

陳志行 電腦

圍棋門徑

1.顯示棋盤棋子及其他必須顯示的內容;設定黑白選擇、進子及有關的功能。

2.設定計算和記錄棋子串氣數的功能,賦予提子和禁著的功能。

3.設計一種函式,表徵每個棋子對周圍的影響,用以劃分勢力範圍,作為靜態 形式判斷的基礎。

4.對盤上各著點分別試進黑子和白子,比較進子前後的靜態形勢,以估算該點 的進子價值,成為著點選擇的基本依據。

5.用多步搜尋法判斷棋子串是否可以殲滅或逃出,並分別記為「死」、「活」 和「半死」。這種搜尋還可以包括「雙吃」(叫吃一串後殲滅另一串)的可能性。

6.規定開局時的一些大點及其價值,設定隨機地選取等價大點的功能。開局大 點可以納入定式的範疇。

7.把棋子劃分為塊,考慮各塊的眼位和出路以及塊間的相鄰關係,以估算各塊 的危險性(負目數),從而構成靜態形勢判斷的完整體系。

8.建立棋形效率模式,指明愚形、忌形和急所,從而增建由靜態形勢判斷所估 算的進子價值。

9.估算棋子串被殲與逃出的靜態形勢 以估算殲逃價值。

10.設定定式庫,規定定式中每步的價值;設定從定式庫取資料來行棋的程式段。

11.設定大場、中盤侵分、收官等的資料庫和程式段。

12.記錄先手著點及其價值,以供尋劫、收官、做眼等參考。

13.設定利用以上各種資料按照適當方式選擇著點的程式段。

14.設定在優勢和劣勢下採用不同策略的功能。

15.設定搜尋廣度和深度的選擇功能使思考時間得以隨時調整。

16.設定終局判斷、pass(棄權一手)及在對方pass後如何處理的功能。

17.設定棋譜記錄、計時、發聲、顯示形式對比、計算勝負等功能。

首先必需完成1、2部分。其次不妨先解決3、4,這樣程式就算是會下棋了。不過,叫吃也不會逃,或者只會逃叫吃卻不懂征子,也是不堪一擊的。這樣應解決5。第一步可以先解決二氣問題、即三氣就算已經逃出。

棋子分塊以及眼位估計是獲得戰鬥力的重要環節。這一功能解決後,棋力可望達 到高手讓不了30子的程度。然後設定行棋模式又是乙個關鍵,解決後讓25子恐怕也困難了。

圍棋程式三步走

用什麼語言及用win還是linux無所謂。第一步 介面。要求不高,能交替著子,能自動提子 規則 能判定勝負,能記譜 不難,很多人已完成,而且能完成得不錯 不過完美的程式要充分打磨 難度係數計為2 第二步 使程式下完一局棋 用一種或幾種演算法 當然不是完全的隨機演算法 使程式能完成一局棋。其過程中能基...

資料結構 資料結構演算法

分治法 對於乙個規模為n的問題,若該問題可以容易地解決 比如說規模n較小 則直接解決 否則將其分解為k個規模較小的子問題,這些子問題互相獨立且與原問題形式相同,遞迴地解這些子問題,然後將各子問題的解合併得到原問題的解。動態規劃法 這種演算法也用到了分治思想,它的做法是將問題例項分解為更小的 相似的子...

資料結構與演算法 演算法 演算法和資料結構

資料結構與演算法 演算法 好吧,在這裡,您被優秀或優秀的軟體開發人員所隔開。在這種情況下,我會告訴您一開始或至少在我的情況下,並且我知道大多數時候,對於我認識的大多數人,您會覺得自己是乙個無能的人或白痴。基本上,我怎麼可能不理解這一點,然後您會感到沮喪。在這種情況下,我會告訴您情況並不像您想的那麼糟...