Prolog AI programlama için neden iyidir? [kapalı]


25

AI programlama için kullanılan programlama dillerini araştırıyorum. LISP'nin üniversitemde AI programlama dili olarak öğretildiğini biliyorum ama Prolog nadiren öyle. Prolog'a düşkünüm ama bir AI programcısı değilim, bu yüzden Prolog'un LISP / Scheme'den neden daha iyi olduğunu kendim için yargılamaya uygun olduğumu sanmıyorum. Programcıların bu konuda herhangi bir girişi olup olmadığını merak ediyordum.

Prolog'un AI programlama için daha yararlı olacağını nasıl iddia edersiniz?

Bunu biraz araştırıyorum ve tekrar tekrar gördüğüm temel argüman, düşüncelerin mantıkta sunulduğu ve Prolog'un mantıklı bir programlama dili olduğu için, Prolog karar makinelerini kolayca oluşturabilir ya da bunun için bir şey yapabilir.

AI'daki Prolog için söylenebilecek başka bir şey var mı?


1
Lisp'te Prolog derleyici / tercüman yazmak çok fazla bir iş değil. Paul Graham On Lisp'te bir örneğe sahiptir .
Larry Coleman,

Sınıf arkadaşlarımdan biri de bunu bana söylüyordu. LISP'nin sembolik manipülasyonunun Prolog'u yeniden yaratmama izin vermesi gerçekten ilginçti. Bir kenara güzel için teşekkürler!
02'de

4
@Larry Coleman: Lisp'te saf bir Prolog derleyicisi / tercüman yazmak için çok fazla iş yok. Etkin ve tamamen işlevsel bir tanesini yapmak, herhangi bir dilde önemsiz değildir.
SADECE DOĞRUDAN GELİŞİM

Yanıtlar:


19

Yapay Zeka için Prolog Programlamadan Önsöz'den :

Prolog, desen eşleştirme, ağaç tabanlı veri yapılandırma ve otomatik geri izleme dahil olmak üzere küçük bir temel mekanizma kümesi etrafında toplanmış bir programlama dilidir. Bu küçük set şaşırtıcı derecede güçlü ve esnek bir programlama çerçevesi oluşturur. Prolog, özellikle nesneleri (özellikle de yapılandırılmış nesneleri) ve aralarındaki ilişkileri içeren problemler için çok uygundur. Örneğin, Prolog'da mavi küre yeşilin arkasında olduğu gibi nesneler arasındaki mekansal ilişkileri ifade etmek kolay bir egzersizdir. Daha genel bir kural belirtmek de kolaydır: X nesnesi gözlemciye Y nesnesinden daha yakınsa ve Y Z'den daha yakınsa, X Z'den daha yakın olmalıdır. Prolog artık mekânsal ilişkilere neden olabilir genel kurala saygı duymak. Bunun gibi özellikleri Prolog'u yapay zeka (AI) ve sayısal olmayan programlama için güçlü bir dil haline getirir. Diğer standart dillerde uygulanması onlarca sayfa sindirilemez kod alan, sembolik hesaplamanın iyi bilinen örnekleri vardır. Prolog'da aynı algoritmalar uygulandığında, sonuç bir sayfaya kolayca uyan, kristal netliğinde bir programdı.

Temel olarak, çeşitli ilişkileri ve hedefleri özlü, (çoğunlukla) okunaklı ve (yarı) doğal bir şekilde ifade etmek için harika bir dildir. Diyelim ki eşdeğer kod, Lisps'in niyetinde daha ayrıntılı ve daha karışık olma eğilimindedir, çünkü ilişkilerde ve yönetimde akıl yürütme konusunda çok fazla zaman harcamaktasınız.


Buradaki küçük eklemem, Prolog'un gerçekleri ve daha sonra bu gerçekleri temel alan kuralları bildirmenizi sağlamasıdır . Kurallarınız daha sonra Prolog tarafından cevapları mantıksal olarak çıkartarak diğer soruları gerekçelendirmek ve cevaplamak için kullanılabilir . Örneğin, bir gerçek A'nın B'nin bir atası olduğunu belirtirken, bir başka gerçek B'nin C'nin bir atası olduğunu belirtirse, Prolog, onu kontrol etmek için bir algoritma yazmak zorunda kalmadan A'nın C'nin atası olması gerektiğine karar verebilir.
code_dredd

