it-swarm.asia

Prolog neden AI programlama için iyidir?

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

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

Biraz araştırıyorum ve tekrar tekrar gördüğüm temel argüman, düşüncelerin mantık içinde sunulduğu ve Prolog'un mantıklı bir programlama dili olduğu, Prolog'un karar mekanizmalarını kolayca oluşturabileceği ya da bu konuda bir şey olduğu.

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

26
2rs2ts

Önsözden Yapay Zeka için Prolog Programlama :

Prolog, desen eşleştirme, ağaç tabanlı veri yapılandırması ve otomatik geri izleme de dahil olmak üzere küçük bir dizi temel mekanizmanın etrafında merkezlenmiş 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 bunlar arasındaki ilişkileri içeren sorunlara çok uygundur. Örneğin, mavi küre yeşilin arkasında olduğu gibi nesneler arasındaki mekansal ilişkileri ifade etmek Prolog'da kolay bir alıştırmadır. 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 mekansal ilişkiler ve bunların tutarlılığı hakkında akıl yürütebilir. genel kurala saygı. Bunun gibi özellikler Prolog'u yapay zeka (AI) ve genel olarak sayısal olmayan programlama için güçlü bir dil yapar. Diğer standart dillerdeki uygulamaları onlarca sindirilemeyen kod sayfası 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) okunabilir ve (yarı) doğal bir şekilde ifade etmek için harika bir dildir. Diyelim ki Lisps'de eşdeğer kod, niyetlerinde daha ayrıntılı ve daha şaşkın olma eğilimindedir, çünkü ilişkilerde bağırsaklara ve yönetim ve muhakemenin tesisatına çok zaman harcarsınız.

Lisans programımda Prolog'u uzman bir sistem uygulamak için kullanan AI dersine giriş yaptım.

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

Örneğin, dışarı çıktığınızda yanınıza şemsiye almanız gerekip gerekmediğini söyleyen bir uzman sistem hayal edebilirsiniz; ona bir dizi veri (bulutlu olup olmadığı, önceki gün yağmur yağması, hangi mevsim olduğu vb.) verirsiniz ve uzman sistem size bir cevap vermek için kurallara uyur (bulutlu ve yağmur yağarsa bir gün önce, o zaman bir şemsiye almalısınız).

Prolog'un doğası, kuralları ve gerçekleri uygulamayı (Prolog'da her şey bir kural veya gerçektir) ve daha sonra bu kurallar ve gerçeklerden binlerceiniz olsa bile "veritabanını sorgula" (sorunuz için bir cevap alın) uygulamasını çok kolay hale getirir .

Konuyla ilgileniyorsanız, bir Prolog yorumlayıcısı yüklemenizi ve bunu hissetmek için çok temel bir uzman sistem uygulamaya çalışmanızı öneririm - bu görevler için neden bu kadar güçlü bir araç olduğunu anlamanıza yardımcı olabilir.

26
Bitgarden

Aradaki fark, bir program yazmak için SQL veritabanı sorguları için, örneğin C'ye yazmak gibi bir şeydir. SQL'de ne istediğinizi söylersiniz - ancak (doğrudan) türetmek için kullanılan algoritmayı belirtmeniz gerekmez.

Bir Prolog programına bazen veritabanı denir, ancak gerçekten bir mantık ifadeleri kümesidir. Değerlendirme mekanizması sorguyu alır ve doğru çözümleri bulmak için bir arama yaparak yüklem mantığı ifadelerine dayanarak yerine koyar. Gereken tüm arama algoritmaları (bir SQL sorgusundan çok daha fazla dahil) Prolog derleyicisine yerleştirilmiştir.

Bir SQL sorgusu, aynı mantığı C'ye saf bir şekilde uygularsanız, döngüden ve if/else koşullarından daha fazlasına ihtiyaç duymazdı.

C'de uygulanan bir Prolog sorgusu, (en azından) birleşim bulma tekniğini kullanarak bir geri izleme aramasına ihtiyaç duyacaktır. Ve bu yine saf bir çözüm.

Belirli bir AI programlama, 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 işi yapmak için özel olarak yazıldı.

Tahmin mantığı, bu AI sorunu stilini tanımlamanın doğal bir yaklaşımdır ve Prolog'da, bu tanıma sahip olduğunuzda, tüm bu garip arama algoritmalarını uygulamak zorunda kalmadan doğrudan çalıştırabilirsiniz.

17
Steve314

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

Özellikle uzman sistemler için iyi, tıbbi bir semt tanısı yazdım.

Bana açıklanma şekli, LISP'nin bazı ülkelerde daha fazla, diğerlerinde Prolog'un kullanılma eğiliminde olmasıydı.

En iyisi açısından, LISP'yi sadece Teorik Bilgisayar Bilimi modülünde lambda hesabı yaptığımda kısaca ele aldım, bu yüzden Prolog'a karşı önyargılıyım.

Yanıtlar 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.

4
DazManCat