Implementasi Algoritma Greedy Pada Game Summy

BAB II
LANDASAN TEORI

2.1. Kecerdasan Buatan
Kecerdasan buatan atau Artificial Intelligence (AI) adalah suatu bidang ilmu yang
mempelajari tentang bagaimana membangun sistem komputer yang menerapkan
kecerdasan dalam beberapa cara. Kecerdasan buatan telah banyak menghasilkan banyak
terobosan dalam ilmu komputer. Banyak topik penelitian dalam ilmu komputer hari ini
merupakan hasil dari penelitian tentang kecerdasan buatan. Sebagai contoh, jaringan
saraf tiruan, komputasi evolusioner, machine learning, natural language processing,
pemrograman berorientasi objek, dan lainnya. Dalam banyak kasus, fokus utama dari
topik penelitian ini bukan lagi pengembangan kecerdasan buatan, mereka menjadi
disiplin ilmu sendiri, dan pada beberapa kasus, bukan lagi berhubungan dengan
kecerdasan buatan. Kecerdasan buatan sendiri terus berkembang menciptakan
terobosan baru yang masih dibutuhkan (Teahan, 2010).
Kecerdasan buatan merupakan bagian dari ilmu pengetahuan komputer yang
khusus ditujukan dalam perancangan otomatisasi tingkah laku cerdas dalam sistem
kecerdasan komputer. Sistem memperlihatkan sifat-sifat khas yang dihubungkan
dengan kecerdasan dalam kelakuan atau tindak-tanduk yang sepenuhnya bisa
menirukan beberapa fungsi otak manusia, seperti pengertian bahasa, pengetahuan,
pemikiran, pemecahan masalah dan lain-lain (Kristianto, 2004).

Manusia bisa menjadi pandai dalam menyelesaikan segala permasalahan di
dunia ini karena manusia mempunyai pengetahuan dan pengalaman. Namun bekal
pengetahuan saja tidak cukup, manusia juga diberi akal untuk melakukan penalaran,
mengambil kesimpulan berdasarkan pengetahuan dan pengalaman yang mereka miliki.
Agar komputer bisa bertindak seperti dan sebaik manusia, maka komputer juga harus
diberi bekal pengetahuan, dan mempunyai kemampuan untuk menalar. Untuk itu pada
artificial intelligence, akan mencoba untuk memberikan beberapa metode untuk

6

membekali komputer dengan kedua komponen tersebut agar komputer bisa menjadi
mesin yang pintar. Lebih detailnya, pengertian kecerdasan buatan dapat dipandang dari
berbagai sudut pandang, antara lain:
1. Sudut pandang kecerdasan.
Kecerdasan Buatan akan membuat mesin menjadi ‘cerdas’ (mampu berbuat
seperti apa yang dilakukan oleh manusia).
2. Sudut pandang penelitian.
Kecerdasan Buatan adalah suatu studi bagaimana membuat agar komputer dapat
melakukan sesuatu sebaik yang dikerjakan oleh manusia. Domain yang sering
dibahas oleh para peneliti meliputi:

a. Mundane task

-

Persepsi (vision & speech).

-

Bahasa alami (understanding, generation & translation).

-

Pemikiran yang bersifat commonsense.

-

Robot control.

b. Formal task
-


Permainan/games.

-

Matematika (geometri, logika, kalkulus integral, pembuktian).

c. Expert task
-

Analisis finansial.

-

Analisis medikal.

-

Analisis ilmu pengetahuan.


-

Rekayasa (desain, pencarian kegagalan, perencanaan manufaktur).

3. Sudut pandang bisnis.
Kecerdasan buatan adalah kumpulan peralatan yang sangat powerful dan
metodologis dalam menyelesaikan masalah-masalah bisnis.
4. Sudut pandang pemrograman.
Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian
masalah (problem solving) dan pencarian (searching). Untuk melakukan
aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan (Gambar
2.1), yaitu:
a. Basis Pengetahuan (Knowledge Base), berisi fakta-fakta, teori, pemikiran
dan hubungan antara satu dengan lainnya.

7

b. Motor Inferensi

(Inference


Engine ),

yaitu

kemampuan

menarik

kesimpulan berdasarkan pengalaman.

Komputer
Output:

Input:

Basis

Motor


masalah,

Pengetahuan

