是否每局Windows紙牌遊戲(Solitaire)都是可以被解決的?也就是說每局都可以贏。

一直以來我都以為Windows紙牌是每局都能贏的,即便一局失敗,重新開始該局遊戲換一種路線(疊牌順序)還是能贏的。可是今天遇到了一盤死局,無論我怎麼改換路線,都無法勝利,找另一個同學來玩還是如此(當然,可能大家遊戲的思路都一樣也說不定)。

  So...問題出現了:究竟是不是每一局紙牌遊戲都可以被解決?

  如果是,那麼遊戲系統發牌時是如何做決策的,也就是說它背後所依賴的演算法是什麼,或者說和哪種演算法模式更為匹配?如果不能,即便紙牌能贏局數的概率是99.9%,總還是有無法解決的殘局,那麼這是否就意味著該演算法是不完備的,甚至可以說該遊戲是有BUG的?

  

  (本來想記錄該牌局的疊牌順序的,結果不小心給退出遊戲了,各位體諒~)


哈哈,這個我可以肯定地告訴你,不是的。因為就在剛才,我玩到一局一步都走不了的…先佔樓,稍後圖片送上

--------------------------------------------------------------------------

下面這裡就到開頭了

後面緊接著翻幾次牌堆就提示無路可走了,整個過程唯一可以做的事就是翻!牌!!堆!!!


好問題!

首先,每局可以贏這個肯定不是。這個構造一個簡單的例子就可以:

1. 翻牌區從左到右是J, J, J, J, K, K, K;

2. 發牌區,無論是三張還是一張發牌方式,都不出現Q和A(被壓在翻牌區或者發牌區里);

這局面一上來就是死局。

事實上,solitaire的局面判定是個相當有難度的問題。有人已經證明了,給定一個初始局面,判斷是否有解是NP-Complete:http://www.springerlink.com/content/b40703p37h74j220/ 。也就是說,這個小遊戲是肯定沒足夠的時間來對每一個隨機生成的初始局面判斷是否有解,從而總是給你一個有解的局面。要不然,很可能你一點new game,就卡得你不想玩了。。

至於windows的發牌演算法實現,我想有兩個要點。第一是開局盡量是一個活局。但是這個上面說了,由於是npc問題,肯定不能完全保證。但是可以有heuristics。比如,剛開始的牌面可以移動出現翻牌的機會;發牌區出現A;翻牌區里的牌盡量按順序排列。第二,電腦還可以隨時作弊幫你化解困難。比如,它可以不定時的evaluate一下當前局面是不是再翻幾張牌就死了。只搜索幾步,這個電腦還是不需要花很多時間,造成卡頓的。如果是,那就在你下一次獲得翻牌/發牌機會時,給你一張想要的牌,幫助遊戲進行下去。

基於以上分析,可以知道,出現無解局面這個不是遊戲bug,而是遊戲本身太難。


肯定是有無解的情況的。在下面的7列牌中,只要出現某一列是如下情況時必定無解:當這一列牌的所有正面向下的牌中存在所有比該列正面向上的牌的點數大1的異顏色牌和小於該列正面向上的同花色牌的時候,必定解不開。舉個例子:比如某一列正面向上的牌是紅桃8,要把這個紅桃8挪開,必須存在黑9,或者將這張紅桃8放在回收區的紅桃7上面,而當這列牌裡面的黑桃9和梅花9還有紅桃A到7的任意一張或多張都在裡面時,這個紅桃8根本無法移動,於是就無解了。


真的有。。最右底下壓著兩個紅8和黑桃3,所以我永遠不能把黑桃7拿起來,sad


前幾天剛好跟一哥們針對這個問題討論過,所以這幾天就玩了幾把。要回答這種問題只要舉一個絕對不可能贏的反例就行,晚上剛好碰到一個我覺得無解的。。。

搜一下竟然真有這個問題。。。所以隨手就貼上來紀念下。。。

這是發牌,看上去挺正常

正常操作兩步

接下來就是見證奇蹟的時刻。。。。

開始翻牌了,看著

到這裡,一圈結束了,不知道有沒有人看出來有啥可以走的,反正我是沒想出來有啥好走的。。。

遊戲結束,只走了2步。。。

以上不知道大家怎麼想的,如果感覺有一步能走的麻煩說下,這局遊戲我先保存幾天。。。


有點難度,我遇到一個,玩了半天,無解。。。


有沒有人算過無解的概率?


Windows紙牌有無解的情況,你怎麼走都找不到出口,關鍵是翻牌的時候,翻完一圈再洗牌的時候,還是保持原先的翻牌那樣的順序,就導致遊戲無路可走的情況,這個遊戲本身就是有問題的!!!


這個分兩個方面,有一種是你點開,每次都是隨機的,這種可能會存在無解的情況。

還有一種是在線的「每日挑戰」,這個應該每天每個人都是一樣的,我也碰到過幾次,即便不是專家模式,就是過不去,不過每日挑戰可以回頭去挑戰歷史中沒有過的,隔幾天就會換一個思路就過了。不過每日挑戰的玩法比較多,很多時候限制移牌次數這個就比較難了。

因為每日挑戰每個人都是一樣的,微軟完全可以在他們本地設置這些腳本的時候進行測試,至少他們保證能過,對吧。

我主要玩這兩個


推薦閱讀:

軟體崩潰後,提示發出的「發送錯誤報告」到底有沒有用?
圖靈機與λ演算是等價的,為什麼前者成為了普遍接受的計算機或計算理論的模型?
量子計算機的發展對傳統微電子行業是否有衝擊?
作為一名計算機系的學生,如何真正進入計算機的專業世界?
網路工程師是一個方向繼續專研下去還是考完ie後再學一個方向?

TAG:人工智慧 | 遊戲設計 | 演算法 | 決策 | 計算機科學 |