Logiska programmeringsegenskaper och exempel

Logiska programmeringsegenskaper och exempel

De Logisk programmering Det är ett programmeringsparadigm som använder logiska kretsar istället för endast matematiska funktioner för att kontrollera hur fakta och regler anges.

I stället för ett noggrant strukturerat kontrollflöde som dikterar när man ska utföra och hur man utvärderar samtal till funktioner eller andra instruktioner, skrivs de logiska reglerna för programmet som logiksklausuler eller predikat.

Exempel på logisk programmering i Prolog. Källa: av Kuldeepsheoran1 - skärmdump, CC av -SA 3.0, Wikimedia Commons

Detta tillvägagångssätt, som ofta används i genetisk och evolutionär programmering, berättar i allmänhet en modell vilket mål att uppnå, istället för att uppnå det.

Varje regel innehåller en rubrik och en kropp med en formaliserad logik istället för en körbar matematisk funktion. Till exempel "och det är sant (rubriken): Om C1, C2 och C3 är sanna (kropp)". Fakta eller resultat uttrycks utan en kropp, till exempel "och är sant".

Men med vissa programmeringsspråk som Prolog. Till exempel "för att lösa och lägga till C1, C2 och C3".

[TOC]

Egenskaper för logisk programmering

Logisk programmering skiljer sig väsentligt från de andra befintliga programmeringsstrategierna. I stället för instruktioner till en dator med programmet, är förhållanden mellan objekt etablerade. På detta sätt kan datorn resonera dessa relationer och därmed nå logiska lösningar.

Inom ett logiskt program finns det två huvuduppsättningar av kod: fakta och regler. Reglerna gäller för fakta för att få kunskap om miljön.

Sanning och logiskt avdrag

Logiska program kan dechiffreras genom två viktiga begrepp: sanning och logiskt avdrag. Sanningen kommer om beräkningen i programmet är sant eller inte, under implementeringen av programsymbolerna. Logiskt avdrag avgör om en logisk klausul är en följd av programmet.

Kan tjäna dig: typer av applikationsprogramvara

Dessa instruktioner kommer alltid att tolkas som logiska meningar och klausuler, vilket resultatet av att dess utförande är en logisk konsekvens av beräkningarna som innehåller.

Första ordningslogik

Det är en gren av propositionell logik. Tänk på om objekt är sanna eller falska ur ett partiellt perspektiv av världen, kallad domän. Logisk programmering är baserad på en generalisering av första ordningen logik.

Denna logik består av syntax och semantik. Syntax är det formella språket som används för att uttrycka koncept. Å andra sidan indikerar semantiken för de första ordningsformikformlerna hur man bestämmer det verkliga värdet på någon formel.

Denna logik är baserad på ett alfabet och ett första ordningsspråk, utöver en uppsättning axiomer och inferensregler.

Klausulform

Det är en delmängd av första ordningen logik. Den har en normaliserad form där en mening definieras av ett universellt prefix eller kedja av universella kvantifierare och en fri uppsättning klausulkvantifierare.

När du begär ett samråd från programmet kommer kroppen till klausulen vars rubrik kan sammanfalla. Detta är detsamma som att tillämpa en inferensregel i logiken.

Som en slutsats väljs två klausuler som har som en egenskap att den ena innehåller ett X -dilemma (en positiv bokstavlig) och den andra innehåller ett dilemma ¬x (en negativ bokstavlig). Dessa dilemma är kända som komplementära.

Från dessa två initiala klausuler konstrueras en ny resolutiv klausul med alla bokstäver, utom de kompletterande.

Artificiell intelligens

Logisk programmering är en metod som används för att söka datorer för att härleda, eftersom det är användbart att representera kunskap. Logik används för att representera kunskap och slutsats för att hantera den.

Kan tjäna dig: nticx

Logiken som används för att representera kunskap är klausulformen. Det används eftersom den första ordningen logik är väl förstått och kan representera alla beräkningsproblem.

Prolog är ett programmeringsspråk som är baserat på logiska programmeringsidéer. Idén med Prolog är att få logik att verka ett programmeringsspråk.

Logiska programmeringsexempel

Exempel 1

- Fakta: Rubí är en katt.

- Regel: Alla katter har tänder.

- Konsultation: Rubí har tänder?

- Slutsats: Ja.

Regeln "Alla katter har tänder" kan tillämpas på Rubí, eftersom det finns ett faktum som säger "Rubí är en katt". Detta exempel är inte skrivet med någon syntax av ett riktigt programmeringsspråk.

Exempel 2

Detta exempel kan skrivas i Prolog, för att vara ett av de mest kända logiska programmeringsspråk:

- Kvinna (Alissa).

- Man (Bobby).

- Man (Carlos).

- Kvinna (Doris).

- Son_ (Doris, Carlos).

- Son_ (Carlos, Bobby).

- Son_ (Doris, Alissa).

- Fader_ (f, p):- hane (f), son_ (p, f).

Detta program är svårt att läsa, eftersom Prolog är anmärkningsvärt annorlunda än andra språk. Varje komponent i koden som liknar "kvinnlig (alissa)." det är fakta.

En regel är "fader_ (f, p):- hane (f), son_ (p, f)". Symbolen ":-" kan läsas som "det är sant om". Kapitalbokstäverna betyder att variablerna kan tillämpas på alla objekt, så F kan betyda Carlos, Doris, Alissa eller Bobby. Den här koden kan översättas som:

- Alissa är en kvinna.

- Bobby är en man.

- Carlos är en man.

- Doris är en kvinna.

Det kan tjäna dig: utgångsenheter: egenskaper, vad är användningen, typerna, exempel

- Doris är Carlos dotter.

- Carlos är son till Bobby.

- Doris är Alissas dotter.

- "F är far till P" är sant om F är en man och om P är son till F.

Samråd

Anta att du vill konsultera programmet för mer information. Du kan försöka be att du kommer från vem som är far Bobby med: ?- Fader_ (Bobby, x). Systemet kommer att ange följande svar: x = Carlos.

I detta fall händer en relation där en av dess värden är en variabel. Vad han gjorde var att tillämpa olika objekt på detta förhållande tills en av dem var logiskt solid.

Carlos enda far är Bobby, och Bobby är en man. Detta tillfredsställde regeln.". När X är lika med "Carlos" är logiken solid.

Andra konsultationer

Andra mer allmänna konsultationer kan göras till Prolog, vilket gör att systemet genererar flera resultat:

- ?- Fader_ (far, barn).

- Fader = Bobby

- Barn = Carlos

- Fader = Carlos

- Barn = Doris

Som man kan observera kräver logisk programmering inte information om att Alissa eller Bobby är människor för att få kunskap om dem. I själva verket är det inte nödvändigt att indikera att det finns ett koncept som heter person.

På de flesta icke -logiska programmeringsspråk bör dessa koncept först definieras innan de skriver program som bearbetar information om människor.

Referenser

  1. Djup AI (2020). Logikprogrammering. Taget från: Deepai.org.
  2. Wikiversity (2020). Teori om programmeringsspråk/logikprogrammering. Taget från: i.Wikiversitet.org.
  3. Imperial College London (2006). Logikprogrammering. Taget från: doc.Ic.Växelström.Storbritannien.
  4. Jia-huai du (2020). Introduktion till logikprogrammmmm. Alberta universitet. Taget från: Eng.Ucy.Växelström.Cy.
  5. C2 Wiki (2020). Logikprogrammering. Taget från: wiki.C2.com.