Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

YAPAY ZEKA DERS

YAPAY ZEKALI TIC TAC TOE DEV


MiniMax Algoritmas kullanlarak hazrlanm Tic Tac Toe devinde kullanc bilgisayara kar oynar. Bilgisayarn hamlesi MiniMax Algoritmas yntemiyle hamleler arasndan hamle bulunarak yaptrlr.

Onur Grkan GLTEKN B081210064 SAKARYA NVERSTES Bilgisayar Mhendislii

31.10.2011

YAPAY ZEKALI TIC TAC TOE OYUNU YAPIMI


TIC TAC TOE NASIL OYNANIR?
Tictactoe olarak isimlendirilen bu oyun halk arasnda xox adyla bilinir. Oynan olduka basittir. 2 kii arasnda oynanr. 2 kii srasyla oyunda hamle yapar. Oyun ekil olarak aadaki gibidir:

Oyun iin karakterler X ve O dur. Oyuncular bu karakterlerden birini setikten sonra oynanan oyun bitene kadar hep ayn karakteri kullanrlar. rnek olarak ilk balayan oyuncu oyun tahtasna x koyar. Bunu herhangi istedii bir kareye koyabilir. Hamle yapldktan sonra oyun tahtas u ekilde gzkr:

Ardndan dier oyuncu istedii bo bir kareye hamlesini yapar. Hamle yapldktan sonra oyun tahtas u ekilde gzkr:

Oyun bu ekilde srayla yaplan hamleler ile devam eder. lk olarak X ile balayan oyuncu son hamleyi de yapar. Eer 3 tane X veya 3 tane O yanyana gelmi ise oyun sonlanr. Kazanan ise 3 tane harfi yanyana getirebilen oyuncudur. rnek olarak oyun u ekilde bitmi olabilir:

lk balayan oyuncu 3 tane X yanyana getirebildiyse oyunu kazanm olur. rnek olarak oyun u ekilde bitmi olabilir.

VISUAL C# LE TIC TAC TOE OYUNUNUN GEREKLENMES


C#ta tic tac toe oyununu oluturmak iin ncelikle ekranda grlen arayz tasarladm. Form oluturdum baln deitirdim, arka plan rengini ayarladm. stte grm olduunuz meny oluturdum. Ardndan ekrana ka kare izdirdim ve bu karenin zerine izgiler izdirdim.

Oyunun oynanabilmesi iin Mouse ile tklanan blgenin koordinatlarn aldm be buna gre hangi karenin tklandn bulup o kareye X izdirdim. Bu hamlenin yaplmasnn ardndan bilgisayar MiniMax algoritmas sayesinde hamle MiniMax yapaca belirliyor ve bu kareye O koyuyor. Bu hamlenin Minimax ile nasl bulunduunu yle ksaca belirtelim:

Ayrca oyunda zorluk derecesini deitirerek, aata tarama yapaca derinlii deitirebilirsiniz.

Oyunda kullandm snflar: Form1.cs Skor.cs Program.cs Dugum.cs O.cs X.cs XOCiz.cs Kare.cs KareFabrika.cs Oyun.cs OyunMatrisi.cs YapayZeka.cs

Balangta biz sol orta kareye X koyduk. Bilgisayar ise sol aa kareye O koydu.

Daha sonra sol stteki kareye X koyduk bilgisayar ise sa aadaki kareye O koydu.

Bilgisayarn oyunu kazanamamas iin iki O arasna X koyduk fakat, MiniMax algoritmas ok iyi alt iin sol st keye O koyarak bizi 2 yerden sktrd. Artk yapacak ok da hamle kalmamt.

Bizde bilgisayarn apraz olarak OOO yapamamas iin araya X koyduk. Fakat bilgisayar orta sa kareye O yaparak oyunu kazand. te MiniMax Algoritmasnn gcn bu ekilde gryoruz.

Ekranda grld gibi oyun her bittiinde skor tablosu alr. Oyun sonucuyla uyar verildikten sonra tamama bastmzda Skor tabelas kar. Burdan oyunun sonularn izleyebilirsiniz.

imdi MiniMax algoritmasn dndmz zaman bir aa yaps karmza kmaktadr. te bu aa yapsn oluturup uygun dm bulma olayn YapayZeka adl snfmz yapyor. in gerei dndmz zaman Aata dmler var o halde ben bir adet Dugum adl snf oluturuyorum. Bu snf ierisinde kk dm tutan,dme alt dm ekleme ilemi yapan, dm kopyalama ilemi yapan bir snftr. Aa yapsnn gereinde her dm o anki oyun tahtas durumunu tutmak gibi bir grevi var. O halde Dugum adl snf OyunTahtasi adl snftan bir adet nesne bulundurmal. Bu OyunTahtasi snfndan alnan rnek o dm iin dnlm oyun durumunu tutacak olan deikendir. YapayZeka adl snf ise bu dmleri oluturup her dme o anki denedii tahta durumunu ykleyecektir. Dng yaplar kullanlarak btn bir aa rekrsif fonksiyon yardmyla oluturulur.

