• Sonuç bulunamadı

İşlem oyununun yapay zeka destekli simülasyonu

N/A
N/A
Protected

Academic year: 2021

Share "İşlem oyununun yapay zeka destekli simülasyonu"

Copied!
87
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

AKTİVİTE TESTLERİ Bayram AKDULUM Yüksek Lisans Semineri

Kimya Anabilim Dalı Doç. Dr. Ramazan ERENLER

2010

İŞLEM OYUNUNUN YAPAY ZEKÂ

DESTEKLİ SİMÜLASYONU

Uğur ERKAN Yüksek Lisans Tezi Matematik Anabilim Dalı Doç. Dr. Naim ÇAĞMAN

2012

(2)

FEN BİLİMLERİ ENSTİTÜSÜ MATEMATİK ANABİLİMDALI

YÜKSEK LİSANS TEZİ

İŞLEM OYUNUNUN YAPAY ZEKÂ DESTEKLİ SİMÜLASYONU

Uğur ERKAN

TOKAT 2012

(3)
(4)

Tez yazım kurallarına uygun olarak hazırlanan bu tezin yazılmasında bilimsel ahlâk kurallarına uyulduğunu, başkalarının eserlerinden yararlanılması durumunda bilimsel normlara uygun olarak atıfta bulunulduğunu, tezin içerdiği yenilik ve sonuçların başka bir yerden alınmadığını, kullanılan verilerde herhangi bir tahrifat yapılmadığını, tezin herhangi bir kısmının bu üniversite veya başka bir üniversitedeki başka bir tez çalışması olarak sunulmadığını beyan ederim.

İmza

(5)

ÖZET Yüksek Lisans Tezi

İŞLEM OYUNUNUN YAPAY ZEKA DESTEKLİ SİMÜLASYONU Uğur ERKAN

Gaziosmanpaşa Üniversitesi Fen Bilimleri Enstitüsü Matematik Anabilim Dalı Danışman: Doç. Dr. Naim ÇAĞMAN

İşlem oyunu, 2009 tarihinde Çağman tarafından ortaya atılmıştır. Bu oyun, dört işleme dayalı iki kişiyle oynanan bir zekâ oyunudur. Bu çalışmada, oyununun yapay zekâ teknikleri kullanılarak bilgisayar simülasyonu yapıldı. Bu programın amacı, oynayanların dört işlem becerisini geliştiren bir eğitim materyali elde etmektir. Bu amaçla, önce oyun teorisinin ve yapay zekânın tarihi ve gelişimi incelendi. İşlem oyunun detaylı bir şekilde tanıtıldıktan sonra bu oyunu oyun teorisindeki konumu tartışıldı. Bu çalışmada kullanılan yapay zekâ materyali ve tekniklerinden olan, oyun ağaçları, minimax, α-β budama yöntemleri verildikten daha sonra bu yöntemler kullanılarak işlem oyununun programı yapılmıştır. Bu program, sıfır toplamlı ve çok boyutlu dizi uzaylarında oyun geliştirenler için yardımcı bir kaynak olacaktır

2012, 87 sayfa

Anahtar Kelimeler: Yapay zekâ, Dört işlem, Oyun teorisi, Nash dengesi, Minimax Oyun ağaçları, İşlem oyunu

(6)

ABSTRACT

Ms. Thesis

Artificial Intelligence – Aided Simulation of Arythmatic Operations Game

Uğur ERKAN Gaziosmanpasa University

Graduete School of Natural Applied Science Department of Mathematics

Supervisor: Assoc. Prof. Dr. Naim ÇAĞMAN

Arithmetic operations game has been established by Çağman in 2009. This is a intelligent and two person game based on the four arithmetic operations. In this study, the simulation of the game has been created by means of applying artificial intelligence techniques. The purpose of the software is to make itself material that improves operations. To this end, developments of the histories of game theory and artificial intelligence have been studied. The position of the game in game theory has been discussed after arithmetic operations game has been demonstrated in detail. In this study, game trees, minimax, α-β pruning methods which are the artificial intelligence materials used in this study have been explained; afterwards, this software will be a aiding resource for game developers who design zero-sum games and multi-dimensional array games.

2012, 87 page

Key Words: Artificial intelligence, Four operation, Game theory, Nash equilibrium, Minimax, Game trees, Arithmetic operations game

(7)

ÖNSÖZ

Matematik bölümünde yüksek lisansa başladığım ilk günden beri her zaman bana destek olan, sıra dışılıktan öte fikirleriyle bana her konuda yardımcı olan, bilimsel dünyaya ilk adımı attığım yüksek lisans çalışmalarında bana hep destek olan sayın Doç. Dr. Naim ÇAĞMAN’ a teşekkürü bir borç bilirim.

Yüksek lisans süresince derslerini alarak bilgilerinden yararlandığım hocalarım, Matematik Anabilim Dalı bölüm başkanı Oktay MUHTAROĞLU, Doç. Dr. Ercan TUNÇ, Yrd. Doç. Adem EROĞLU, Yrd. Doç. Dr. Kenan KAYGISIZ’ a ve Matematik bölümündeki araştırma görevlileri Serdar ENGİNOĞLU ve Adem ŞAHİN’ e ve matematik bölümündeki tüm araştırmacılara teşekkür ederim.

Yoğun çalışmalarımda bana sabırlı davranan, manevi olarak hep destekleyen eşime ve varlığımı borçlu olduğum aileme en içten teşekkürlerimi sunarım.

Uğur ERKAN HAZİRAN 2012

(8)

İÇİNDEKİLER Sayfa ÖZET ... i ABSTRACT ... ii ÖNSÖZ ...iii İÇİNDEKİLER... iv ŞEKİLLER DİZİNİ... vi ÇİZELGELER DİZİNİ ...viii 1. GİRİŞ ... 1 2. YAPAY ZEKA ... 3 3. OYUN TEORİSİ... 6

3.2. Oyun Teorisinin Doğuşu... 6

3.3. Oyun Programlama ... 11

3.3.1. Misyonerler ve Yamyamlar... 11

3.3.2. Kurt, Kuzu ve Lahana Oyunu ... 12

3.3.3. Tic Tac Toe ... 15

3.3.4. Sekiz Vezir Problemi... 16

4. PROGRAMLAMA TEKNİKLERİ ... 19

4.1. Oyun Ağaçları ... 19

4.2. Minimax Yöntemi... 20

4.3. α-β budamaları ... 25

5. İŞLEM OYUNU ... 28

5.1. İşlem Oyunu Tanıtımı... 28

5.1.1. Komşular ... 28 5.1.2. Taşlar ... 29 5.1.3. Dizimler ... 29 5.1.4. İşlem... 30 5.1.5. İşlem Şekilleri ... 30 5.1.6. İşlem Türleri... 30 5.1.6.1. 1-Dizimli İşlemler... 31 5.1.6.2. 2-Dizimli İşlemler... 31 5.1.6.3. n-Dizimli İşlemler:... 35 5.1.7. Oyun Kuralları ... 36 5.1.8. Örnek Oyun ... 37 5.1.9. Sonuç ... 38 6. PROGRAM YAZIMI ... 39

6.1. İki Düzlemde Programlama... 39

6.2. Oyun Programlama ... 42

6.3. İşlem Oyununun Diğer Oyunlar İçindeki Yeri... 43

6.4. İşlem Oyununun Programlanması... 43

(9)

7. SONUÇ... 60

KAYNAKLAR... 62

EK-1 SEKİZ VEZİR PROBLEMİ EŞSİZ ÇÖZÜMLERİ ... 64

EK-2 SİMETRİK İŞLEMLER ... 67

(10)

ŞEKİLLER DİZİNİ

Şekil Sayfa

Şekil 3.1 Turistler ve yamyamlar probleminin çözüm ağacı... 12

Şekil 3.2 Kurt, kuzu ve lahana oyunu çözüm şekilleri ... 15

Şekil 3.3 Tic tac toe oyunu için örnek oyun ağacı ... 15

Şekil 3.4 Sekiz vezir başlangıç durumu... 18

Şekil 4.1 Oyun ağacı genel yapısı ... 19

Şekil 4.2 Tic tac toe örnek oyun ağacı... 20

Şekil 4.3 Tic tac toe minimax yöntemi başlangıcı aşaması... 21

Şekil 4.4 Tic tac toe minimax yöntemi ilk aşama ... 22

Şekil 4.5 Tic tac toe minimax yöntemi ikinci aşama ... 23

Şekil 4.6 Tic tac toe minimax yöntemi üçüncü aşama... 24

Şekil 4.7 Tic tac toe minimax yöntemi uygulanışı... 25

Şekil 4.8 α-β’sız minimax uygulaması ... 26

Şekil 4.9 α-β minimax uygulaması ... 27

Şekil 5.1 İşlem oyunu oyun şeması... 28

Şekil 5.2 Toplam dizimleri ... 29

Şekil 5.3 Çarpım dizimleri... 29

Şekil 5.4 İşlem şekilleri-denk şekiller... 30

Şekil 5.5 1-Dizimli toplam işlemi ... 31

Şekil 5.6 1-Dizimli çarpım işlemi ... 31

Şekil 5.7 2-Dizimli toplam işlemi ... 32

Şekil 5.8 2-dizimli çarpım işlemi ... 32

(11)

Şekil 5.10 n-dizimli işlemler ... 36

Şekil 5.11 Örnek işlem oyunu ... 37

Şekil 6.1 8x8 Oyun alanı... 39

Şekil 6.2 8x8 İşlem oyununa başlama alanı ... 41

Şekil 6.3 Oyun alanı benzetimi ... 45

Şekil 6.4 Örnek oyun ... 46

Şekil 6.5 Oyun bilgisayar temsili ... 46

Şekil 6.6 Bir dizimli toplama işlemi(bilgisayar simülasyonu)... 47

Şekil 6.7 Bir dizimli çarpma işlemi(bilgisayar simülasyonu)... 47

Şekil 6.8 İki dizimli toplam işlemi(bilgisayar simülasyonu)... 48

Şekil 6.9 İki dizimli çarpma işlemi(bilgisayar simülasyonu)... 48

Şekil 6.10 Karma işlemler(bilgisayar simülasyonu)... 49

Şekil 6.11 Taş yerleştirme olasılıkları ... 51

Şekil 6.12 Örnek oyun ... 55

Şekil 6.13 İşlem oyunu oyun simülasyon örneği aşama-1 ... 56

Şekil 6.14 İşlem oyunu oyun simülasyon örneği aşama-2 ... 57

Şekil 6.15 İşlem oyunu oyun simülasyon örneği aşama-3 ... 57

Şekil 6.16 İşlem oyunu oyun simülasyon örneği aşama-4 ... 58

Şekil 6.17 İşlem oyunu oyun simülasyon örneği aşama-5 ... 58

(12)

ÇİZELGELER DİZİNİ

Sayfa

Çizelge 3.1 Kurt, kuzu ve lahana oyunu çözüm şeması ………13

Çizelge 6.1 8x8 Alan üzerindeki hamlelerin zaman ve yer tablosu ………39

Çizelge 6.2 İşlem oyunu toplam oyun şekli sayıları ………..38

(13)

Günümüzde, teknolojinin ve bilgisayarın hızla gelişmesi sonucu, eğitim-öğretim sorunlarının çözümünde yeni teknolojilerin kullanılması kaçınılmaz hale gelmiştir. Eğitim ve teknoloji, insanoğlunun geleceğinde en önemli bir rolü oynayacaktır. Eğitim ve teknolojik kavramların birlikte kullanılması, eğitim teknolojisi alanını oluşturmuştur. Eğitim teknolojisi alanında yapılan çalışmalar sonucu, daha eğlenceli, etkili ve kalıcı eğitim-öğretim faaliyetleri yapmak kolaylaşmıştır. Öğrenciler, bu gelişmeler sayesinde isteyerek, oynayarak ve severek öğrenmektedirler.

Bilgisayar oyunları, öğrencilerin kendi seviyesine uygun, kendi hızına göre ayarlayabileceği, ilgi ve ihtiyaçlarını dikkate alan ve bireysel öğrenmeye uygun düzenlendiğinde daha etkili ve kalıcı bir öğrenme sağlamaktadır. Bilgisayar oyunlarındaki sanal ortamların içerdiği görsel ve işitsel öğeleri kitaplarda veya filmlerde bulmak zordur. Çünkü bilgisayar oyunları, kitaplardan ve filmlerden farklı olarak etkileşim sağlarlar ve kullanıcının denemesine ve yanılmasına izin verirler. Kitap ve filmlerde geçen olaylar okuyucudan ya da izleyiciden bağımsızdır. Bir kitap ikinci sefer okunduğunda ya da bir film ikinci sefer izlendiğinde yine aynı olaylarla ya da aynı sonla karşılaşılır. Birden fazla oynanan oyunda, oyunun gidişi ve sonu oyuncunun vereceği kararlara göre değişebilir (Prensky, 2001). Oyunlar, öğrencileri başka dünyalara taşıyarak, öğrencilerin roller yoluyla yeteneklerini ortaya koymalarını, bilgi ve beceri kazanmalarını sağlarlar. “Rekabetçi egzersiz” olarak nitelendirilen oyunlarda amaç ilerlemek ve kazanmaktır. Bilgisayar programı yardımı ile hazırlanan öğretimsel oyun programları, programlı öğretim anlayışına uygun olduğu için öğrenci kolaydan zora doğru aşama aşama ilerlemektedir. Eğitsel bilgisayar oyunları öğrenciye hoşça vakit geçirten, ama gerçekleşen etkinlik içerisinde bilgileri de öğreten veya önceki bilgileri pekiştiren bir özelliktedir. Oyunlar ile çalışmak, öğrencilerin sadece kuramsal olarak ya da diğer insanların deneyimlerini dinleyerek bir şeyler öğrenmelerini sağlamaktan çok, kendi kendine öğrenmeyi ve onların yeni tasarımlar yaratmalarını sağlar. Eğitsel bilgisayar oyunları, sadece oyunların çekici bir türü değildir. Aynı zamanda öğrencilerin becerilerini geliştirmeye yardımcı, hazırlandığı konu alanına özgü bilgi örüntülerini içinde taşıyan yapıdadırlar.

(14)

Yapılan incelemelerde, gelişmiş ülkelerde bilgisayar oyunlarının konu müfredatına uygun olarak çeşitli oyunlar yoluyla öğretilmesine yönelik programlar bulunmaktadır. Ülkemizde ise bu alanda yapılan çalışmaların sınırlı olduğu anlaşılmaktadır. Ülkemizde öğrencilerde, genellikle sayısal işleme dayalı fen ve matematik derslerinin zor olduğu ve öğrenilemeyeceği konusunda olumsuz bir tutum olduğu bilinmektedir. Bu nedenle, öğrencilerin matematik derslerine yönelik olumsuz tutumlarını değiştirmek, matematik öğrenmeyi öğrencilere küçük yaşlardan itibaren sevdirecek yeni yöntem ve uygulamalara ihtiyaç olduğu anlaşılmaktadır. İyi hazırlanmış, müfredata uygun eğlenceli eğitsel bilgisayar oyunlarıyla öğrencilerin bu derslere olan olumsuzluğu azalacağı düşünülmektedir.

İşlem oyunu (Çağman, 2009), çok kolay bir matematiksel teknik ile klasik bir satranç tahtası üzerinde dahi aynen satranç gibi sonraki hamleleri düşünülebilen, mevcut durumlar arasında kıyaslama yapabilen ve en iyi durumu seçen dört işleme bağlı bir oyundur. Bu araştırmadaki temel amaç, Çağman (2009) tarafından geliştirilen İşlem oyununun bir eğitim materyali olarak kullanılabilmesi için, yapay zekâ tekniklerini kullanarak bilgisayar programının yapılmasıdır.

İşlem oyununun yapılan bilgisayar programı, sıfır toplamlı oyun geliştirenler için, bu tip oyun geliştirenler için öncü yaklaşımlar sergilemektedir. 2 boyutlu düzlemde sıfır toplamlı oyun geliştiricilerine, oyun programlamaya başlangıç ve geliştirme açısından fikirler sunuldu. 8x8 veya mxn boyutta, oyun alanı bilgisayar simülasyonları konularında yardımcı olacaktır.

(15)

İnsanlık ilk var olduğu günden bu yana problemler vardır. Problemler genelde ihtiyaçlardan ortaya çıkmaktadır. Bu problemlerin giderilmesi ise, çoğu zaman yeni fikirler ve düşünceler ile olmaktadır. Yeni fikirler ise, yeni problemler ve yeni çözümler getirmektedir.

Zekâ, davranışlarla tanımlanmaktadır. Bu tanıma göre, zekâ öğrenme veya problem çözme yeteneği olarak tanımlamak bu kategoriye girmektedir (Ataman, 1998).

Yapay zekâ, insanın düşünme ve öğrenme işlemini nasıl yaptığını anlamak, insanın yaptığı düşünme ve öğrenme işlevini gerçekleştirecek makinalar geliştirmektir (Russel, 2003).

Yapay zekâ terimini ilk olarak 1956 yılında John McCarthy kullanmıştır. Yapay zekâyı, makineleri zeki yapan mühendislik alanı olarak isimlendirmiştir. Bir makinanın zeki olma kavramı, bilgisayar bilimlerinin de kurucusu sayılan Alan Turing’ e aittir. İkinci dünya savaşı sırasında kripto analizi için geliştirilen makinalar sayesinde yapay zeka alanı gelişmeye başlamıştır. Alan Turing Almanların enigma makinasının şifreleri çözmeye çalışmakta ünlenmişti. İngiltere’ deki bu şifre çözme girişimleri, veri işleyerek makinaların zeki davranışlar göstermesi konusuna yöneldi.

Alan Turing, günümüzde turing testi olarak bilinmekte olan, bir makine için zeki denilebilme standardını belirlemekte bir deney yaptı. Testin amacı makinaları sınamaktır. Bu test şöyle uygulanmaktadır. Bir insan, bir makine ve bir sorgulayıcıdan oluşmaktadır. Sorgulayıcı ayrı bir odaya yerleştirilmektedir. Hiç kimse birbirini görmemekte ve duymamaktadır. Makine ve insan X ve Y olarak işaretlenerek, onlarda başka bölmelere yerleştirilmektedir. Sadece bir ekran veya bilgi alışverişi yapılacak bir cihaz vasıtasıyla iletişim kurulabilmektedir. Sorgulayıcının görevi, insana ve makineye bir iletişim aracı vasıtasıylaysa sorduğu sorularla, insanı ve makineyi ayırt etmektir. Örnek olarak sorgulayıcı, makine ve insanla satranç oyunu oynayarak ayırt etmeyi denemektedir. Belli bir zaman sonunda karar vermektedir. Sorgulayıcı, insan ile makineyi birbirinden ayırt edemiyor ise makine Turing' e göre zeki olarak nitelendirilebilir (Turing, 1950). Bu test, bilgisayar dünyasındaki pek çok yapay zekâ probleminin çatısını teşkil etmektedir. Örneğin, girilen yazıların tanınması, parmak izi

(16)

okuma, örüntü tanıma gibi alanlarda bu test kullanılmaktadır. İş yapması için geliştirilen makine, işi yapıyorsa o makine için artık zeki denilebilir. Örneğin parmak izi tanıma cihazı, parmak izleri okuyup, onları birbirinden ayırt ediyor ve parmak izlerini tanıyorsa o makine Turing Testine göre zekidir.

Günümüzde, yapay zekâ çalışmaları teşvik etmek amacı ile her yıl ABD’ de Loebner ödülü altında zeki makinalar için ödüller verilmektedir.

Akıl ve zekâ farklı kavramlardır. Akıl kavramını, düşünme, kavrama, anlama, karar verme gibi terimlerle ifade edebiliriz. Akıl sabit değil, insanın ömrünün sonuna kadar gelişebilmektedir. Zekâ ise, belli bir konuda çalışılarak, öğrenilerek, eğitilerek edinilen bilgi ve birikimlerle, deneyimlere dayalı becerileri geliştirmedir (Çetin, 2011). Bu tanımdan yola çıkarak, zekâ ait olan özellikleri kullanabilen teknikler veya makinalar geliştirirsek bir çeşit zekâ üretmiş sayılırız.

Fikirler, genelde insanlığın ilham kaynağı olan yazarlardan alınmaktadır. Bu fikirler daha sonra bilim adamlarına ilham kaynağı olmaktadır. (Nabiyev, 2010). Bu işin içinde hayalide unutmamak gerekir. Çünkü yazarların kitaplarında geçen uçan halılar gibi birçok hayal bu gün gerçek olmuştur. İnsanoğlu hayalinin peşinden koşmaktadır. İnsanoğlunun yapabilecekleri ilk önce yazarların hayalinde canlanmaktadır. Buradan hareketle, teknolojinin gideceği ülke hayal ülkesidir diyebiliriz. Her düşünülen ve hayal edilen şey eğer matematiksel temele oturtulabilirse, muhakkak bir gün gerçekleşmektedir.

Parçalarını programlayarak, sistemi bir bütün olarak hareket ettirmek olarak tarif edebileceğimiz robotlar, K. Capec’ in bir oyununda kullanılmıştır (Nabiyev, 2010). Bu gün ise robotlar, hata istemeyen birçok sektörde kullanılmaktadır. Araba firmalarından, tıp dünyasına kadar birçok bilim dalı hatadan arınmak için robotları kullanmaktadır. Bu gün ise bilim dünyası bu hayalinde ötesine geçip, robotları bütün işlerde kullanmanın peşinden gitmektedir. Mesela vücudunun herhangi bir organının işlev yapmamasından dolayı günlük işlerini yapamayan insanların günlük hayatta ki işlerini yapabilecek robotlar yapmaya çalışmaktadır. Modern insan daha fazlasını istemekte ve hayalin ötesini görmeye çalışmaktadır.

Yapay zekâ, bilgisayar veya makinaların insana özgü yetiler olan, anlam çıkartma, akıl yürütme ve geçmiş deneyimlerden öğrenme gibi kabiliyetleri yerine getirmesi olarak

(17)

tanımlanabilir (Nabiyev, 2010). İnsanı, diğer canlılardan ayıran yeteneklerde hemen hemen bunlardır veya bunların diğer canlılara göre çok daha gelişmiş olmasıdır. İnsanoğlu bu gün için, insanların yaptıkları birçok işi makinalara ve bilgisayarlara yaptırmaktadırlar. İnsanlar, makine ve bilgisayarların yaptıkları işlerde insana göre çok daha hızlı ve hatasız olmasını görmektedirler. Ama her problem sayısal verilerle çözülememektedir. Makine veya bilgisayar programlarının birçok problemi çözmede bu gün yetersiz olduğu açıktır. Eğer bir gün makine veya bilgisayarlar insana ait olan akıl yürütme gibi yeteneklere sahip olabilirlerse, makine ve bilgisayarların günümüzdeki gösterdikleri başarıyı o alanlarda da göstermesini beklemektedirler.

Bu gün yapay zekâ, insan gibi düşünebilen ve hareket edebilen robotlar yapmak için kullanılmaktadır.

Yapay zekâ günümüzde kullanım tekniği açısından 4 bölümden oluşur. (Nabiyev, 2010) 1- Yapay Sinir Ağları(YSA)

2- Bulanık Mantık 3- Uzman Sistemler 4- Genetik Algoritma

60 yıla aşkın bir zamandır yapay zekâ ile ilgili çalışmalar yapılmaktadır. 1950’ lerin sonlarında satranç, dama vb. oyunlar yapay zekâ ile programlanmaya başlandı. Günümüzde insan gibi düşünen ve öğrenen makine ve bilgisayar programına en iyi örneklerden birisi, satrançta bilgisayarların insanlara rakip olması ve yenmesidir. Bunun en çok bilinen örneği 1997 yılında deep blue isimli bilgisayarın, dünya satranç şampiyonu Kasparov’ u yenmesi ve daha sonra geliştirilen bazı bilgisayarlarında dünya şampiyonları ile berabere kalmalarıdır.

Yapay zekâ günümüzde, problem çözümleme, oyunların modellenmesi, bilgilerin modellenmesi, otomatik teorem ispatı, uzman sistemler, doğal dilin işlenmesi, örüntü tanıma, robotik alanlarla ilgilenmektedir (Nabiyev, 2010).

(18)

3.1. Oyun

Oyun, meşguliyetlerinin dışında kalan zamanlarda, zihinsel veya bedensel becerilerini geliştiren belli bir zaman ve uygun bir ortamda insanların istekle ve zevk alarak yaptıkları bir aktivitedir (Hazar, 1996).

Zavaleta, Costa, Gouvea ve Lima (2002) oyunu, oynayanların matematiksel ve ahlaki yönlerini geliştirdiği gibi, oyun oynayanların yaratıcı duygularını da geliştirdiğini belirmektedir.

Oyun, insanların gönüllü yaptığı bir iştir ve mecburiyetle yapılan işler oyun değildir. Oyun bir vazife değil, serbest zamanlarda yapılması gereken bir eylemdir (Çamlıyer ve Çamlıyer, 1997).

Bilgisayar oyunları ise, oyun oynayanlara gerçek dünyaya benzeyen sanal ortamlar sunarken, kişileri eğlendirmeleri ile cazip bir yön taşımaktadır (Pagulayan ve ark, 2003).

Bilgisayar oyunlarının içerisinde rekabet, kurallar ve bir hedef barındırması gerektiği bildirmektedir (Leemkuil ark., 2000). Bilgisayar oyunları insanlar tarafından zorunlu olarak değil gönüllü olarak oynanan, eğlenceli, sanal bir dünyada ve oyunun kurallarıyla sınırlandırılmış bir alanda oynanan eğlenceli birer ortamdırlar (Kirriemuir, 2002).

3.2. Oyun Teorisinin Doğuşu

Bu bölüm, Nabiyev (2010) yapay zekâ kitabından yararlanarak derlenmiştir.

Oyun teorisi, oyunun içerisinde yer alan oyuncuların oyun içerisinde karar verme ile ilgili seçenekleri incelemektedir. Oyun teorisindeki amaç maksimum kazanç ve en az zararın olabileceği seçeneği bulmaktır. Riski en az olan seçeneği bulmaktır. Diğer oyuncu ve rekabetçilerinde, bunu hesap edecekleri bilinmelidir. Teori ilk ortaya atıldığında daha çok matematikçilerin ilgisini çeksene günümüzde daha çok sosyal alandaki araştırmalarda kullanılmaktadır. Özellikle yatırım araçları ve borsa üzerine oyun teorisi ile ilgili yapılmış birçok çalışma vardır. Oyun teorisinin günümüzdeki

(19)

Oyun teorisindeki ilk teorem Zermello (1913) tarafından ispatlanmıştır. Teoremde satrançta daima kazanacak bir strateji olduğunu göstermiştir. Teoremde ayrıca, oyunculardan birisinin kazanabileceğini veya berabere kalabileceklerini ispatlamıştır (Aumann, 1987).

1913-1921 yılları arasında, Fransız matematikçi Emile Borel, birkaç tane oyun teorisiyle ilgili makale bastı. O daha çok poker oyununu kullanıyordu. Borelin düşüncesi daha çok oyun teorisini, askeri ve ekonomik alanlarda kullanmaktı. Borelin nihai amacı oyunu kazanmakta en iyi stratejiyi bulup bulamayacağıydı. Borelin oyun teorisini ilk düşünen kişi olup olmayacağı tartışılmaktadır. İlk defa sıfır toplamlı oyunlarda Minimax teoremini Von Neumann, 7 Aralık 1926 gününde Göttingen Matematik Topluluğu’ na sunmuştur (Çağlar, 2002). Ama çoğu tarihçiye göre, oyun teorisini ilk olarak sistemli bir şekilde, Amerika doğumlu Macar matematikçi John von Neumann tarafından 1928’ te yazdığı bir makale ile tanıtıldı. Bu teorinin asıl amacı insan davranışlarının oyunlar yoluyla açıklanabileceğiydi. Borelin 1928 yılındaki makalesindeki “minimax teoremi” ile oyunların matematiksel boyutunu ortaya koymuştur. Onun bu fikri daha sonra bilgisayar bilimlerine öncü olmuştur.

1944 yılında, matematikçi John von Neumann ve ekonomist Oskar Morgenstern tarafından, Theory of Games and Economic Behavior(Oyunlar Teorisi ve Ekonomik Davranış) adıyla 1944 yılında Princeton üniversitesi matbaasında bir kitap basılmıştır (Neumann & Morgenstern, 1944). Kitapta, oyunların matematiğinin iktisadi problemlere de uygulanabileceğini iddia etmişlerdir. Von Neumann ve Morgenstern oyun teorisinin ekonomik problemlere nasıl uygulanacağını da göstermişlerdir. Ekonomik problemlerin, oyun gibi formüle edilebileceğini göstermiştir (Kreps, 1991). Bu kitap, oyun teorisin değişik dallarda uygulanmasıyla bu alanda çığır açmıştır (Samuelson, 2001). Her yıl basılan bu kitapla ilgili bu üniversitede bir yıl dönümü programı yapılmaktadır. Bu eser, bu üniversitede günümüz oyun teorisinin dayandığı eser olarak tarif edilmektedir. Bu kitap John von Neumann‘ nun 1928’ te yazdığı makaleye dayanmaktır. Bu kitap daha çok sıfır toplamlı veya toplamı sıfır olan oyunlar üzerinde durmaktadır. Ancak bu kitabın üçte biri sıfır toplamlı iki kişilik oyunlarla

(20)

ilgiliydi. İkiden fazla oyuncusu olan oyunlara kitapta yer verilmesine rağmen tamamlanmamış ve bu çeşit oyunlar için kesin bir çözümün olduğu kanıtlanmamıştı (Nabiyev, 2010).

Oyuna katılanlardan bir tarafın kaybı, öteki tarafın kazancına eşitse bu tür oyunlara sıfır toplamlı oyunlar denmektedir. Örnek olarak futbol maçları gösterilebilir. Bir takım 1-0 galipse, öteki takım 1-0 mağlup demektir. Bu gün oynanan basitten zora birçok oyun sıfır toplamlıdır. Örnek olarak, poker toplamı sıfır olan bir oyundur. Oyuna giren para miktarının toplamı, kazanan ve kaybeden oyuncuların önündeki para miktarının toplamına eşittir ve sonuç sıfırdır. Birinin kazancı, diğerinin kaybı olan ve bunun toplamı sıfır olan oyunlar bu kategoriye girmektedir. Bu çeşit oyunlar kesin bir zafer veya kesin bir yenilgi kavramını barındırdığı için oyun kavramını tam olarak nitelemektedir. Ama günlük hayatta ve bilimin birçok dalında bu tür bir duruma rastlayamayız.

Bugün geldiğimiz noktada oyun teorisi, iki teoreme dayanmaktadır. Bunlar, Von Neumann' ın 1928 tarihli makalesinde yayınladığı minimum-maximum teoremi ile Nash' e Nobel ödülü kazandıran 1950 tarihli denge teoremidir.

John Von Neumann 1928 de yazdığı makaledeki minimax teoremi, sıfır toplamlı oyunlarda, en iyi seçimi yapmak üzerinde duruyordu. Ama gerçek hayatta durum her zaman böyle değildir. Nash, Neumann’ ın yaklaşımını genelleştirerek 1950 yılında işbirliksiz (non-cooperative) çok sayılı oyuncunun olduğu “denge teoremini” ispatlamış ve 1994 yılında bu buluşu için Nobel ödülü almıştı (Nabiyev, 2010).

Nash dengesinde her oyuncu, diğer oyuncular göz önüne alındığında, olabileceği en iyi durumdur. Bu durumda oyuncular stratejilerini değiştirmek istemezler, çünkü bu şartlar altında kazanç acısından en iyi getiri seviyesindedirler. Bu düşünce Adam Smith'in düşüncesi olan “rekabet durumunda kişisel hırslar ortak çıkarlara hizmet eder” fikrine benzemektedir. Her oyuncunun kendi kazançlarını maksimize etmek üzere aldıkları kararlar sonucunda oluşan durum baskın stratejidir. Nash dengesi bunu istememektedir. Rakibin tercihlerine göre alınacak karar nash dengesini oluşturur. Nash dengesinde, her oyuncunun hamle uzayı, diğer oyuncuların hamlelerine en uygun seçeneklerin belirlenmesidir. (Fudenberg & Tirole, 1993). Nash dengesi bir nevi diğer oyuncular namına az da olsa zarara uğradığınız bir dengedir.

(21)

M. Dresher ve M. Flood günümüzde mahkûmun açmazı olarak bilinen oyunu 1950 yılında tanıtmışlardır (Kuhn & Tucker, 1950). Nash`in hocası olan Profesör Albert W.Tucker bütün karşılaşılan problemlerde nash dengesinin olamayacağını ispatlamak için, mahkûm açmazı oyunu, A. W. Tucker’ın iki-kişili açmaz oyunuyla birleştirilmiş ve mahkûmun açmazı oyununu ortaya çıkmıştır.

Ruhsatı olmayan silahlarıyla yakalanan iki kişinin, bir bankayı soymak üzere olduklarından şüphelenilmektedir. Ama soygunla ilgili bir delil yoktur. Şüphelileri, bankayı soyacaklarını itiraf edecekleri bir yöntemle sorgulamak gerekmektedir. iki şüpheli yakalanmış ve ayrı ayrı odalarda sorgulamalarının yapılmasını beklemektedirler. Güvenlik güçleri bu iki mahkûma bir anlaşma önerir. Bu öneriye göre ikisi de suçu itiraf ederse beşer yıl, ikisi de reddederse ikişer yıl hapis cezası yiyeceklerdir. Eğer birisi itiraf, diğeri reddederse itirafçı serbest kalacak ve arkadaşı on yıl hapis cezası yiyecektir. Oyunun tanımı bu bilgilere göre yapılabilir (Aktan, Sanver, Sanver, 2006) 1) I = {1. mahkûm, 2. mahkûm}

2) Ai= {İtiraf, Ret}, i = 1. mahkûm, 2. mahkûm

3) Olası bütün sonuçlar için kazançları bir getiri matrisi ile gösterilebilir:

1. mahkûm 2. mahkûm

İtiraf Ret

İtiraf -5, -5 0, -10

Ret -10, 0 -2, -2

Nash dengesinde rakibin eylemi sabit alınırsa, kimse kendi seçimini değiştirmek istemez. Burada ilk veriler 1. Mahkûmu, ikinci ise 2. Mahkûmu temsil etmektedir. Burada baskın strateji itiraf etmektir. Eğer her ikisi de itiraf ederse 5 ‘er yıl hapis cezası ile kurtulacaklardır. Ama ikisi de ret ederlerse 2 şer yıl hapis cezası alacaklardır. Eğer 2. mahkûmun eylemi sabit tutulursa, 1. mahkûm için en iyi strateji itiraf etmektir. Tersi diğer mahkûm içinde geçerlidir. Ama burada birisi itiraf edip diğeri ret ederse itirafçı serbest kalıp, ret eden 10 yıl hapis alacaktır. Nash dengesinin burada her ikisi içinde

(22)

itiraf olduğu söylenebilir. Ama taraflardan birisi itiraf edip, diğeri ret ederse denge bozulmuş olur. İşbirliği yapmaları mümkün olsa, her ikisi de suçu ret edip iki yıl hapis yatmaları mümkün olacaktır.

Bir örnek daha vermek gerekirse, 2 arkadaş var, bunlara iki seçenekli bir teklif yapılıyor.

1- Bana 100 lira ver 2- Arkadaşıma 500 lira ver

Burada eğer iki kişide 2 numaralı seçeneği seçerse 1000 lira kazanırlar. Ama birisi 2 numarayı seçip, diğeri 1 numarayı seçerse birinin 600 lirası olurken, diğerinin hiç parası olmamaktadır. Toplamda 600 lira kazanmaktadırlar. Eğer herkes kendi menfaatini düşünerek hareket ederse kendisine 100 lira isteyecektir. Böylelikle toplamda 200 lira kazanacaklardır. Nash dengesi her ikisinin de 2 numaralı seçeneği seçerek toplamda 1000 lira kazanmalarıdır. Fakat her zaman toplumsal menfaatler kişisel çıkarların önünde olmamaktadır.

Oyun Teorisi, kazançların mücadelesini açıklayan matematiksel bir yaklaşımdır (Özdil, 1998). Oyunlarda ki denge kavramı, şans kavramının matematiğe dökülmüş hali diyebiliriz. Öğreğin bir zar atmada zarı 50 defa atarsak ve bu 50 defa atma işlemini 25 defa yaparsak, 1, 2, 3, 4, 5, 6 gelme durumları hemen hemen eşit çıkar. Şanstan böyle tekrarlanan eylemler de söz edilemez. Böyle tekrarlı yapılan oyunlarda belli bir aşamadan sonra denge korunmaktadır. Yani 1 gelme ve 6 gelme durumu eşitlenmektedir. Oyunlardaki kazanç ve kayıp durumu, oyundaki tekrarların kısa sürmesinden kaynaklanmaktadır.

Tutuklunun açmazı ile ilgili problemler (yukarıda verilen iki örnek) nash ‘in denge teoremiyle çelişmektedir. Genelde iş birliksiz oyunlarda baskın strateji oyuncuların kendi çıkarları üzerinedir. Kendi çıkarlarını tercih ettikleri için bir denge bulunamamaktadır.

Oyun teorisi için milat, 1950 ve 1953 yılları arasında J. F. Nash tarafından yayınlanan 4 adet makaledir. Sırasıyla, 1950 yılındaki "Equilibrium Points in N-Person Games” dır (Nash, 1950). İkinci olarak, 1950 yılındaki “Bargainig Problem”, pazarlık problemi olarak bilinen makalesidir (Nash, 1950). İkinci olarak 1951 yılında “Non-Cooperative

(23)

Games” dır (Nash, 1950). Bu makalede Nash, Nash dengesi olarak bilinen, iş birliksiz oyunlar için bir dengenin olabileceğini ispatlamıştır. Son olarak ta, 1953 yılındaki “Two Person Cooperative Games” isimli makaledir (Nash, 1953).

3.3. Oyun Programlama

Programlama yapılırken, problemin durumuna göre programlama adımları ve yöntemleri değişmektedir. Oyunların programlanması, oyunların içerisinde barındırdığı çok boyutlu ve karmaşık yapılardan dolayı, diğer programlama yöntemlerinden farklılıklar getirmektedir. Bir market, stok veya buna benzer programları yazmaktan farklılık göstermektedir. Oyunların dışındaki birçok program yazılırken, program yazımına başlandıktan sonra birçok şey değişmekte ve bu değişiklikler kolayca programa monte edilmektedir. Mesela bir satranç oyununa program yazmadan bütün kuralların çıkarılması ve bunlarla ilgili detaylı incelemelerin en baştan yapılması gerekmektedir. Satranç gibi bir oyunun programını yazarken olabilecek bir kural değişikliği, bütün programın hemen hemen baştan yazılması anlamına gelecektir. Oyunların barındırdığı karakteristik özellikler programlamada belirleyici olmaktadır. Oyun programlamanın mantığının kavranabilmesi için en basit olan problemlerin dahi incelenip, çözüm metotlarının anlaşılmasının büyük önemi vardır. Problemlerin çözüm olasılıkları büyüdüğünde ve bu çözümlerin sayılarla ifade edilmeyecek olasılıklar arasından bulunması gerektiğinde farklı yöntemler kullanılması gerekecektir. İnsanların nasıl hesap edilemeyecek kadar olasılıkların çok olduğu durumlarda sezgileri veya deneyimleriyle hareket ettiği gibi, makinalarında bu insana ait özellikleri kullanması gerekmektedir. Problemlerin, bütün olasılıkları göz önüne alarak çözülebileceği mantıken doğrudur. Fakat bütün ihtimalleri, satranç gibi bir oyun için hesaplamak, bu gün için yüzyıllar alacaktır.

3.3.1. Misyonerler ve Yamyamlar

En çok bilinen ve kullanılan bir oyundur. Nehrin solunda olan üç misyoner ve üç yamyamın, yalnız iki kişi alabilecek bir kayıkla sağ tarafa geçmeleri istenmektedir. Hangi kıyıda olursa olsun misyoner sayısı yamyam sayısından az olmamalıdır. Eğer yamyam sayısı çok olursa misyonerler yamyamlar tarafından yenilmektedir. Hiçbir kayıp olmadan hepsi diğer tarafa taşınmak istenmektedir.

(24)

Bu tür oyunlarda durumlar birbirine benzemektedir. Mesela koşullar sayısı sınırlıdır. İlk ve son durum bilinmektedir. Bu problemin çözümü için 3 değişkenli bir (a,b,c) kümesini kullanmak yeterli olacaktır. a,b misyoner ve yamyam sayısını, c ise kayığın solda mı(0) sağda mı(1) olduğunu anlamak için kullanacağız. Örnek olarak (1,2,0), sol tarafta 1 misyoner, 2 yamyam olduğu göstermektedir. Oyunda başlangıç durumu (3,3,0), bitiş durumu ise (0,0,1) olmalıdır. Bu duruma göre çözüm ağacı Şekil 3.1 verilmiştir. Şekil 3.1’deki (-) ile çatışmalı, (**) ile ise tekrarlanan durumlar gösterilmiştir. Şekil 3.1’deki durum uzayı çıkarımı şekli Nabiyev (2010) yapay zeka kitabından alınmıştır.

Şekil 3.1 Turistler ve yamyamlar probleminin çözüm ağacı 3.3.2. Kurt, Kuzu ve Lahana Oyunu

Bir çiftçi nehrin sağ tarafında yer alan kurt, kuzu ve lahanayı sol tarafa geçirmek istemektedir. Kayık iki nesne alabilmektedir. Çiftçi yanlarında olduğu sürece kuzu lahanayı, kurt kuzuyu yiyememektedir.

(25)

Burada önce durumlar belirlenmelidir. Durumlar için Kuzu=K, Lahana=L, Çiftçi=Ç ve Kurt=W kısaltmaları kullanılacaktır. Çizelge 3.1 ve Çizelge 3.2’deki durum uzayı çıkarımı şekli Nabiyev (2010) yapay zekâ kitabından alınmıştır.

Çizelge 3.1 Kurt, kuzu ve lahana oyunu çözüm şeması

1. ÇLKW / Æ 2. ÇLK / W 3. ÇLW / K 4. ÇKW /L 5. LKW / Ç 6. ÇL / KW 7. ÇK / LW 8. ÇW / LK 9. LK / ÇW 10. LW / ÇK 11. KW / ÇL 12. Ç / LKW 13. L / ÇKW 14. K / ÇLW 15. W / ÇLK 16. Æ / ÇLKW

Burada ilk durum 1, son durum ise 16’dır. Durumlar arası geçişler aşağıda verilmiştir. 5, 6, 8, 9, 11, 12 istenilen şartı sağlamadığından olmaması gereken durumlardır.

(26)

Çizelge 3.2 Kurt, kuzu ve lahana oyunu olasılık şeması 1. ® 5,9,10,11 2. ® 9,13,14 3. ® 10,13,15 4. ® 11,14,15 5. ® 1 6. ® 13,16 7. ® 14 8. ® 15,16 9. ® 16 10. ® 1,3 11. ® 1,4 12. ® 16 13. ® 2,3,4 14. ® 2,4,7 15. ® 3,4,8 16. ® 6,7,8,12

Bu durumlara uygun 2 adet çözüm şu şekildedir (Nabiyev, 2010). 1- 1®10®3®13®2®14®7®16

2- 1®10®3®15®4®14®7®16

Uygun olmayanlar durumlar siyah dairelerle ile gösterilmiştir. Şekil 3.2’deki durum uzayı çıkarımı şekli Nabiyev(2010) yapay zeka kitabından alınmıştır.

(27)

Şekil 3.2 Kurt, kuzu ve lahana oyunu çözüm şekilleri 3.3.3. Tic Tac Toe

Hemen herkes tarafından bilinen Tic Tac Toe oyunu için kökten başlayarak toplam 8!=40320 adet durum vardır. Bilgisayarda yazdığımız bir Tic Tac Toe oyunu için bütün durumların gözden geçirilmesi gerekmektedir. Durum uzayı burada çizilemeyecek kadar büyüktür. Bunu yapmak için bilgisayarın her bir durum için 1 ms harcadığı varsayarsak ve her bir durumun bellekte 100 byte yer kapladığı düşünülürse ilk hamleyi bilgisayarın yapması yaklaşık 40 saniye sürecek ve böyle bir hesaplama RAM ‘de 3,85 Mb yer kaplayacaktır. Tic Tac Toe oyunu için Şekil 3.3’de, başlangıç durumuna göre arama ağacı yer almaktadır.

(28)

Bunlar basit birkaç problem için durumlardı. Bunları bilgisayarın hesaplaması ve duruma göre çözüm belirlemesi kolaydı. Buraya kadar olan problemlerde tek boyutlu dizi yapısı yeterli gelmekteydi. Mesela tavla oyununu bilgisayarda yazmak için tek boyutlu bir dizi yeterli gelmektedir. Çünkü hamleler tek düzlemde yapıldığı için, tek boyutlu bir dizi mevcut olasılıkları tutmak için yeterlidir. Buda Ram kullanımında ve arama yapmakta bir avantaj sağlamaktadır.

3.3.4. Sekiz Vezir Problemi

Buraya kadar incelenen problemlerde, durum uzayları çok büyük verilerden oluşmaması, basitçe hesaplanabilir olmasından dolayı çözmek basitti. Problem çözüm uzayının büyüklüğü ve bu tür problemlere yaklaşım açısından en meşhur olmuş problemlerden birisi 8 vezir problemidir.

8 Vezir Problemi, 8x8'lik bir satranç tahtasına 8 adet vezirin hiçbiri birbirini yiyemeyecek biçimde yerleştirmesi problemidir. Yerleştirilen bütün vezirlerin diğer bir veziri yememesi için hiçbir vezir başka bir vezirle aynı sütuna veya aynı satıra ve en son olarak aynı köşegene konamaz. 8 Vezir probleminin genel formu, n adet vezir problemidir. 8 vezir problemi n adet vezir probleminin meşhur bir özel durumudur.

n adet vezir problemi, n ≥ 4 için n×n boyutunda bir satranç tahtasına n adet vezirin birbirini yiyemeyecek şekilde yerleştirilmesi problemidir.

8 Vezir Bulmacası, probleminin formal şekli ile n adet vezir problemi, satranç oyuncusu Max Bezzel tarafından ilk olarak 1848 yılında ortaya konulmuş ve yıllar içinde Gauss ve Georg Cantor gibi matematikçilerin çalışma alanına girmiştir. İlk çözüm Franz Nauck tarafından 1850' de bulunmuştur. Franz Nauck aynı zamanda bulmacayı nxn' lik bir tahta üzerinde uygulanmak üzere n adet vezir problemi haline getirmiştir.

Edsger Dijkstra 1972 yılında sekiz vezir problemini yapısal programlamanın getirdiği yeniliği göstermek ve yapısal programlama ile oluşturulan alt yordamlar ve fonksiyonların problem çözümünde gücünü göstermek için oluşturduğu bir algoritmada kullanmıştır. Edsger Dijkstra (1972)’ de aşağıdaki adımları izlenerek n adet vezir probleminin bir çözümünün bulunabileceğini göstermiştir.

(29)

1. n sayısını 12' ye böl. Kalanı aklında tut. (n sayısı sekiz vezir bulmacasında 8'dir). 2. 2'den n sayısına kadar olan bütün çift sayıları sırayla yaz.

3. Eğer kalan 3 ya da 9 ise 2' yi listenin en sonuna koy.

4. 1'den n' ye kadar olan tek sayıları listeye ekle; eğer kalan sekizse her bir çiftin kendi arasında yerlerini değiştir (örnek: 3, 1, 7, 5, 11, 9, …).

5. Eğer kalan 2 ise, 1 ile 3' ün yerlerini değiştir ve 5' i listenin en sonuna al. 6. Eğer kalan 3 ya da 9 ise, 1 ve 3' ü listenin sonuna al.

Ortaya çıkan listedeki her bir sayı için ilgili kolonun, listedeki sayının gösterdiği satırına bir vezir koy. Örneğin listedeki ikinci sayı 4 ise satranç tahtasında ikinci kolonun dördüncü sırasına bir vezir konmalıdır.

Örnek çözümler aşağıda gösterilmiştir.

14 vezir için liste (kalan 2): 2, 4, 6, 8, 10, 12, 14, 3, 1, 7, 9, 11, 13, 5.

15 vezir için liste (kalan 3): 4, 6, 8, 10, 12, 14, 2, 5, 7, 9, 11, 13, 15, 1, 3.

20 vezir için liste (kalan 8): 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 3, 1, 7, 5, 11, 9, 15, 13, 19, 17.

Toplamda 283.274.583.552 (64x63x..x58x57/8!) seçenek bulunmasına karşın yalnızca 92 adet çözüm bulunduğu için, problemin çözümü yüksek miktarda hesaplama, işlem ve bellek gerektirecektir. Boş yere yapılacak olan hesaplamaların sayısını azaltmak için bazı seçeneklerin devre dışı bırakılması gerekmektedir. Misal olarak her bir sütunda veya satırda tek bir vezirin olabileceği şartı konularak çözüm sayısı 16.777.216 (88) düzeyine indirilebilir.

8 vezir problemi gibi, durum uzayları büyük problemlerin çözümünde, sezgisel yöntemlerin kullanılması mecburidir.

Sekiz vezir bulmacasının 92 ayrı çözümü vardır. Ancak bu çözümlerin çoğu birbirinden yalnızca döndürme ve yansıma gibi simetri işlemleriyle üretilebilir. Bu nedenle, eğer simetriden doğan bu fazla çözümler birleştirilip tek çözüm olarak sayılırsa, bulmacanın aslında ek-1’ de gösterilen 12 eşsiz çözümü vardır. Bu 12 adet çözüm ek-1 de verilmiştir.

(30)

8 vezir probleminin, bilgisayar yazılımıyla yapılmasında bütün olasılıklara bakmak imkânsızdır. 283.274.583.552 adet durumun taranması ve gerekli bellek miktarı göz önüne alındığında, vezirleri yerleştirmede sezgisel yöntemler şarttır. Bu yöntemler aşağıdaki sıralanmıştır.

1- Aynı satır veya sütunda tek bir vezir olmalı

2- Vezirler birbirilerinin komşu karelerinde olmamalı

3- Her bir vezir yerleştirildikten sonra arama yapılacak alan ona göre daraltılmalıdır. Şekil 3.4’de a8’de vezir yerleştirildikten sonra, yerleştirilecek ikinci sütundaki vezir, ikinci vezir için b8,b7,b6 ya yerleştirilemez. Eğer ikinci yerleştirilecek vezir b6’ ya yerleştirilirse, üçüncü vezir için yerleştirilecek nokta sayısı c1,c2,c3,c4 olacaktır. Böyle bir yaklaşımla, her bir sütundaki durum sayısı 5’e düşmektedir. 8x57 = 625000 olacaktır. Eğer sütunlara yerleştirilen vezirlerde göz önüne alınırsa, çapraz ihtimallerde çıkarılmalıdır. Durum uzayı bilgisayarda hesaplanabilecek duruma dönecektir.

(31)

4.1. Oyun Ağaçları

Oyun Teorisinde, olabilecek tüm hamlelerin oyunun en başından veya oyunun mevcut bir durumundan itibaren, oyunun o anki durumunu en tepeye yerleştirilerek, oyunda ki geçerli tüm hamlelerin, gerçekleşme sırasına göre en üstten aşağıya doğru sıralanmış şekline oyun ağacı denir. Burada önemli olan bir alttaki hamlenin bir üstteki hamlenin durumuna göre şekillenmiş olmasıdır. Burada bütün hamleler bir üst hamleye bağlı olarak şekillenmektedir. Sıfır toplamlı birçok oyunun oyun ağaçları çıkartılabilmektedir. Teorik olarak satranç, dama, go gibi oyunların oyun ağaçları çıkartılabilir. Şekil 4.1’de oyun ağacının yapısı gösterilmiştir.

Şekil 4.1 Oyun ağacı genel yapısı

Oyun ağaçları sıfır toplamlı oyunların bilgisayar programlarının yazılmasında çok önemli bir yere sahiptir. Bilgisayarlar karar verirken oyun ağaçlarını kullanarak karar vermektedirler. Olası bütün hamleler çıkarılmakta ve oluşan duruma göre karar verilmektedir. Şekil 4.2’de Tic Tac Toe oyununun belli bir aşamasındaki oyun ağacı çıkarılmıştır.

(32)

Şekil 4.2 Tic tac toe örnek oyun ağacı

Oyunu O kullanıcı, x bilgisayar olarak düşünürsek oyun için bütün ihtimaller çıkarılmıştır. Tic Tac Toe oyunu için böyle bir ağacı şekilsek olarak ifade etmek mümkün olabilir. Satranç için bu ağacı düşünecek olursak, her bir adımda yaklaşık olarak 64 seçenekli bir olasılık söz konusu olacak ve bu her bir alt düğümlerde artarak devam edecektir. Şekil 4.2 Tic Tac Toe oyunu ağaç derinliği 3 tür. Oyun ağaçlarındaki derinlik sayısı bizim oyundaki başarı sansımızı artıracaktır. Satranç, dama, go gibi oyunlarda derinlik sayısı arttıkça bellek ve ağacın dallarında arama yapmak için hamle zamanı çok büyük olacaktır. Bilgisayarda sıfır toplamlı oyunları oynarken, bilgisayar hamle yaparken bir miktar bekleme oyun ağaçlarının oluşturulması ve oyun ağaçlarında yapılan aramalardan kaynaklanmaktadır.

4.2. Minimax Yöntemi

Sıfır toplamlı oyunlarda, bilgisayarların oyun ağaçlarını tarayarak karar vermeleri sağlayan çok etkili bir yöntemdir. Yöntemin minimax olarak isimlendirilmesi, bir tarafın kazancını, diğer tarafın ise kaybını anlatmak içindir. Oyunlar oynanırken oyunu

(33)

oynayan kişi maksimum kazanç istemekte, diğer oynayanların ise minumum kazanç elde etmek istemesidir. Bu yöntem için zararı asgariye indirme, kazancı azamiye çıkarma yöntemi de diyebiliriz.

Şekil 4.3 Tic tac toe minimax yöntemi başlangıcı aşaması

Şekil 4.3’deki oyunda X’ i bilgisayarın oynadığını varsayarsak X için bütün seçenekler çıkarılmıştır. X’ in kazanma durumları için 1, kaybetme seçenekleri için ise 0 diyelim.

(34)

Şekil 4.4 Tic tac toe minimax yöntemi ilk aşama

Şekil 4.4’de görüleceği gibi 1 durumu bilgisayarın oyunu kazandığı durumdur. Herkesin oynadığı oyunu kazanmak istediği gibi, bilgisayarda oyunu kazanmak isteyecektir. Bilgisayarın oyunu kazandığı durumlar 1 olarak işaretlenmiştir. Bilgisayarın tercih yapma gibi bir hakkı bulunmadığı için ihtimallerdeki kazanç ve kayıp durumları sayısal olarak ifade edilmelidir ki bilgisayar bu ihtimalleri birbiriyle kıyaslayabilsin. Gerçek dünyada her şey sayısal ifadelerle ifade edilmeden insanlar tarafından kıyaslanabilmektedir. Hatta insanın en üstün özelliklerinden birisi çok boyutlu düşünebilmesi ve verileri sayısal ifadelere dönüştürmeden kıyaslayabilmesidir. Mesela 2 portakalı düşündüğümüz zaman 5 yaşındaki bir çocuk dahi ikisi arasındaki büyüklük ve ağırlık farkını kıyaslayabilir. Bilgisayar ise bu iki portakalın hacim ve ağırlık bilgilerini sayısal bilgilere dönüştürmeden henüz kıyaslayamamaktadır. Gelişen yapay zekâ teknikleri sayesinde, belki yakın bir zamanda bu mümkün olacaktır.

(35)

Şekil 4.5 Tic tac toe minimax yöntemi ikinci aşama

Şekil 4.5’de O kullanıcısı içinde kazançlar çıkarılmıştır. Oyunu O’nun kazanması istenmediği için istenmeyen seçenekler için 0 verilmiştir. Son hamlede seçenek olmadığı için değerler yukarı taşınmıştır. O oyuncusu için kazancın minumum olması istendiği için O oyuncusunda minumum seçeneği uygulanacaktır. Şekil 4.6’da minimum uygulanması gösterilmiştir.

(36)

Şekil 4.6 Tic tac toe minimax yöntemi üçüncü aşama

Şekil 4.6’da gösterildiği gibi, O oyuncusu için minumum değerler alınarak, değerler bir yukarı taşınmıştır. Artık bu aşamada bilgisayar karar verebilecek duruma gelmiştir. En üstteki 1 seçeneğini seçmek, bilgisayarın kesin oyunu kazanması demektir. Oyundaki Bütün olası durumlar ağaçlar yardımıyla sayısal kıyaslamalara dönüştürüldüğü için bilgisayar sayısal büyüklükleri kıyaslayarak bir sonuca varabilir.

(37)

Şekil 4.7 Tic tac toe minimax yöntemi uygulanışı

Şekil 4.7’de görüldü gibi minimum ve maksimum seçenekler, kazanç durumuna göre uygulandığı için ağacın ismi minimax olarak isimlendirilmektedir. Burada belli bir başlangıç değerinden yola çıkılmıştır. Oyunun her aşamasında ağaç yeniden şekillendirilmeli ve mevcut duruma göre en karlı veya en az zararlı durum minimax yöntemiyle oluşturulabilir. Tic Tac Toe oyunu için oluşturulacak oyun ağacının derinliği ve düğüm sayısı fazla olmadığı için oyun bilgisayar için, en kötü ihtimalle berabere bitecektir. Ama bu birçok oyunlar için geçerli değildir. Uzmanlar teknoloji bu hızla gelişirse satranç için tüm ihtimallerin hesaplanabileceği oyun ağaçlarının 2050’ den önce olmasını imkânsız görüyorlar.

4.3. α-β budamaları

α ve β kavramları oyun ağaçlarında minimax yöntemi kullanırken uygulanmaktadır. Şekil 4.8’de minimax yöntemi ile bir arama yapılırsa bütün düğümlere bakmak gerekmektedir. Şekil 4.8’deki bir ağaçta 28 düğüm taranması gerekecektir.

(38)

Şekil 4.8 α-β’sız minimax uygulaması

Şekil 4.9’daki gibi, α ve β budaması yapılırsa 18 düğümde işlem sonlandırılmaktadır. α ve β’ya varsayılan değer olarak +∞ ve -∞ aktarılmaktadır. İlk önce, α’ya +∞ ve β’ya -∞ değerleri aktarılmaktadır. α , 5 değerini aktarılmaktadır. β’ ya 7 değeri aktarılmaktadır. Maximum aşamasında β’nın α’ dan daha küçük olması istenilmemektedir. 7 sayısının altındaki değerler 7,1,4 tür. Maximum değer alındığı için en önce 7 değeri yukarı çıkartılmaktadır. 7 değeri 5 değerinden büyük olduğu için daha 7 düğümünün altındaki şekil 4.9’de çarpı ile gösterilen 1 ve 4 düğümlerine bakmaya ihtiyaç kalmamaktadır. Çünkü 7 değeri eğer 5 ten daha küçük bir değer olsaydı o zaman diğer düğümlere bakmaya ihtiyaç olabilirdi. Böylece 1 ve 4 değeri budanmış olmaktadır. Şekil 4.9’deki ortadaki 7 düğümünün altında yer alan 7 ve 3 düğümlerinden maximum 7’dir. Diğer tarafta 9 yukarı çıkartılmaktadır. 9 değeri 7 den büyük olduğu için 4 düğümüne bakılmasına gerek kalmamaktadır. En sağdaki 1 düğümü üst tarafa çıkartılmaktadır. α değeri 1 olacaktır. β değeri olarak 1 den daha küçük bir değer olmayacağı için 6 ve 8 düğümleriyle beraber altlarında yer alan 6,2,5,8,4 değerlerine bakılmasına gerek kalmamıştır. Maximum aşamasında α betadan küçükse budama yapılmaktadır. Böylece α ve β budamaları sayesinde yaklaşık 8 / 26 = 0,30’ luk bir kazanç elde edilmektedir.

(39)
(40)

5.1. İşlem Oyunu Tanıtımı

İşlem oyunu Doç. Dr. Naim Çağman tarafından 2009 yılında bulunmuş ve oyun; Zekâ, Matematik ve Mantık Oyunları Dergisinde 2009 yılında yayınlanan bir makale ile duyurulmuştur. İşlem oyunu, 56 tane 0-13 kadar numaralandırılmış taşla, 8x8 tahta üzerinde oynanan bir zekâ oyunudur. İşlem oyunu 2 kişiyle oynanan, dört işleme dayanan, işlem yeteneğini geliştirme ve beyin egzersizi konusunda çok başarılıdır. İşlem oyununun oynanması ile ilgili temel kavramlara bakalım.

5.1.1. Komşular

Oyun tahtasındaki bir kareyle, en az bir köşesi ortak olan karelere, bu karenin komşu kareleri denir. Bir kareyle, iki köşesi yani bir kenarı ortak olan karelere bu karenin kenar komşuları ve yalnız bir köşesi ortak olan karelere de bu karenin köşe komşuları denir.

(41)

5.1.2. Taşlar

Her biri üzerinde 0,1,...,13 sayılarından biri yazılı olan 14 taşa bir takım denir. Bir taşın üzerindeki rakama bu taşın değeri denir. Her bir oyuncu, başlangıçta iki takıma sahiptir ve bu taşlar şekil 1 deki gibi açık olarak yerleştirilir. Her bir oyuncunun 28 taşının hepsi aynı renkte olup rakibinden farklı renktedir. (okey oyunundaki dört renk taşlardan sadece iki renk seçilerek bu oyunda kullanılabilir. 0 numaralı taşlar, diğer renkteki 10 numaralı okey taşlarının sadece 1 rakamının üzeri kapatılarak elde edilebilir.)

5.1.3. Dizimler

Aynı renkte en az iki taşın şekil 5.2'deki gibi komşu karelere yerleştirilmesiyle oluşan şekillere bir dizim denir. a1,a2,…,an taşlarında oluşan bir dizim (a1,a2,…,an) biçiminde gösterilir.

Şekil 5.2 Toplam dizimleri

Kenar komşular kullanılarak Şekil 5.2'deki gibi dizilen taşlara toplam dizimi ve köşe komşular kullanılarak Şekil 5.3'deki gibi dizilen taşlar da çarpım dizimi denir.

Şekil 5.3 Çarpım dizimleri

Bir toplam dizimin taş değerinin toplamına veya bir çarpım dizimin taş değerlerinin çarpımına, dizimin değeri denir. Buna göre, Şekil 5.2'deki toplam dizimlerin değeri a1+a2+…+an sayısı ve Şekil 5.3’deki çarpım dizimlerinin değeri a1 x a2… x an

(42)

sayısıdır. Bir dizimin, başındaki ve sonundaki taşlara uç taşlar denir. Buna göre (a1+a2+…+an) diziminin uç taşları a1ve antaşlarıdır.

5.1.4. İşlem

Dizimlerin ve taşların aşağıdaki şartlarda birleştirilmesine bir işlem denir. İ1. Birleşime girenlerin en az biri dizim olmalı,

İ2.Birleşime girenlerin değerleri eşit olmalı, İ3.Birleşme, dizimlerin uç taşında olmalı,

İ4.Bir dizimin bir uç taşıyla birleşecek olan taş, bu dizimin diğer taşlarına komşu olmamalı.

Bir işlem, işleme girenlerin değerlerinin eşitliğini gösterecek şekilde parantez içinde yazılır. Örneğin, (a1+a2+…+an ) toplam ve (b1,b2,…,bm) çarpım dizimleri işlem şartlarını sağlarlar ise elde edilen işlem (a1+a2+…+an= b1b2…bm) şeklinde gösterilir.

5.1.5. İşlem Şekilleri

Bir işlemin, oyun tahtası üzerinde gösterilmesi için dizilen taşların oluşturduğu şekle işlem şekli denir. Bir işlemin birden fazla şekli vardır. Bir işlem şeklinin 90,180 ve 270 derece döndürülmesiyle elde edilen yeni şekillere işlemin denk şekilleri denir. Şekil 5.4 numaralı şekil de, bir işlemin dört farklı denk şeklini göstermektedir.

Şekil 5.4 İşlem şekilleri-denk şekiller 5.1.6. İşlem Türleri

Bir işlem, kullanılan dizim sayısına göre aşağıdaki yollardan biriyle elde edilir. Fazla yer kaplamaması için, işlem şekillerinin sadece denklerinden birini göstereceğiz. Her bir işlem şeklinin dört tane denk şeklin temsilcisi olduğunu unutmayalım.

(43)

5.1.6.1. 1-Dizimli İşlemler

Bir dizim ve bir taştan elde edilen işlemlere 1-dizimli işlem denir. Dizim (a1+a2+…+an ) ve taş b olsun. Bu durumda dizimin türüne göre aşağıdaki iki durum ortaya çıkar. a)1-Dizimli Toplam İşlemi: Eğer 1-dizimli işlemin dizimi toplam dizim ise elde edilen işleme 1-dizimli toplam işlemi denir. (a1+a2+…+an ) toplam dizimi ve bir b taşının oluşturduğu 1-dizimli toplam işlemi(a1+a2+…+an=b) biçiminde yazılır ve şekil 5.5’deki üç işlem şeklinden biriyle elde edilir.

Şekil 5.5 1-Dizimli toplam işlemi

b)1-Dizimli Çarpım İşlemi: Eğer 1-dizimli işlemin dizimi çarpım dizim ise elde edilen işleme 1-dizimli çarpım işlemi denir.( a1,a2,…,an) çarpım dizimi ve bir b taşının oluşturduğu 1-dizimli çarpım işlemi (a1+a2+…+an =b) biçiminde yazılır ve şekil 5.6’daki beş işlem şeklinden biriyle elde edilebilir.

Şekil 5.6 1-Dizimli çarpım işlemi 5.1.6.2. 2-Dizimli İşlemler

İki tane dizimden elde edilen işlemlere 2-dizimli işlem denir.( a1,a2,…,an) ve (b1,b2,…,bm) iki dizim olsun. Bu durumda dizimlerin türüne göre aşağıdaki üç durum ortaya çıkar.

(44)

a) 2-Dizimli Toplam İşlemi: Eğer iki-dizimli bir işlemin dizimlerinin her ikisi de toplam dizim ise oluşan işleme iki-dizimli toplam işlemi denir.(a1,a2,…,an) ve .(b1,b2,…,bm) toplam dizimlerinden elde edilen 2-dizimli toplam işlemi (an+…+a2+a1=b1+b2+…+bm) biçiminde yazılır ve şekil 5.7’deki beş işlem şeklinden biriyle elde edilir.

Şekil 5.7 2-Dizimli toplam işlemi

b)2-Dizimli Çarpım İşlemi: Eğer 2-dizimli bir işlemin dizimlerinin her ikisi de çarpım dizimi ise oluşan işleme 2-dizimli çarpım işlemi denir. (a1,a2,…,an) ve (b1,b2,…,bm) çarpım dizimlerinden elde edilen 2-dizimli çarpım işlemi (an…a2a1=b1b2…bm) biçiminde yazılır ve Şekil 5.8’deki on bir işlem şeklinden biriyle elde edilir.

(45)
(46)

Şekil 5.8 2-Dizimli Çarpım İşlemi (devam)

c)2-Dizimli Karma İşlemler: Eğer iki-dizimli bir işlemin dizimlerinden biri toplam ve diğeri de çarpım dizim ise oluşan işleme 2-dizimli karma işlemi denir. Bir (a1,a2,…,an) toplam işlemi ve bir (b1,b2,…,bm) çarpım işleminden elde edilen 2-dizimli karma işlemi (an…a2a1= b1+b2+…+bm) biçiminde yazılır ve Şekil 5.9’daki sekiz işlem şeklinden biriyle elde edilebilir.

(47)

Şekil 5.9 2-dizimli karma işlemler 5.1.6.3. n-Dizimli İşlemler:

n>2 olmak üzere, konulan bir x taşı n tane dizimden aynı anda x taşına bağlı (taşlarından biri x) işlemler oluşturuyorsa, elde edilen işlemler topluluğuna n-dizimli

(48)

işlem denir. Örneğin şekil 4.1.6.3.1-(1)’de en son 6 taşının konmasıyla, bu taşa bağlı bir tane 2-dizimli(3x4=6x2) işlemi ve bir tane 1-dizimli (1+5=6) işleminden oluşan topluluk 3-dizimli işlem meydana getirir. Şekil 4.1.6.3.1-(2)’de en son 6 taşının konmasıyla, bu taşa bağlı iki tane 2-dizimli(3x4=6x2) ve (4+5=6+3) işlemlerin topluğu 4-dizimli işlem meydana getirir. Şekil 4.1.6.3.1-(3)’de en son 6 taşının konmasıyla, bu taşa bağlı iki tane 2-dizimli (2x6=12) işlem topluluğu 5 dizimli işlemi meydana getirir.

Şekil 5.10 n-dizimli işlemler 5.1.7. Oyun Kuralları

Hazırlık: İki kişiyle oynanan bu oyunda, herhangi bir yolla önce hangi oyuncunun başlayacağı belirlenir. Oyuncular, iki takım taşın tamamını, oyun tahtasının dışına Şekil 1’deki gibi dizerler.

1.Aşama: Her bir oyuncu bir takım taşın tamamını, rakibin taşlarına komşu olabilecek ama kendisinin hiçbir taşı ile komşu olamayacak biçimde sırasıyla karelere dizerler. Bu aşamada, sırası geldiğinde taşını yerleştiremeyen oyuncu, yerleştiremediği bu taşını rakibe verir ve oyun sırası rakibe geçer.

2.Aşama: Bir takım taşın tamamını bitiren oyuncu sırası gelince artık işlem yapabilmek için diğer takım taşlarından birini istediği kareye koyar. Bu son koyduğu taşla kaç dizimli işlem yapmışsa, rakibinin karelere yerleştirilmiş o kadar sayıda istediği taşını alır ve oyun sırası rakibe geçer.

3.Aşama: İkinci takımdaki taşların tamamını tahtaya dizen oyuncu, sırası gelince işlem yapabilmek için herhangi bir karede bulunan bir taşını alıp istediği boş bir kareye koyar. Bu yer değiştirdiği son taşla kaç dizimli işlem yapmışsa, rakibin karelere yerleştirilmiş o kadar sayıda istediği taşını alır ve oyun sırası rakibe geçer.

Bitiş: Bu aşamalar boyunca, rakibin taşlarının dörtte üçünü yani toplam 21 tane taşını alan ilk oyuncu, oyuna ikinci başlayan oyuncu ise oyunu kazanır, ilk başlayan oyuncu

(49)

ise hamle sayısının eşit olması için rakip bir taş daha oynar ve bu durumda en fazla taş alan oyuncu oyunu kazanır. Son durumda alınan taş sayısı eşit ise oyun berabere bitmiş olur.

5.1.8. Örnek Oyun

Burada, gösterim kolaylığı için taşların yerine sadece taşların üzerinde yazan rakamları kullanalım. Oyuncular A ve B olsun. A oyuncusunun taşları siyah ve B oyuncusunun ki ise kırmızı olsun. Oyunun, Şekil 5.11’deki gibi bir durumda olduğunu var sayalım.

Şekil 5.11 Örnek işlem oyunu

Eğer oyun sıra A oyuncusunda ise D6 karesine 12 taşını koyarsa,(6x2=12), (12=5+7), (3x4=12) ve (8+9=12+5) işlemlerinden oluşan toplulukla 5-dizimli işlem elde edilir. Bunlar (6,2), (8,9), (12,5), (5,7) ve (3,4) dizimleridir. Bundan dolayı, A oyuncusu B’nin 5 tane taşını oyun tahtasından toplar ve oyun sıra B’ye geçer. Eğer A oyuncusu bir taşını G5 karesine koysaydı daha zayıf olan 3-dizimli işlem elde ederdi.

Eğer oyun sırası B oyuncusunda ise D3 karesine 9 taşını koyarsa,(3x3=9), (2+4+9=5+10) ve (9=2+7) işlemlerinden oluşan toplulukla 4-dizimli işlem elde eder bunlar (3,3), (2,4,9), (5,10) ve (2,7) dizimleridir. Bundan dolayı B oyuncusu A’nın 4 tane taşını oyun tahtasından toplar ve oyun sıra A’ya geçer. Eğer B oyuncusu 6 taşını E8 karesine koysaydı daha güçlü olan 5-dizimli işlemde elde ederdi. Oyun benzer şekilde bitene kadar devam eder.

(50)

5.1.9. Sonuç

56 tane numaralandırılmış taşla satranç tahtası üzerinde oynanan işlem oyunu 4 işleme dayalı bir zekâ oyunudur. Her bir işlemin birden fazla alternatif şekillerin olması, oyuncuya karar yetisi sağlayacaktır. Örneğin,Şekil8’de 2-dizimli çarpım işlemin 11 tane alternatif şekli görünmektedir, her bir işlem şekli 4 renk şekli temsil ettiğinden, bu işlemin toplam 11x4=44 farklı şekil seçeneği olduğu açıktır.

Bu oyuna yeni başlayanlar, sadece 1-dizimli işlemlerle oynamayı denemelidir. Oyuna alıştıkça 2-dizimli işlemleri ve daha profesyonelleştikçe de n-dizimli işlemleri kullanmayı öneririz.

(51)

6.1. İki Düzlemde Programlama

İşlem oyununun oynanışı ile ilgili geniş ve detaylı bir bilgi yukarıda vardı. İşlem oyunu 8x8 bir tahta üzerinde oynandığı için ilk önce 8x8 bir tahta üzerinde oyunun durum uzayları çıkartılmalıdır. Satrançta taşların hamle yapma şekilleri değişik olduğu için taşlara puan verilerek oyun ağaçları çıkartılmaktadır. İşlem oyununda taşların değerleri eşit olduğu için taşları farklı olarak puanlamaya ihtiyaç yoktur. Şekil 6.1’de 8x8 bir oyun tahtası(oyun alanı) gösterilmiştir.

Şekil 6.1 8x8 Oyun alanı

Bilgisayarın oyuna ilk başladığı kabul edersek, ilk taş için 64 olasılık vardır. Bu sadece işlem oyunu için değil 8x8 tahta üzerinde yazılacak bütün oyunlar için geçerlidir. Eğer oyun M x N bir tahta üzerinde oynansaydı, mxn adet olasılık olurdu. İşlem oyunu için yapılacak olan oyun ağaçlarında bu 64 durumda göz önüne alınmalıdır. 64 durumda, her bir durum için 8x8 tahtanın her bir şeklinin bellekte tutulması gerekir. Fakat derinlik arttıkça başka teknikler kullanmak, işlem hızı ve bellek kapasitesi yüzünden, gerekeceği aşikâr olacaktır. İkinci hamleyi kullanıcının yapacağını düşünürsek önünde 63 adet olasılık olacaktır. Bunun yeni durum için, 64 olasılığın her biri için 63 durum söz konusu olacaktır. Bellekte 64x63=4032 adet durum ve bunların puan durumlarının saklanması gerekecektir. Diğer hamle de ise, 3. derinlikte sıra bilgisayarda iken,

(52)

Artan her bir derinlikte rakam çok daha da büyüyecektir. Çizelge 5.2.1 de her bir derinlikteki durum sayısı çıkarılmıştır. Çizelge 6.2.1’ de her bir durum için 1 ms harcanıp, 100 byte yer tuttuğunda ki rakamlar çıkartılmıştır. 4. Derinlikte rakam, zaman olarak 42 saate bellek olarak ise yaklaşık 1,5 gigabyte çıkmıştır. Herhangi bir oyun için, daha henüz 4. derinlikte bu rakam kabul edilemez. 5. Seviyede ise arama 106 gün sürmekte ve bellek miktarı 85 gigabyte çıkmaktadır. Bu günkü süper bilgisayarlar bile bu bellek miktarına hala ulaşamadılar.

Çizelge 6.1 8x8 Alan üzerindeki hamlelerin zaman ve yer tablosu

Derinlik Durum sayısı Zaman(sn) Bellek(Mb)

1 64 0,64 sn 0,006103 Megabyte 2 4032 40,32 sn 0,3845 Megabyte 3 249984 2499,84 sn 23,840 Megabyte 4 15249024 42,3584 saat 1,45426 Gigabyte 5 914941440 106 gün 85,210 Gigabyte 6 53981544960 17,11 yıl 4,9 Terabyte

Oyunu programlarken sezgisel davranışlar programlamada kullanılmazsa 6 derinlikli bir hamleye cevap vermek için 17 yıl beklemek gerekecektir. Fakat sezgisel yollar programda kullanılarak ve bir uzman görüşü alınarak bu rakamlar makul ölçülere düşürülebilir.

(53)

Şekil 6.2 8x8 İşlem oyununa başlama alanı

İşlem oyunu için ilk başlangıçta 8x8 bir tahtanın, şekil 6.2’de gösterilen taralı olmayan kısımlara taşları koymak akılcı bir davranış değildir. Çünkü işlem yapma olasılıklarını azaltmaktadır. Bunun yerine oyuna, şekil 6.2’ de gösterilen kısımda ki taralı olan bölgeden başlamak oyunu kazanmak için avantajlı bir durum elde etmeye sebep olacaktır. Çünkü oyuncunun puan kazanabilmesi için elindeki taşları, köşelere(a1,a8,h1,h8) veya köşelerin yanındaki satırlara taşları yerleştirmek, işlem yapmak için avantajlı bir durum getirmeyecektir. Taşları şekil 6.2’deki taralı bölgeden yerleştirmeye başlamak, puan kazanmak için daha akılcı olacaktır. Eğer sezgisel yöntemler kullanılırsa oyun 2 veya 3 derinlikte muhakkak bilgisayarın kazanacağı şekle dönecektir.

Oyunda ki strateji sadece taş yerleştirmek üzerine değildir. Aynı zamanda, oyunda rakibin taşları da alındığı için, aynı oyun ağaçlarının taş alınırken de çıkarılması gerekmektedir. Çünkü rast gele taş alımı değil, kişinin puan kazanabileceği durumlarda düşünülerek, rakibin taş yerleştirdiğinde en çok puan kazanabileceği taşlar alınmalıdır. Rakip oyuncunun elindeki taşları tahta üzerine yerleştirdiğindeki puan tablosu da çıkartılmalıdır. Oyuncunun elinde taşlar eksildikçe bunlar için puan hesaplama ihtiyacı olmayacağından tablodan çıkartılmaktadır.

Bilgisayarın düşünebilen bir varlık olmadığını hepimiz biliriz. Durumlarda eşit puanlar olduğunda veya taş almada eşit puan seçenekleri oluştuğunda ne olacak sorusu akla

(54)

geliyor. Böyle durumlarda, mesela bir insana her bir elinizde 1 lira tutarak, bunlardan hangisini istersen alabilirsin dendiğinde, rastgele bir seçim yapılmaktadır. Çünkü tercihler arasında üstünlük yoktur. Kar ve kazanç olarak 2 tercihte eşittir. İnsanın iradesi bu tür durumlarda devreye girmekte, sayısal veya herhangi bir niceliği eşit durumlarda tercih yapmaktadır. Bilgisayar veya herhangi bir elektronik cihaz eşit durumlarda random(rastgele) tercihler yapabilir. Bu rastgele bir seçeneğin seçimi insanın seçim tercihlerine benzemektedir.

6.2. Oyun Programlama

Oyun yazmak için genelde C++ dili kullanılmaktadır. Bugünkü gelişen teknoloji ortamı, artan grafiksel alandaki gelişmeler ticari bir oyun yazmak için çok karışık ve birleşik sistemler gerekmektedir. Basitçe, bir ticari oyun yazabilmek için, çok iyi bir fizik ve matematik bilgisine sahip olmak gerekmektedir. Oyun programlama aşamasında hareketler ve konumlar, 3 boyutlu ortamlar, her anda hareket ve konum bilgisi, fizikte ki vektörler, hareket, momentum gibi konuların çok iyi bilinmesi gerektirmektedir. Matematik açısından da, şekillerin modellenmesi, karakterlerin modellenmesi, ortam modellenmesi ve bu ortamda yapılacak işlemler ve yeni konumlar, matematik açısından trigonometri, karmaşık sayılar, türev, integral ve diferansiyel denklemler gibi birçok konunun ileri derecede bilinmesini gerektirmektedir. Bunlar sadece başlangıç aşamasında gerekmektedir.

Oyun programlamak için ilk başta yapılması gerekenlerden birisi, ortam modelleme için 3dmax gibi bir tasarım programının ileri derece bilinmesidir. Bütün karakterler ve oyundaki yerler detaylı olarak çizilmelidir. Bu tür programları öğrenmek çok uzun zaman almakta ve çoğunlukla da başarıya ulaşılamamaktadır. Öğrenmek için yola çıkanların birçoğu yarıya dahi gelememektedir. Bu gün dünya üzerinde en çok bilinen 4-5 oyun firmasının olması da bunu doğrulamaktadır.

Oyun programlamak için diğer bir aşama ise nesne tabanlı bir dile ileri dereceden daha ileri hâkim olmaktır. Bu gün itibarıyla yeryüzünde bu anlamda ortak kabul görmüş olan dil C++’ dır. Çünkü bu dil için yazılmış binlerce kütüphane mevcuttur. Tıp literatüründe Latince kullanılması gibi bir duruma sahiptir programlama dilleri arasında. C++ ile

Referanslar

Benzer Belgeler

Yukarıdaki sonuçlardan da anlaşılacağı üzere sıraçma saldırısı iyi sonuç veriyor ise PNN yapay sinir ağı de o ölçüde başarılı sonuçlar üretmektedir. PNN ağı

Günümüzde çe¸sitli makine ö ˘grenmesi algoritmaları istatistiksel ö ˘g- renme kuramını temel almaktadır:..

BTTD D:: Bilgisayarlar›n yapay zekây› gerçeklefl- tirmek için uygun bir araç olmad›¤›n› düflünen- ler, bunun nedeni olarak insan beyniyle bilgisa- yarlar›n

Almanya, ABD, Avusturya, Hollanda ve İsviçre’de çeşitli maka­ le ve kitaplan basılan Anhegger’in Türkiye’de yayımlanmış yapıtları arasında “Beitraege

Çok yazık: sadece Sezen Aksu konuşuyoruz. Takvimde

Öte yandan diğer oturumda 50 yaşındaki kadın katılımcı, romantizm ve evlilik konuşulurken “Bizim gençliğimizde evlilik alyans ile anılırdı, tek taş çok lükstü”

Makalenin temel katkısı, MANET'te daha çok PKI olarak adlandırılan açık anahtar altyapısının simülasyonu için, OMNeT++ simülasyon ortamını kurmak için gerekli

1994 yılına kadar yalnızca 6 sözleşme temel olarak nitelenirken, 1995 yılında ve 1999 yılında çocuk çalışmasının önlenmesine ilişkin iki sözleşme de yönetim