Dama gibi bir masa oyunu için en iyi algoritmayı nasıl seçerim?


15

Dama gibi bir masa oyunu için en iyi algoritmayı nasıl seçerim?

Şimdiye kadar, sadece üç algoritmayı düşündüm, minimax, alfa-beta budama ve Monte Carlo ağaç araması (MCTS). Görünüşe göre, hem alfa-beta budama hem de MCTS, temel minimax algoritmasının uzantılarıdır.

Yanıtlar:


18

tl; dr:

  • Bu algoritmaların hiçbiri modern çalışma için pratik değildir, ancak pedagojik olarak başlamak için iyi yerlerdir.

  • Her zaman çıplak minimax aramasında Alpha-Beta budama kullanmayı tercih etmelisiniz.

  • Yararlı bir sezgisel bulursanız, bir tür sezgisel rehberli arama kullanmayı tercih etmelisiniz. Yararlı bir sezgisel tarama yapmak genellikle çok fazla alan bilgisi gerektirir.

  • Monte Carlo Ağacı aramasını iyi bir buluşsal yöntemden yoksun olduğunuzda, hesaplama kaynaklarının sınırlı olduğu ve hataların gerçek dünyadan daha büyük sonuçları olmayacağı durumlarda kullanmayı tercih etmelisiniz.

Daha fazla detay:

Minimax araştırmasında çok zeki olmaya çalışmayız. Sadece standart bir dinamik programlama yaklaşımı kullanıyoruz. Eğer oyunun sonuna yaklaşırsak, fark hamlelerinin değerini anlamak kolaydır (oyun bir sonraki hamlede sona ereceğinden, çok ileriye bakmak zorunda değiliz). Benzer şekilde, rakibimizin oyunun son hamlesinde ne yapacağını bilersek, ikinci hamlede ne yapmamız gerektiğini anlamak kolaydır. Etkili bir şekilde ikinci son hamleyi daha kısa bir oyunun son hamlesi olarak değerlendirebiliriz. Daha sonra bu işlemi tekrarlayabiliriz. Bu yaklaşımı kullanmak, standart geniş biçimli bir oyunda en iyi stratejileri ortaya çıkarmak için kesindir, ancak en basit oyunlar dışındaki herkes için mümkün olmayan her hareketi dikkate almamızı gerektirecektir.

Alfa-Beta budaması Minimax aramasında sıkı bir gelişmedir. Bazı hareketlerin diğerlerinden daha kötü olduğu gerçeğinden faydalanır. Örneğin, satrançta, o pozisyondan başka şeyler yapabilseniz bile, beni mat arkadaşa koyma fırsatı verecek herhangi bir hareketi düşünmem gerekmiyor . Bir hamlenin kayba yol açabileceğini gördüğümde, o noktadan sonra başka neler olabileceğini düşünmeye zahmet etmeyeceğim. Gidip başka şeylere bakacağım. Bu algoritma da doğru sonucu vereceğinden emindir ve daha hızlıdır, ancak yine de uygulamadaki hareketlerin çoğunu dikkate almalıdır.

Bu tür oyunları tam olarak çözmenin aşırı hesaplama maliyetini aşmanın iki yaygın yolu vardır:

  1. Sezgisel kullanım (A * araması pedagojik amaçlar için alışılmış bir algoritmadır, ancak Quiescence araması 2 oyunculu oyunda benzer bir fikirdir). Bu sadece oyunun durumunun değerini tahmin eden bir fonksiyondur . Bir oyundaki tüm hareketleri göz önünde bulundurmak yerine, ilerideki sonlu mesafeye doğru hareket etmeyi düşünebilir ve daha sonra sezginin değerini, ulaştığınız durumların değerini değerlendirmek için kullanabilirsiniz. Buluşsal yöntem tutarlıysa (esas olarak: her zaman devletlerin kalitesini abartırsa ), bu hala doğru cevabı verecektir, ancak pratikte muazzam hızlanmalarla.

  2. Rollouts'u kullanın (Monte Carlo Ağacı Arama gibi). Temel olarak, her hamleyi düşünmek yerine, rastgele hareket eden oyuncular arasında birkaç bin simüle oyun oynayın (bu, tüm olası hamleleri düşünmekten daha hızlıdır). Durumlara, ondan başlayarak oyunların ortalama kazanma oranına eşit bir değer atayın. Bu doğru cevabı vermeyebilir, ancak bazı oyunlarda güvenilir bir şekilde çalışır. Genellikle tek başına kullanmak yerine daha kesin tekniklerin bir uzantısı olarak kullanılır.