Tahtann yukardaki durumda yer aldn dnrsek O oyuncusunun O tan tahta zerinde deiik yerlerde deneyip, en uygun hamleyi bulmaya alyor. Bunu yaparken O tann mevcut durumda yataydan, dikeyden ve aprazdan 3 adet O koyup kazanabilecei durumlar sayyor.Daha sonra mevcut durumda X iin kazanlabilecek hamle saysn sayp, (MAX Says) - (MIN Says) yapyor. Bu oluan dm aacnda eer oyuncu minimumlar takip ediyorsa, ilerinden en kk deere sahip olan durumu seip o hamleyi yapyor .Eer maksimumlar takip ediyorsa , ilerinden en byk deere sahip olan durumu seip, onu oynuyor.Birde buna alfa ve beta gibi budama amal bir kriter konunca alfa ve beta durumdan gelen deere gre gncelleniyor. Budama ynteminde alfadan byk deere ve betadan kk bir deere sahip olamaz. Bu yzden bu snrlar dnda kalanlar gz ard ediyor.

Oyun Aalar:

Oyun aac bir oyundaki hamleleri gsteren yapdr. Balang pozisyonu aacn kkdr.

Herhangi bir dmn herhangi bir ocuuna tek bir oyun hamlesi ile erimek mmkndr. Aadaki resimde Tic Tac Toe oyunu olarak bilinen oyunun oyun aac grlmektedir. ekilden de anlald gibi bir kkmz ve bu dmlerden tek hamleyle eriebildiimiz farkl dallarmz (ocuklarmz) vardr. Minimax algoritmasnda bizim temel yardmcmz bu oyun aac yapsdr. O yzden oyun aac kavramn iyice renmemiz gereklidir.

Minimax: Altst ad da verilen bu yntem (minimaksta denilebiliyor) zeka (mantk) oyunlarnda sklkla kullanlan
bir yapay zeka tekniidir. Bu yntemin kullanlabilmesi iin aadaki artlarn salanmas gerekmektedir: ki kiilik olmaldr Srayla oynanmaldr. (Bir 1. oyuncu bir 2. oyuncu eklinde) Oyun durumu ilgili bilgiyle birlikte tahta olarak temsil edilebilmelidir. ki oyuncuda sonraki olas hamlelerin hepsi hakknda bilgiye sahip olmaldr. Buna mkemmel bilgi (perfect knowledge) denilmektedir. rnein Poker bu duruma uymaz. Rakibimizin elindeki kartlar bilemeyiz. Oyun hamleleri rasgele olmamaldr. (Zar oyunlar darda kalmaktadr) Oyunlar sonlu olmaldr. Bir ekilde biti durumu olmaldr. Minimax yntemi yukardaki artlar salayan oyunlar iin bir arama yntemidir. Bu arama daha nce bahsettiimiz oyun aac zerinde en uygun hamlenin bulunmasna ynelik bir aramadr. Bilgisayar mhendisliinde, yapay zeka konusunda kullanlan bir karar aac trdr. Aslnda minimax aalar bilgisayar bilimlerine iletme bilimindeki oyun teorisinden (game theory) girmitir. Temel olarak sfr toplaml bir oyunda (zero sum game), yani birisinin kaybnn baka birisinin kazanc olduu (veya tam tersi) oyunlarda karar vermek iin kullanlldrlar. rnein ou masa oyunu (satran, othello, tictactoe gibi) veya ou finansal oyunlar (borsa gibi) veya ou kumar oyunlar sfr toplaml oyunlar arasnda saylabilir (yani birisinin kayb baka birisinin kazancdr ve sonuta toplam sfr olur).

Yukarda bahsedilen bu oyunlarda doru karar verilmesini salayan minimax aac basite kayb asgariye indirmeye (mimize etmeye) ve dolaysyla kazanc azamiye karmaya (maximize etmeye) alr. Aa basite her dmde (node) farkl alternatiflerin deerlerini hesaplar. Son dmden (yapraklardan ,leaf) yukarya doru deerleri seerek gelir ve en sonunda btn aataki en doru seenek seilmi olur. rnein Tic Tac Toe oyununu ele alalm. 33 boyutundaki kare bir tabloda srasyla X ve O harflerinin taraflarca yazld bu oyunda, oyunun durumuna gre aadakine benzer bir karar aac kmas mmkndr:

Yukarda aacn kkn (root) oluturan ilk durumda oyunun mevcut hali grlmektedir. Ardndan karar verecek taraf olan ve tahtaya X sembol koyan oyuncu kendi oyununu analiz eder. X in oynanabilecei 3 ayr ihtimal bulunmaktadr ve btn bu ihtimaller aata farkl birer alt dm (node) olarak gsterilmitir. Aacn daha alt seviyesinde ise Xin oyananabilecei her ihtimalde, Onun oyananabilecei ihtimaller gsterilmitir. Bu durumda X oynayacak olan oyuncu btn ihtimalleri grm olur ve ilave olarak kendisinin yapaca son hamleleri aadaki ekilde hesaplar:

Yukardaki ekile Xin yapaca son hamleninde hesaplann gryoruz. Bir minimax aacnn hesaplanmas srasnda ka seviye gidileceine seviye (ply) ismi verilir. rnein yukardaki ilk ekildeki minimax aacm 2 seviye (ply) bir aaken, yukardaki son aacmz 3 seviyeli bir aatr. Minimax aacnn seviyesinin artmas sonucun daha kesin bulunmas ve yapay zekamzn baarsn arttrr. Ancak bunun karlnda bilgisayarn hafzasnda (RAM, memory) daha fazla bilginin tutulmas gibi bir bedel denir. rnein satran veya GO gibi ihtimallerin ok yksek olduu oyunlarda seviyenin belirli bir limitin altnda tutulmas gerekir. Bilgisayarn yukardaki aaca bakarak bir karar vermesi ok gtr. Kararn saysal bir deere oturmas iin yukardaki her hamle durumunu puanlamamz ve bundan sonra bilgisayarn minimax yaklam ile seim yapmasn istememiz gerekir. rnein bilgisayarn (Burada X olarak oynadn dnelim) kazanma durumlarna 1 ve kaybetme durumlarna 0 diyelim. Bu durumda ihtimaller ve puanlar aadaki ekilde olacaktr:

Yukardaki ekilden de anlalaca zere bilgisayar kazancnn en fazla olduu ihtimali semek ister. Basit bir hesapla bilgisayarn kazan durumlarnn toplamlarn aacn bir st seviyesine tayalm:

Yukarda aacn son seviyesinden karar vermemiz gereken pozisyona doru bir seviye puanlar tanmtr. Yani kararn verilmesi gereken pozisyon aacn kkndeki (en st seviyesindeki) pozisyondur ve oyun sonu en altta gsterilmektedir. te bizde puanlarmz karara bir seviye yaklatryoruz. Bu yaklatrma ilemi srasnda dikkat edilmesi gereken Xin hamle srasndaki azami (maximum) deerlerin tanmasdr nk X kendi hamlesinin en ok puan getirdii durumu almak ister. Ancak yukardaki grafikteki son seviyede Xin tek hamlesi olduu iin mecburen (bir seim yaplmakszn) puanlar bir seviye yukar tanmtr. Onun hamlesinin bulunduu bir st seviyede ise bir seim yaplabilir. nk O hamlesini iki farkl yere yapabilir. Bu durumda Onun kendisi iin en avantajl yere oynayacan dnrsek bu seviyede asgari (minimum) deerlerin alnmas gerekir. Aada Onun hamlesi iin alnm asgari deerler bulunuyor :

Grld gibi ihtimallerin en dk deerleri alnmtr. Tanan bu son seviyeyle artk bilgisayar hamlesine karar verebilir nk mevcut durum iin hangi hamlenin en krl olduu (max) grlmektedir. Yukardaki aata en sadaki deer olan 1 puanndaki hamleyi yapmas durumunda bilgisayar her ihtimalde oyunu kazanmaktadr. Sonu olarak alnan deerler aadaki ekilde gsterilebilir:

Yani bir min bir max alnmaktadr ve bu ilem bu ekilde devam etmektedir. Aacmzn ismi de zaten buradan tretilmi minimax aac olarak gemektedir. Ayn anlamda farkl balang deerinde maximin aac da literatrde gemektedir. Bu aa da tamamen ayndr ancak kayg kendi hamleleri zerine deil rakibin hamleleri zerine kuruludur.

Sayglarmla

Onur Grkan GLTEKN B081210064 Sakarya niversitesi Bilgisayar Mhendislii

You might also like