logo

Proloog | Een introductie


Introductie:

Proloog is een logische programmering taal. Het speelt een belangrijke rol in de kunstmatige intelligentie. In tegenstelling tot veel andere programmeertalen is Prolog in de eerste plaats bedoeld als declaratieve programmeertaal. In proloog wordt logica uitgedrukt als relaties (ook wel Feiten en Regels genoemd). Het kernhart van proloog ligt in de logica Toegepast worden. Formulering of berekening wordt uitgevoerd door een query uit te voeren op deze relaties.



Installatie onder Linux:

Open een terminal (Ctrl+Alt+T) en typ:

 sudo apt-get install swi-prolog>

Syntaxis en basisvelden:



In de proloog verklaren wij enkele feiten. Deze feiten vormen de kennisbasis van het systeem. We kunnen de Knowledge Base raadplegen. We krijgen een bevestigende uitvoer als onze vraag al in de Knowledge Base staat of wordt geïmpliceerd door de Knowledge Base, anders krijgen we een negatieve uitvoer. De Knowledge Base kan dus worden beschouwd als vergelijkbaar met een database, waartegen we vragen kunnen stellen. Prolog-feiten worden uitgedrukt in een duidelijk patroon. Feiten bevatten entiteiten en hun relatie. Entiteiten worden tussen haakjes geschreven, gescheiden door een komma (,). Hun relatie wordt aan het begin en buiten de haakjes uitgedrukt. Elk feit/regel eindigt met een punt (.). Een typisch proloogfeit luidt dus als volgt:

 Format : relation(entity1, entity2, ....k'th entity). Example : friends(raju, mahesh). singer(sonu). odd_number(5). Explanation : These facts can be interpreted as : raju and mahesh are friends. sonu is a singer. 5 is an odd number.>

Belangrijkste kenmerken:
1. Eenwording: Het basisidee is: kunnen de gegeven termen dezelfde structuur vertegenwoordigen.
2. Terugkeren: Wanneer een taak mislukt, gaat prolog achteruit en probeert de vorige taak uit te voeren.
3. Recursie: Recursie is de basis voor elke zoekopdracht in het programma.

Query's uitvoeren:
Een typische proloogvraag kan als volgt worden gesteld:



 Query 1 : ?- singer(sonu). Output : Yes. Explanation : As our knowledge base contains the above fact, so output was 'Yes', otherwise it would have been 'No'. Query 2 : ?- odd_number(7). Output : No. Explanation : As our knowledge base does not contain the above fact, so output was 'No'.>

Voordelen:
1. Eenvoudig te bouwen database. Vereist niet veel programmeerinspanning.
2. Patroonaanpassing is eenvoudig. Zoeken is gebaseerd op recursie.
3. Het heeft ingebouwde lijstafhandeling. Maakt het gemakkelijker om met elk algoritme met lijsten te spelen.

Nadelen:
1. LISP (een andere logische programmeertaal) domineert prolog wat betreft I/O-functies.
2. Soms is input en output niet eenvoudig.

Toepassingen:

Prolog wordt veel gebruikt in kunstmatige intelligentie (AI). Prolog wordt ook gebruikt voor het matchen van patronen via het ontleden van bomen in natuurlijke taal.

Referentie 1: https://en.wikipedia.org/wiki/Prolog

Referentie 2: http://www.swi-prolog.org/