- Kjennetegn på logisk programmering
- Sannhet og logisk deduksjon
- Første ordens logikk
- Klausuleringsskjema
- Kunstig intelligens
- Eksempler på logisk programmering
- Eksempel 1
- Eksempel 2
- Spørsmål
- Andre henvendelser
- referanser
Den logiske programmeringen er et programmeringsparadigme som bruker logikkretsene i stedet for bare matematiske funksjoner for å kontrollere hvordan fakta og regler settes.
I stedet for en nøye strukturert flyt av kontroll som dikterer når du skal utføre og hvordan du evaluerer funksjonssamtaler eller andre instruksjoner, skrives de logiske reglene for programmet som klausuler eller logiske predikater.
Eksempler på logisk programmering i Prolog. Kilde: Av Kuldeepsheoran1 - skjermbilde, CC BY-SA 3.0, wikimedia commons
Denne tilnærmingen, som ofte brukes i genetisk og evolusjonær programmering, forteller generelt en modell hvilket mål man skal oppnå, i stedet for hvordan man skal oppnå det.
Hver regel inneholder en overskrift og et organ med en formalisert logikk, i stedet for en kjørbar matematisk funksjon. For eksempel "Og er sant (overskrift): hvis C1, C2 og C3 er sanne (kropp)." Fakta eller resultater uttrykkes uten et organ, for eksempel "Og det er sant."
Imidlertid, med noen programmeringsspråk som Prolog, kan imperativ programmering også inkluderes for å fortelle modellen hvordan man kan løse visse problemer. For eksempel, "For å løse Y, legg til C1, C2 og C3."
Kjennetegn på logisk programmering
Logisk programmering er vesentlig forskjellig fra de andre eksisterende programmeringsstrategiene. I stedet for å gi instruksjoner til en datamaskin med programmet, etableres forhold mellom objekter. På denne måten kan datamaskinen resonnere disse forholdene og dermed nå logiske løsninger.
Innenfor et logikkprogram er det to hovedsett med koder: fakta og regler. Reglene brukes på fakta for å få kunnskap om miljøet.
Sannhet og logisk deduksjon
Logiske programmer kan dekrypteres gjennom to viktige konsepter: sannhet og logisk deduksjon. Sannheten kommer ut om beregningen i programmet er sann eller ikke, under implementeringen av programsymbolene. Logisk deduksjon avgjør om en logisk klausul er en konsekvens av programmet.
Disse instruksjonene vil alltid tolkes som logiske setninger og leddsetninger, og resultatet av utførelsen er en logisk konsekvens av beregningene den inneholder.
Første ordens logikk
Det er en forskyvning av proposisjonell logikk. Vurder om objekter er sanne eller falske fra et delvis verdensperspektiv, kalt et domene. Logikkprogrammering er basert på en generalisering av førsteordens logikk.
Denne logikken består av syntaks og semantikk. Syntaks er det formelle språket som brukes til å uttrykke begreper. På den annen side indikerer semantikken i første ordens logiske formler hvordan du kan bestemme den sanne verdien av en hvilken som helst formel.
Denne logikken er basert på et alfabet og et førsteordens språk, samt et sett aksiomer og inferensregler.
Klausuleringsskjema
Det er en undergruppe av førsteordens logikk. Den har en normalisert form der en uttalelse er definert av et universelt prefiks eller kjede av universelle kvantifiserere, og et fritt sett med kvantifiserere i leddet.
Når du ber om en forespørsel til programmet, vil delen av klausulen hvis overskrift kan være sammenfallende bli vurdert. Dette er det samme som å bruke en inferensregel i logikk.
Som et skritt i slutningen velges to ledd som har egenskap at den ene inneholder et disjunktivt X (en positiv bokstav) og den andre inneholder et disjunktivt ¬X (en negativ bokstav). Disse avveiningene er kjent som komplementære.
Fra disse to innledende leddene er en ny resolusjonsklausul bygd med alle bokstavene, bortsett fra de komplementære.
Kunstig intelligens
Logisk programmering er en metodikk som brukes for å få datamaskiner til å trekke fra, fordi det er nyttig å representere kunnskap. Logikk brukes til å representere kunnskap og slutning for å håndtere den.
Logikken som brukes til å representere kunnskap er klausulformen. Den brukes fordi førsteordens logikk er godt forstått og i stand til å representere alle beregningsproblemer.
Prolog er et programmeringsspråk som er basert på ideene til logisk programmering. Tanken med Prolog er å få logikken til å se ut som et programmeringsspråk.
Eksempler på logisk programmering
Eksempel 1
- Fakta: Rubí er en katt.
- Regel: alle katter har tenner.
- Konsultasjon: Har Rubí tenner?
- Konklusjon: ja.
Regelen "alle katter har tenner" kan brukes på Ruby, fordi det er et faktum som sier "Ruby er en katt." Dette eksemplet er ikke skrevet med noen syntaks for et reelt programmeringsspråk.
Eksempel 2
Dette eksemplet kan sees skrevet i Prolog, siden det er et av de mest populære programmeringsspråkene for logikk:
- feminin (alissa).
- maskulin (bobby).
- maskulin (carlos).
- feminin (doris).
- son_of (doris, carlos).
- son_of (carlos, bobby).
- son_of (doris, alissa).
- far_of (F, P): - hann (F), sønn_of (P, F).
Dette programmet blir vanskelig å lese, fordi Prolog er spesielt forskjellig fra andre språk. Enhver kodekomponent som ligner "feminin (alissa)." det er fakta.
En regel er "far_ av (F, P): - hann (F), barn_ av (P, F)". Symbolet ": -" kan leses som "er sant hvis". Store bokstaver betyr at variabler kan brukes på ethvert objekt, slik at F kan stå for carlos, doris, alissa eller bobby. Denne koden kan oversettes til:
- Alissa er en kvinne.
- Bobby er en mann.
- Carlos er en mann.
- Doris er en kvinne.
- Doris er datteren til Carlos.
- Carlos er Bobbys sønn.
- Doris er datteren til Alissa.
- «F er far til P» er sant hvis F er en mann og hvis P er sønn av F.
Spørsmål
Anta at du vil konsultere programmet for mer informasjon. Du kan søke og spørre hvis faren Bobby er sammen med:? - far_of (bobby, X). Systemet vil indikere følgende svar: X = Carlos.
I dette tilfellet blir det overført et forhold der en av verdiene er en variabel. Det Prolog gjorde, var å bruke forskjellige gjenstander til dette forholdet til en av dem var logisk solid.
Carlos eneste far er Bobby, og Bobby er mann. Dette tilfredsstilte regelen "far_av (F, P): - maskulin (F), son_of (P, F)." Når X er lik "carlos", er logikken lyd.
Andre henvendelser
Andre mer generelle spørsmål kan stilles til Prolog, som får systemet til å generere flere resultater:
-? - parent_of (Foreldre, barn).
- Far = bobby
- Barn = Carlos
- Far = Carlos
- Barn = doris
Som vist, krever logisk programmering ikke å ha informasjonen om at alissa eller bobby er mennesker for å få kunnskap om dem. Det er faktisk ikke nødvendig å indikere at det er et begrep som kalles person.
I de fleste ikke-logiske programmeringsspråk, må du definere disse begrepene først før du kan skrive programmer som behandler informasjon om mennesker.
referanser
- Deep AI (2020). Logikkprogrammering. Hentet fra: deepai.org.
- Wikiversity (2020). Teori om programmeringsspråk / logikkprogrammering. Hentet fra: en.wikiversity.org.
- Imperial College London (2006). Logikkprogrammering. Hentet fra: doc.ic.ac.uk.
- Jia-Huai You (2020). Introduksjon til logikkprogrammering. University of Alberta. Hentet fra: eng.ucy.ac.cy.
- C2 Wiki (2020). Logikkprogrammering. Hentet fra: wiki.c2.com.