logo

Prolog | En introduktion


Introduktion:

Prolog är en logisk programmering språk. Det har en viktig roll i artificiell intelligens. Till skillnad från många andra programmeringsspråk är Prolog främst tänkt som ett deklarativt programmeringsspråk. I prolog uttrycks logik som relationer (kallas som fakta och regler). Kärnan i prolog ligger på logik tillämpas. Formulering eller beräkning utförs genom att köra en fråga över dessa relationer.



Installation i Linux:

Öppna en terminal (Ctrl+Alt+T) och typ:

 sudo apt-get install swi-prolog>

Syntax och grundläggande fält:



I prolog förklarar vi några fakta. Dessa fakta utgör systemets kunskapsbas. Vi kan fråga mot kunskapsbasen. Vi får utdata som jakande om vår fråga redan finns i kunskapsbasen eller om den antyds av Knowledge Base, annars får vi utdata som negativ. Så Knowledge Base kan anses likna en databas, mot vilken vi kan fråga. Prologfakta uttrycks i ett bestämt mönster. Fakta innehåller entiteter och deras relation. Entiteter skrivs inom parentes avgränsade med kommatecken (, ). Deras relation uttrycks i början och utanför parentesen. Varje fakta/regel slutar med en punkt (.). Så, ett typiskt prologfaktum lyder som följer:

 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.>

Nyckelfunktioner :
1. Sammanslagning: Grundtanken är, kan de givna termerna representera samma struktur.
2. Backtracking: När en uppgift misslyckas, spårar prolog bakåt och försöker uppfylla tidigare uppgift.
3. Rekursion: Rekursion är grunden för alla sökningar i programmet.

Körande frågor:
En typisk prolog-fråga kan ställas som:



 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'.>

Fördelar:
1. Lätt att bygga databas. Behöver inte mycket programmeringsansträngning.
2. Mönstermatchning är lätt. Sökningen är rekursionsbaserad.
3. Den har inbyggd listhantering. Gör det lättare att spela med alla algoritmer som involverar listor.

Nackdelar:
1. LISP (ett annat logiskt programmeringsspråk) dominerar över prolog med avseende på I/O-funktioner.
2. Ibland är input och output inte lätt.

Applikationer:

Prolog används mycket inom artificiell intelligens (AI). Prolog används också för mönstermatchning över naturliga språkanalysträd.

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

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