1. 極大極小值演算法有什麼優缺點
Minimax演算法常用於棋類等由兩方較量的游戲和程序。該演算法是一個零總和演算法,即一方要在可選的選項中選擇將其優勢最大化的選擇,另一方則選擇令對手優勢最小化的一個,其輸贏的總和為0(有點像能量守恆,就像本身兩個玩家都有1點,最後輸家要將他的1點給贏家,但整體上還是總共有2點)。很多棋類游戲可以採取此演算法,例如tic-tac-toe。
2. 如圖,求問如何計算極大值和極小值
好像條件不夠吧?應該還有總面積或者其他什麼條件限制的吧?用高等數學里列出函數,求該函數的一階導數,令一階導數等於0,可以算出極值,再求二階導數,根據結果是大於0還是<0判斷所得的是極大值還是極小值
3. 什麼是極小化極大演算法
樓主算是問對人啦。我是做計算機博弈游戲開發的。
1、提出這個問題是為了解決象棋,五子棋這樣的二人全息零和博弈
二人:游戲是2個人玩的
全息:雙方的棋面信息都可以看到。(撲克牌就不同了)
零和:雙方的利益和是0.如果你勝利積1分。我就是輸-1分。相加就是0
2、極大極小的概念是相對的
我走棋,希望對我的利益幫助是最大的。對你的利益幫主是最小的
3、經典的例子很多。井字棋,五子棋,中國象棋,國際象棋等
象棋為例:
我和樓主對弈,某一步,我有N中走法,期中一種走法x後。我還要評估樓主針對我的X走法的所有應付策略。如果對2個人的局面做一個評判。我肯定希望選擇者N種走法中,即時你應對了,對我利益也是最大的那種走法。
4、這個概念我就貼個地址吧。後面的負極大極小演算法,alphabeta剪枝演算法都很經典的
希望你早日寫一個屬於你自己的極大較小值演算法的游戲
http://www.xqbase.com/computer.htm【一定要通讀10遍以上】
好運!
4. 極大極小演算法有些不明白
先來說極小極大演算法主要應用於什麼樣的游戲:
1. 零和游戲(Zero-sum Game):意思就是你死我活,一方的勝利代表另一方的失敗,比如,象棋,五子棋等。
2. 完全信息(Perfect Information):玩家知道之前所有的步驟。象棋就是完全信息,因為玩家是交替著落子,且之前的步驟都能在棋盤上體現,但是石頭剪子布就不是。
這樣的游戲通常可以把他們看作一個樹狀圖,把每一種可能性列出來。比如下面這個井字棋游戲,Max代表你自己,Min代表你的對手。
這個時候我們需要給每一種結果一個分數,就是這里的Utility。這個分數是站在我自己(也就是Max)的角度評估的,比如上圖中我贏了就是+1,輸了是-1,平局時0。所以,我希望最大化這個分數,而我的對手希望最小化這個分數。(在游戲中,這個分數被稱為static value。)這里要說一下,井字棋是個比較簡單的游戲,所以可以列出所有可能的結果。但是,大部分游戲是不太可能把所有結果都列出來的。根據計算機運算量,我們可能只能往前推7,8步,所以這個時候分數就不只-1,1,0這么簡單了,會有專門的演算法來根據當前結果給不同的分數。
假設我們有如下圖的游戲,我是先手,我應該如何利用Minmax演算法來選出第一步怎麼走呢?
當然對於一個復雜的游戲來說,比如象棋,肯定是需要非常多步才能完成的。這就導致結果的數量是成幾何增長的,也就是說,如果這個游戲每一步都有n個選擇,那麼在x步以後,將會有n^x個選擇。這個時候,我們就需要採取剪枝演算法(Alpha-Beta)來減少運算量。從剪枝演算法這個名字我們就能看出,這個演算法能讓我們剪掉樹狀圖中的一些分支,從而減少運算量。在這里也說一下剪枝演算法,因為這並不是個不同於極小極大的演算法,而是極小極大演算法的升級版。
我們將游戲簡化成如下圖,使用Minimax演算法,我們可以得出這樣的結果
5. 求最大值與最小值的演算法
int[] n = {1,2,3,4,5,6,7,8,9,10};int max = n[0];int min = n[0];for(int i = 1;i < 10;i++){ if(min > n[i]){ min = n[i]; } if(max < n[i]){ max = n[i]; }}System.out.println("max=" + max);System.out.println("min=" + min);
6. 極大極小演算法的極大極小是什麼意思為什麼一個要追求最大,一個追求最小
這是個數學問題。單調函數有最大值、最小值。非單調連續函數中間也許有多個波峰或波谷,對應中間的每一個波峰有一個極大值,每一個波谷有一個極小值;最大、最小是整個區間上的,也許和某個極大或極小值一致。
7. 極大極小演算法問題
程序應該是正確的,可能是你哪個地方沒注意,弄錯了
8. 最大值和最小值的最優演算法
這是不可能的,考慮a,b,c三個元素
要找出最大值,必須比較兩次,在此基礎上再比較一次才能找出最小值,而3*3/2-2=2.5
也可以用遞歸思想分析,每增加一個數,都必須和原數組的最大值和最小值比較,比較次數增加2,所以比較次數為2n加一個常數
9. 利用遺傳演算法求函數的極小值和極大值的區別
用遺傳演算法求已知函數的最小值點的方法:1、首先建立自定義函數,f(x)ga_fun=@(x)11*sin(6*x)+7*cos(5*x);2、其二用ga()函數求解最小值[x,fval,exitflag]=ga(ga_fun,1,[],[],[],[],lb) 3、然後用ezplot()函數或plot()函數,繪出其函數f(x)的圖形及最小值點4、運行結果5、執行代碼
10. 粒子群演算法怎麼同時求極大值與極小值
粒子群演算法中每個粒子都記憶自己的最好位置,即從進化開始到現在這個粒子能使目標函數達到最大或是最小的那個時刻粒子的位置。個體極值就是粒子在最好位置所得到的目標函數的值。全局極值就是在所有粒子的個體極值中最大或是最小的那個值,與只對應的就是全局最優粒子的位置。對有約束的優化函數,一般是將約束條件加入到目標函數中,然後計算總體的值,以此來作為評價標准。