A * diğer algoritmaların yaptığı gibi iki oyunculu oyunların içeriğine gerçekten uymuyor gibi görünüyor mu? MCTS ile ilgili not: tipik uygulamalar "tüm sabit derinlikteki tüm hareketleri dikkate almaz" ve ardından sunumları başlatır; bunun yerine, tipik uygulamalar dinamik olarak, ağaç arama ağacını yavaş yavaş büyütür, daha umut verici kısımlarda (Seçim stratejisi tarafından birçok sunumun yönlendirildiği parçalar) daha az umut verici kısımlarda daha az büyür.
Dennis Soemers

1
@JohnDoucette neden "Bu algoritmaların hiçbiri modern çalışma için pratik değildir, ancak pedagojik olarak başlamak için iyi yerlerdir" diyeceksiniz. MCTS durumunda, bir durum ve bir eylem verildiğinde bir sonraki duruma geçiş iyi tanımlandığında, tek oyunculu arama için bile modern çalışma için çok uygun görünmektedir. Kabul eder misin?
Miguel Saraiva

1
@MiguelSaraiva Tek başına, MCTS genellikle modern bir uygulama için kullanacağınız bir şey değildir. Öğrenilmiş bir sezgisel tarama sağlamak için DNN gibi bir şeyle birlikte oldukça iyi olurdu.
John Doucette

1
@JohnDoucette "MCTS genellikle modern bir uygulama için kullanacağınız bir şey değildir". Her şeyden önce, bahsettiğiniz "modernite" 2016'da büyük bir atılım gerçekleştirdi (MCTS + DNN) ve bundan önceki her şeyin geçersiz (açıkça yanlış) olduğunu ima ediyormuşsunuz gibi görünüyor. Aslında, MCTS'nin normalde bunun tersi nedeniyle kullanılmadığını söylemek daha akla yatkın olabilir: ÇOK ilerlemiş: Endüstride gerçekten eski ve MCTS'ye yükseltilebilen yığınlar var. Bu MCTS + DNN'lerin çoğu için uzak bir rüya çünkü ön eğitim hemen hemen akla yatkın değil.
Johan

1
@Johan Bu endüstriyel uygulamalar için bana doğru geliyor , ama soru "dama gibi bir masa oyunu" soruyor. Bu tür oyuncak sorunları için, MCTS'nin doğru modern yaklaşım olmadığını düşünüyorum. Yine de mevcut konuşlandırılmış sistemlerde büyük bir gelişme olacağı birçok gerçek dünya sorunu var.
John Doucette

7

Not: Sadece bu üç algoritmayı seçmemizin nedeni, onları anlamada elimdeki zamana bağlıydı. Küçük bir araştırmadan, bu algoritmaların temel olarak minimax algoritmasına girildiğini buldum. Eğer birini anlayabilirsem, diğer ikisi yerine yerleşecektir.

Bu bağlamda Minimax ile başlamayı tavsiye ederim . Üç algoritmadan Minimax en kolay anlaşılır yöntemdir.

Alpha-Beta , diğer cevaplarda da belirtildiği gibi, Minimax'ın üstünde katı bir gelişmedir. Minimax temel olarak Alpha-Beta uygulamasının bir parçasıdır ve Alpha-Beta'yı iyi anlamak için yine de Minimax'ı iyi anlamak gerekir. Minimax'ı anladıktan ve uyguladıktan sonra zamanınız varsa, daha sonra Alpha-Beta'ya geçmenizi ve Minimax'ın üzerine inşa etmenizi tavsiye ederim. Henüz anlamadıysanız Alpha-Beta ile başlamak gerçekten mantıklı değil.