Inferensi

pertanyaan,

jawaban,
solusi,
dll

Gambar 2.1 Penerapan Konsep Kecerdasan Buatan di Komputer
Kecerdasan buatan tidak hanya dominan di bidang ilmu komputer (informatika), namun
juga sudah merambah di berbagai disiplin ilmu yang lain. Interseksi antara psikologi
dan kecerdasan buatan melahirkan sebuah area yang dikenal dengan nama cognition &
psycolinguistics. Interseksi antara teknik elektro dengan kecerdasan buatan melahirkan

berbagai ilmu seperti: pengolahan citra, teori kendali, pengenalan pola dan robotika.
Secara garis besar bidang ilmu yang dipelajari dalam bidang AI bisa dilihat

pada Gambar 2.2 berikut ini :

Gambar 2.2 Domain Area

8

1. Natural Language Processing (NLP )
NLP mempelajari bagaimana bahasa alami itu diolah sedemikian hingga user
dapat berkomunikasi dengan komputer. Konsentrasi ilmu ini adalah interaksi
antara komputer dengan bahasa natural yang digunakan manusia, yakni
bagaimana komputer melakukan ekstraksi informasi dari input yang berupa
natural language dan atau menghasilkan output yang juga berupa natural
language.

2. Computer Vision
Cabang ilmu ini erat kaitannya dengan pembangunan arti/makna dari image ke
obyek secara fisik. Yang dibutuhkan di dalamnya adalah metode-metode untuk
memperoleh, melakukan proses, menganalisis dan memahami image. Apabila
cabang ilmu ini dikombinasikan dengan Artificial Intelligence secara umum
akan mampu menghasilkan sebuah visual intelligence system.

3. Robotika dan Sistem Navigasi
Bidang ilmu inilah yang mempelajari bagaimana merancang robot yang berguna
bagi industri dan mampu membantu manusia, bahkan yang nantinya bisa
menggantikan fungsi manusia. Robot mampu melakukan beberapa task dengan
berinteraksi dengan lingkungan sekitar. Untuk melakukan hal tersebut, robot
diperlengkapi dengan actuator seperti lengan, roda, kaki, dll.
4. Game Playing
Game biasanya memiliki karakter yang dikontrol oleh user , dan karakter lawan

yang dikontrol oleh game itu sendiri. Di mana kita harus merancang aturanaturan yang nantinya akan dikerjakan oleh karakter lawan. Game akan menjadi
menarik apabila karakter lawan (non-player ) bereaksi dengan baik terhadap apa
yang dilakukan oleh player . Hal ini akan memancing penasaran user dan
membuat game menarik untuk dimainkan. Tujuan intinya adalah membuat nonplayer memiliki strategi yang cerdas untuk mengalahkan player . Pada bidang

ini, AI dibutuhkan, yaitu untuk merancang dan menghasilkan game yang fun
serta antarmuka antara man-machine yang cerdas dan menarik untuk dimainkan.
5. Sistem Pakar
Bidang ilmu ini mempelajari bagaimana membangun sistem atau komputer
yang memiliki keahlian untuk memecahkan masalah dan menggunakan
penalaran dengan meniru atau mengadopsi keahlian yang dimiliki oleh pakar.


9

Dengan sistem ini, permasalahan yang seharusnya hanya bisa diselesaikan oleh
para pakar/ahli, dapat diselesaikan oleh orang biasa/awam. Sedangkan, untuk
para ahli, sistem pakar juga akan membantu aktivitas mereka sebagai asisten
yang seolah-olah sudah mempunyai banyak pengalaman (Budiharto, 2012).

2.2. Algoritma Greedy
Algoritma greedy merupakan metode yang paling populer untuk memecahkan masalah
optimasi. Secara harfiah, greedy berarti tamak atau rakus. Prinsip dari algoritma greedy
adalah mengambil setiap kesempatan yang ada saat itu juga, tanpa memperhatikan
konsekuensi ke depannya.
Algoritma greedy tidak selalu memperoleh solusi optimum untuk keseluruhan
permasalahan yang ditangani, dikarenakan algoritma greedy tidak melakukan operasi
secara exhaustive kepada semua data, dan sering kali tidak mementingkan solusi
optimum global. Akan tetapi, algoritma greedy merupakan solusi yang baik digunakan
dikarenakan algoritma greedy bekerja dengan cepat dan sering memberikan perkiraan
nilai optimum yang baik di setiap langkahnya. Dan tidak jarang dapat menghasilkan
solusi optimum global pada suatu permasalahan dari pengambilan solusi optimum lokal

