Mengapa Prolog bagus untuk pemrograman AI? [Tutup]

25

Saya sedang meneliti bahasa pemrograman yang digunakan untuk pemrograman AI. Saya tahu bahwa LISP diajarkan sebagai bahasa pemrograman AI di universitas saya, tetapi Prolog jarang melakukannya. Saya agak suka Prolog, tapi saya bukan programmer AI jadi saya tidak berpikir saya memenuhi syarat untuk menilai sendiri mengapa Prolog lebih baik daripada LISP / Skema. Saya bertanya-tanya apakah Pemrogram memiliki masukan tentang topik ini.

Bagaimana Anda bisa berpendapat bahwa Prolog akan lebih berguna untuk pemrograman AI?

Saya telah merisetnya sedikit, dan argumen dasar yang sering saya lihat adalah bahwa sejak pemikiran disajikan dalam logika, dan Prolog adalah bahasa pemrograman yang logis, Prolog dapat membuat mesin keputusan dengan mudah, atau sesuatu untuk efek itu.

Apakah ada hal lain yang dapat dikatakan untuk Prolog di AI?

2rs2ts
sumber
1
Tidak banyak pekerjaan untuk menulis kompiler / juru bahasa Prolog di Lisp. Paul Graham memiliki contoh dalam On Lisp .
Larry Coleman
Salah satu teman sekelas saya mengatakan ini juga kepada saya. Saya merasa sangat menarik bahwa manipulasi simbolik LISP akan membuat saya membuat kembali Prolog. Terima kasih atas kesampingnya!
2rs2ts
4
@Larry Coleman: Tidak banyak pekerjaan untuk menulis kompiler / juru bahasa Prolog yang naif dalam Lisp. Membuat bahasa yang efisien dan berfungsi penuh tidak mudah dalam bahasa apa pun.
HANYA SAYA PENDAPAT benar

Jawaban:

19

Dari kata pengantar hingga Prolog Programming for Artificial Intelligence :

Prolog adalah bahasa pemrograman yang berpusat di sekitar seperangkat mekanisme dasar, termasuk pencocokan pola, penataan data berbasis pohon, dan pengulangan otomatis. Set kecil ini merupakan kerangka kerja pemrograman yang sangat kuat dan fleksibel. Prolog sangat cocok untuk masalah yang melibatkan objek - khususnya objek terstruktur - dan hubungan di antara mereka. Sebagai contoh, ini adalah latihan yang mudah di Prolog untuk mengekspresikan hubungan spasial antara objek, seperti bola biru di belakang yang hijau. Juga mudah untuk menyatakan aturan yang lebih umum: jika objek X lebih dekat ke pengamat daripada objek Y, dan Y lebih dekat dari Z, maka X harus lebih dekat dari Z. Prolog sekarang dapat menjelaskan hubungan spasial dan konsistensinya dengan menghormati aturan umum. Fitur seperti ini menjadikan Prolog bahasa yang kuat untuk kecerdasan buatan (AI) dan pemrograman non-numerik secara umum. Ada beberapa contoh komputasi simbolik yang terkenal yang implementasinya dalam bahasa standar lainnya membutuhkan puluhan halaman kode yang tidak dapat dicerna. Ketika algoritma yang sama diimplementasikan dalam Prolog, hasilnya adalah program sejernih kristal yang mudah dipasang pada satu halaman.

Pada dasarnya itu adalah bahasa yang bagus untuk mengekspresikan berbagai hubungan dan tujuan dengan cara yang ringkas, (kebanyakan-) dapat dibaca dan (semi-) alami. Kode Setara dalam, katakanlah, Lisps cenderung lebih bertele-tele dan lebih membingungkan dalam maksudnya karena Anda menghabiskan banyak waktu pada nyali dan saluran untuk mengelola dan bernalar tentang hubungan.

HANYA PENDAPAT SAYA yang benar
sumber
Tambahan kecil saya di sini adalah bahwa Prolog memungkinkan Anda untuk menyatakan fakta , dan kemudian memerintah berdasarkan fakta tersebut. Aturan Anda kemudian dapat digunakan oleh Prolog untuk bernalar dan menjawab pertanyaan lain dengan secara logis menyimpulkan jawabannya. Misalnya, jika suatu fakta menyatakan bahwa A adalah leluhur B dan fakta lain menyatakan bahwa B adalah leluhur C, maka Prolog dapat menyimpulkan bahwa A harus menjadi leluhur C tanpa Anda harus menulis algoritma untuk memeriksanya.
code_dredd
25

