E 6 ning qiymatini b ga qaytaradi. Da B, beta = min (5, 6) qaysi 5. Tugun b ning qiymati ham 5
B 5 ni a ga qaytaradi. Da Bir, alfa = max (-INF, 5) qaysi 5. Endi maximizerga 5 yoki undan katta qiymat kafolatlanadi. A endi 5 dan yuqori qiymatni olish mumkinligini ko'rish uchun C ni chaqiradi.
Da C, alfa = 5 va beta = +INF. C qo'ng'iroqlar F
Da F, alfa = 5 va beta = +INF. F bo'lgan uning chap bola qaraydi 1. hali 5 bo'lgan alfa = max (5, 1).
F bo'lgan uning o'ng bola qaraydi 2. Shuning uchun bu tugunning eng yaxshi qiymati 2. Alpha hali 5 qoladi
F 2 ning qiymatini C ga qaytaradi. Da C, beta = min (+INF, 2). Ahvoli beta Shunday qilib, u buziladi va hatto G ning butun pastki daraxtini hisoblash shart emas.
Bu tanaffus off ortida sezgi deb, C da minimizer bir qiymati kafolatlangan edi 2 yoki kam. Lekin maximizer allaqachon u b tanlasangiz 5 qiymati kafolatlangan edi. Shunday qilib, nima uchun maximizer hech C tanlash va bir qiymati kamroq olish edi 2 Yana siz u o'sha oxirgi nima muhim emas edi, deb ko'rish mumkin 2 qadriyatlar edi. Biz, shuningdek, bir butun sub daraxt o'tish tomonidan hisoblash ko'p saqlangan.
C endi a ga 2 qiymat qaytaradi. Shuning uchun A da eng yaxshi qiymati max emas (5, 2) qaysi bir 5.
Demak maximizer oladigan optimal qiymat 5
Ilova:
package com.company;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
class GFG {
// Initial values of
// Aplha and Beta
static int MAX = 1000;
static int MIN = -1000;
// Returns optimal value for
// current player (Initially called
// for root and maximizer)
static int minimax(int depth, int nodeIndex,
Boolean maximizingPlayer,
int values[], int alpha,
int beta)
{
// Terminating condition. i.e
// leaf node is reached
if (depth == 3)
return values[nodeIndex];
if (maximizingPlayer)
{
int best = MIN;
// Recur for left and
// right children
for (int i = 0; i < 2; i++)
{
int val = minimax(depth + 1, nodeIndex * 2 + i,
false, values, alpha, beta);
best = Math.max(best, val);
alpha = Math.max(alpha, best);
// Alpha Beta Pruning
if (beta <= alpha)
break;
}
return best;
}
else
{
int best = MAX;
// Recur for left and
// right children
for (int i = 0; i < 2; i++)
{
int val = minimax(depth + 1, nodeIndex * 2 + i,
true, values, alpha, beta);
best = Math.min(best, val);
beta = Math.min(beta, best);
// Alpha Beta Pruning
if (beta <= alpha)
break;
}
return best;
}
}
// Driver Code
public static void main (String[] args)
{
int values[] = {3, 5, 6, 9, 1, 2, 0, -1};
System.out.println("The optimal value is : " +
minimax(0, 0, true, values, MIN, MAX));
}
}
Xulosa
Men bu amaliy ishda o’yinlarda α va β izlashdan foydalanib o’yinlarda maksimal qiymat olishni o’rgandim. Bu mavzu menga yangi bo’lganligi uchun kerakli nazariy va amaliy bilimlarga ega bo’ldim.
Do'stlaringiz bilan baham: |