BAB II DASAR TEORI Pada bagian ini akan dibahas dasar teori yang digunakan dalam pengerjaan tugas akhir. Pembahasan dimulai dengan dasar teori mengenai sistem penjadwalan mencakup definisi mengenai resource, batasan, proses penjadwalan, serta timetabling. Pada subbab ini juga dibahas mengenai jenis-jenis batasan dan latar belakang pemilihan nama sistem penjadwalan dependency pada tugas akhir ini. Kemudian, pembahasan dilanjutkan dengan teori basis data deduktif (BDD) sebagai komponen pemroses dan penyimpan data dalam pengerjaan tugas akhir. Pembahasan BDD ini dimulai dari latar belakang dan definisi, dilanjutkan dengan pendefinisian ketiga komponen utama BDD, yaitu fakta, aturan dan mekanisme inferensi. Selain itu, konsep mengenai aturan yang aman (safe rules) juga dibahas pada subbab ini. Setelah itu, pembahasan dasar teori dilanjutkan dengan algortima greedy yang digunakan pada tahapan proses penjadwalan.
II.1 Sistem Penjadwalan Sistem penjadwalan adalah sebuah sistem untuk melakukan proses penjadwalan. Sebuah sistem penjadwalan terdiri dari dua buah komponen utama yaitu penjadwalan dan pengguna. Penjadwalan adalah suatu kegiatan untuk mencari solusi jadwal dari sejumlah resource dan batasan. Resource adalah objek dari penjadwalan, sedangkan batasan adalah kondisi yang mengatur (membatasi) pencarian solusi. Resource, batasan, dan penjadwalan akan dibahas lebih detil pada subbab ini. Komponen utama lainnya dari sistem penjadwalan adalah pengguna. Pengguna yaitu pihak yang menggunakan sistem penjadwalan. Pengguna bertugas mendefinisikan resource dan batasan-batasan yang ada untuk digunakan dalam penjadwalan.
II.1.1 Resource Menurut definisi dari [WEB03], resource adalah suatu nilai potensi yang dimiliki oleh suatu materi atau unsur tertentu dalam kehidupan. Menurut [WEB04], definisi resource adalah segala sesuatu yang tersedia yang dapat digunakan untuk kepentingan tertentu. Berdasarkan kedua definisi ini, resource dalam sistem penjadwalan dapat didefinisikan sebagai objek dari penjadwalan yang umumnya memiliki sifat terbatas sehingga memerlukan penjadwalan dalam penggunaannya. Berdasarkan sifatnya, resource terbagi dalam dua
II-1
II-2 kategori yaitu resource yang terbatas dan resource yang tidak terbatas. Contoh resource yang tidak terbatas: udara, sinar matahari, air. Contoh resource yang terbatas: barang (makanan, obat-obatan, bahan mineral), ruangan kelas, waktu, dan lain-lain. Resource yang bersifat terbatas memerlukan penjadwalan dalam penggunaannya agar waktu penggunaannya dapat menjadi lebih lama. Dalam tugas akhir ini, kata resource mengacu pada resource yang bersifat terbatas.
II.1.2 Batasan Batasan adalah sesuatu yang bersifat melarang, membatasi, atau mengatur [WEB02]. Batasan juga dapat berarti sejumlah keadaan yang harus dipenuhi terkait dengan resource yang tersedia. Dalam penjadwalan, batasan membatasi pencarian solusi dalam ruang pencarian solusi. Umumnya permasalahan yang muncul adalah bagaimana mencari solusi yang dapat memenuhi seluruh batasan yang ada dan paling banyak memenuhi batasan-batasan yang sifatnya opsional. Batasan-batasan yang sifatnya opsional biasanya memiliki karakteristik apabila dipenuhi maka akan membuat solusi yang ditemukan menjadi lebih baik. Pada umumnya, untuk membuat sebuah model yang deklaratif dan transparan terhadap masalah adalah sebuah prinsip yang baik. Model yang dimaksud di sini adalah suatu bentuk solusi dari permasalahan sistem penjadwalan mencakup pendefinisian resource dan batasan. Semua entitas pada awalnya dideskripsikan dengan batasan-batasan yang mendefinisikan sifat asli entitas dan hubungan antara entitas dan metode pencarian disimpan terpisah dari model yang deklaratif ini. Batasan-batasan yang muncul pada aplikasi penjadwalan dapat diklasifikasikan ke dalam beberapa kelompok. Batasan-batasan diklasifikasikan berdasarkan peran mereka dalam permasalahan penjadwalan ke dalam tiga kategori, yaitu batasan resource, batasan transition, dan batasan dependency. Pengkategorian seperti ini membantu dalam pemilihan model batasan yang tepat karena model yang berbeda menangani secara lebih baik suatu batasan dari kategori yang berbeda. Oleh karena itu, model yang sesuai dapat dipilih dengan lebih mudah dengan menggunakan informasi tentang penyebaran dari batasan dalam kategori-kategori yang ditawarkan. Permasalahan penjadwalan dalam lingkungan proses yang rumit dapat mewakili masalah-masalah yang terdapat dalam kebanyakan aplikasi penjadwalan. Oleh karena itu, dapat diasumsikan bahwa klasifikasi yang ditawarkan juga dapat diaplikasikan pada area penjadwalan lainnya [BAR99]. Berikut adalah klasifikasi batasan tersebut: 1. Batasan resource menunjukkan keterbatasan sebuah resource dalam satu time point. Contoh: batasan kapasitas membatasi berapa banyak aktivitas yang dapat dilakukan secara paralel atau berapa banyak barang yang dapat disimpan bersama-sama. Contoh lainnya adalah batasan kecocokan (ketidakcocokan). Batasan kecocokan
II-3 menentukan aktivitas apa saja yang dapat diproses bersama-sama atau dengan kata lain aktivitas apa yang cocok. Batasan kapasitas merupakan batasan “kuantitas” (“berapa banyak”), sedangkan batasan kecocokan merupakan batasan “kualitas” (“aktivitas apa”). 2. Batasan transition menunjukkan keterbatasan sebuah resource dalam time point yang berbeda. Secara khusus, batasan ini menentukan situasi apa di masa depan yang mungkin mengikuti situasi saat ini. Sebagai contoh mungkin terdapat peralihan di antara aktivitas. Jika sebuah mesin “set-up” waktu dimodelkan menggunakan aktivitas “set-up” yang khusus (produk dihasilkan selama “set-up”) maka batasan transition secara alami membatasi penambahan aktivitas “set-up” di antara dua aktivitas produksi. Batasan transition adalah khusus untuk lingkungan proses yang rumit dengan banyak “set-up” tapi batasan ini tidak muncul dalam banyak permasalahan penjadwalan lainnya. 3. Batasan dependency menunjukkan hubungan antara dua atau lebih resource yang berbeda dalam time point yang mungkin berbeda. Setiap resource dalam permasalahan penjadwalan sangat sulit untuk berdiri sendiri. Oleh karena itu, relasi antara resource juga harus dideskripsikan dalam model. Contoh dari ketergantungan dalam
penjadwalan
produksi
adalah
ketergantungan
supplier-consumer.
Ketergantungan tersebut menentukan hubungan antara aktivitas menyediakan sebuah barang dan aktivitas menghabiskan barang tersebut. Dalam permasalahan lainnya mungkin dibutuhkan dua buah aktivitas untuk diproses secara paralel dalam dua buah resource. Sebagai contoh dua orang pengajar mengajar dua pelajaran yang sama secara paralel. Batasan dependency merupakan salah satu ciri khas untuk banyak permasalahan penjadwalan karena batasan ini mendeskripsikan hubungan antar aktivitas yang terdapat dalam sebuah task. Meskipun demikian, dalam area permasalahan seperti lingkungan proses yang rumit, batasan ini juga mungkin membatasi aktivitas dari beberapa task yang berbeda.
Ketiga kategori batasan dalam Gantt chart dapat dilihat pada Gambar II-1. Seperti yang tertera pada gambar, dua buah aktivitas dapat terkait dengan hanya sebuah resource. Sebagai contoh adalah batasan resource yang terkait dengan sebuah resource, tapi melibatkan satu atau beberapa aktivitas. Contoh batasan resource dalam penjadwalan mata kuliah yaitu ruangan kelas mana saja yang cocok untuk satu kelas mata kuliah dalam satu slot waktu. Batasan transition terkait peralihan sebuah aktivitas ke aktivitas lain dalam sebuah resource. Batasan dependency menggambarkan hubungan dua buah resource yang berbeda dalam time point yang mungkin berbeda.
II-4
Keterangan: : aktivitas : batasan Gambar II-1 Kategori-kategori batasan dalam Gantt chart [BAR99]
Dalam sebuah sistem penjadwalan besar kemungkinannya terdapat lebih dari satu kategori batasan. Kedua batasan yang pertama (batasan resource dan batasan transition) menunjukkan keterbatasan pada sebuah resource saja, sedangkan batasan dependency menunjukkan hubungan antara dua atau lebih resource yang berbeda dalam time point yang mungkin berbeda. Sebuah sistem penjadwalan yang batasan-batasannya secara umum bertipe batasan dependency disebut sebagai sistem penjadwalan dependency. Salah satu contoh dari sistem penjadwalan ini adalah sistem penjadwalan mata kuliah. Penjadwalan mata kuliah didefinisikan sebagai penjadwalan sejumlah aktivitas perkuliahan yang terdapat dalam satu semester di mana aktivitas perkuliahan tersebut terkait dengan ruangan kelas dan waktu pelaksanaan kuliah. Penjadwalan mata kuliah termasuk ke dalam kategori sistem penjadwalan dependency karena secara umum batasan-batasan yang terdapat di dalamnya termasuk ke dalam kategori batasan dependency. Sebagai contoh dua orang pengajar harus mengajar secara paralel mata kuliah yang sama. Dalam hal ini dua orang pengajar tersebut harus berada dalam ruangan kelas yang berbeda dalam satu waktu. Dua buah resource yang terkait yaitu ruangan kelas dan pengajar.
II.1.3 Penjadwalan Penjadwalan adalah suatu kegiatan mengalokasikan sejumlah aktivitas yang terkait dengan resource dalam slot waktu tertentu dengan memperhatikan prioritas, durasi, kapasitas dan batasan-batasan yang ada [BAR99]. Sebuah resource dalam penjadwalan dapat terkait ke lebih dari satu batasan. Batasan-batasan yang terkait ke sebuah resource dapat berupa batasan yang sejenis maupun batasan yang berbeda jenisnya. Oleh karena itu, dalam sebuah penjadwalan mungkin terdapat lebih dari satu jenis batasan. Seperti telah dijelaskan pada
II-5 Subbab II.1.2, bahwa terdapat tiga jenis batasan, yaitu batasan resource, batasan transition, dan batasan dependency. Namun demikian, sebuah penjadwalan dapat disebut sebagai penjadwalan jenis batasan tertentu apabila batasan-batasan dalam penjadwalan tersebut umumnya memiliki jenis batasan tersebut. Sebagai contoh, penjadwalan yang memiliki batasan-batasan yang secara umum berjenis batasan dependency dapat dikatakan sebagai penjadwalan dependency. Hasil dari penjadwalan adalah tabel yang berisi daftar aktivitas dan alokasi dari resource dalam satuan unit waktu tertentu [KOS02]. Dalam membangun jadwal terdapat dua fase, yaitu fase preprocessing dan fase pencarian pasangan slot jadwal yang tepat. Pada fase preprocessing aktivitas yang dilakukan adalah mendefinisikan resource dan batasan. Kemudian pada fase berikutnya dilakukan pencarian solusi pasangan slot jadwal yang tepat. Beberapa algoritma telah dikembangkan untuk menyelesaikan permasalahan penjadwalan, di antaranya adalah algoritma genetika, algoritma memetic, algoritma local search, dan algoritma pewarnaan graf. A. Algoritma genetika Algoritma genetika merupakan sebuah teknik pencarian stochastic yang berbasis mekanisme seleksi alam dan genetika alamiah. Pada sistem penjadwalan, solusi hasil direpresentasikan dengan kumpulan kromosom terbaik berdasarkan fungsi fitness tertentu. Kumpulan kromosom dibentuk dengan melalui beberapa generasi dengan cara mutasi dan kawin silang kemudian kromosom terbaik dipilih berdasarkan fungsi fitness. Mutasi membentuk individu (kromosom) baru dengan mengganti secara acak individu yang dipilih secara acak dari populasi, sedangkan kawin silang membentuk individu baru dengan menggabungkan bagian-bagian yang diambil dari orang tua individu. Fungsi fitness berfungsi seperti seleksi alam Darwin yaitu untuk memilih individu yang terbaik yang memenuhi suatu kriteria tertentu. Ketepatan fungsi ini terhadap aplikasi akan menentukan kualitas dari hasil yang diperoleh dengan menggunakan algoritma genetika [FIS00].
B. Algoritma memetic Algoritma memetic merupakan suatu pendekatan yang berbasis populasi untuk pencarian secara heuristik dalam permasalahan optimasi. Untuk beberapa bidang permasalahan, algoritma ini telah terbukti lebih efisien dan lebih cepat daripada algoritma genetika. Algoritma ini menggabungkan local search heuristic dengan operator crossover. Untuk alasan ini, beberapa peneliti melihatnya sebagai Hybrid Genetic Algorithms. Namun demikian, penggabungan dengan metode heuristik atau metode tertentu mungkin juga termasuk ke dalam kelas metaheuristic [WEB05]. Dari sudut pandang algoritma genetika (Genetic Algorithm ~ GA), apabila GA dikombinasikan dengan beberapa jenis dari Local Search, maka algoritma dapat dikatakan sebagai algoritma memetic [WEB06].
II-6
C. Algoritma Local Search Local Search merupakan sebuah algoritma metaheuristic untuk menyelesaikan permasalahan optimasi yang sulit secara komputasi. Local search dapat digunakan pada permasalahan
yang
dapat
dirumuskan
sebagai
pencarian
sebuah
solusi
dengan
memaksimalkan sebuah kriteria di antara sejumlah kandidat solusi. Algoritma ini bergerak dari solusi ke solusi dalam sebuah ruang kandidat solusi (search space) hingga sebuah solusi yang dianggap paling baik telah ditemukan atau pencarian telah mencapai batas waktu [WEB07]. Algoritma local search menggunakan ide bahwa solusi yang ada dapat diperbaiki dengan melakukan perubahan kecil. Solusi diubah terus menerus sehingga solusi yang didapatkan semakin baik [VAE94].
D. Algoritma Pewarnaan Graf Dalam teori graf, pewarnaan graf adalah sebuah penempatan warna-warna (merah, biru, dll, tapi urutan bilangan bulat dari 1 juga dapat digunakan tanpa kehilangan sifat umumnya) untuk objek-objek tertentu dalam sebuah graf. Objek tersebut dapat berupa simpul, sisi, permukaan atau campuran dari ketiganya [WEB08]. Tujuan dari pewarnaan graf ini adalah untuk mendapatkan jumlah warna yang paling sedikit dalam memenuhi batasan tertentu. Dalam sistem penjadwalan, resource (aktivitas) direpresentasikan dengan simpul, garis yang menghubungkan simpul merepresentasikan batasan antara aktivitas, dan warna menunjukkan slot pasangan jadwal yang dapat digunakan oleh resource. Warna yang sama pada beberapa simpul menunjukkan bahwa resource dapat dijadwalkan pada pasangan slot jadwal (slot waktu atau ruangan, tapi tidak keduanya) yang sama.
II.1.4 Timetabling Timetable adalah sebuah jadwal yang berisi daftar peristiwa-peristiwa dan waktu dari peristiwa-peristiwa tersebut [WEB01]. Sedangkan timetabling adalah suatu proses membuat timetable yang di dalamnya terdapat proses penempatan suatu peristiwa ke dalam daftar waktu. Timetabling merupakan pengalokasian sejumlah resource terkait dengan batasan ke objek-objek yang ditempatkan dalam slot waktu untuk mencapai tujuan yang diinginkan. Timetabling terpisah dari perencanaan (planning) dan penjadwalan. Meskipun demikian, bila dilihat secara detil, timetabling sangat dekat dengan penjadwalan. Bahkan timetabling dapat dikatakan sebagai kasus khusus dari penjadwalan [BAR01]. Permasalahan penjadwalan tradisional didefinisikan dengan sekumpulan aktivitas dan sekumpulan resource yang digunakan oleh aktivitas tersebut. Terlebih lagi, aktivitas harus diposisikan dalam waktu (jika tidak, permasalahan disebut sebagai pengalokasian resource).
II-7 Timetabling dapat dilihat sebagai bentuk khusus dari permasalahan penjadwalan dengan sudut pandang waktu yang sedikit disederhanakan. Dalam permasalahan timetabling, slot waktu didefinisikan secara seragam untuk semua resource sehingga aktivitas-aktivitas yang terkait juga dialokasikan ke slot-slot waktu ini dan bukan ke waktu yang detil [MUL01].
II.2 Basis Data Deduktif II.2.1 Latar Belakang dan Definisi Perkembangan dan kesuksesan basis data relasional telah menunjukkan pentingnya bahasa query yang deklaratif. Daripada mendeskripsikan prosedur dari setiap query, pengguna dapat membuat query dalam bahasa yang non-prosedural dengan semantik yang tepat dan transparan berdasarkan aljabar relasional dan kalkulus relasional. Dalam bahasa yang deklaratif, pengguna menentukan data apa yang ingin didapatkan dari basis data, sedangkan bagaimana prosedur untuk mendapatkan data tersebut diserahkan pada basis data itu sendiri. Sebagai hasilnya terjadi peningkatan yang signifikan dalam independensi data karena bahasa query hanya memperhatikan struktur data lojik. Hal ini memberikan kemudahan dalam mengembangkan dan memelihara basis data selama bertahun-tahun [VOR02]. Basis data deduktif adalah basis data berdasarkan lojik. Pada sekitar tahun 1980, basis data deduktif lahir sebagai akibat dari munculnya berbagai ide yang dikembangkan dalam basis data relasional dan pemrograman lojik. Oleh karena itu, basis data deduktif mewarisi ide-ide dan sifat-sifat yang dimiliki basis data relasional dan pemrograman lojik [VOR02]. Oleh karena itu, basis data deduktif dapat dilihat sebagai irisan dari basis data, lojik dan intelijensia buatan atau basis pengetahuan. Basis data deduktif memiliki kemampuan untuk mendefinisikan keterhubungan dalam bentuk aturan (deduksi). Kemampuan ini digunakan untuk mendeduksi informasi atau pengetahuan tambahan dari fakta yang tersimpan dalam basis data [ULL88]. Basis data deduktif memiliki tiga bagian utama, yaitu fakta yang tersimpan dalam basis data (extensional database / EDB), aturan-aturan yang digunakan untuk mendeduksi fakta baru dari fakta yang tersimpan dalam basis data (intensional database / IDB), dan mekanisme deduksi
(inference
engine)
yang
digunakan
dalam
pemrosesan
query
untuk
menginterpretasikan aturan-aturan yang ada [ULL88]. Mekanisme deduksi pada pemrosesan query juga berperan dalam menghasilkan fakta-fakta baru yang merupakan jawaban atau kesimpulan atas query yang dimasukkan. Setelah membangkitkan fakta-fakta yang ada, fakta tersebut bersama dengan aturan-aturan yang didefinisikan, akan dideduksi menjadi fakta-fakta baru dengan menggunakan mekanisme deduksi. Kemudian, fakta-fakta baru ini digunakan kembali pada iterasi deduksi berikutnya apabila jawaban query yang diberikan belum
II-8 diperoleh. Gambar II-2 menunjukkan hubungan antara ketiga bagian utama basis data deduktif. Query
Fakta turunan 3 Mekanisme DDBMS Deduksi 1 2 Fakta (EDB) + Aturan (IDB)
Gambar II-2 Hubungan ketiga bagian utama basis data deduktif
Fakta dan aturan disimpan dalam DDBMS (Deductive Database Management System). Query akan diinterpretasi dan DDBMS akan mencari jawaban dari query tersebut dengan cara melihat apakah terdapat fakta elementer (EDB) yang memenuhi query tersebut atau tidak. Jika tidak terdapat, maka DDBMS melakukan proses mekanisme deduksi dengan menggunakan fakta elementer dan aturan untuk menghasilkan fakta turunan, lalu jawaban dicari dari semua fakta yang ada. Proses pencarian fakta yang memenuhi query ini dilakukan hingga fakta yang memenuhi query ditemukan atau semua fakta turunan telah diturunkan, sehingga tidak ada lagi kemungkinan fakta turunan yang dapat dihasilkan. II.2.2 Model Datalog Model yang digunakan dalam basis data deduktif berkaitan dengan pemrograman lojik dan Prolog. Datalog merupakan sebuah variasi dari Prolog yang secara khusus menangani volume data yang besar yang disimpan di basis data relasional. Notasi yang digunakan dalam Prolog/Datalog didasarkan pada predikat-predikat dengan nama yang unik. Sebuah predikat mempunyai semantik tertentu yang sebaiknya sesuai dengan nama predikat tersebut. Selain itu, sebuah predikat juga memiliki sejumlah argumen [ULL88]. Contoh: predikat ayah(X,Y) memiliki nama predikat ayah dengan 2 argumen, yaitu X dan Y. Predikat ayah dapat memiliki arti bahwa X adalah ayah dari Y. X dan Y pada argumen dapat berupa konstanta ataupun variabel. Jenis dari sebuah predikat ditentukan oleh argumen-argumennya [ULL88]: a. Jika semua argumennya adalah konstanta, maka predikat tersebut menyatakan bahwa sebuah fakta tertentu adalah benar. Contoh: predikat ayah (Ali, Baba) menunjukkan bahwa terdapat fakta Ali adalah ayah dari Baba. b. Jika salah satu argumennya adalah variabel, maka predikat tersebut dapat berupa query atau bagian dari aturan. Contoh: predikat ayah(Ali, X) berarti mencari semua
II-9 anak dari Ali. Contoh penggunaan predikat sebagai bagian dari aturan: cucu(Y, Ali) Å ayah(Ali, X) ∧ ayah(X, Y). Predikat cucu(A, B) berarti A adalah cucu dari B. Setiap predikat pada model datalog dapat berupa fakta, aturan, atau predikat built-in. Umumnya sebuah predikat merepresentasikan sebuah relasi dalam model relasional. Sebagai contoh terdapat relasi orang(X) yang berarti X adalah orang, dan ada relasi pasangan(X,Y) yang berarti X berpasangan dengan Y di mana X tidak mungkin berpasangan dengan dirinya sendiri. Pada contoh ini, orang(X) akan menjadi fakta, dan pasangan(X,Y) akan menjadi aturan. Aturan pasangan(X,Y) didefinisikan sebagai berikut: pasangan(X,Y) Å orang(X) ∧ orang(Y) ∧ X <> Y.
Pada aturan ini, pasangan(X,Y) disebut sebagai head dan predikat di sebelah kanan ‘Å’ menjadi body dari aturan. Setiap predikat yang muncul dalam body disebut dengan subgoal. orang(X) dan orang(Y) adalah predikat berupa fakta, dan X <> Y adalah predikat berupa predikat built-in.
II.2.2.1 Fakta Pembentukan fakta dalam model datalog dapat disamakan dengan cara pembentukan relasi (tabel) dalam model relasional. Perbedaannya pada fakta yang dibangun untuk model datalog tidak dibutuhkan nama atribut karena posisi dari nilai-nilainya pada faktalah yang lebih penting. Fakta ini sering juga disebut sebagai extensional database (EDB). Contoh: terdapat 3 buah fakta orang tua dan anak dalam relasi parent, yaitu: a. Ali adalah orang tua dari Baba. b. Dina adalah orang tua dari Baba. c. Baba adalah orang tua dari Chandra. Dalam model datalog, fakta ini direpresentasikan dalam 3 buah predikat, yaitu: a. parent(ali, baba). b. parent(dina, baba). c. parent(baba, chandra). Dalam predikat parent(X,Y) ini, predikat diartikan sebagai X adalah orang tua dari Y. Pada model datalog, setiap predikat yang dibangun sangat bergantung pada definisinya. Seandainya predikat parent(X,Y) didefinisikan sebagai Y adalah parent dari X, maka ketiga fakta contoh di atas harus dipertukarkan posisi nilainya dalam model datalog, menjadi parent(baba, ali), parent(baba, dina), dan parent(chandra, baba). Oleh karena itu, dalam model datalog posisi dari atribut lebih penting daripada nama atributnya.
II-10 II.2.2.2 Aturan Aturan digunakan untuk mendefinisikan relasi virtual yang dapat dibentuk dari faktafakta yang ada dengan menerapkan mekanisme aturan inferensi berdasarkan spesifikasi aturan. Analogi aturan pada model relasional adalah sebuah view. Namun terdapat perbedaan yang utama antara sebuah view dan aturan pada model datalog, yaitu pada pendefinisian aturan mungkin terdapat pendefinisian yang bersifat rekursif, sedangkan pada view tidak mungkin. Sebagai contoh: relasi grandParent, jika dibangun dengan menggunakan aturan maka aturan yang terbentuk adalah sebagai berikut: grandParent(X,Y) Å parent(X,Z) ∧ parent(Z,Y).
dengan parent(A,B) sebagai fakta. Jika menggunakan view, maka diperlukan 2 buah nested query untuk mengimplementasikannya, yaitu yang pertama sebagai query untuk mendapatkan semua anak dari X yang disimpan dalam Z pada aturan di atas, lalu query yang kedua digunakan untuk mendapatkan semua anak dari Z. Pada relasi grandParent masih dimungkinkan untuk menggunakan view dengan 2 buah nested query. Namun lain halnya apabila nested query yang diperlukan tidak diketahui berapa jumlahnya, seperti halnya pada saat membangun relasi ancestor, view pada model relasional tidak dapat menangani hal ini. Dengan menggunakan aturan, relasi ancestor dapat diperoleh dengan menggunakan aturan sebagai berikut: ancestor(X,Y) Å parent(X,Y). ancestor(X,Y) Å ancestor(X,Z) ∧ parent(Z,Y).
dengan parent(A,B) sebagai fakta.
II.2.2.3 Klausa dan Horn Clause Sebuah literal dapat berupa literal positif atau sebuah literal negatif. Sejumlah literal membentuk sebuah klausa. Setiap klausa merupakan hasil dari operator OR dari literal-literal yang membangun sebuah klausa. Formula merupakan hasil operator AND dari klausa-klausa yang membangunnya. Horn clause adalah sebuah klausa yang memiliki sebanyak-banyaknya satu literal positif. Horn clause dapat berupa: 1. Sebuah single literal positif Merepresentasikan fakta. Contoh: orang(X). 2. Sebuah atau lebih literal negatif tanpa literal positif Merepresentasikan batasan integritas. 3. Sebuah positif literal dan sebuah atau lebih literal negatif Merepresentasikan aturan. Contoh: ~p1 v .. v ~pn v q
dapat diterjemahkan menjadi aturan sebagai berikut
II-11 q Å p1 ∧ .. ∧ pn
q disebut sebagai head aturan, dan setiap pi disebut subgoal. Kumpulan dari Horn clause disebut sebagai program lojik [ULL88].
II.2.2.4 Dependency Graph dan Safe rules Dependency graph digunakan untuk menunjukkan keterhubungan antara satu predikat dengan predikat lainnya dalam program lojik. Dalam dependency graph, predikat direpresentasikan dengan sebuah simpul dan sebuah busur dari p ke q menunjukkan bahwa terdapat sebuah aturan dengan head q dan subgoal p. Sebuah program lojik dikatakan rekursif jika pada dependency graphnya terdapat sebuah atau lebih siklus. Semua predikat yang terdapat pada satu atau lebih siklus disebut sebagai predikat rekursif. Contoh: a Å b ∧ d. b Å c ∧ e. c Å a.
memiliki dependency graph seperti ditunjukkan pada Gambar II-3.
Gambar II-3 Dependency Graph
Sebuah aturan dikatakan aman jika aturan tersebut beroperasi pada relasi yang terbatas. Salah satu pendekatan untuk menghindari aturan yang menghasilkan relasi yang tidak terbatas dari relasi yang terbatas adalah dengan menjaga agar setiap variabel yang muncul dalam suatu aturan adalah terbatas. Suatu variabel dikatakan terbatas jika memenuhi salah satu dari syarat berikut. 1. Variabel muncul sebagai argumen dalam sebuah predikat biasa pada bagian body dari aturan. 2. Variabel X muncul dalam subgoal X=a atau a=X dengan a adalah sebuah konstanta. 3. Variabel X muncul dalam subgoal X=Y atau Y=X di mana Y telah diketahui sebagai variabel yang terbatas. Sebuah aturan dikatakan aman jika seluruh variabel yang terdapat di dalamnya adalah terbatas.
II-12 II.2.3 Mekanisme Inferensi
Dalam basis data deduktif terdapat dua mekanisme inferensi, yaitu mekanisme inferensi bottom-up dan top-down. Mekanisme bottom-up sering juga disebut sebagai mekanisme forward-chaining, sedangkan mekanisme top-down sering juga disebut sebagai mekanisme backward-chaining. Mekanisme bottom-up memulai inferensi dari fakta yang ada untuk menghasilkan fakta-fakta baru berdasarkan goal yang ingin dicapai dengan memanfaatkan strategi yang hanya membangkitkan fakta-fakta yang relevan. Sebaliknya, mekanisme top-down memulai inferensi dari goal yang ingin diperoleh untuk mendapatkan nilai-nilai konstan yang membuat goal tersebut benar. Urutan penulisan subgoal pada mekanisme top-down perlu diperhatikan dengan baik karena jika urutan penulisan subgoal tidak benar maka dapat mengakibatkan infinite recursion (rekursif tanpa henti) [ULL88].
II.2.4 Aturan Non-Rekursif Aturan yang non-rekursif dapat diurutkan sebagai berikut. Jika terdapat sebuah busur dari pi ke pj dalam dependency graph, maka pi < pj. Komputasi dari relasi tersebut dilakukan dalam urutan tersebut. Komputasi dari relasi pi terbagi menjadi 2 tahap: a. Untuk setiap aturan r dengan head pi, lakukan komputasi pada bagian body dari aturan dengan cara melakukan natural join dari semua relasi yang bersesuaian dengan subgoal dari aturan. b. Relasi untuk pi dapat dihitung dengan: i. Memproyeksikan relasi terhadap setiap aturan pi. ii. Menggabungkan semua aturan yang memiliki head pi dengan operator union. Contoh: a(X,Y) Å b(X,Z) ∧ c(Z,Y). a(X,Y) Å b(X,Y) ∧ c(X,Y).
dihitung dengan transformasi sebagai berikut: A(X,Y) = ΠX,Y (B(X,Z) join C(Z,Y)) U ΠX,Y (B(X,Y) join C(X,Y))
II.2.5 Aturan Rekursif Pemrosesan aturan rekursif memiliki 2 pendekatan: 1. Pendekatan pure-evaluation Membangun rencana evaluasi query yang menghasilkan jawaban. 2. Pendekatan rule-rewriting Mengoptimasi rencana agar lebih efisien.
II-13 Sebuah aturan dikatakan rekursif linear jika predikat yang berulang muncul sekali dan hanya terdapat satu pada bagian body aturan. Terdapat 2 buah jenis rekursif linear: 1. Rekursif linear kiri Contoh: ancestor(X,Y) Å ancestor(X,Z) ∧ parent(Z,Y).
2. Rekursif linear kanan Contoh: ancestor(X,Y) Å parent(X,Z) ∧ ancestor(Z,Y).
II.2.6 Negasi Bahasa query basis data deduktif dapat ditingkatkan dengan cara mengijinkan literal negatif muncul pada body dari aturan di program. Sebagai catatan, aturan yang di dalamnya terdapat subgoal negatif adalah bukan horn clause. Kehadiran literal yang negatif menyebabkan program mungkin tidak akan memiliki model minimal. Untuk itu, jika program membutuhkan negasi, program hanya diperbolehkan untuk memiliki aturan yang mengandung stratified negation. Aturan dikatakan stratified jika memenuhi kondisi seperti berikut: misalkan terdapat sebuah aturan dengan head p dan subqoal yang negatif q, maka tidak boleh ada garis pada dependency graph dari p ke q. Contoh: r1: ancestor(X,Y) Å parent(X,Y). r2: ancestor(X,Y) Å parent(X,Z) ∧ ancestor(Z,Y). r3: nocyc(X,Y) Å ancestor(X,Y) ∧ ~(ancestor(Y,X)).
Evaluasi dengan metode bottom-up akan menghitung semua aturan yang non-negated sebelum menghitung aturan yang negated. Pada contoh di atas aturan r3 akan dievaluasi jika fakta mengenai ancestor telah didapatkan semua.
II.3 Algoritma Greedy [MUN05] Algoritma Greedy merupakan metode yang populer untuk memecahkan persoalan optimasi. Algoritma ini membentuk solusi setahap demi setahap di mana pada setiap tahap: a. mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan. b. berharap bahwa dengan memilih optimum lokal pada setiap langkah akan berakhir dengan optimum global. Algoritma greedy mengasumsikan bahwa optimum lokal merupakan bagian dari optimum global. Persoalan optimasi dalam konteks algoritma greedy disusun oleh elemenelemen sebagai berikut.
II-14 1. Himpunan kandidat, C. Himpunan ini berisi elemen-elemen pembentuk solusi. Contohnya adalah himpunan simpul di dalam graf, himpunan pasangan slot waktu dan ruangan kelas dalam penjadwalan mata kuliah, dan lain-lain. Pada setiap tahap, satu buah kandidat diambil dari himpunannya. 2. Himpunan solusi, S. Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan. Dengan kata lain, himpunan solusi adalah himpunan bagian dari himpunan kandidat. 3. Fungsi seleksi. Fungsi yang pada setiap tahap memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu tahap tidak pernah dipertimbangkan lagi pada tahap selanjutnya. Biasanya setiap kandidat, x, di-assign sebuah nilai numerik, dan fungsi seleksi memilih x yang mempunyai nilai terbesar atau terkecil. 4. Fungsi kelayakan. Fungsi yang memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar batasan yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi. 5. Fungsi objektif. Fungsi yang memaksimumkan atau meminimumkan nilai solusi. Contohnya panjang lintasan, keuntungan, dan lain-lain.