Saya mengambil pengantar kursus AI di undergrad saya yang menggunakan Prolog agar kami menerapkan sistem pakar.

Sistem pakar adalah perangkat lunak yang digunakan untuk memecahkan masalah yang sangat spesifik yang solusinya bergantung pada sejumlah besar aturan dan variabel.

Misalnya, Anda dapat membayangkan sistem pakar yang memberi tahu Anda apakah Anda harus membawa payung saat Anda pergi atau tidak; Anda akan memberikannya satu set data (apakah berawan, hujan turun sehari sebelumnya, musim apa, dll.) dan sistem pakar akan melalui aturan untuk memberi Anda jawaban (jika mendung dan hujan turun Sehari sebelumnya, maka Anda harus membawa payung).

Sifat Prolog membuatnya sangat mudah untuk mengimplementasikan aturan dan fakta (dalam Prolog, semuanya adalah aturan atau fakta), dan kemudian "query database" (dapatkan jawaban untuk pertanyaan Anda), bahkan ketika Anda memiliki ribuan aturan dan fakta ini .

Jika Anda tertarik dengan topik ini, saya sarankan Anda menginstal juru bahasa Prolog dan mencoba menerapkan sistem pakar yang sangat mendasar untuk merasakannya - mungkin membantu Anda memahami mengapa alat ini sangat ampuh untuk tugas-tugas ini.

Bitgarden
sumber
Saya membaca dalam penelitian saya bahwa Prolog membuat sistem pakar mudah diimplementasikan. Terima kasih telah mendukungnya dengan beberapa penjelasan :)
2rs2ts
16

Perbedaannya sedikit seperti menggunakan SQL untuk query database daripada menulis sebuah program, katakanlah, C. Dalam SQL, Anda mengatakan apa yang Anda inginkan - tetapi Anda tidak (secara langsung) harus menentukan algoritma yang digunakan untuk menurunkannya.

Program Prolog kadang-kadang disebut sebagai basis data, tetapi itu benar-benar seperangkat pernyataan logika predikat. Mekanisme evaluasi mengambil permintaan dan melakukan penggantian berdasarkan pernyataan logika predikat, melakukan pencarian untuk menemukan solusi yang benar. Semua algoritma pencarian yang dibutuhkan (lebih banyak terlibat daripada query SQL) dibangun ke dalam kompiler Prolog.

Query SQL, jika Anda menerapkan logika yang sama secara naif dalam C, tidak akan membutuhkan lebih banyak daripada perulangan dan jika / jika kondisional.

Kueri Prolog, diimplementasikan dalam C, akan membutuhkan (setidaknya) pencarian mundur menggunakan teknik menemukan-serikat. Dan itu, sekali lagi, adalah solusi naif.

Jenis pemrograman AI tertentu melibatkan banyak jenis pencarian yang dilakukan Prolog. Tidak mengherankan, sebenarnya - awalnya pemrograman AI dilakukan dalam Lisp atau bahasa lain, tetapi Prolog ditulis khusus untuk melakukan pekerjaan itu.

Logika predikat adalah pendekatan alami untuk mendefinisikan gaya masalah AI dan, dalam Prolog, setelah Anda memiliki definisi itu, Anda dapat menjalankannya secara langsung, tanpa harus menerapkan semua algoritma pencarian yang canggung itu.

Steve314
sumber
3

Saya mengambil 2 modul Prolog di Universitas dan sangat menikmati pengembangan bahasa.

Sangat baik untuk sistem pakar, saya menulis diagnosis gejala medis.

Cara itu dijelaskan kepada saya adalah bahwa Lisp cenderung lebih banyak digunakan di negara-negara tertentu dan Prolog di negara-negara lain.

Dalam hal yang terbaik, saya hanya membahas singkat Lisp ketika saya melakukan kalkulus lambda dalam modul Theoretical Computer Science jadi saya bias terhadap Prolog.

Jika Anda mengembangkan aplikasi untuk berurusan dengan aturan dan fakta untuk mendapatkan jawaban, Prolog sangat bagus dan secara alami mendukung pengulangan.

DazManCat
sumber