1 BAB 2 LANDASAN TEORI 2.1 Constraint Satisfaction Problem Pengertian Dasar Constraint adalah batasan dalam pengertian yang paling sederhana. Dalam ke...
2.1.1 Pengertian Dasar Constraint adalah batasan dalam pengertian yang paling sederhana. Dalam kehidupan sehari-hari, mungkin sering didengar kalimat seperti berikut: pekerjaan itu harus selesai sebelum jam 10 malam, seorang guru cuma dapat mengajar maksimal tiga kelas dalam sehari, persegi panjang harus berada di sebelah kiri dari lingkaran. Seseorang dapat melakukan apa saja dalam hal ini kecuali melanggar constraint, misalnya dia dapat menggeser persegi panjang ke mana saja sepanjang persegi panjang itu ada di sebelah kiri lingkaran, dia dapat mengajar kelas sebanyak mungkin asal jangan lebih dari tiga untuk hari apa saja, dia dapat menyelesaikan pekerjaan kapan saja asal sebelum jam 10 malam. Dari kehidupan sehari-hari ini definisi constraint dibuat sedikit lebih ilmiah. Constraint adalah relasi logis di antara beberapa variabel, yang masing-masing mengambil sebuah nilai dalam sebuah domain. Jadi constraint itu membatasi nilai yang dapat diambil oleh variabel tersebut. Dalam contoh guru mengajar kelas sebanyak mungkin asal jangan lebih dari tiga untuk hari apa saja, variabelnya adalah jumlah kelas yang diambil guru, domain-nya adalah bilangan asli, batasannya adalah variabel yang bersangkutan tidak boleh lebih dari tiga. Constraint sering digunakan dalam percakapan sehari-hari jika dilihat definisi paragraf di atas. Umumnya orang jarang menyelesaikan masalah dengan satu constraint seperti dalam contoh di atas, tetapi masalah-masalah yang ada biasanya disertai dengan koleksi constraint yang jarang berkaitan. Hal ini tentu saja memperumit masalah. Sebelumnya penyebutan masalah dengan constraint ini distandarkan. Komunitas internasional memberi nama constraint satisfaction problem kepada masalah dengan constraint ini. Masalah optimalisasi penjadwalan pekerjaan termasuk constraint satisfaction problem, tepat-
7 nya constraint satisfaction optimization problem. Perbedaan constraint satisfaction problem dengan constraint satisfaction optimization problem akan dibahas nantinya. Dari sini juga dapat diambil pengertian dari penyelesaian terhadap constraint satisfaction problem. Penyelesaian dari constraint satisfaction problem adalah pemberian nilai terhadap semua variabel dari domain masing-masing variabel yang berkaitan di mana semua constraint dipenuhi. Dalam contoh guru mengajar kelas sebanyak mungkin asal jangan lebih dari tiga untuk hari apa saja, penyelesaian dari constraint satisfaction problem ini adalah variabel yang bersangkutan (jumlah kelas yang diambil guru) mendapat nilai 1 atau 2 atau 3 karena nilai 1 atau 2 atau 3 berada pada domain variabel itu (bilangan asli) dan tidak melanggar constraint (tidak boleh lebih dari tiga). Untuk menyelesaikan masalah constraint satisfaction problem, diperlukan constraint programming. Constraint programming adalah pembelajaran sistem komputasi berdasarkan constraint. Ide utama dari constraint programming ini adalah menyelesaikan masalah dengan menyatakan constraint (kondisi, sifat, kebutuhan) yang harus dipenuhi oleh solusi. Dengan kata lain, constraint programming adalah pendekatan alternatif terhadap pemrograman yang berisikan permodelan suatu masalah sebagai himpunan kebutuhan (constraint) yang berurutan diselesaikan metode umum ataupun spesifik untuk domain (Krzysztof Apt, 2005, p1). 2.1.2 Definisi Formal Constraint Satisfaction Problem Berikut adalah definisi formal dari hal-hal yang berhubungan dengan constraint satisfaction problem. Definisi 1. Sebuah Domain berisikan nilai yang dapat diambil oleh sebuah variabel. Sebuah domain itu bersifat khusus untuk sebuah variabel. Jadi masing-masing variabel itu memiliki domain-nya masing-masing. Kesepakatan umum memberi huruf kapital D untuk menyebut domain. Berikut adalah contoh untuk domain dari variabel x. (nilai x) ∈ Dx
8 Domain dalam constraint satisfaction problem seringnya memiliki anggota bilangan bulat. Anggota sebuah domain boleh saja bukan numerik. Hal yang dapat menjadi anggota dari sebuah domain adalah simbol. Contoh anggota domain yang bukan numerik adalah nama bulan dalam satu tahun. Anggota domain-nya adalah Januari, Februari, Maret, April, Mei, Juni, Juli, Agustus, September, Oktober, November, dan Desember. Definisi 2. Sebuah label adalah pemberian nilai dari domain sebuah variabel ke variabel itu. Jika ingin memberi nilai v ke variabel x digunakan notasi <x,v>. Tentunya v ∈ Dx . Definisi 3. Kumpulan label adalah tupel dari label. Kumpulan label digunakan untuk menyatakan pemberian nilai-nilai ke variabel yang jumlahnya lebih dari satu. Digunakan notasi tupel (<x1 , v1 ><x2 , v2 >. . .<xn , vn >) untuk menyatakan kumpulan label dari pemberian v1 , v2 , . . . , vn pada x1 , x2 , . . . , xn . Karena kumpulan label adalah tupel, urutan dari label pada representasi ini menjadi tidak signifikan. Dengan kata lain, (<x, a>) dianggap sama seperti kumpulan label (<x, a>), (<x, a>), dan lain-lain. Di samping itu, adalah penting untuk mengingat bahwa tupel tidak memiliki anggota yang sama. Sebuah constraint pada sebuah himpunan variabel membatasi nilai yang dapat diambil secara bersamaan. Menurut konsep, sebuah constraint dapat dilihat sebagai sebuah himpunan yang memiliki semua kumpulan label yang valid pada variabel yang bersangkutan (Edward Tsang, 1996, p7). Walaupun begitu, pada kenyataannya di lapangan, constraint dapat dinyatakan dengan banyak cara, contohnya, fungsi, pertidaksamaan, matriks, dan lain-lain. Definisi 4.
9 Sebuah constraint menurut konsep adalah sebuah himpunan kumpulan label pada variabel yang berkaitan. Digunakan Cs untuk menyatakan constraint pada himpunan variabel S. Bila ada masalah, solusi tentu ingin dicari. Dalam constraint satisfaction problem, sebelum solusi constraint satisfaction problem secara matematika dibahas, akan dibahas pengertian pemenuhan constraint. Sebenarnya pemenuhan constraint adalah relasi binari antara sebuah label atau sebuah kumpulan label dengan sebuah constraint. Definisi 5. Jika variabel-variabel dari kumpulan label X adalah sama dengan variabel-variabel dari elemen kumpulan label pada constraint C, maka X memenuhi-constraint C jika dan hanya jika X adalah elemen dari C: memenuhi-constraint( (<x1 , v1 ><x2 , v2 >. . . <xk , vk >), Cx1 ,x2 ,...,xk ) ≡ (<x1 , v1 ><x2 , v2 >. . . <xk , vk >) ∈ Cx1 ,x2 ,...,xk Memenuhi constraint juga didefinisikan antara label dan constraint unari. Definisi 6. memenuhi-constraint(<x, v>, Cx ) ≡ (<x, v>) ∈ Cx Jika dikatakan kumpulan label L memenuhi constraint C, itu artinya jika C adalah sebuah constraint pada variabel x1 , x2 , . . . , xk atau subset-nya, maka label pada variabel itu dalam L adalah valid sepanjang C dipenuhi. Untuk contohnya, () memenuhi constraint Cc,d jika dan hanya jika () adalah anggota Cc,d : Cc,d = . . ., (), . . . Setelah berbagai hal yang merupakan bagian dari constraint satisfaction problem itu sudah didefinisikan, pekerjaan mendefinisikan constraint satisfaction problem itu menjadi