Konuyu görüntüle
IUCODERS FORUM > Programlama > C / C++ > Min Max algorithm
Yazar
patoshik


avatar
ist
Kayıt: 06.04.2009
16.05.2009-19:37 #59908
c# yapay zeka ile oluşturacağım bi oyun için min max algoritması kullanmam gerekiyor. bu konuyla ilgili elinde kaynak ve örnek kod olan var mı acaba? internette yaptığım aramalarda açıklayıcı bilgiler bulamadım fazla. graph olayları giriyo işin içine, kodlara dönüştürme olayı, min'di max'tı epey karışıyo galiba. yardımcı olabilecek varsa şimdiden teşekkürler chicken





bi gün herkes 10 dakkaligina da olsa FAiK olacak...
Yazar
sis***


avatar

Kayıt: 15.01.2006
18.05.2009-22:43 #59987
Algoritmanızı, daha doğrusu minimize etmek istediğiniz denklemi yazıp detay verirseniz belki yardımcı olabiliriz. Problemin ne olduğunu bilmeden problem çözemeyiz.





University Of Minnesota- Minnesota(ABD)




Yazar
patoshik


avatar
ist
Kayıt: 06.04.2009
19.05.2009-00:00 #59999
c#'ta çin daması yazmam gerekiyor, 2 oyuncu tarafından oynanacak oyunda ben hamle yap dediğimde oyun en uygun hamleyi seçip yapacak. ama bu hamleler ai ile yapılacak. yani ben hamle yap dediğimde program gördüğü hamlelerden en uygun olanını yapacak. hamlelere de bunu yaptırmak içim min-max algoritması en basiti imiş, onun için de onu kullanmak istiyorm. şu an için problemin anahatları bunlar...peace





bi gün herkes 10 dakkaligina da olsa FAiK olacak...
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
19.05.2009-00:07 #60000
Şimdi önce senin bir fonksiyon oluşturman lazım.
Örneğin X taşını a noktasından nerelere sürükleyebilirsin. Sürüklediğin her nokta için bir puan oluşturduğunu düşünelim. Puan oluşturma algoritmamız da şu şekilde olsun. noktayı taşıdığın yerde o noktanın etrafındaki rakip noktaların sayısı kadar olsun. Bunlardan bir tree oluşturup tree da sağa sola dallanman lazım.





N/A
Yazar
kellad


avatar
istanbul
Kayıt: 21.01.2006
20.05.2009-12:05 #60042
Orhan'ın söylediği gibi olmalı. Ben şöyle yapardım,
Senin yapabileceğin ve karşı tarafın yapabileceği her türlü hamleyi bir ağaca girersin. Her bir hamle kaydına puan olarak (senin taş adedin - rakibinin taş adedini) girersin. 5-6 hamle sonrasına kadar bu ağacı olşturduktan sonra. Son seviyeden (yapraklardan) en yüksek puanlı bir tanesini seçip o yöne giden hamleni yaparsın. Bir sonraki hamlede elinde n-1. hamlelere kader ağacın zaten var olduğundan sadece n. hamleyi tekrar hesaplar ve yine en yüksek puanlı yöne doğru işleme devam edersin.
Ayrıca ağacın artık ihtiyacın olmayacak dallarını hafızadan silmeli. Hamle kayıtlarını mümkün olduğunca küçük formatta kaydetmelisin ki hafızan mümkün olduğunca çok hamle alsın ve işlemin hızlı olsun. Çünkü Dama için 5. 6. hamlede milyonlarca alternatifin olabilir.





Decompiling the code of universe.
Listening the cosmic background radiation.
Swimming in Inter Stellar Medium.
Yazar
patoshik


avatar
ist
Kayıt: 06.04.2009
21.05.2009-00:06 #60110
 
Senin yapabileceğin ve karşı tarafın yapabileceği her türlü hamleyi bir ağaca girersin. Her bir hamle kaydına puan olarak (senin taş adedin - rakibinin taş adedini) girersin. 5-6 hamle sonrasına kadar bu ağacı olşturduktan sonra. Son seviyeden (yapraklardan) en yüksek puanlı bir tanesini seçip o yöne giden hamleni yaparsın. Bir sonraki hamlede elinde n-1. hamlelere kader ağacın zaten var olduğundan sadece n. hamleyi tekrar hesaplar ve yine en yüksek puanlı yöne doğru işleme devam edersin.
Ayrıca ağacın artık ihtiyacın olmayacak dallarını hafızadan silmeli. Hamle kayıtlarını mümkün olduğunca küçük formatta kaydetmelisin ki hafızan mümkün olduğunca çok hamle alsın ve işlemin hızlı olsun. Çünkü Dama için 5. 6. hamlede milyonlarca alternatifin olabilir.


ağaç yapısını nasıl oluşturacağımı bilmiyorum. bu ağaç yapısını tüm hamlelere uygulamam gerekecek değil mi? hamleye göre ağaç yapısını nasıl kontrol edeceğimi kafamda tam oluşturamıyorum. örnek kod veya kaynak paylaşabilecek varsa memnun olurum.
 
orhan yazdı, kellad yazdı
çok teşekkürler ayrıca verdiğiniz bilgiler için blushing





bi gün herkes 10 dakkaligina da olsa FAiK olacak...
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
21.05.2009-11:27 #60125
tüm hamlelere uygulaman zor. 2-3 seviye kadar hesaplar gerisini bırakırsın.
basit bir ağaç yapısı şöyledir.
________________________________
| sag node | ust node | sol node |
--------------------------------------
her node un altında yine bu elemanlardan var

şu resim deki gibi









N/A
Yazar
serdr


avatar
Istanbul
Kayıt: 13.07.2006
21.05.2009-11:34 #60129
şurada:
http://code.google.com/p/aima-java/

minimax decision için kodlar var, python için de var aynı sitede.
utulity, display vs metodlarını edit etmeni bekliyor, yardımı dokunabilir.

Artificial intelligence(Russel-Norvig) kitabına göz atmanda da kesinlikle fayda var,
prunning vs bazı ayrıntılar mevcut minmax decision ile ilgili.





Yazar
serdr


avatar
Istanbul
Kayıt: 13.07.2006
21.05.2009-11:40 #60130
hatta şurada

http://www.cedarlearning.org/aima/aima_dotNET/games/

tic tac toe falan c# olarak yazılmış. yine minmax.






Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb