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



Benzer belgeler
OYUN TEORİSİ. Özlem AYDIN. Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü

Sequence Oyununun Minimaks Algoritması Kullanılarak Tasarlanması ve Geliştirilmesi

Oyun Teorisine (Kuramına) Giriş

YZM YAPAY ZEKA DERS#6: REKABET ORTAMINDA ARAMA

Tam ve Karma Stratejili Oyunlar. İki Kişili Oyunlar için

BLM-431 YAPAY ZEKA. Ders-3 Durum Uzayında Arama. Yrd. Doç. Dr. Ümit ATİLA

İki kişili-sıfır toplamlı oyunlar. Tam ve Karma Stratejili Oyunlar. Varsayımlar. Sıfır toplamlı oyunlar

DARÜŞŞAFAKA LİSESİ SALİH ZEKİ LİSE ÖĞRENCİLERİ ARASI MATEMATİK PROJELERİ YARIŞMASI

Akıllı Satranç Uygulaması HAZIRLAYAN: BERKAY ATAMAN DANIŞMAN: DOÇ. DR. FEZA BUZLUCA

İLKOKUL 3. ve 4. SINIFLAR SOMPO JAPAN ZEKA OYUNLARI TURNUVASI YÖNERGE KİTAPÇIĞI

Evet evet yanlış duymadınız, Haydi matematik oynayalım... Bugünlerde. birçok çocuğun ağzından dökülen cümle bu, diğer birçok çocuğun aksine bu

ZEKA ATÖLYESİ AKIL OYUNLAR

İSTANBUL İL MİLLİ EĞİTİM MÜDÜRLÜĞÜ BİLİM OLİMPİYATLARI 2018 SINAVI

Algoritma ve Programlamaya Giriş

OYUNLAR TEORİSİNİN MADEN ARAMALARINA UYGULANMASI

OYUN TEORİSİNE DOĞRU Yard.Doç.Dr.Deniz Giz

Mantıksal Operatörlerin Semantiği (Anlambilimi)

BULANIK MANTIK VE SİSTEMLERİ BAHAR DÖNEMİ ÖDEV 1. Müslüm ÖZTÜRK Bilişim Teknolojileri Mühendisliği ABD Doktora Programı

Programlama Dilleri 1. Ders 3: Rastgele sayı üretimi ve uygulamaları

Yapay Zekada Problem Çözme

Bilkent Üniversitesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Mühendisliği

MAK 210 SAYISAL ANALİZ

ALAN YOK / ALAN SEÇMELİ SINIF SİSTEMİ TASDİKNAME GİRİŞİ Açık Öğretim Lisesi

Yıldız Teknik Üniversitesi Endüstri Mühendisliği Bölümü KARAR TEORİSİ. Oyun Teorisi Yaklaşımı

TÜBİTAK-BİDEB YİBO ÖĞRETMENLERİ. (Fen ve Teknoloji - Fizik, Kimya, Biyoloji - ve Matematik) PROJE DANIŞMANLIĞI EĞİTİMİ ÇALIŞTAYI

VEKTÖR UZAYLARI 1.GİRİŞ

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

ÇOCUKLAR NEDEN AKIL VE ZEKA OYUNLARI OYNAMALI? 1- Bilinç altında; tanıma, kavrama, kıyaslama gibi terimleri pekiştirerek öğrenir.

Bulanık Kümeler ve Sistemler. Prof. Dr. Nihal ERGİNEL

Eğitim Fakülteleri ve İlköğretim Öğretmenleri için Matematik Öğretimi

MENTAL ARİTMETİK, PARİTMETİK VE SOROBON EĞİTİM /KURS ÖNERİ FORMU

BÖLÜM FORMÜLLER ve OTOMATİK TOPLAM Formüller

SATRANÇ EĞİTİM & BOYAMA KİTABI. Dr. Olgun Kulaç

Saf Stratejilerde Evrimsel Kararlılık Bilgi Notu Ben Polak, Econ 159a/MGT 522a Ekim 9, 2007

Atatürk Anadolu. Temel Kavramlar Üzerine Kısa Çalışmalar

... ROBOTİK VE KODLAMA EĞİTİMİ ÇERÇEVESİNDE ÖĞRETİM YILI BİLİŞİM TEKNOLOJİLERİ DERSİ ÜNİTELENDİRİLMİŞ YILLIK DERS PLANI

