鬥地主之推測

經過前面所說的調整和改進,終於進入了打牌水平可隨規則數增加的正軌。但不久又出問題了:(

這個問題的現象很簡單,解決起來卻很複雜:跳打。比如地主出了張2,下家在不清楚小鬼分佈的情況下就直接出了大鬼,結果就導致地主的小鬼升級了。

粗看起來應該也比較好解決,增加點規則來判斷下小鬼的分佈情況就是了。比如:如果地主出了二,最後是門板用大鬼攔截,則說明小鬼都在地主手中。

我們之前也曾討論過判斷問題,比如地主各牌型的強弱、各玩家的意圖等等,粗看起來這兩個問題都是對某種未知的判斷,似乎並沒有什麼區別。但細細考量下來,這兩者還是有着本質的區別的。

之前討論過,類似意圖、牌型強弱這些判斷其實並不是對具體事物的判斷,而是我們自己設想出來的、是對其他玩家歷史行爲的概括,目的是爲了簡化後繼的推理。用IT的術語說,就是一種爲了簡化推理計算從而提前進行了預計算的中間結果,否則我們在書寫規則時,就需要從頭考慮各個玩家的出牌歷史,這會導致規則數量急劇增加同時每條規則也都會非常複雜、難以理解。

而地主手中有沒有小鬼,這是一個事實,只不過我們現在還不知道,但終有知道的時候(爲了和判斷相區別,我們稱這種地主有無小鬼的猜測爲推測)。所以,這兩者的本質區別就是判斷和推測存在着一個是否需要證明的問題;

  • 判斷是基於綜合分析各玩家的歷次行爲做出的概括性表徵,其本身是虛擬的概念,也就不需要證明,如果發現判斷失誤可以立刻就進行調整

  • 推測則隨着事實的出示而存在着證真或證僞的問題,比如如果我們推測小鬼都在地主手中,那麼如果地主出了小鬼則證真、而如果農民出了小鬼則證僞

在很早的時候,這個需要根據事實對推測加以證明的問題就非常困擾着我,因爲如果是證真還好,如果是證僞那問題就大了:所有基於這個推測做出的推論全部都要撤銷掉。問題的複雜還在於,我們對於推測其實最常用的是非此即彼的推測,比如:如果 門板不頂牌 則 要麼 門板想進攻 要麼 門板頂不動。這就意味着一旦證僞了某推測,我們不但要撤銷掉所有基於該推測衍生出來的各種推論,還要調整被間接證真的結論及其所衍生出來的各種推論的置信度。其它關聯的問題就更多、更麻煩了:撤銷是否需要回溯、如何回溯到正確的版本、撤銷後的一致性問題、循環論證的檢測等等。

在試驗了多種實現之後,考慮到鬥地主的複雜性還不是很大,所以目前採取了一種簡化策略來降低推測的複雜性:不基於推測來進行推測或判斷。這樣就暫時不需要考慮推測的關聯問題了,而只要將推測和最新出示的事實之間做一個衝突檢測即可:如果推測與最新事實有衝突則將推測撤銷掉即可,這就暫時避免了複雜的回溯問題。

在增加推測後,那麼我們目前就具有了三種能力:

  • 判斷:對歷史行爲進行概括,用虛擬的變量加以代表,用以刻畫對象的當前狀態

  • 推測:根據其歷史行爲對某對象的未知狀態(未知事實)加以猜測

  • 決策:根據當前的已知,包括事實、判斷和推測,計算出應採取的最爲合理的行爲,這個計算結果是綜合的、可基於短期目標進行加權的

====================================================================================================

關注我的公衆號及時獲取推送的最新文章

公衆號

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章