di setiap langkahnya. Akan tetapi algoritma greedy cukup kuat dan bekerja dengan baik
untuk berbagai masalah (Putra, 2009).
Elemen-elemen algoritma greedy dalam persoalan optimasi adalah sebagai
berikut:
1. Himpunan kandidat.
Himpunan ini berisi elemen-elemen pembentuk solusi.
2. Himpunan solusi.
Himpunan ini berisi kandidat-kandidat yang terpilih sebagai

solusi

persoalan. Himpunan solusi merupakan himpunan bagian dari himpunan
kandidat.
3. Fungsi seleksi.
Fungsi seleksi dinyatakan sebagai predikat seleksi merupakan fungsi yang
pada setiap langkah memilih kandidat yang paling mungkin untuk
mendapatkan solusi optimal.
4. Fungsi kelayakan.

10


Fungsi kelayakan dinyatakan sebagai predikat layak merupakan fungsi yang
memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi
yang layak, yaitu kandidat tersebut tidak melanggar aturan yang ada.
5. Fungsi objektif.
Fungsi

objektif

merupakan

fungsi

yang memaksimumkan atau

meminimalkan nilai solusi.
Pseudo-code algoritma greedy adalah sebagai berikut (Chen, 2008) :
Procedure Greedy (partial solution S, sub-problem P)
Begin
generate all candidate choices as list L for current subproblem P;
while (L is not empty OR other finish condition is not met)
compute the fitness value of each choice in L;
modify S and P by taking the choice with highest fitness
value;
update L according to S and P;
end while;
return the quality of the resulting complete solution;
End

2.3. Permainan (Game)
Games merupakan salah satu bidang terapan dalam kecerdasan buatan. Penyelesaian
games dilakukan dengan cara menelusuri pohon permainan (game tree). Pohon

permainan adalah sebuah graf yang memperlihatkan semua kemungkinan keadaan
dalam permainan yang dilakukan oleh pemain. Pohon permainan melukiskan node dan
jalan yang mengarah dari keadaan awal menuju tujuan atau keadaan saat game
dimenangkan.
Ada beberapa alasan mengapa games merupakan domain yang baik untuk
dieksplor dalam bidang kecerdasan buatan (Kusumadewi, 2003), yaitu :
1. Sangat mudah untuk menentukan ukuran kesuksesan dan kegagalannya
(menang atau kalah).
2. Tidak membutuhkan terlalu banyak pengetahuan. Permainan dapat
diselesaikan dengan melakukan pencarian dari arah start sampai posisi
menang.
3. Ruang keadaannya mudah direpresentasikan.
4. Operator-operator yang digunakan tidak terlalu banyak.

11

5. Sebagian besar game dapat dimodelkan dengan mudah.
6. Sangat mungkin untuk dibandingkan dengan kemampuan manusia.

2.4. Game Summy
Summy merupakan sebuah board game yang dibuat oleh Cwali (Corné van Moorsel)

dan merupakan sejenis game Scrable untuk penjumlahan, pengurangan, perkalian atau
pembagian. Pemain akan mendapatkan poin dengan membuat penjumlahan,
pengurangan, perkalian atau pembagian pada gilirannya. Penjumlahan, pengurangan,
perkalian atau pembagian ini dibuat dengan menyusun angka dan operator numerik
pada papan permainan. Pemain hanya dapat membuat penjumlahan, pengurangan,
perkalian atau pembagian yang valid untuk memperoleh poin dengan kotak yang
mereka miliki dan dikombinasikan dengan kotak yang telah ada pada papan permainan.
Pemain tidak dapat memindahkan kotak yang telah ada pada papan permainan
(Moorsel, 2014).

Gambar 2.3 Game Summy
Berikut ini merupakan penjumlahan, pengurangan, perkalian atau pembagian
yang valid pada game Summy :
1. Harus terdapat satu ‘=’ pada setiap penjumlahan, pengurangan, perkalian
atau pembagian.
2. Di depan ‘=’ harus ada minimal dua angka dan satu operator aritmetika dan
di belakang ‘=’ harus terdapat satu angka dan tidak ada operator aritmetika.
3. Bilangan dapat terdiri dari lebih dari satu digit angka.

