|
|
|
審局一個很重要的觀念,不必準,重要的是一個趨向性,拿小弟於2001發表的文章來做一個解釋:
【實例:象棋世家的殘局引擎】 「象棋世家」的殘局引擎,採用無razor pruning的PVS演算法,主要的改進在於審局的判斷上。主要的修正在於子力位置表的調整、兵卒的處理、殘局炮歸家的觀念等等。 在審局上,做了一些修正,其虛擬碼如下:
if (紅方車馬包數量+黑方車馬包數量) < 6) Then //殘局分界
RCoverP = Noc(kRP)
BCoverP = Noc(kBP)
If (雙方平子) Then //不可能同時有車馬包,即只有車包、車馬、雙包、雙馬、馬包、雙車
If RAPiece >= 2 Then //紅為雙車-車馬包, 雙馬、雙包、馬包-單車、雙馬、雙包、馬包
If (紅兵*2> 黑方士象數) Vr = Vr + 100; //可勝獎分
ElseIf RAPiece = 1 Then //紅為車-車、馬包、雙馬、雙包,馬、包-馬、包
If RCoverP * 2 >= BDPiece Then Vr = Vr + 100 //可勝獎分
If Noc(kRR) = 1 And Noc(kBR) = 1 And Noc(kBS) = 0 And RCoverP > 0 Then Vr = Vr + 100
ElseIf (RCoverP - BCoverP) * 2 > BDPiece + 1 Then //至少要三兵
Vr = Vr + 100
End If
End if
100分多大,在世家中多約一只士的力量,是不是這些情形,就等於是一只士?其實不然,只是說明剛剛我所說的趨動性,讓引擎「誤」認為這是比較好的,形成這些條件是比較好的。
小弟的做法在電腦棋中是不正規的,但在人類的弈棋中是很常見的,未來若辦一個比賽,即作者去猜自己所寫的棋軟的下一步棋,我想自己很有機會能拿冠軍,^.^整個世家的審局,其實就是個人下棋的一個準則,比如我認為馬包兵約等於一只車的價值,開局用挺卒去制馬要大於一只兵的價值……
世家的審局在棋軟中其實是很「聰明」的,比世家更聰明的大概只有「謝謝」,「元棋」推估和世家約在伯仲之間;奇兵的審局也不錯,尤其是在kingsafty上應是做的最好的。
在這裡要強調一個觀念,理論上,發展到最強的軟體,應是對人及對機器的勝率都能兼顧的,那為何現在電腦象棋的發展卻不是這樣?這裡提出一個例子來說明:甲乙兩軟體,甲有炮鎮窩心馬這個審局、乙沒有,假設甲算至12層時,其過程式: depth=1-8 吃馬 depth=9-10炮鎮窩心馬 depth=11吃馬 depth=12 炮鎮窩心馬
而乙一直到12層均為吃馬,假設兩者的速度都一樣,而甲因為有審「炮鎮窩心馬」而慢一點,當最後結局是吃馬時,則乙程式正解,且速度最快,而甲算得慢,且有可能停在吃馬或炮鎮窩心馬上;相同的,若是最後的答案是炮鎮窩心馬,則乙程式是根本算不到,甲程式則仍有機會停在炮鎮窩心馬或吃馬上。
這是贏者全拿的策略與混合策略的具體展現,假設是對的為1,錯的為0,這裡可制成表格
當最後的結局是雜訊或是審局作用不能肯定時:
沒有審 有審 審局發生作用 X O 審局為雜訊 O X
這時審不審,其期望的均是相同的
但當深度到不再變化的時候,即最後的結果雜訊或是審局作用肯定時 沒有審 有審 審局發生作用 X O 審局為雜訊 O O
有審的就表現比較好了。
所以「知識型」的程式對人要有優勢,但對其他的程式較沒有優勢,這句話在這個淺層數時是成立的,因為淺層數還會造成最後的結果變動時,多了審局的表現反而不如沒有加這些審局的,因為沒加審局的程式的速度要能夠快一點,當大到差距在一層時,就會產生一個8:2、7:3…隨層數增加而減小的勝率差距(詳見電腦西洋棋相關論文)但隨著電腦愈來愈快,這速度上的優勢就不明顯了,過了速度與審局的交叉點,個人推估中象約在12-14層左右,應該就是審局型程式的天下了。
|
|
|