Monte-Carlo Ağaç Arama , gerçekten, derinden anlamak için muhtemelen biraz daha gelişmiş ve daha karmaşıktır. Geçtiğimiz on yıl içinde, MCTS gerçekten diğer ikisinden çok daha popüler olmak için büyüyor, bu nedenle MCTS'yi anlamak daha "yararlı" olabilir.

Minimax ve MCTS arasındaki bağlantı, Minimax ve Alpha-Beta arasındaki bağlantıdan daha az doğrudan / açıktır, ancak yine de en azından kavramsal düzeyde bir bağlantı vardır. Minimax hakkında iyi bir anlayışa sahip olmanın MCTS'ye dalmadan önce hala faydalı olduğunu iddia ediyorum ; özellikle, Minimax'ı ve kusurlarını / zayıf noktalarını anlamak, MCTS'nin neden "gerekli" / popüler hale geldiğini anlamanıza yardımcı olabilir.


Sonuç olarak, bence:

  • Alfa-Beta kesinlikle Minimax'tan daha iyidir, ama aynı zamanda Minimax'ın üstüne kuvvetle ilişkilidir / inşa edilmiştir; Yani, Minimax ile başlayın, zaman izin verirse daha sonra Alpha-Beta'ya gidin
  • MCTS'nin farklı güçlü ve zayıf yönleri vardır, "modern" problemlerde (ama her zaman değil) genellikle Alpha-Beta'dan daha iyidir, MCTS'ye dalmaya başlamadan önce Minimax'ın iyi anlaşılması muhtemelen yararlı olacaktır.

Ayrıca kullanabileceğim başka bir algoritma var mı? Bu bir alfa beta budama seviyesindeydi
Joey

@Joey Hmm hayır gerçekten değil. Minimax çok doğal bir başlangıç ​​noktasıdır, eğer yeni başlıyorsanız kesinlikle şiddetle tavsiye ederim. Bu temelde satranç / dama / tic tac toe / neyse oyunlar için geliştirilen ilk algoritma idi. Daha sonra, binlerce satranç olmasa bile, birçoğu chessprogramming.wikispaces.com/Search adresinde bulabileceğiniz yüzlerce iyileştirme geliştirildi . Alpha-Beta, Minimax'ın en üstündeki en doğal gelişmedir.
Dennis Soemers

@Joey Monte-Carlo Ağaç Arama biraz farklıdır (temelde Minimax olması gerekmez), ilginç, eğlenceli, popüler ve "modern" AI'da son derece alakalı. Yine de, temeller önemlidir, teknik olarak mümkün olsa bile, henüz Minimax + Alpha-Beta'yı anlamadıysanız, MCTS ile hemen başlamanızı önermem.
Dennis Soemers

Bu site için teşekkür ederim. Şimdi okuyabileceğim bir bilgi hazinesi. Yeni şeyler öğrenmenin en zor yanı, anlamanıza yardımcı olacak doğru materyalleri bulmaktır. Site için tekrar teşekkürler
Joey

@Joey Satranç programlamanın öğrenmesi en kolay site olup olmadığından% 100 emin değilim (ve sayfanın sonunda Temmuz sonunda kaybolabileceğine dair korkunç bir uyarı var gibi görünüyor). Eğer doğru hatırlıyorsam, birçok açıklama oldukça kısa / muhtemelen bir acemi olup olmadığını anlamak kolay değildir. En azından, her türlü algoritma / geliştirmenin isimlerinin iyi, kapsamlı bir koleksiyonu olacak ve başka yerlerde daha ayrıntılı bilgi için orijinal kaynaklara bakmaya veya tüm bu isimleri google'a deneyebilirsiniz.
Dennis Soemers

1

Alfa-beta'yı seçmeniz gereken Minimax ve Alpha-Beta budaması arasında seçim yapmak zorundayım. Daha verimli ve hızlıdır, çünkü keşif ağacınızın önemli bir kısmını budanabilir. Ancak, max veya min bakış açısına bağlı olarak eylemleri en iyiden en kötüye doğru sıralamanız gerekir, böylece algoritma keşif gerektiğinde hızlı bir şekilde fark edebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.