12

4. Sebuah bilangan yang terdiri lebih dari dua digit angka tidak boleh diawali
dengan ‘0’
5. Dalam satu penjumlahan, pengurangan, perkalian atau pembagian bisa
terdapat beberapa operator aritmetika pada setiap di antara dua angka.
6. Operator perkalian dan pembagian lebih dahulu diutamakan daripada
operator penambahan dan pengurangan.
7. Perkalian dan pembagian dijalankan sesuai urutan pembacaan, begitu pula
dengan penambahan dan pengurangan.

Gambar 2.4 Penjumlahan, Pengurangan, Perkalian atau Pembagian Valid pada
Summy
Untuk menghitung poin pada game Summy dapat dilakukan dengan
menjumlahkan semua digit (0-9) dari penjumlahan, pengurangan, perkalian atau
pembagian valid yang dilakukan. Poin dari penjumlahan, pengurangan, perkalian atau
pembagian valid tersebut diperoleh dari digit kotak yang pemain letakkan dan semua
kotak yang telah ada pada papan permainan. Untuk lebih jelas dapat dilihat pada
Gambar 2.5.

Gambar 2.5 Memperoleh Score pada Summy

13

2.6. Penelitian Terdahulu
Penelitian mengenai aplikasi game Summy sebelumnya belum ada, karena game ini
merupakan varian dari game Scrabble dan tidak dikenal luas. Namun beberapa
penelitian yang pernah dilakukan berkaitan dengan menyelesaikan permasalahan dari
suatu game (permainan) dengan menggunakan algotitma greedy antara lain untuk
permainan Mill (Simanjuntak, 2015), permainan Kartu Remi (Putra, 2014) dan
permainan Fill-In Number (Pawardita, 2015).

Tabel 2.1 Penelitian Terdahulu
No.

Nama

1

Simanjuntak,
2015

Judul Penelitian
Penerapan Algoritma
Greedy Pada
Permainan Mill
Berbasis Android

Ringkasan
Pada penelitian ini algoritma greedy
digunakan pada pencarian langkah
optimum dalam permainan Mill.
Permainan
Mill
adalah
pengembangan dari penggabungan
konsep permainan Tic Tac Toe dan
permainan Twelve Men's Morris.
Permainan Mill menggunakan aturan
dan konsep permainan Tic Tac Toe
yang bertujuan menempatkan 3 bidak
masing-masing pemain dalam suatu
garis lurus yang dapat berupa garis
horizontal,
vertikal,
ataupun
diagonal. Dengan algortima greedy
akan ditentukan titik mana yang akan
diletakkan bidak oleh komputer
berdasarkan prioritas nilai path
tertinggi yang didapatkan dari fungsi
prioritas.

14

Tabel 2.2 Penelitian Terdahulu (Lanjutan)
2

Putra, 2014

Analisis Perbandingan
Algoritma Greedy Dan
Brute Force Dalam
Percarian Kartu
Tertinggi Pada Kartu
Remi

Pada penelitian ini algoritma greedy
digunakan pada pencarian kartu
tertinggi pada permainan Remi.
Algoritma greedy digunakan pada
pemilihan kartu tertinggi
berdasarkan nilai dan coraknya.
Pemilihan nilai kartu tertinggi
dimulai dari As, K, Q,...2.
Sedangkan pada corak dimulai dai
sekop, hati, keriting dan wajik.

3

Pawardita,
2015

Aplikasi Permainan
Fill-In Numbers Pada
Platform Android

Pada penelitian ini algoritma greedy
digunakan pada pencarian solusi
pada permainan Fill-In Number .
Fill-In Numbers dikenal juga sebagai
crusadex atau cruzadex ini
merupakan suatu permainan puzzle
dari varian teka-teki silang
(crossword). Permainan ini
dilengkapi dengan grid dan daftar
lengkap dari angka-angka yang akan
dimasukkan dalam grid tersebut.
Dengan algoritma greedy akan
dipilih simpul yang paling besar dari
grid-grid yang ada pada papan
permainan untuk diisi angka-angka
yang akan dimasukkan pada grid
tersebut.