Logiske programmeringsfunktioner og eksempler

1687
Alexander Pearson
Logiske programmeringsfunktioner og eksempler

Det logisk programmering er et programmeringsparadigme, der bruger logiske kredsløb i stedet for bare matematiske funktioner til at kontrollere, hvordan fakta og regler er angivet.

I stedet for en nøje struktureret strøm af kontrol, der dikterer, hvornår de skal udføres, og hvordan man evaluerer funktionsopkald eller andre instruktioner, skrives programmets logiske regler som klausuler eller logiske forudsigelser..

Eksempler på logisk programmering i Prolog. Kilde: Af Kuldeepsheoran1 - skærmbillede, CC BY-SA 3.0, wikimedia commons

Denne tilgang, der ofte bruges i evolutionær og genetisk programmering, fortæller generelt en model, hvilket mål man skal nå, snarere end hvordan man opnår det..

Hver regel indeholder et overskrift og en krop med en formaliseret logik snarere end en eksekverbar matematisk funktion. For eksempel "Og er sandt (header): hvis C1, C2 og C3 er sande (body)." Fakta eller resultater udtrykkes uden en krop, såsom "Og det er sandt".

Men med nogle programmeringssprog som Prolog kan vigtig programmering også medtages for at fortælle modellen, hvordan man løser visse problemer. For eksempel "For at løse Y skal du tilføje C1, C2 og C3".

Artikelindeks

  • 1 Karakteristik ved logisk programmering
    • 1.1 Sandhed og logisk deduktion
    • 1.2 Førsteordens logik
    • 1.3 Klausulformular
    • 1.4 Kunstig intelligens
  • 2 Eksempler på logisk programmering
    • 2.1 Eksempel 1
    • 2.2 Eksempel 2
  • 3 Referencer

Karakteristika ved logisk programmering

Logisk programmering er væsentligt forskellig fra de andre eksisterende programmeringsstrategier. I stedet for at give instruktioner til en computer med programmet etableres forholdet mellem objekter. På denne måde kan computeren begrunde disse forhold og dermed nå logiske løsninger.

Inden for et logikprogram er der to hovedsæt med kode: fakta og regler. Regler anvendes på fakta for at få viden om miljøet.

Sandhed og logisk deduktion

Logiske programmer kan dechiffreres gennem to vigtige begreber: sandhed og logisk deduktion. Sandheden kommer ud, hvis beregningen i programmet er sand eller ej under implementeringen af ​​programmets symboler. Logisk fradrag bestemmer, om en logisk klausul er en konsekvens af programmet.

Disse instruktioner fortolkes altid som udsagn og logiske klausuler, og resultatet af deres udførelse er en logisk konsekvens af de beregninger, den indeholder..

Første ordens logik

Det er et udløb af propositionelogik. Overvej om objekter er sande eller falske set fra et delvis verdensperspektiv, kaldet et domæne. Logisk programmering er baseret på en generalisering af første ordens logik.

Denne logik består af syntaks og semantik. Syntaks er det formelle sprog, der bruges til at udtrykke begreber. På den anden side angiver semantikken for førsteordens logiske formler, hvordan man bestemmer den sande værdi af en formel.

Denne logik er baseret på et alfabet og et første ordens sprog samt et sæt aksiomer og slutningsregler..

Klausulformular

Det er en delmængde af førsteordens logik. Det har en normaliseret form, hvor en erklæring er defineret af et universelt præfiks eller kæde af universelle kvantificeringsanordninger, og et frit sæt kvantificeringsmidler fra klausulen.

Når du anmoder om en forespørgsel til programmet, overvejes kropsdelen af ​​klausulen, hvis overskrift kan falde sammen. Dette er det samme som at anvende en slutningsregel i logik.

Som et trin i slutningen vælges to klausuler, der har som egenskab, at den ene indeholder en disjunktiv X (en positiv bogstavelig) og den anden indeholder en disjunktiv ¬X (en negativ bogstavelig). Disse kompromiser er kendt som komplementære.

Fra disse to indledende klausuler bygges en ny resolut klausul, der bruger alle bogstaverne undtagen de komplementære..

