自動掃雷——機率分析之數學實現

來源:互聯網
上載者:User

前面的《自動掃雷》系列博文介紹了如何從XP內建的掃雷遊戲中擷取遊戲、分析確定情況下的雷塊,以及操作滑鼠完成遊戲。這篇將介紹如何使用數學中的機率知識來玩掃雷遊戲,也正是本人最想介紹的地方,即《前言》中所說的第四種掃雷模型的分析。

先看遊戲介面,如下:   

在遊戲開始時,如何出現這樣的情況,我們可以認為遊戲中未顯示塊按機率相等可分為四個地區,其中a,b,c是其中的三個地區(a地區指上面的5個塊,b地區指中間的3個塊,c地區指下面的5個塊),再加上不與已揭開塊相鄰的所有塊構成一個地區d(d地區含有465塊)。那麼這四個地區中哪個地區有雷的機率最小呢?

這裡直接說明所使用的數學方法叫做——條件機率和全機率公式。

條件機率可以說是電腦領域的一個功臣,由其發展而來的“統計語言模型”實現了機器翻譯、語音辨識、漢字識別等一系列的用傳統方法很難解決的問題。而以其為基礎的“貝葉斯公式”在影像處理、決策支援系統和博弈論中有著廣泛的應用。

維基百科中給的定義是:條件機率就是事件A在另外一個事件B已經發生條件下的發生機率。條件機率表示為PA|B),讀作“在B條件下A的機率”。

而全機率為:

假設{ Bn : n = 1, 2, 3, ... } 是一個機率空間的有限或者可數無限的分割,且每個集合Bn是一個可測集合,則對任意事件A全機率公式

又因為

此處Pr(A | B)是B發生後A的條件機率,所以全機率公式又可寫作:

 

用自己的話說,條件機率是在某件事發生的情況下,另一件事的機率;全機率是將所有情況的機率加起來。

而在掃雷遊戲中有什麼“所有情況”呢?

看上面的遊戲情境,a,b,c所佔的13個塊,如果僅僅根據上面所顯示的"1","2",可以說這13個塊中,雷的總數可以有2個,也可以有3個!!並且有2個或者3個的機率分別是1/2。

 那麼其情況如下:

上表說明當雷數為2時,abc有雷的機率分別為0,1/3,1/5;當雷數為3時,abc有雷的機率分別為1/5,0,2/5。

可算出

a地區有雷的機率為0*1/2+(1/5)*(1/2)=1/10

b地區有雷的機率為(1/2)*(1/3)+0*1/2=1/6

c地區有雷的機率為(1/2)*(1/5)+(1/2)*(2/5)=3/10

而d地區的機率同理也算出為(1/2)*(97/465)+(1/2)*(96/465)=193/930

可知,a地區有雷的機率最小,故可以在此5塊中隨機選一塊點擊了,然後一切就交給上蒼了~~(在不用類似查看記憶體的方法的情況下,人做的就只有這麼多了)

到此,數學原理已介紹完畢,用一句話總結,即,先找出按地區劃分的未顯示塊,然後分類討論這些地區中雷的總個數。接下來的一篇博文(也是本系列最後一篇),將介紹如何將上面的數學運算用程式碼實現。

批註:從自己想到數學實現到想明白如何用程式碼實現,應該有兩年之多,當然只是偶爾無聊時才思考一下。不過,在思考這個實現過程中,自己開始一直在用數學的思路而沒有用代碼的思路去思考,故一直行不通。當自己用代碼實現後,感覺自己的思維又有了新的提高~~

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.