- Karakteristik pemrograman logika
- Kebenaran dan deduksi logis
- Logika urutan pertama
- Bentuk klausul
- Kecerdasan buatan
- Contoh pemrograman logika
- Contoh 1
- Contoh 2
- Pertanyaan
- Pertanyaan lainnya
- Referensi
The logika pemrograman adalah paradigma pemrograman yang menggunakan sirkuit logika bukan hanya fungsi matematika untuk kontrol bagaimana fakta-fakta dan aturan yang ditetapkan.
Alih-alih aliran kontrol yang terstruktur dengan hati-hati yang menentukan kapan harus mengeksekusi dan bagaimana mengevaluasi pemanggilan fungsi atau instruksi lain, aturan logis program ditulis sebagai klausa atau predikat logis.
Contoh pemrograman logika di Prolog. Sumber: Oleh Kuldeepsheoran1 - tangkapan layar, CC BY-SA 3.0, wikimedia commons
Pendekatan ini, yang sering digunakan dalam pemrograman genetik dan evolusioner, umumnya memberi tahu model apa tujuan yang ingin dicapai, bukan bagaimana mencapainya.
Setiap aturan berisi header dan body dengan logika formal, bukan fungsi matematika yang dapat dieksekusi. Misalnya, "And is true (header): if C1, C2, and C3 is true (body)." Fakta atau hasil diekspresikan tanpa tubuh, seperti "Dan itu benar."
Namun, dengan beberapa bahasa pemrograman seperti Prolog, pemrograman imperatif juga dapat disertakan untuk memberi tahu model cara menyelesaikan masalah tertentu. Misalnya, "Untuk menyelesaikan Y, tambahkan C1, C2, dan C3."
Karakteristik pemrograman logika
Pemrograman logika secara substansial berbeda dari strategi pemrograman lain yang ada. Alih-alih memberikan instruksi ke komputer dengan program, hubungan antar objek dibuat. Dengan cara ini komputer dapat menalar hubungan ini dan dengan demikian mencapai solusi logis.
Di dalam program logika ada dua set kode utama: fakta dan aturan. Aturan diterapkan pada fakta untuk mendapatkan pengetahuan tentang lingkungan.
Kebenaran dan deduksi logis
Program logika dapat diuraikan melalui dua konsep penting: kebenaran dan deduksi logis. Kebenaran muncul apakah perhitungan dalam program itu benar atau tidak, di bawah penerapan simbol program. Deduksi logis menentukan apakah klausa logis merupakan konsekuensi dari program.
Instruksi ini akan selalu diartikan sebagai kalimat dan klausa logis, hasil pelaksanaannya merupakan konsekuensi logis dari perhitungan yang dikandungnya.
Logika urutan pertama
Ini adalah cabang dari logika proposisional. Pertimbangkan apakah objek benar atau salah dari perspektif dunia parsial, yang disebut domain. Pemrograman logika didasarkan pada generalisasi logika orde pertama.
Logika ini terdiri dari sintaks dan semantik. Sintaks adalah bahasa formal yang digunakan untuk mengekspresikan konsep. Di sisi lain, semantik rumus logika urutan pertama menunjukkan cara menentukan nilai sebenarnya dari rumus apa pun.
Logika ini didasarkan pada alfabet dan bahasa urutan pertama, serta sekumpulan aksioma dan aturan inferensi.
Bentuk klausul
Ini adalah bagian dari logika orde pertama. Ini memiliki bentuk yang dinormalisasi di mana pernyataan ditentukan oleh awalan universal atau rantai bilangan universal, dan satu set bilangan bebas dalam klausa.
Saat meminta kueri ke program, badan klausa yang tajuknya mungkin sama akan dipertimbangkan. Ini sama dengan menerapkan aturan inferensi dalam logika.
Sebagai langkah dalam inferensi, dipilih dua klausa yang memiliki properti yang satu berisi X disjungtif (literal positif) dan klausa lainnya berisi disjungtif ¬X (literal negatif). Pengorbanan ini dikenal sebagai pelengkap.
Dari dua klausa awal ini, klausa resolutif baru dibangun menggunakan semua literal, kecuali klausa pelengkap.
Kecerdasan buatan
Pemrograman logika adalah metodologi yang digunakan untuk membuat komputer menyimpulkan, karena berguna untuk merepresentasikan pengetahuan. Logika digunakan untuk merepresentasikan pengetahuan dan kesimpulan untuk menanganinya.
Logika yang digunakan untuk merepresentasikan pengetahuan adalah bentuk klausa. Ini digunakan karena logika orde pertama dipahami dengan baik dan mampu mewakili semua masalah komputasi.
Prolog adalah bahasa pemrograman yang didasarkan pada ide-ide logika pemrograman. Ide dari Prolog adalah membuat logika terlihat seperti bahasa pemrograman.
Contoh pemrograman logika
Contoh 1
- Fakta: Rubí adalah seekor kucing.
- Aturan: semua kucing punya gigi.
- Konsultasi: Apakah Rubí punya gigi?
- Kesimpulan: ya.
Aturan “semua kucing punya gigi” bisa diterapkan pada Ruby, karena ada fakta yang mengatakan “Ruby itu kucing”. Contoh ini tidak ditulis dengan sintaks apa pun untuk bahasa pemrograman yang sebenarnya.
Contoh 2
Contoh ini dapat dilihat di Prolog, karena ini adalah salah satu bahasa pemrograman logika paling populer:
- feminin (alissa).
- maskulin (bobby).
- maskulin (carlos).
- feminin (doris).
- son_of (doris, carlos).
- son_of (carlos, bobby).
- son_of (doris, alissa).
- ayah dari (P, P): - laki-laki (F), anak laki-laki (P, F).
Program ini menjadi sulit untuk dibaca, karena Prolog sangat berbeda dari bahasa lain. Semua komponen kode yang menyerupai "feminin (alissa)". itu adalah fakta.
Salah satu aturannya adalah "bapak_of (F, P): - pria (F), anak_kiri (P, F)". Simbol ": -" dapat dibaca sebagai "benar jika". Huruf kapital berarti variabel dapat diterapkan ke objek apa pun, jadi F bisa berarti carlos, doris, alissa, atau bobby. Kode ini dapat diterjemahkan sebagai:
- Alissa adalah seorang wanita.
- Bobby adalah seorang pria.
- Carlos adalah seorang pria.
- Doris adalah seorang wanita.
- Doris adalah putri Carlos.
- Carlos adalah putra Bobby.
- Doris adalah putri Alissa.
- «F adalah ayah dari P» adalah benar jika F adalah laki-laki dan jika P adalah anak dari F.
Pertanyaan
Misalkan Anda ingin berkonsultasi dengan program untuk informasi lebih lanjut. Anda dapat mencari menanyakan untuk menemukan dengan siapa ayah Bobby :? - father_of (bobby, X). Sistem akan menunjukkan jawaban berikut: X = Carlos.
Dalam hal ini, hubungan sedang diteruskan di mana salah satu nilainya adalah variabel. Apa yang dilakukan Prolog adalah menerapkan objek yang berbeda ke hubungan ini sampai salah satunya secara logis solid.
Ayah satu-satunya Carlos adalah Bobby, dan Bobby adalah laki-laki. Ini memenuhi aturan "ayah dari (F, P): - maskulin (F), son_of (P, F)." Ketika X sama dengan "carlos", logikanya adalah suara.
Pertanyaan lainnya
Kueri lain yang lebih umum dapat dibuat ke Prolog, yang menyebabkan sistem menghasilkan banyak hasil:
-? - parent_of (Parent, Child).
- Ayah = bobby
- Anak = Carlos
- Ayah = Carlos
- Anak = doris
Seperti yang telah terlihat, pemrograman logika tidak memerlukan informasi bahwa alissa atau bobby adalah orang untuk mendapatkan pengetahuan tentang mereka. Nyatanya, tidak perlu menunjukkan bahwa ada konsep yang disebut person.
Dalam kebanyakan bahasa pemrograman non-logis, Anda harus mendefinisikan konsep-konsep ini terlebih dahulu sebelum Anda dapat menulis program yang memproses informasi tentang orang.
Referensi
- Deep AI (2020). Pemrograman Logika. Diambil dari: deepai.org.
- Wikiversity (2020). Teori Bahasa Pemrograman / Pemrograman Logika. Diambil dari: en.wikiversity.org.
- Imperial College London (2006). Pemrograman Logika. Diambil dari: doc.ic.ac.uk.
- Jia-Huai You (2020). Pengantar Pemrograman Logika. Universitas Alberta. Diambil dari: eng.ucy.ac.cy.
- C2 Wiki (2020). Pemrograman Logika. Diambil dari: wiki.c2.com.