END. İKTİSADI VE OYUN TEORİSİ (BİRİNCİ ÖDEV)

Geçen hafta neler öğrendik?

EXCEL 2007 ELEKTRONİK ÇİZELGE

TEST. Tam Sayılar 1. ( 36) : (+12).( 3) : ( 2) 3 + [( 6) ( 2)] işleminin sonucu kaçtır? işleminin sonucu kaçtır? A) 9 B) 1 C) 1 D) 9

2017 MÜKEMMEL YGS MATEMATİK

Fonksiyon Optimizasyonunda Genetik Algoritmalar

Sonuçlanmamış bir cephede rakibinizin dilediğiniz bir birlik kartını alın ve kendi tarafinıza geçirerek istediğiniz bir cepheye yerleştirin.

OLASILIK (Probability)

Sayısız uygulama alanı olan Yapay Zeka kavramının pek çok tanımı vardır.

OKUL ÖNCESİNDE OYUN VE HAREKET ETKİNLİĞİ

Lineer Denklem Sistemleri

Başlayanlara AKTİF MATEMATİK

Öğr. Gör. Özlem BAĞCI

ALAN TURING: BİLGİSAYARIN ATASI

BİLİŞİM TEKNOLOJİLERİ VE YAZILIM DERSİ (5 VE 6. SINIFLAR) Öğretim Programı Tanıtım Sunusu

Hedef-2: Master mind oyununda taşları yerleştirme ve olasılık hesapları yapar.

Olasılık, bir deneme sonrasında ilgilenilen olayın tüm olaylar içinde ortaya çıkma ya da gözlenme oranı olarak tanımlanabilir.

KESİN PROJE RAPORU PROJENİN ADI PROJEYİ HAZIRLAYANLAR BABÜR NEDİM ÇAĞATAY OKUL ADI VE ADRESİ DANIŞMAN ÖĞRETMEN

YZM 5257 YAPAY ZEKA VE UZMAN SİSTEMLER DERS#6: GENETİK ALGORİTMALAR

Go taşı ve tahtası. - Oyunun başında tahta boştur. - Oyuna önce siyah başlar. - Oyuncular sırayla taşlarını tahtaya

YÖNEYLEM ARAŞTIRMASI - III

BİLGİSAYAR DESTEKLİ TASARIM AUTOCAD DERSİ. 1. HAFTA Öğr. Gör. Serkan ÖREN

Final Sınavı. Güz 2005

MATEMATİĞİ SEVİYORUM OKUL ÖNCESİNDE MATEMATİK

yöneylem araştırması Nedensellik üzerine diyaloglar I

SAĞLIK KURUMLARINDA OPERASYON YÖNETİMİ

Excel de çalışma alanı satır ve sütunlardan oluşur. Satırları rakamlar, sütunları ise harfler temsil eder. Excel çalışma sayfası üzerinde toplam

6.12 Örnekler PROBLEMLER

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

CEBİRDEN SEÇME KONULAR

Piramit Satırları. Aşağıdaki girdi rakamlarından hangisi son satırda sonucun "0 (sıfır)" olmasını sağlar?


TEMEL BİLGİSAYAR BİLİMLERİ

SÜREKLİ RASSAL DEĞİŞKENLER

ANADOLU ÜNİVERSİTESİ OLASILIĞA GİRİŞ

Algoritmalar ve Programlama. Algoritma

Yazarlar hakkında Editör hakkında Teşekkür

Language: English / Turkish

Eğitsel Oyun Projesi Raporu. SCRATCH(BOWLING RENKSA) ELİF SÜER

EXCEL DE ARİTMETİKSEL İŞLEMLER

FAZ (FArklı Zar) Temmuz Umut & Yeşim Uludağ FAZ V Kişi Sayısı: 3 Yaş grubu: 8 yaş ve üstü Oyun Türü: Taş hareketi, strateji, olasılık

Yrd. Doç. Dr. A. Burak İNNER

İÇİNDEKİLER. Önsöz...2. Önermeler ve İspat Yöntemleri...3. Küme Teorisi Bağıntı Fonksiyon İşlem...48

Algoritma ve Akış Diyagramları

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Oyun Teorisi IENG 456 Karar Vermede Analitik Yaklaşımlar

OYUN GELİŞTİRME AŞAMALARI-I

1. BÖLÜM Mantık BÖLÜM Sayılar BÖLÜM Rasyonel Sayılar BÖLÜM I. Dereceden Denklemler ve Eşitsizlikler

Psikomotor Gelişim ve Oyun

Bilgisayar Grafiği. Volkan KAVADARLI

1- Kurnazlık: Oyunun stratejisini planlamak ve oyun kurallarını kendi çıkarları doğrultusunda kullanabilmek.

İŞLETME RİSK YÖNETİMİ. Yrd. Doç. Dr. Tülay Korkusuz Polat 1/21

OLASILIĞA GİRİŞ P( )= =

İleri Diferansiyel Denklemler


ÜNİTE 1: TEMEL KAVRAMLAR

MATEMATİĞİN DOĞASI, YAPISI VE İŞLEVİ

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

14.12 Oyun Teorisi Ders Notları

DEDELER İLKOKULU

Yapay Zeka İle Aramızdaki Fark

Örnek...2 : Örnek...3 : Örnek...1 : MANTIK 1. p: Bir yıl 265 gün 6 saattir. w w w. m a t b a z. c o m ÖNERMELER- BİLEŞİK ÖNERMELER

Microsoft Excel Formül Yazma Kuralları: 1. Formül yazmak için Formül Araç Çubuğu kullanılır, ya da hücre içerisine çift tıklanarak formül yazılır.

LYS TESTLERİNE YÖNELİK ALAN STRATEJİLERİ

Transkript:

ECHİNACEA PALLİDA NIN KÖKLERİNDEKİ BİLEŞİKLERİN İZOLASYONU YAPI TAYİNİ ve 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 Her Hakkı Saklıdır

T.C. GAZİOSMANPAŞA ÜNİVERSİTESİ 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 Her hakkı saklıdır

TEZ BEYANI 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 Uğur ERKAN

i Ö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 i

ii 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 multidimensional array games. 2012, 87 page Key Words: Artificial intelligence, Four operation, Game theory, Nash equilibrium, Minimax, Game trees, Arithmetic operations game ii

iii Ö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 iii

iv İÇİNDEKİLER iv 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 6.5. Oyun Şeklinin Simülasyonu... 44

v 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 ÖZGEÇMİŞ... 75 v

vi Ş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 Şekil 5.9 2-dizimli karma işlemler... 35 vi

vii Ş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 Şekil 6.18 İşlem oyunu oyun simülasyon örneği aşama-6... 59 vii

viii Çİ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 Çizelge 6.3 Taş yerleştirme oyun tablosu.51 viii

1. GİRİŞ 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.

2 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. 2

2. YAPAY ZEKA İ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

4 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 4

5 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). 5

3. OYUN TEORİSİ 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

önemi, sosyal bilimlerdeki birçok konunun da matematiksel olarak ifade edilmesinden dolayıdır (Myerson, 1991). 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

8 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. 8

9 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) A i = {İ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 9

10 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 10

11 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. 11

12 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. 12

13 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. 13

14 Ç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. 14

15 Ş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. Şekil 3.3 Tic tac toe oyunu için örnek oyun ağacı 15

16 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. 16

17 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 (8 8 ) 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. 17

18 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. 8x5 7 = 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. Şekil 3.4 Sekiz vezir başlangıç durumu 18

4. PROGRAMLAMA TEKNİKLERİ 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.

20 Ş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 20

21 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. 21

22 Ş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. 22

23 Ş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. 23

24 Ş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. 24

25 Ş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. 25

26 Ş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. 26

27 Şekil 4.9 α-β minimax uygulaması 27

5. İŞLEM OYUNU 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. Şekil 5.1 İşlem oyunu oyun şeması

29 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. a 1,a 2,,a n taşlarında oluşan bir dizim (a 1,a 2,,a n ) 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 a 1 +a 2 + +a n sayısı ve Şekil 5.3 deki çarpım dizimlerinin değeri a 1 x a 2 x a n 29

30 sayısıdır. Bir dizimin, başındaki ve sonundaki taşlara uç taşlar denir. Buna göre (a 1 +a 2 + +a n ) diziminin uç taşları a 1 ve a n taş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, (a 1 +a 2 + +a n ) toplam ve (b 1,b 2,,b m ) çarpım dizimleri işlem şartlarını sağlarlar ise elde edilen işlem (a 1 +a 2 + +a n = b 1 b 2 b m ) ş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. 30

31 5.1.6.1. 1-Dizimli İşlemler Bir dizim ve bir taştan elde edilen işlemlere 1-dizimli işlem denir. Dizim (a 1 +a 2 + +a n ) 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. (a 1 +a 2 + +a n ) toplam dizimi ve bir b taşının oluşturduğu 1-dizimli toplam işlemi(a 1 +a 2 + +a n =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.( a 1,a 2,,a n ) çarpım dizimi ve bir b taşının oluşturduğu 1-dizimli çarpım işlemi (a 1 +a 2 + +a n =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.( a 1,a 2,,a n ) ve (b 1,b 2,,b m ) iki dizim olsun. Bu durumda dizimlerin türüne göre aşağıdaki üç durum ortaya çıkar. 31

32 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.(a 1,a 2,,a n ) ve.(b 1,b 2,,b m ) toplam dizimlerinden elde edilen 2-dizimli toplam işlemi (a n + +a 2 +a 1 =b 1 +b 2 + +b m ) 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. (a 1,a 2,,a n ) ve (b 1,b 2,,b m ) çarpım dizimlerinden elde edilen 2-dizimli çarpım işlemi (a n a 2 a 1 =b 1 b 2 b m ) biçiminde yazılır ve Şekil 5.8 deki on bir işlem şeklinden biriyle elde edilir. Şekil 5.8 2-dizimli çarpım işlemi 32

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

34 Ş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 (a 1, a 2,, a n ) toplam işlemi ve bir (b 1, b 2,, b m ) çarpım işleminden elde edilen 2-dizimli karma işlemi (a n a 2 a 1 = b 1 +b 2 + +b m ) biçiminde yazılır ve Şekil 5.9 daki sekiz işlem şeklinden biriyle elde edilebilir. 34

35 Ş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 35

36 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 36

37 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. 37

38 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. 38

6. PROGRAM YAZIMI 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,

ağacımızın durumu 64x63x62=249984 adet durumun saklanması gerekecektir. Birde bunların puanları tutulmalıdır. 6. derinlikte ise bu rakam 53981544960 varmaktadır. 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.

41 Ş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 41

42 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 42

43 beraber Microsoft firmasının grafik kütüphanesi olan directx kütüphanesinin kullanılmasının da ileri derece bilinmesi gerekmektedir. Son olarak bunca şeyden sonra oyun yazabilmek için yapay zekâ bilmeniz gerekmektedir. Yapay sinir ağları konusuna da hâkim olmalısınız. Yaklaşık senede dünya üzerinde ticari olarak 3000 civarında oyun çıkmaktadır fakat bunlardan 100 tanesi bile ancak piyasada kendine zor yer bulmaktadır. 6.3. İşlem Oyununun Diğer Oyunlar İçindeki Yeri İşlem oyununu, şu andaki piyasada ki mevcut oyunlar içerisinde bir zekâ oyunu olarak değerlendirebiliriz. Satranç, dama, tavla ve go oyunlarına oynanış ve oyun alanı olarak benzemektedir. İşlem oyunu, oynandıkça kazandırdığı işlem kabiliyeti açısından da bu tür oyunların önünde yer alıyor diyebiliriz. İşlem oyunu esasen işlem yeteneği kazandırırken, oyun esnasında işlem şekillerini düşündürmesi ve hamle hesaplamalarıyla da insanın düşünce yeteneğini geliştirmektedir. İşlem oyunu üzerine okullarda henüz bir çalışma yapılmamıştır. İşlem oyunu üzerine okullarda yapılacak çalışmalar ile işlem oyununun zekâ ve düşünce üzerindeki etkileri hakkında daha detaylı bilgiler edinilebilir. İşlem oyunu oynandığı 8x8 tahta ve 0-13 taşlar nedeniyle, 8x8 tahta üzerinde oynanan bütün oyunlara benzemektedir. İşle oyunun diğer 8x8 tahta üzerinde oynanan oyunlara göre 4 işlem üzerine yoğunlaşması nedeniyle, oyunu oynayan kişilerin işlem yapma ve düşünce yeteneklerini geliştirdiği düşünülmektedir. İşlem oyunu, oyun teorisi içerisinde sıfır toplamlı oyunlar içerisinde yer almaktadır. Bir tarafın kazancı, diğer tarafın kaybı olmaktadır. 6.4. İşlem Oyununun Programlanması İşlem oyunu programlanırken bu oyun şu anki piyasadaki diğer grafiksel birçok oyun gibi öğeler içermediğinden c# dili kullanılmıştır. İşlem oyununun programlanma aşamasında kullanılacak teknikler ve oyunun bilgisayar benzetiminde uzman görüşü olarak, oyunun bulucusu Doç. Dr. Naim ÇAĞMAN ve Yrd. Doç. Dr. Umut ORHAN ın oyun üzerindeki fikirlerinden yararlanılmıştır. Oyundaki toplam işlem sayısı, simetrikleriyle beraber çizelge 6.4.1 çıkarılmıştır. 43

44 Çizelge 6.2 İşlem oyunu, toplam işlem sayısı İşlem Şekilleri İşlem Sayısı 1 dizimli toplam işlemi 6 1 dizimli çarpım işlemi 40 2 dizimli toplam işlemi 7 2 dizimli çarpım işlemi 30 2 dizimli karma işlemler 32 TOPLAM 115 İşlem oyunundaki işlemlerin sayısı, simetrik işlemler göz önüne alındığında 115 adettir. Ek-2 de simetrik işlemler verilmiştir. Oyunun programlanabilmesi için her bir harekette o andaki tahtadaki oyuncunun puan durumu çıkartılmalıdır. Çünkü oyuncu mevcut puanına göre diğer oyuncunun taşını alacaktır. Oyuncunun puanının hesaplanabilmesi için 8x8 oyun tahtasının 1. Sıradan 64. Sıraya kadar taranması gerekmektedir. Her bir işlem durumu için puan tespiti yapılmalıdır. Bunun için oyundaki her bir işlem için bir class(sınıf) yazılmalıdır. Bu yazılan sınıflar aynı zamanda, bilgisayarla oyun oynayan kişinin puanı hesaplamada da kullanılacaktır. 6.5. Oyun Şeklinin Simülasyonu Bilgisayarda ki oynana oyunlar genelde dış ortamların benzetimidir. En basit bir okey oyununu dahi oynarken, gerçek dünyaya ortamın benzetimi bizim oyundan alacağımız hazzı artırmaktadır. Programlamada ise, oyunların karakteristiğine göre oyunlar modellenmektedir. Mesela tavla oyunu bir uçtan başlayıp, diğer uca vardığı için oyunu bilgisayarda temsil etmek için 1 boyutlu bir dizi yeterli olacaktır. Diziler, bilgisayar programlamada verileri kümeler halinde tutmak için kullanılan değişkenlerdir. Mesela 1 boyutlu 25 uzunlukta ki bir dizi 26 adet veriyi tutabilmektedir. int [] dizi = new int[25]; Dizi İsmiyle yukarıda tanımlanan dizi, tam sayıları tutan, ve indis numarası 0 dan başlamak üzere 26 adet veriyi tutabilmektedir. Dizi[0] diyerek dizinin 0. İndisindeki 44

45 elemanın değeri alınmaktadır. Dizi[25] yazarak dizinin 26. ve son elemanının değerine ulaşılabilir. 8x8 bir oyun alanı, int [] dizi = new int[8,8]; için bir tanımlama yeterli olacaktır. ilk 8 rakamı yatay ekseni, ikinci 8 rakamı ise y ekseni simgelemektedir. 8x8 bir matris elde etmiş olacağız. Bu halde tahtanın simülasyonu Şekil 5.5.1 deki gibi olacaktır. Şekil 6.3 Oyun alanı benzetimi İstenilen elamana dizi[x,y] indisi kullanarak artık ulaşılmaktadır. Dizi içerisinde oyunun o anki mevcut durumunu tutacaktır. Şekil 6.4 deki gibi bir oyun durumu için, bilgisayarın taşlarının başına C, oyuncunun taşlarına P harfi koyarsak, oyun alanını bilgisayardaki benzetimi Şekil 6.5 deki gibi olacaktır. 45

46 Şekil 6.4 Örnek oyun Şekil 6.5 Oyun bilgisayar temsili Oyun oynanırken oyun sırasındaki oyuncunun o andaki puan durumu bulabilmek için diziyi 0. İndisten itibaren 63. İndise kadar taramak gerekmektedir. Bu tarama bir nevi 8x8 tahtayı ilk kareden(a1) son kareye(h8) kadar dolaşmak demektir. Güncel Puan durumunu bulmak için şekil 6.5 deki diziyi oyunda puan hesaplamak için yazılmış class(sınıf) lara göndermek gerekir. Puan hesaplaması yapmak için programda simetrik işlemler ile baraber 110 adet sayısı kadar class yazılmıştır. Class lar 8x8 oyun alanını a1 başlayarak, h8 kadar taramakta ve puan oluşturacak bir işlem varsa bunu geri döndürmektedir. Sıra kimde ise, onun puan durumu class lardan dönen değerlerin toplanması ile ortaya çıkarılmaktadır. Bütün işlemler için kodları yazmak çok uzun olacağı ve bu kodlar genelde birbirinin sayısal hesap olarak farkı olduğu için, her bir grup işlemden birinin bilgisayar kodları şekil 6.6, şekil 6.7, şekil 6.8, şekil 6.9 ve şekil 6.10 da gösterilmiştir. 46

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

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

49 Şekil 6.10 Karma işlemler(bilgisayar simülasyonu) Bilgisayarın hamle yapabilmesi içinse, bilgisayarın elindeki taşları 8x8 tahta üzerindeki boş karelere yerleştirerek puan durumu çıkarılmalıdır. Örneğin 0 taşı, a1 den h8 e kadar bütün karelere yerleştirilmeli ve puan her bir kare için hesaplanmalıdır. Sonuç olarak ise 0 taşının puan durumu temsil edebilmek için 64 birimlik bir yer lazımdır. Bu işlem bütün elde kalan taşlar için geçerlidir. 14 taş için 14x64 birimlik bir depolama alanı lazımdır. Oyun alanının bu durumunun simülasyonu için, oyun 0 dan 13 kadar taş değerleri ile oynandığı için, puan durumu simüle etmek için int[,] puan = new int[14, 64]; bir dizi yeterli olacaktır. Burada ilk x eksenindeki 14, kişinin elindeki taşın değeri, ikinci 64 sayısı ise tahta üzerinde 64 alandan birine o taşı koyarsa alacağı puanı simgelemektedir. Şekil 6.4.2 deki gibi bir oyun durumu için, oyun sırası kırmızı da ise, Çizelge 6.3 de taşların yerleştirildiğinde ki puan durumu gösterilmiştir. Çizelge 49

50 6.3 deki ilk satırdaki 1,2 7,8 rakamları satırları simgelemektedir. İkinci satırda 8 defa tekrarlanan 1,2, 7,8 rakamları sutunları simgelmektedir. Üçüncü satırdaki 1,2,,62,63 kadar olan rakamlar 8x8 tahta üzerinde ki 64 birimi göstermektedir. 0,1, 12,13 kadar olan numaralar oyundaki taşları simgelemektedir. -1 olan değerler o andaki oyun alanının dolu olduğunu göstermektedir. 0 ve -1 den farklı rakamlar olası durumlar için puan durumunu göstermektedir. Oyun sırası kırmızı da ise, 8 taşını tüm 8x8 alan üzerinde dolaştırırsak, 4 tane işlem yapma seçeneği vardır. Diğer durumların hepsi 0 puandır. Bunlar a2,a3,a4 ve d3 seçenekleridir. D3 seçeneğinde toplam 6 puanlık bir işlem vardır. Bütün taşlar için kazanç puanları çıkartılmıştır. 2 ve 13 taşları için olası puanlar mevcuttur. Ama çizelgede de görüleceği gibi puan durumları sıfırdır. Çünkü kırmızının bütün 2 ve 13 numaralı taşları tahta üzerindedir. 2 ve 13 numaralı taşlar için hamle yapma durumu söz konusu olmayacaktır. Eğer diğer oyuncu tarafından alınmış taşlar olsaydı onlar içinde çizelge de puanları 0 olacaktı. Alınmış taşlar için puan hesaplaması yapmak hem zaman hemde bellek kaybı getirecektir. Oyunda boşa yapılan hamlelerden birisi de satır ve sutun komşularından hiçbirinde taş olmayan yerlere taş yerleştirmektir. Çünkü bu yerlere taş yerleştirmek, işlem yapma şansı yakalamak için boşa yapılan bir hamledir. Şekil 6.11 de gösterilmiştir. Şekil 6.11 deki c2,c3,c4,d2,d4,e2,e3,e4 ün dışındaki yerlere taş yerleştirmek işlem yapmak için gereksizdir. Bu karelere yerleştirilecek bir taş, 1 dizimli herhangibir işlem yapmak için bizi avantajlı duruma geçirecektir. Oyun ağacı çıkartılırken, şekil 6.11 için c2,c3,c4,d2,d4,e2,e3,e4 dışındaki yerleri hesaplamamak gerekir. İnsanlar bu tür durumlarda, sezgilerini kullanarak bu tür durumları hesaba katmazlar. İşlem oyununu programlarken, sezgisel olarak hareket ederek, oyun ağacında bu durumdaki yerlere hiç hesaplama yapmamak en doğrusu olacaktır. 50

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

52 Çizelge 6.3 Taş yerleştirme oyun tablosu 1 2 3 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 5 4 0 1 0 0 0 1 0 0 0 0 0 0 0 0 6 5-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 7 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 10-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 11-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 5 12-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 6 13-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 7 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 17-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 3 18-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 19 0 0 0 0 0 1 0 0 0 0 0 0 0 0 5 20-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 6 21-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 7 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 23 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 24 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 25 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 26 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 28 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 29 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 31 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 52

53 Çizelge 6.3 Taş yerleştirme oyun tablosu (devam) 5 6 7 8 1 32-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 2 33-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 3 34-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 35 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 36-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 6 37-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 7 38 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 39 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 40 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 41-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 3 42-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 43 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 44 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 45 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 46 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 47 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 48 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 49-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 3 50-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 51-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 5 52-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 6 53 0 0 0 0 0 0 0 0 0 0 0 0 0 0 7 54 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 55 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 56 0 2 0 0 0 0 0 0 0 0 0 0 0 0 2 57-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 3 58-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 4 59 0 0 0 0 0 0 0 0 0 0 0 0 0 6 5 60-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 6 61-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 7 62-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1-1 -1 8 63 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 6 7 8 9 10 11 12 13 53

54 Oyun ağaçı, 1 durum için, 8x8 matrislerden oluşacaktır. Her bir düğüm için 64 tane 8x8 matris elde etmiş oluruz. Bilgisayarın oynadığını düşündüğümüzde, en yüksek puanı(maximum), oyuncu için ise en düşük puanı(minumum) alması istenmektedir. Bu tür bir durumda bilgisayarı programlarken, minimax yöntemini bilgisayarı programlamak için kullanılabilir. Oyun ağaçlarındaki derinlik çok büyük olacağı için, ilk baştan sezgisel olarak tüm olasıkların oluşturulmaması gerekmektedir. Bu tip oyunları oynayan insanlar bir çok ihtimali hesaplamazlar. Buda bizi bilimin çoğu kez en akıllı varlık olarak tanımladığı insan gibi düşünmeye yaklaştırmaktadır. Ne kadar insan düşüncesine yaklaşırsak o kadar az bellek ve zaman harcayacağımız bu gün için doğrudur. İşlem oyununu oynayan bir insan bir çok hesaplanmaması gereken olasılığı hesaplamaz. Bu satranç, go, dama gibi oyunlar içinde geçerlidir. İşe yaramayacak olasılıkların hiç hesaplanmadan ağacın ona göre oluşturulması gerekecektir. Her bir hamle için yeni baştan ağaç oluşturulacağı için, oyunun durumuna göre oyun ağaçlarını oluşurmak en akılcı çözüm olacaktır. Şekil 6.4.5 deki gibi bir oyun durumunda kendi taşlarımızın veya rakibin taşlarının yatay ve dikey komşu karelerine yerleştirerek oyun ağaçları çıkartılmalıdır.diğer kısımları hesaba katmak sadece bellek ve zaman israfı olacaktır. Şekil 6.4.5 deki gibi bir oyun durumunda, taş yerleştirme sırası bilgisayarda ise b3,b4,b5,c3,c5,e2,e3,e4,e5,f1,f2,f5,g1,g3,g5,h1,h2,h3,h4,h5 kareleri için puan hesaplaması yapmak gerekir. Diğer kareler için puan hesaplaması sadece bellek ve zaman kaybı olacaktır. Bütün tahtayı taramak için, elimizde de 22 taş varsa, oyun ağacının 1. derinlik için 58x22 =1276 adet hesaplama yapmak gerekir. Eğer sadece b3,b4,b5,c3,c5,e2,e3,e4,e5,f1,f2,f5,g1,g3,g5,h1,h2,h3,h4,h5 kareleri için hesaplama yapılırsa, 20x22=440 adet puan hesaplama yapılacaktır. Bu 1. Derinlikte yaklaşık üçte birine den gelmektedir. Derinlik arttıkça, oyun ağaçlarınındaki düğüm sayısının üstel olarak artacağı düşünüldüğünde fark çok büyük olacaktır. işlem oyunu için programlamada sezgisel yöntemlerin kullanılması, oyun ağaçlarının büyüklüğü ve puan hesaplamalarındaki class ların çokluğu düşünüldüğünde mecburidir. Oyunun daha 1. Derinlikte, sezgisel yöntemler kullanılmadan düğüm sayısı 64x28=1792 dir. Bu 1792 adet puan hesaplaması demektir. Sadece 1. derinlikte bilgisayarin ilk hamlenin olası puan hesaplaması yaklaşık 6 çekirdekli bir işlemci ile 40 saniye sürmektedir. Bu zamanın 2. Derinlikte yaklaşık olaarak 63*40=2520 saniye sürmesi demektir ki buda 54

55 yaklaşık 40 dakika 2. derinlikte bir hamle için gerekmektedir. Bu zamanlar bize sezgisel yöntemlerin kullanılması sonucu doğurmaktadır. İşlem oyunu için durum uzayları çıkartılırken sezgisel yöntemleri kullanmak kaçınılmazdır. Şekil 6.12 Örnek oyun Oyun sadece yüksek puan almak stratejisi olarak düşünülemez. Oyunda alınan puanlara göre rakibin puan alabileceği taşları almak gerekmektedir. Bunun için değişik sezgisel yöntemler kullanılabilir. Şekil 6.5.10 daki gibi bir durumda rakibin hangi taşı alınırsa, rakip en az puan alabileceği, rakibin elindeki bütün taşlar sırayla bütün karelere konularak, daha sonra bizim eklediğimiz taş hariç diğer taşlar kaldırılarak en az puan hangi durumda sağlanıyorsa o taş alınmalıdır. Şekil 6.5.10 daki bir durumda oyuncunun bir taşı alınacaksa, hangi taş alınması gerektiği ile ilgili bir çok seçenek vardır. Oyuncu için puan alabileceği durumlar içinde, taş yerleştirdiğinde en büyük puan hangisi o aranmaktadır. Kullanıcı 3 numaralı taşını F1,H1,H3 bunlardan birisine yerleştirirse 1 puan alacaktır. Diğer taşlar içinde 1 puan alacağı durumlar söz konusudur. Ama 12 numaralı taşını E4 yerleştirise 2 puan alacaktır. O zaman E4 taşında işleme sebeb olan taşlardan birisi alınmalıdır. 8 veya 6 numaralı aş alınırsa kullanıcıya 1 puan almadan başka seçenek bırakılmamaktadır. Yani en az zararlı yol budur. Oyunun daha geniş kitlelerle oynanması ve kişilerin görüşlerinin alınması ile, daha gelişmiş uzman görüşü ve sezgisel başka yöntemler geliştirilebilir. 55

56 6.6. Yazılan Oyunun Bilgisayar Simülasyon Şekilleri Aşağıda şekiller, oyunun oynanması sırasında alınanlardır. Oyunda kırmızı taşlarla kullanıcı, siyah taşlarla bilgisayar oynamaktadır. Şekil 6.13 İşlem oyunu oyun simülasyon örneği aşama-1 Şekil 6.13 de kullanıcı 11=6+5 ve 6+5=11 işlemleri ile şu ana kadar 2 puan almıştır. İlk yaptığı işlem ile bilgisayarın 8 numaralı taşını almıştır. Şimdi bilgisayarın 1 taşını daha alacaktır. Bu da Şekil 6.14 de gösterilmiştir. 56