De logisch programmeren is een programmeerparadigma dat logische circuits gebruikt in plaats van alleen wiskundige functies om te bepalen hoe feiten en regels worden vermeld.
In plaats van een zorgvuldig gestructureerde controlestroom die dicteert wanneer ze moeten worden uitgevoerd en hoe functieaanroepen of andere instructies moeten worden geëvalueerd, worden de logische regels van het programma geschreven als clausules of logische predikaten..
Deze benadering, die vaak wordt gebruikt bij evolutionaire en genetische programmering, vertelt een model over het algemeen welk doel het moet bereiken, in plaats van hoe het te bereiken..
Elke regel bevat een header en een body met een geformaliseerde logica, in plaats van een uitvoerbare wiskundige functie. Bijvoorbeeld: "And is true (header): if C1, C2, and C3 are true (body)." De feiten of resultaten worden uitgedrukt zonder lichaam, zoals 'En het is waar'.
Bij sommige programmeertalen, zoals Prolog, kan echter ook imperatief programmeren worden opgenomen om het model te vertellen hoe bepaalde problemen kunnen worden opgelost. Bijvoorbeeld: "Om Y op te lossen, voegt u C1, C2 en C3 toe".
Artikel index
Logisch programmeren verschilt wezenlijk van de andere bestaande programmeerstrategieën. In plaats van instructies te geven aan een computer met het programma, worden relaties tussen objecten gelegd. Op deze manier kan de computer deze relaties beredeneren en zo tot logische oplossingen komen.
Binnen een logisch programma zijn er twee hoofdreeksen code: feiten en regels. Regels worden op feiten toegepast om kennis over de omgeving te verwerven.
Logische programma's kunnen worden ontcijferd door middel van twee belangrijke concepten: waarheid en logische deductie. De waarheid komt naar voren als de berekening in het programma waar is of niet, onder de implementatie van de symbolen van het programma. Logische deductie bepaalt of een logische clausule een gevolg is van het programma.
Deze instructies zullen altijd worden geïnterpreteerd als verklaringen en logische clausules, waarbij het resultaat van hun uitvoering een logisch gevolg is van de berekeningen die erin staan..
Het is een uitloper van propositionele logica. Overweeg of objecten waar of onwaar zijn vanuit een gedeeltelijk wereldperspectief, een domein genaamd. Logisch programmeren is gebaseerd op een generalisatie van eerste-orde logica.
Deze logica bestaat uit syntaxis en semantiek. Syntaxis is de formele taal die wordt gebruikt om concepten uit te drukken. Aan de andere kant geeft de semantiek van logische formules van de eerste orde aan hoe de werkelijke waarde van een formule kan worden bepaald.
Deze logica is gebaseerd op een alfabet en een taal van de eerste orde, evenals een reeks axioma's en inferentieregels..
Het is een subset van eerste-orde-logica. Het heeft een genormaliseerde vorm waarin een bewering wordt gedefinieerd door een universeel voorvoegsel of een reeks universele kwantoren, en een gratis set kwantoren uit de clausule.
Bij het aanvragen van een zoekopdracht aan het programma, wordt de inhoud van de clausule waarvan de koptekst kan samenvallen, in aanmerking genomen. Dit is hetzelfde als het toepassen van een inferentieregel in de logica.
Als stap in de gevolgtrekking worden twee clausules gekozen die als eigenschap hebben dat de ene een disjunctieve X (een positieve letterlijke) bevat en de andere een disjunctieve ¬X (een negatieve letterlijke). Deze afwegingen staan bekend als complementair.
Uit deze twee eerste clausules wordt een nieuwe ontbindende clausule gebouwd die alle letterlijke termen gebruikt, behalve de complementaire..
Logisch programmeren is een methodologie die wordt gebruikt om computers af te leiden, omdat het nuttig is om kennis weer te geven. Logica wordt gebruikt om kennis weer te geven en gevolgtrekking om ermee om te gaan.
De logica die wordt gebruikt om kennis weer te geven, is de zinsvorm. Het wordt gebruikt omdat de eerste orde logica goed wordt begrepen en alle rekenproblemen kan weergeven.
Prolog is een programmeertaal die is gebaseerd op de ideeën van logisch programmeren. Het idee van Prolog is om logica eruit te laten zien als een programmeertaal.
- Feit: Ruby is een kat.
- Regel: alle katten hebben tanden.
- Vraag: Heeft Rubí tanden?
- Conclusie: ja.
De regel "alle katten hebben tanden" kan op Rubí worden toegepast, want er is een feit dat zegt "Rubí is een kat". Dit voorbeeld is niet geschreven met een echte syntaxis van de programmeertaal.
Dit voorbeeld is te zien in Prolog, omdat het een van de meest populaire logische programmeertalen is:
- vrouwelijk (alissa).
- mannelijk (bobby).
- mannelijk (Carlos).
- vrouwelijk (doris).
- son_of (doris, carlos).
- zoon van (Carlos, Bobby).
- son_of (doris, alissa).
- vader_van (F, P): - mannelijk (V), zoon_van (P, F).
Dit programma wordt moeilijk te lezen, omdat Prolog aanzienlijk verschilt van andere talen. Elke codecomponent die lijkt op "vrouwelijk (alissa)". het is een feit.
Een regel is “vader_van (F, P): - mannelijk (F), zoon_van (P, F)”. Het symbool ": -" kan worden gelezen als "is waar als". Hoofdletters betekenen dat variabelen op elk object kunnen worden toegepast, dus F kan staan voor carlos, doris, alissa of bobby. Deze code kan worden vertaald als:
- Alissa is een vrouw.
- Bobby is een man.
- Carlos is een man.
- Doris is een vrouw.
- Doris is de dochter van Carlos.
- Carlos is de zoon van Bobby.
- Doris is de dochter van Alissa.
- "F is de vader van P" is waar als F een man is en als P de zoon is van F.
Stel dat u het programma wilt raadplegen voor meer informatie. U kunt zoeken om te achterhalen wiens vader Bobby is met :? - father_of (bobby, X). Het systeem geeft het volgende antwoord aan: X = Carlos.
In dit geval wordt een relatie doorgegeven waarbij een van de waarden een variabele is. Wat Prolog deed, was verschillende objecten op deze relatie toepassen totdat een ervan logisch solide was.
Carlos's enige vader is Bobby, en Bobby is een man. Dit voldeed aan de regel "vader_van (F, P): - mannelijk (F), zoon_van (P, F).". Als X gelijk is aan "carlos", is de logica solide.
Andere, meer algemene vragen kunnen worden gesteld aan Prolog, waardoor het systeem meerdere resultaten genereert:
- ?- vader_van (vader, kind).
- Vader = bobby
- Kind = Carlos
- Vader = Carlos
- Kind = doris
Zoals is opgemerkt, vereist logisch programmeren niet de informatie dat alissa of bobby mensen zijn om kennis over hen te verkrijgen. In feite is het niet nodig om aan te geven dat er een concept is dat persoon wordt genoemd.
In de meeste niet-logische programmeertalen zou u deze concepten eerst moeten definiëren voordat u programma's kunt schrijven die informatie over mensen verwerken..
Niemand heeft nog op dit artikel gereageerd.