日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...

發布時間:2023/12/2 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[2018年最新整理]實驗二:利用α-β搜索過程的博弈樹搜索算法編寫一字棋游戲

實驗二:利用α-β搜索過程的博弈樹搜索算法編寫一字棋游戲

一、實驗目的與要求

(1)了解極大極小算法的原理和使用方法,并學會用α-β剪枝來提高算法的效率。

(2)使用C語言平臺,編寫一個智能井字棋游戲。

(3)結合極大極小算法的使用方法和α-β剪枝,讓機器與人對弈時不但有智能的特征,而且計算的效率也比較高。

二、實驗原理

一字棋游戲是一個流傳已久的傳統游戲。游戲由兩個人輪流來下,分別用“X”和“O”來代替自身的棋子。棋盤分9個格,雙方可以在輪到自己下的時候,可以用棋子占領其中一個空的格子。如果雙方中有一方的棋子可以連成一條直線,則這一方判勝,對方判負。當所有的格子都被占領,但雙方都無法使棋子連成一條直線的話,則判和棋。

這是一個智能型的一字棋游戲,機器可以模擬人與用戶對弈。當輪到機器來下的時候,機器會根據當前棋局的形勢,利用極大極小算法算出一個評價值,判斷如何下才對自身最有利,同時也是對方來說對不利的,然后下在評價值最高的地方。另外利用α-β剪枝,使機器在搜索評價值的時候不用擴展不必要的結點,從而提高機器計算的效率。

在用戶界面方法,用一個3×3的井字格來顯示用戶與機器下的結果。當要求用戶輸入數據的時候會有提示信息。用戶在下的過程中可以中途按下“0”退出。當用戶與計算機分出了勝負后,機器會顯示出比賽的結果,并按任意鍵退出。如果用戶在下棋的過程中,輸入的是非法字符,機器不會做出反應。

三、實驗步驟和過程

1.α-β搜索過程  在極小極大搜索方法中,由于要先生成指定深度以內的所有節點,其節點數將隨著搜索深度的增加承指數增長。這極大地限制了極小極大搜索方法的使用。能否在搜索深度不變的情況下,利用已有的搜索信息減少生成的節點數呢?

MINIMAX過程是把搜索樹的生成和格局估值這兩個過程分開來進行,即先生成全部搜索樹,然后再進行端節點靜態估值和倒推值計算,這顯然會導致低效率。如圖中,其中一個MIN節點要全部生成A、B、C、D四個節點,然后還要逐個計算其靜態估值,最后在求倒推值階段,才賦給這個MIN節點的倒推值-∞。其實,如果生成節點A后,馬上進行靜態估值,得知f(A)=-∞之后,就可以斷定再生成其余節點及進行靜態計算是多余的,可以馬上對MIN節點賦倒推值-∞,而絲毫不會影響MAX的最好優先走步的選擇。這是一種極端的情況,實際上把生成和倒推估值結合起來進行,再根據一定的條件判定,有可能盡早修剪掉一些無用的分枝,同樣可獲得類似的效果,這就是α-β過程的基本思想。α-β搜索過程一字棋的

圖一字棋第一階段α-β剪枝方法為了使生成和估值過程緊密結合,采用有界深度優先策略進行搜索,這樣當生成達到規定深度的節點時,就立即計算其靜態估值函數,而一旦某個非端節點有條件確定其倒推值時就立即計算賦值。從圖中標記的節點生成順序號(也表示節點編號)看出,生成并計算完第6個節點后,第1個節點倒推值完全確定,可立即賦給倒推值-1。這時對初始節點來說,雖然其他子節點尚未生成,但由于s屬極大值層,可以推斷其倒推值不會小于-1,我們稱極大值層的這個下界值為α,即可以確定s的α=-1。這說明s實際的倒推值決不會比-1更小,還取決于其他后繼節點的倒推值,因此繼續生成搜索樹。當第8個節點生成出來并計算得靜態估值為-1后,就可以斷定第7個節點的倒推值不可能大于-1,我們稱極小值層的這個上界值為β,即可確定節點7的β=-1。有了極小值層的β值,很容易發現若α≥β時,節點7的其他子節點不必再生成,這不影響高一層極大值的選取,因s的極大值不可能比這個β值還小,再生成無疑是多余的,因此可以進行剪枝。這樣一來,只要在搜索過程記住倒推值的上下界并進行比較,就可以實現修剪操作,稱這種操作為α剪枝。類似的還有β剪枝,統稱為α-β剪枝技術。在實際修剪過程中,α、β還可以隨時修正,但極大值層的倒推值下界α永不下降,實際的倒推值取其后繼節點最終確定的倒推值中最大的一個倒推值。而極小值層的倒推值上界β永不上升,其倒推值則取后繼節點最終確定的倒推值中最小的一個倒推值。在進行α-β剪枝時,應注意以下幾個問題:  (1)比較都是在極小節點和極大節點間進行的,極大節點和極大節點的比較,或者極小節點和極小節點間的比較是無意義的。  (2)在比較時注意是與"先輩層"節點比較,不只是與父輩節點比較。當然,這里的"先輩層"節點,指的是那些已經有了值的節點。  (3)當只有一個節點的"固定"以后,其值才能夠向其父節點傳遞。  (4)α-β剪枝方法搜索得到的最佳走步與極小極大方法得到的結果是一致的,α-β剪枝并沒有因為提高效率,而降低得到最佳走步的可能性。  (5)在實際搜索時,并不是先生成指定深度的搜索圖,再在搜索圖上進行剪枝。如果這樣,就失去了α-β剪枝方法的意義。在實際程序實現時,首先規定一個搜索深度,然

總結

以上是生活随笔為你收集整理的c语言编简单博弈小游戏,[2018年最新整理]实验二:利用α-β搜索过程的博弈树搜索算法编写一字棋游戏.doc...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。