Kunstig intelligens

Logisk programmering er en metode, der bruges til at få computere til at udlede, fordi det er nyttigt at repræsentere viden. Logik bruges til at repræsentere viden og slutning til at håndtere den.

Den logik, der bruges til at repræsentere viden, er klausulformen. Den bruges, fordi førsteordens logik er godt forstået og i stand til at repræsentere alle beregningsproblemer.

Prolog er et programmeringssprog, der er baseret på ideerne til logisk programmering. Ideen med Prolog er at få logik til at ligne et programmeringssprog.

Logiske programmeringseksempler

Eksempel 1

- Fakta: Ruby er en kat.

- Regel: alle katte har tænder.

- Forespørgsel: Har Rubí tænder?

- Konklusion: ja.

Reglen "alle katte har tænder" kan anvendes på Rubí, fordi der er en kendsgerning, der siger "Rubí er en kat". Dette eksempel er ikke skrevet med nogen ægte programmeringssprogssyntaks.

Eksempel 2

Dette eksempel kan ses skrevet i Prolog, da det er et af de mest populære logiske programmeringssprog:

- feminin (alissa).

- maskulin (bobby).

- maskulin (Carlos).

- feminin (doris).

- son_of (doris, carlos).

- son_of (Carlos, Bobby).

- son_of (doris, alissa).

- far_of (F, P): - maskulin (F), son_of (P, F).

Dette program bliver svært at læse, fordi Prolog adskiller sig især fra andre sprog. Enhver kodekomponent, der ligner "feminin (alissa)." det er en kendsgerning.

En regel er "far_of (F, P): - maskulin (F), son_of (P, F)". Symbolet ": -" kan læses som "er sandt hvis". Store bogstaver betyder, at variabler kan anvendes på ethvert objekt, så F kan stå for carlos, doris, alissa eller bobby. Denne kode kan oversættes som:

- Alissa er en kvinde.

- Bobby er en mand.

- Carlos er en mand.

- Doris er en kvinde.

- Doris er datter af Carlos.

- Carlos er Bobbys søn.

- Doris er Alissas datter.

- "F er far til P" er sandt, hvis F er en mand, og hvis P er søn af F.

Konsultation

Antag at du vil høre programmet for at få flere oplysninger. Du kan søge og bede om at finde, hvis far Bobby er sammen med :? - father_of (bobby, X). Systemet vil angive følgende svar: X = Carlos.

I dette tilfælde overføres et forhold, hvor en af ​​dets værdier er en variabel. Hvad Prolog gjorde var at anvende forskellige objekter på dette forhold, indtil en af ​​dem var logisk solid.

Carlos eneste far er Bobby, og Bobby er mand. Dette opfyldte reglen "far_of (F, P): - maskulin (F), son_of (P, F).". Når X er lig med "carlos", er logikken solid.

Andre henvendelser

Andre mere generelle forespørgsler kan stilles til Prolog, hvilket får systemet til at generere flere resultater:

- ?- far_of (far, barn).

- Far = bobby

- Barn = Carlos

- Far = Carlos

- Barn = doris

Som det er blevet observeret, kræver logisk programmering ikke at have de oplysninger, at alissa eller bobby er mennesker for at få viden om dem. Faktisk er det ikke nødvendigt at angive, at der er et begreb, der kaldes person.

På de fleste ikke-logiske programmeringssprog skal du først definere disse begreber, før du kan skrive programmer, der behandler information om mennesker..

Referencer

  1. Deep AI (2020). Logisk programmering. Hentet fra: deepai.org.
  2. Wikiversity (2020). Teori om programmeringssprog / logisk programmering. Hentet fra: en.wikiversity.org.
  3. Imperial College London (2006). Logisk programmering. Hentet fra: doc.ic.ac.uk.
  4. Jia-Huai You (2020). Introduktion til logisk programmering. University of Alberta. Hentet fra: eng.ucy.ac.cy.
  5. C2 Wiki (2020). Logisk programmering. Hentet fra: wiki.c2.com.

Endnu ingen kommentarer