CodeBlanks Logo Icon CodeBlanks

Alpha-beta budama

Alpha-beta budama ile aramayı hızlandırmayı öğrenirsin.

Alpha-beta budama

Alpha-beta budama, minimax'ın hızlandırılmış halidir. Oyun ağacında kesin değerlendirilmeyecek dalları budar; sonuç aynı kalır.

Alpha, max oyuncunun güvence altına aldığı en düşük değer; beta, min oyuncunun güvence altına aldığı en yüksek değerdir.

Bir düğümde alpha >= beta olduğunda, geri kalan çocuklar incelenmeden budama yapılır. İyi sıralama ile karmaşıklık O(b^(d/2))'ye iner.

Budama koşulu

Max dalında her çocuk değerlendirildikten sonra alpha = max(alpha, value) ile alpha güncellenir. Eğer alpha >= beta ise, geri kalan çocuklar incelenmeden döngüden çıkılır.

Min dalında ise beta = min(beta, value) ile beta güncellenir ve beta <= alpha koşulu sağlanırsa budama yapılır.

Budama, hiçbir zaman nihai minimax değerini değiştirmez; yalnızca gereksiz hesabı önler.

Uygulama alphabeta fonksiyonu

alphabeta(node, alpha, beta, is_max) yaz. Minimax değerini budamayla döndür. print(alphabeta([[3, 5], [2, 9]], float('-inf'), float('inf'), True)) ile 3 yazdır.

Başlangıç kodu

solution.py
def alphabeta(node, alpha, beta, is_max):
    # Alpha-beta budamalı minimax

Örnek çözüm

solution.py
def alphabeta(node, alpha, beta, is_max):
    # Alpha-beta budamalı minimax
    if not isinstance(node, list):
        return node
    if is_max:
        value = float('-inf')
        for child in node:
            value = max(value, alphabeta(child, alpha, beta, False))
            alpha = max(alpha, value)
            if alpha >= beta:
                break
        return value
    value = float('inf')
    for child in node:
        value = min(value, alphabeta(child, alpha, beta, True))
        beta = min(beta, value)
        if beta <= alpha:
            break
    return value
print(alphabeta([[3, 5], [2, 9]], float('-inf'), float('inf'), True))

Beklenen çıktı

3

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 alpha güncelleme

Soru
alpha = max(alpha, ____)
Cevap
alpha = max(alpha, value)

Açıklama: alpha, value ile karşılaştırılır.

2 Max dalında budama ne zaman yapılır?

solution.py
if alpha >= beta:
    break
  • Alpha, beta'dan büyükse Doğru cevap
  • Alpha sıfırsa
  • Beta sıfırsa
  • Tüm çocuklar tarandığında

Açıklama: Alpha >= beta olduğunda geri kalan çocuklar buda nır.

3 Alpha-beta kavramları

Kavram Anlamı
alpha Max alt sınır
beta Min üst sınır
budama Gereksiz dal kesme
O(b^(d/2)) İyi sıralama

Uzman seviye bölümündeki tüm dersler