BAB 2
LANDASAN TEORI
2.1. Algoritma dan Pemrograman
Terhadap berbagai masalah yang timbul perlu dicarikan pemecahannya sehingga dapat memberikan solusi yang benar atau yang paling benar. Berbicara mengenai pemecahan masalah dengan menggunakan komputer maka kita memerlukan algoritma seperti pada gambar:
Gambar 2.1.1. Algoritma dalam kerangka Pemecahan M asalah
Secara umum, algoritma adalah sejumlah langkah komputasi yang mengubah masukan (input) menjadi keluaran (output). Algoritma yang masih berupa logika
pemecahan masalah selanjutnya diubah menjadi program komputer (disebut source code) menurut pemrograman tertentu misalnya bahasa C. Selanjutnya source code ini
perlu dikompilasi oleh penerjemah (compiler, interpreter) menjadi kode-kode yang
dimengerti dan dijalankan oleh mesin komputer. (Executable code)
2.1.1. Algoritma
Pada Meriam-Webster’s Collegiate Dictionary istilah algorithm diartikan
sebagaiprosedur langkah demi langkah untuk memecahkan masalah atau menyelesaikan suatu tugas khususnya menggunakan bantuan komputer.
2.1.1.1. S yarat - S yarat Algoritma
Berikut adalah syarat-syarat algoritma menurut Donald E.Knuth:
a. Finiteness: Algoritma harus berakhir (Terminate) setelah melakukan sejumlah
langkah proses.
b. Definiteness: Setiap langkah algoritma harus didefinisikan dengan tepat dan
tidak menimbulkan makna ganda (ambigu). Karena itu maka sebetulnya cara paling tepat untuk menuliskan algoritma adalah dengan menggunakan formal language (bahasa pemrograman komputer)
c. Input: setiap data memerlukan data sebagai masukan untuk diolah. Algoritma
yang tidak memerlukan masukkan apaapa sebetulnya tidak begitu bermanfaat karena jumlah kasus yang dapat diselesaikan juga terbatas.
d. Output:Setiap algoritma memberikan satu atau beberapa hasil keluaran.
e. Effectiveness: Langkah-langkah algoritma dikerjakan dalam waktu yang wajar.
2.1.1.2. Tahapan Algoritma dan Penulisan Program
Proses Pemecahan M asalah dengan algoritma tertentu hingga menjadi program dapat dibagi dalam sembilan tahap.
b. M embuat model: M odel yang dimaksud adalah bentuk matematis yang digunakan untuk memecahkan masalah.
c. M erancang algoritma: M encari masukkan, proses dan keluaran yang diinginkan. d. M enulis program: mengubah algoritma menjadi program sesuai dengan bahasa
pemrograman tertentu.
e. M engubah source code menjadi executable code melalui proses kompilasi.
f. M emeriksa hasil kompilasi, jika salah maka kembali ke tahap sebelumnya. g. M enjalankan program untuk diuji kebenarannya menggunakan berbagai data. h. M emperbaiki kesalahan: bila hasil yang keluar salah, maka kesalahan mungkin
terjadi saat konversi rancangan algoritma menjadi program, salah rancang algoritma ataupun mungkin dalam tahap pendefinisian masalah.
i. M endokumentasikan program bila sudah benar.
2.1.1.3. Jenis Proses Algoritma
Langkah-langkah yang membentuk suatu algoritma dapat dibagi menjadi 3 kelompok proses.
a. Sequence Process: Instruksi kedua dikerjakan setelah instruksi pertama
dikerjakan. Kemudian baru instruksi ketiga. Instruksi dijalankan dari instruksi pertama satu-persatu sampai instruksi terakhir secara berurutan.
Proses 1 Proses 2 Proses 3
b. Selection Process: Instruksi adakalanya baru boleh dikerjakan apabila memenuhi syarat tertentu. Expression Process 1 P roc ess 2 True False
Gambar 2.1.1.3.2. Diagram Alur Selection Process.
c. Iteration Process: Suatu instruksi adakalanya perlu dikerjakan berulang-ulang
selama sekian kali atau selama suatu kondisi belum terpenuhi.
True
False Expression
Proses
2.2. S truktur Data
Struktur data adalah sejumlah data yang berhubungan yang disusun dalam satu struktur. Bentuk-bentuk struktur data yang ada dalam bahasa pemrograman C yaitu:
array(larik), string dan struct.
2.2.1. Array(larik)
Larik adalah penampung data sejenis (homogen) yang menggunakan satu
identifier. M asing-masing elemen array diakses menggunakan indeks dari nol sampai
jumlah elemen array-1. Pengolahan data array harus perelemen. Elemen array dapat
diakses secara langsung sehingga untuk mencapai elemen ke empat tidak harus melalui elemen pertama lebih dahulu. Berdasarkan banyaknya indeks, array dibagi menjadi satu
dimensi dan multi-dimensi
2.2.2. String
String adalah sekumpulan karakter ASCII.
2.2.3. Struct
Struct adalah struktur data yang menggabungkan beberapa data yang berbeda
tipe tetapi berkaitan. M isalnya data mengenai NIM , nama, dan IPK seorang mahasiswa. Ketiganya masih memiliki hubungan meskipun memiliki tipe data yang berbeda.
2.2.3.1. Linked List
Lingked list merupakan sebuah struktur data yang sangat berguna. Linked list digunakan sebagai dasar dari banyak struktur data bersambung yang lebih rumit. Sebuah
linked list pada dasarnya adalah kumpulan data yang menunjuk ke data berikutnya. Data terakhir biasanya disebut data sentinel dimana pointer NEXT-nya menunjuk ke NULL.
Namun dalam circular linked list, data sentinel ini pointer NEXT-nya akan menunjuk
data paling awal.
2.2.3.2. Tree
Tree merupakan struktur data hierarkis yang menghubungkan satu elemen data
dengan elemen data lainnya. M asing-masing elemen data tree disebut node. Tree
digambarkan seperti pohon terbalik dan tingginya diistilahkan dengan height. M
asing-masing tingkat disebut level dihitung dari posisi paling atas.
Gambar 2.2.3.2.1. Struktur Tree
2.3. Kecerdasan Buatan
Kecerdasan Buatan termasuk bidang ilmu yang relatif muda. Pada tahun 1950-an para ilmuwan dan peneliti mulai memikirkan bagaimana caranya agar mesin dapat melakukan pekerjaannya seperti yang bisa dikerjakan oleh manusia.
Alan Turing, seorang matematikawan dari Inggris pertama kali mengusulkan adanya tes untuk melihat bisa tidaknya sebuah mesin dikatakan cerdas. Hasil tes tersebut
kemudian dikenal dengan Turing Test, dimana si mesin tersebut menyamar seolah-olah sebagai seseorang di dalam suatu permainan yang mampu memberikan respon terhadap serangkaian pertanyaan yang diajukan. Turing beranggapan bahwa, jika mesin dapat membuat seseorang percaya bahwa dirinya mampu berkomunikasi dengan orang lain, maka dapat dikatakan bahwa mesin itu cerdas (layaknya manusia).
Kecerdasan buatan atau “Artificial Inteligence” itu sendiri dimunculkan oleh
seorang professor dari M assachusetts Institute of Technology yang bernama John M cCarthy pada tahun 1956 pada Dartmouth Conference yang dihadiri oleh para peneliti
A.I.1
Apa Kecerdasan Buatan itu? Kecerdasan buatan atau Artificial Inteligence
merupakan salah satu bagian ilmu komputer yang membuat agar mesin dapat melakukan pekerjaan seperti dan sebaik yang dilakukan oleh manusia.
Pengertian kecerdasan buatan dapat dipandang dari berbagai sudut pandang, antara lain: a. Sudut pandang kecerdasan
Kecerdasan buatan akan membuat mesin menjadi cerdas dalam arti mampu berbuat seperti apa yang dilakukan manusia.
b. Sudut pandang penelitian
Kecerdasan buatan adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia. Domainnya meliputi: Mundane Task (persepsi, bahasa alami, pemikiran yang bersifat common-sense dan kontrol robot), formal task (permainan dan matematis), dan expert task
(analisis finansial, medikal, ilmu pengetahuan dan rekayasa)
1 Buku Sri Kusumadewi hal 5-6
c. Sudut pandang bisnis
Kecerdasan buatan adalah suatu kumpulan peralatan yang sangat kuat dan metodologis dalam menyelesaikan masalah-masalah bisnis.
d. Sudut pandang pemrograman
Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian masalah dan pencarian.
Untuk menerapkan konsep kecerdasan buatan dibutuhkan dua bagian utama yang sangat dibutuhkan yaitu:
a. Basis Pengetahuan (Knowledge Base): berisi fakta-fakta, teori, pemikiran dan
hubungan antara satu dengan yang lainnya.
b. M otor Inferensi (Inference Engine): kemampuan menarik kesimpulan
berdasarkan pengalaman dan fakta.
Basis Pengetahuan Motor Inferensi Input, Masalah, Pertanyaan, dll. Output, Jawaban, Solusi, keputusan.
2.3.1. Masalah, Ruang Keadaan dan Pencarian
Secara umum, untuk membangun suatu sistem yang mampu menyelesaikan masalah, perlu dipertimbangkan empat hal:
a. M endefinisikan masalah dengan tepat. Pendefinisian ini mencakup spesifikasi yang tepat mengenai keadaan awal dan solusi yang diharapkan.
b. M enganalisis masalah tersebut serta mencari beberapa teknik penyelesaian yang sesuai.
c. M erepresentasikan pengetahuan yang perlu untuk menyelesaikan masalah tersebut.
d. M emilih teknik penyelesaian masalah yang terbaik.
2.3.1.1. Mendefinisikan Masalah Sebagai Suatu Ruang Keadaan
Untuk mendefinisikan masalah dan ruang keadaan pada permainan Othello (Reversi), kita harus menentukan:
a. Posisi awal permainan; Posisi awal permainan Othello selalu sama yaitu area 2x2 yang berada di bagian tengah papan permainan berisi dua buah keping putih dan 2 buah keping hitam yang bersilangan.
b. Aturan-aturan untuk melakukan gerakan secara legal; aturan sangat penting untuk menentukan arah permainan. Aturan peletakan keping Othello akan menunjukkan perubahan dari keadaan yang satu ke keadaan yang lain. Dengan posisi awal seperti di atas, maka peletakan keping othello hitam yang legal adalah sebagai berikut:
Gambar 2.3.1.1.2 Peletakan yang mungkin #1.
Gambar 2.3.1.1.4. Peletakan yang mungkin #3.
Gambar 2.3.1.1.5. Peletakan yang mungkin #4.
c. Tujuan (Goal); Tujuan yang ingin dicapai adalah keadaan dimana keping
permainan yang kita gunakan mendominasi papan permainan dengan cara memenuhi papan permainan secara dominan (Kondisi pertama) atau menghilangkan semua keping othello yang digunakan oleh lawan sehingga tidak ada lagi pemain yang bisa melakukan gerakan legal (Kondisi kedua).
Gambar 2.3.1.1.6. contoh Goal State Dengan Hitam Sebagai Pemenang (Kiri kondisi pertama dan kanan kondisi kedua)
Secara umum, pendeskripsian masalah yang baik adalah yang: a. M endefinisikan ruang keadaan;
b. M enetapkan satu atau lebih keadaan awal; c. M enetapkan satu atau lebih tujuan;
d. M enetapkan kumpulan aturan;
2.3.1.2.Pelacakan
Hal terpenting dalam menentukan keberhasilan sistem berdasar kecerdasan adalah kesuksesan dalam pencarian dan pencocokan. Ada dua teknik pencarian yang digunakan yaitu pencarian buta dan pencarian terbimbing.
2.3.1.2.1. Pencarian Buta
Pelacakan buta yang terkait dengan skripsi ini adalah Pencarian M endalam Pertama (Depth-First Search). Pencarian ini akan mengunjungi semua anak dari node yang paling tinggi ke paling rendah setelah itu baru mengunjungi anak node sebelahnya.
Gambar 2.3.1.3.1.1. Arah Pencarian Depth-First Search
2.3.1.2.1. Pencarian Heuristik
Pencarian buta tidak selalu dapat diterapkan dengan baik, hal ini disebabkan waktu akses yang cukup lama serta besarnya memori yang diperlukan namun masih bisa diatasi jika ada informasi tambahan dari domain yang bersangkutan. M isal saja dalam permainan Othello dengan memberikan nilai tertentu untuk posisi sel tertentu atau perbedaan jumlah keping putih dan hitam sebagai poin heuristik. M etode pencarian heuristik yang akan digunakan di sini adalah metode Pembangkitan dan Pengujian (Generate and Test) yaitu membangkitkan kemungkinan solusi dan menguji untuk
mencari hasil terbaik. Jika solusi belum ditemukan maka proses akan terus diulang.
2.3.2. Minimax
Salah satu teknik permainan yang terkenal adalah M inimax. M inimax menggunakan depth-first search dengan kedalaman terbatas. Fungsi evaluasi yang
digunakan adalah fungsi evaluasi statis, dengan mengasumsikan bahwa lawan akan membuat langkah terbaik yang mungkin.
Penerapan M inimax memerlukan struktur data tree yang tiap tingkatan dikelompokkan sebagai gerakkan M in dan M ax. Untuk tingkat M in, dipilih node dengan nilai terkecil sementara untuk tingkat max dipilih node dengan nilai terbesar dari node-node di bawahnya. Biasanya M in digunakan untuk representasi giliran lawan dan max digunakan untuk representasi giliran pemain.
Gambar.2.3.2.1. Representasi algoritma M inimax
2.3.3. Game Playing
Game Playing merupakan sebuah fasilitas yang menarik dalam komputer. Ide ini
dikemukakan oleh Claude Shanon (1950) yang menulis tulisan tentang mekanisme pembuatan program permainan catur. Beberapa tahun kemudian Alan Turing mendeskripsikan program permainan catur namun ia sendiri belum membuat rancangan program. Baru awal tahun 1960-an Arthur Samuel mencoba untuk membuat program catur tersebut.
Ada beberapa alasan mengapa games merupakan domain yang baik untuk di ekplor, yaitu:
a. Sangat mudah untuk menentukan ukuran kesuksesan dan kegagalan (menang atau kalah)
b. Ruang keadaan mudah direpresentasikan.
c. Operator-operator yang digunakan tidak terlalu banyak. d. Sebagian model dapat dimodelkan dengan mudah.
e. Sangat mungkin untuk dibandingkan dengan kemampuan manusia.
2.3.4. Logika Fuzzy
Logika Fuzzy adalah penalaran banyak-nilai yang berasal dari teori Fuzzy set untuk menjelaskan penalaran yang tidak tepat nilai berbeda dengan crisp yang nilainya tepat yaitu 0 dan 1. Logika Fuzzy dikatakan sebagai logika baru yang lama, sebab ilmu fuzzy modern dan metodis baru ditemukan beberapa tahun yang lalu padahal sebenarnya konsep tentang logika fuzzy itu sendiri sudah ada pada diri kita sejak lama.
2.3.4.1. Alasan Penggunaan Logika Fuzzy
Ada beberapa alasan mengapa orang menggunakan logika samar antara lain: a. Konsep logika samar mudah dimengerti. Konsep matematis yang mendasari
penalaran fuzzy sangat sederhana dan mudah dimengerti. b. Logika samar sangat fleksibel.
c. Logika samar memiliki toleransi terhadap data-data yang tidak tepat.
d. Logika samar mampu memodelkan fungsi-fungsi nonlinear yang sangat kompleks.
e. Logika samar dapat membangun dan mengaplikasikan pengalaman-pengalaman para pakar secara langsung tanpa harus melalui proses pelatihan.
f. Logika samar dapat bekerjasama dengan teknik-teknik kendali secara konvensional.
g. Logika samar dapat didasarkan pada bahasa alami.
2.3.4.2. Himpunan Fuzzy
Himpunan tegas (crisp) memiliki kekurangan dalam pengelompokkan karena
hanya mengenal anggota (1) dan bukan anggota (0) sehingga dalam kasus tertentu (misalkan: umur dan tinggi) dengan tidak adil. Himpunan Fuzzy digunakan untuk mengantisipasi hal tersebut. Karena dengan menggunakan himpunan Fuzzy kita dapat melihat nilai keanggotaan dari nilai-nilai yang tidak cocok dimasukkan ke dalam himpunan tegas.
Himpunan samar memiliki dua atribut yaitu:
a. linguistik: yaitu penamaan suatu grup yang memiliki keadaan atau kondisi tertentu dengan menggunakan bahasa alami seperti ‘muda’, ‘tua’ dan ‘parobaya’ b. numeris: yaitu suatu nilai(angka) yang menunjukkan ukuran dari suatu variabel. Ada hal-hal yang perlu diketahui dalam memahami sistem samar yaitu:
a. Variabel fuzzy: M erupakan variable yang hendak dibahas dalam suatu sistem fuzzy. Contoh: umut, tempratur, permintaan,dsb.
b. Himpunan fuzzy: M erupakan suatu grup yang mewakili suatu kondisi atau keadaan tertentu dalam suatu variabel fuzzy.
c. Semesta Pembicaraan: M erupakan keseluruhan nilai yang diperbolehkan untuk dioperasikan dalam suatu variabel fuzzy. Semesta pembicaraan merupakan himpunan bilangan real yang bertambah secara monoton dari kiri ke kanan.
Nilainya dapat berupa bilangan positif maupun negatif. Adakalanya nilai semesta pembicaraan ini tidak dibatasi batas atasnya.
d. Domain: Domain himpunan fuzzy adalah keseluruhan nilai yang diijinkan dalam semesta pembicaraan dan boleh dioperasikan dalam suatu himpunan fuzzy.
2.3.4.3. Fungsi Keanggotaan
Fungsi keanggotaan adalah sebuah kurva yang menunjukkan pemetaan titik-titik input data ke dalam nilai keanggotaannya (sering juga disebut derajat keanggotaan) yang memiliki interval antara 0 sampai 1.Salah satu cara yang dapat digunakan untuk mendapatkan nilai keanggotaan adalah dengan melalui pendekatan fungsi. Ada beberapa yang bisa digunakan.
a. Representasi linear: digambarkan dengan suatu garis lurus.
Gambar 2.3.4.3.1. Representasi linear naik
b. Representasi kurva segitiga: pada dasarnya merupakan gabungan antara 2 garis linear.
Gambar 2.3.4.3.2. Representasi kurva segitiga
c. Representasi kurva trapesium: Kurva trapesium pada dasarnya berupa kurva segitiga yang beberapa elemennya memiliki derajat keanggotaan 1.
Gambar 2.3.4.3.3. Representasi kurva trapesium
d. Representasi kurva berbentuk bahu: Kurva pada pertengahan variabel yang direpresentasikan dalam bentuk segitiga, pada sisi kiri dan kanannya pasti akan naik dan turun. Tapi ada salah satu sisi dari variabel tersebut yang tidak mengalami perubahan.
Gambar 2.3.4.3.4. Representasi kurva berbentuk bahu
e. Representasi kurva S: disebut juga kurva sigmoid yang berhubungan dengan kenaikan dan penurunan permukaan secara tidak linear.
Gambar 2.3.4.3.5. Representasi kurva S
f. Representasi kurva berbentuk lonceng: Untuk representasi bilangan fuzzy, biasanya digunakan kurva berbentuk lonceng. Kurva berbentuk lonceng ini terbagi tiga kelas yaitu himpunan fuzzy PI, beta, dan Gauss.
Gambar 2.3.4.3.2. Representasi kurva berbentuk lonceng
2.3.5. Operator Dasar Zadeh Untuk Operasi Himpunan Fuzzy
Seperti halnya himpunan konvensional, ada beberapa operasi yang didefinisikan secara khusus untuk mengkombinasi dan memodifikasi himpunan fuzzy. Nilai Keanggotaan sebagai hasil dari operasi 2 himpunan sering disebut fire strength atau
α-predikat. Ada 3 operator yang dicipttakan oleh Zadeh, yaitu:
a. operator AND: M engambil interseksi pada himpunan dengan mengambil nilai keanggotaan terkecil.
b. operator OR: α-predikat diambil dari keanggotaan antar elemen terbesar himpunan yang bersangkutan.
c. operator NOT: Operator ini berhubungan dengan operasi komplemen dari himpunan.
2.3.6. Sistem Inferensi Fuzzy
Sistem inferensi fuzzy berisi metode-metode yang bisa digunakan untuk menentukan hasil output dari input yang dimasukkan. Ada 3 sistem inferensi fuzzy, yaitu:
a. M etode Tsukamoto: aturan yang berbentuk IF-THEN direpresentasikan dengan suatu himpunan fuzzy dengan keanggotaan yang monoton dan hasilnya diberikan secara tegas (crisp)
b. M etode M amdani: dilakukan dalam 4 tahap yaitu: M embentuk himpunan fuzzy, aplikasi fungsi implikasi, komposisi aturan dan penegasan.
c. M etode Sugeno: Hampir sama dengan metode M amdani hanya saja output sistem tidak berupa himpunan fuzzy tapi berupa konstanta atau persamaan linear.