Pemrograman deklaratif: fakta, aturan, dan tujuan
| English | Bahasa Indonesia |
|---|---|
| fact/fækt/ | fakta |
| declarative programming/dɪˈklærətɪv ˈprəʊɡræmɪŋ/ | pemrograman deklaratif |
| rule/ruːl/ | aturnya |
| goal/ɡəʊl/ | Tujuan |
| backtrack/ˈbæktræk/ | kembali (backtrack) |
| unification/ˌjuːnɪfɪˈkeɪʃn/ | penyatuan |
Tanyakan siapa yang bisa meminjam kamera
- Sebuah klub media menyimpan fakta tentang anggotanya dan pelatihan yang telah diselesaikan. Ia ingin bertanya siapa yang bisa meminjam kamera tanpa menulis loop baru untuk setiap pertanyaan.
- Pemrograman deklaratif menggambarkan fakta, aturan, dan tujuan. Mesin logika mencari nilai yang membuat tujuan tersebut benar. Pemrogram masih harus menulis aturan yang benar; mesin tidak membaca pikiran atau papan pengumuman klub.
Fakta menyatakan apa yang diketahui
- Sebuah fakta adalah pernyataan dalam basis pengetahuan. Dalam
member(aya)., predikatmembermenghubungkan satu orang dengan keanggotaan klub.trained(aya, camera).menghubungkan seseorang dengan peralatan tertentu. - Pelajaran ini menggunakan notasi bergaya Prolog: nama huruf kecil adalah konstanta atau predikat; nama huruf besar adalah variabel. Titik akhir mengakhiri setiap fakta atau aturan.
member(aya).
member(ben).
member(chen).
trained(aya, camera).
trained(chen, camera).
trained(ben, audio).
Diketahui fakta member(ben). dan trained(ben, audio)., pernyataan mana di bawah ini merupakan fakta yang diberikan?
member(ben). diberikan secara langsung. Basis pengetahuan tidak mencakup pelatihan kamera untuk Ben.
Aturan menggabungkan kondisi
- Sebuah aturan menyatakan kapan suatu kesimpulan berlaku. Baca
:-sebagai “jika” dan koma sebagai DAN: seseorang boleh meminjam kamera jika mereka adalah anggota dan memiliki pelatihan kamera. Personmenamai variabel yang sama di ketiga tempat tersebut. Mesin harus menemukan satu nilai yang memenuhi kedua kondisi, bukan satu anggota dan orang terlatih yang berbeda.
can_borrow(Person, camera) :- member(Person), trained(Person, camera).
Dalam aturan can_borrow(Person, camera) :- member(Person), trained(Person, camera)., koma antara dua kondisi berarti ____.
Kedua keanggotaan dan pelatihan kamera harus berlaku untuk Orang yang sama.
Tujuan mengajukan pertanyaan
- Tujuan
?- can_borrow(aya, camera).meminta hasil ya/tidak. Mesin mencocokkan aturan dan memeriksamember(aya)sertatrained(aya, camera): kedua fakta ada, sehingga tujuan berhasil. - Tujuan
?- can_borrow(Person, camera).meminta ikatan variabel. Dengan basis pengetahuan ini, jawabannya adalahPerson = ayadanPerson = chen. Ini adalah tujuan untuk ditelusuri; blok yang ditampilkan adalah notasi, bukan lingkungan bermain yang dapat dijalankan.
Anggota klub adalah aya, ben, dan chen. Aya dan Chen terlatih kamera; Ben hanya terlatih audio. Aturan can_borrow(Person, camera) memerlukan kedua keanggotaan dan pelatihan kamera. Siapa yang memenuhi can_borrow(Person, camera)?
Aya dan Chen memiliki kedua fakta yang diperlukan. Ben hanya memiliki pelatihan audio.
Variabel Person dalam member(Person) dapat memiliki nilai yang berbeda dari Person dalam trained(Person, camera) selama satu pembuktian.
Semua kemunculan variabel yang sama harus tetap mempertahankan pengikatan yang sama dalam pembuktian tersebut.
Contoh terpecahkan: telusuri kandidat yang gagal
- Mulailah dengan
Person = ben.member(ben)berhasil.trained(ben, camera)gagal: fakta pelatihan yang tersedia adalah untuk audio, yang tidak cocok dengan kamera. - Mesin kembali mundur untuk mencoba kandidat lain,
Person = chen. Kedua kondisi berhasil. Jika jawaban lebih banyak diminta, ia terus mencari; jika tidak ada kandidat tersisa, tidak ada lagi jawaban.
Lacak pencarian yang tersisa setelah Aya telah dikembalikan.
Ben adalah anggota tetapi tidak memiliki fakta pelatihan kamera yang sesuai; mesin kemudian mencoba Chen.
Kesesuaian mencocokkan nilai di seluruh aturan
- Penyatuan mencocokkan istilah sambil mengikat variabel secara konsisten. Mencocokkan
trained(Person, camera)dengantrained(chen, camera)mengikatPersonkechen; mencocokkannya dengantrained(ben, audio)gagal karena perbedaannya berbeda. - Tujuan yang gagal berarti tidak dapat dibuktikan dari fakta dan aturan ini. Ini tidak membuktikan bahwa Ben tidak pernah menggunakan kamera dalam kehidupan nyata; basis pengetahuan mungkin saja tidak lengkap.
Mencocokkan trained(Person, camera) dengan trained(chen, camera) mengikat Person ke ____.
Peralatan cocok dan argumen pertama menyediakan pengikatan chen.
Contoh terpecahkan: tulis aturan baru
- Persyaratan: seorang mentor dapat membantu seseorang hanya ketika mentor memiliki pelatihan kamera dan siswa adalah anggota. Tambahkan aturan di bawah ini, lalu ajukan
?- can_help(aya, ben).. trained(aya, camera)danmember(ben)keduanya ada, sehingga tujuan berhasil. Aturan ini memungkinkan Aya untuk membantu dirinya sendiri juga. Jika bantuan diri harus dikecualikan, persyaratan memerlukan kondisi tambahan; jangan membuatnya diam-diam.
can_help(Mentor, Learner) :- trained(Mentor, camera), member(Learner).
Diberikan trained(aya, camera). dan member(ben)., serta aturan can_help(Mentor, Learner) :- trained(Mentor, camera), member(Learner)., apakah can_help(aya, ben) berhasil?
Aya memiliki pelatihan kamera dan Ben adalah anggota; Ben tidak perlu memiliki pelatihan kamera untuk menjadi peserta belajar.
⟦⟧ Nilai yang sering terlewat
- Fakta menyatakan sesuatu yang diketahui; aturan menurunkan kesimpulan ketika kondisinya terpenuhi; tujuan menanyakan apakah kesimpulan dapat dibuktikan atau nilai mana yang membuatnya benar.
- Jaga konsistensi variabel yang berulang.
member(X), trained(Y, camera)akan membiarkan anggota tanpa pelatihan memenuhi syarat karena orang lain memiliki pelatihan. Mengganti nama variabel dapat mengubah makna aturan.
Dari persyaratan menjadi pembuktian
- Tulis fakta, vertalkan setiap persyaratan menjadi aturan, dan ajukan tujuan. Lacak ikatan variabel melalui setiap kondisi dan coba alternatif saat kandidat gagal.
- Di sini hanya Aya dan Chen yang dapat meminjam kamera. Pelatihan audio Ben bukan pelatihan kamera. Hasil mengikuti dari basis pengetahuan yang disediakan, bukan tebakan tentang orang sungguhan.
Anggota klub adalah aya, ben dan chen. Aya dan Chen terlatih kamera; Ben hanya terlatih audio. Aturan can_borrow(Person, camera) memerlukan kedua keanggotaan dan pelatihan kamera. Berapa banyak orang yang memenuhi can_borrow(Person, camera)?
Aya dan Chen adalah dua solusi.
Tujuan yang gagal membuktikan bahwa peristiwa yang bersangkutan tidak pernah terjadi di luar basis pengetahuan ini.
Kegagalan berarti tujuan tidak dapat dibuktikan dari fakta dan aturan yang tersedia.