25

Prolog'u uzman bir sistem uygulamamız için kullanan, benim lisans programımda AI kursuna bir giriş yaptım.

Uzman bir sistem, çözümü çok sayıda kural ve değişkene bağlı olan çok spesifik bir problemi çözmek için kullanılan bir yazılım parçasıdır.

Örneğin, dışarı çıkıp çıkmadığınızda yanınıza şemsiye almanız gerektiğini söyleyen bir uzmanlık sistemi hayal edebilirsiniz; Bir dizi veri (bulutlu olup olmadığı, bir gün önce yağmur yağıp yağmadığı, hangi mevsimde vs.) verip, uzman sistemin size cevap vermesi için kurallar uygular (bulutlu ve yağmur yağarsa bir gün önce, o zaman bir şemsiye almalı).

Prolog'un doğası, kuralları ve gerçekleri (Prolog'da, her şey bir kural ya da gerçek) ve daha sonra "veritabanını sorgula" (sorunuzun cevabını alın), bu kural ve gerçeklerden binlerce tane olsa bile, uygulamayı çok basit hale getirir. .

Konuyla ilgileniyorsanız, bir Prolog tercümanı kurmanızı ve bunun için bir fikir edinmek için çok temel bir uzman sistemi uygulamaya çalışmanızı tavsiye ederim - bu işler için neden bu kadar güçlü bir araç olduğunu anlamanıza yardımcı olabilir.


Araştırmamda Prolog'un uzman sistemlerin uygulanmasını kolaylaştırdığını okudum. Bunu bir açıklama ile yedeklediğiniz için teşekkürler :)
2rs2ts

16

Aradaki fark, C'yi bir program yazmak yerine veritabanı sorguları için SQL kullanmak gibi bir şeydir. SQL'de ne istediğinizi söylersiniz - ama (doğrudan) onu türetmek için kullanılan algoritmayı belirtmek zorunda değilsiniz.

Prolog programına bazen veritabanı denir, ancak bu gerçekten bir takım mantık ifadeleri kümesidir. Değerlendirme mekanizması sorguyu alır ve doğru mantık ifadelerini bulmak için arama yaparak mantıklı ifadelere dayanarak yerine geçer. Gerekli olan tüm arama algoritmaları (bir SQL sorgusundan çok daha fazlası dahil) Prolog derleyicisine yerleştirilmiştir.

Bir SQL sorgusu, aynı mantığı C de saf bir şekilde uygularsanız, döngü ve if / else koşullu olmaktan çok daha fazlasına ihtiyaç duymazdı.

C'de uygulanan bir Prolog sorgusu (en azından) union-find tekniğini kullanarak geriye dönük bir araştırmaya ihtiyaç duyacaktır. Ve bu, yine, saf bir çözümdür.

Belirli bir AI programlama türü, Prolog'un yaptığı birçok arama türünü içerir. Şaşırtıcı olmayan bir şekilde, gerçekten - aslında AI programlama Lisp veya başka bir dilde yapıldı, ancak Prolog özellikle işi yapmak için yazılmıştı.

Tahmin mantığı, AI probleminin bu tarzını tanımlamak için doğal bir yaklaşımdır ve Prolog'da, bu tanımlamaya sahip olduğunuzda, tüm bu tuhaf arama algoritmalarını uygulamak zorunda kalmadan, doğrudan çalıştırabilirsiniz.


3

Üniversitede 2 Prolog modülü aldım ve dilde geliştirilmekten çok zevk aldım.

Özellikle uzman sistemler için iyidir, tıbbi bir semptom teşhisi yazdım.

Bana açıklanma şekli, Lisp’in bazı ülkelerde daha fazla, diğerlerinde Prolog’da kullanılması eğilimindeydi.

Hangisi en iyisi olursa olsun, Lisp'u yalnızca Teorik Bilgisayar Bilimleri modülünde lambda matematiği yaptığım zaman kısaca anlattım, bu yüzden Prolog'a önyargılıyım.

Cevaplar elde etmek için kurallar ve gerçeklerle başa çıkmak için bir uygulama geliştiriyorsanız Prolog çok iyidir ve doğal olarak geri izlemeyi destekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.