- Loogisen ohjelmoinnin ominaisuudet
- Totuus ja looginen päätelmä
- Ensimmäisen asteen logiikka
- Clausal-muoto
- Tekoäly
- Esimerkkejä logiikkaohjelmoinnista
- Esimerkki 1
- Esimerkki 2
- tiedustelu
- Muut tiedustelut
- Viitteet
Logiikkaohjelmointi on ohjelmoinnin paradigma, joka käyttää logiikkapiirien eikä vain matemaattisten funktioiden kontrolliin miten tosiasiat ja säännöt on vahvistettu.
Huolellisesti jäsentyneen ohjausvirran sijaan, joka määrää, milloin suoritetaan ja miten arvioida toimintokutsuja tai muita ohjeita, ohjelman loogiset säännöt kirjoitetaan lauseina tai loogisina predikateina.
Esimerkkejä logiikan ohjelmoinnista Prologissa. Lähde: Kuldeepsheoran1 - kuvakaappaus, CC BY-SA 3.0, wikimedia commons
Tämä lähestymistapa, jota käytetään usein geneettisessä ja evoluutio-ohjelmoinnissa, yleensä kertoo mallille, mikä tavoite saavutetaan sen sijaan, kuinka se saavutetaan.
Jokainen sääntö sisältää otsikon ja rungon, jossa on muodollinen logiikka suoritettavan matemaattisen funktion sijaan. Esimerkiksi: "Ja on totta (otsikko): jos C1, C2 ja C3 ovat totta (kappale)." Tosiasiat tai tulokset ilmaistaan ilman kehoa, kuten "Ja se on totta."
Joissakin ohjelmointikielissä, kuten Prolog, voidaan myös sisällyttää pakollinen ohjelmointi mallin kertomiseksi, kuinka tietyt ongelmat voidaan ratkaista. Esimerkiksi: "Y: n ratkaisemiseksi lisää C1, C2 ja C3."
Loogisen ohjelmoinnin ominaisuudet
Looginen ohjelmointi eroaa huomattavasti muista nykyisistä ohjelmointistrategioista. Sen sijaan, että annettaisiin ohjeita tietokoneelle ohjelman kanssa, objektien väliset suhteet luodaan. Tällä tavalla tietokone pystyy perustelemaan nämä suhteet ja pääsemään siten loogisiin ratkaisuihin.
Loogisessa ohjelmassa on kaksi pääkoodisarjaa: tosiasiat ja säännöt. Sääntöjä sovelletaan tosiasioihin ympäristön tuntemuksen saamiseksi.
Totuus ja looginen päätelmä
Loogiset ohjelmat voidaan purkaa kahdella tärkeällä käsitteellä: totuus ja looginen päättely. Totuus selviää, onko ohjelman laskelma totta vai ei, ohjelman symbolien toteuttamisen yhteydessä. Looginen päätelmä määrittää, onko looginen lause lause ohjelman seuraus.
Nämä ohjeet tulkitaan aina loogisiksi lauseiksi ja lauseiksi, niiden suorittamisen tulos on looginen seuraus sen sisältämistä laskelmista.
Ensimmäisen asteen logiikka
Se on ehdotuslogiikan lähtökohta. Mieti, ovatko esineet totta vai vääriä osittaisesta maailmanperspektiivistä, nimeltään domain. Looginen ohjelmointi perustuu ensimmäisen asteen logiikan yleistämiseen.
Tämä logiikka koostuu syntaksista ja semantiikasta. Syntaksi on muodollinen kieli, jota käytetään käsitteiden ilmaisemiseen. Toisaalta ensimmäisen kertaluvun loogisten kaavojen semantiikka osoittaa, kuinka minkä tahansa kaavan todellinen arvo määritetään.
Tämä logiikka perustuu aakkosiin ja ensimmäisen kertaluvun kieleen, samoin kuin joukko aksioomeja ja päätelmissääntöjä.
Clausal-muoto
Se on ensimmäisen kertaluvun logiikan osajoukko. Sillä on normalisoitu muoto, jossa lause määritetään universaalisella etuliitteellä tai universaalisten kvantisointiketjujen ketjulla ja ilmaisella määrällisillä joukkoilla lausekkeessa.
Pyydettäessä kyselyä ohjelmalle otetaan huomioon lausekkeen runko, jonka otsikko saattaa osua yhteen. Tämä on sama kuin päätelmissäännön soveltaminen logiikassa.
Vaihe päätelmänä valitaan kaksi lauseketta, joiden ominaisuutena on, että toinen sisältää disjunktiivin X (positiivinen kirjaimellinen) ja toinen sisältää disjunktiivin ¬X (negatiivinen kirjaimellinen). Nämä kompromissit tunnetaan täydentävinä.
Näistä kahdesta alkulauseesta rakennetaan uusi resoluutiolauseke, joka käyttää kaikkia kirjaimia paitsi täydentäviä.
Tekoäly
Looginen ohjelmointi on menetelmä, jota käytetään tietokoneiden päätelmiin, koska tiedon hyödyntäminen on hyödyllistä. Logiikkaa käytetään edustamaan tietoa ja päätelmiä käsitellä sitä.
Tiedon edustamiseen käytetty logiikka on clausal-muoto. Sitä käytetään, koska ensimmäisen asteen logiikka ymmärretään hyvin ja pystyy edustamaan kaikkia laskennallisia ongelmia.
Prolog on ohjelmointikieli, joka perustuu logiikkaohjelmoinnin ideoihin. Prologin idea on saada logiikka näyttämään ohjelmointikieleltä.
Esimerkkejä logiikkaohjelmoinnista
Esimerkki 1
- Tosiasia: Rubí on kissa.
- Sääntö: kaikilla kissoilla on hampaat.
- Kuuleminen: Onko Rubilla hampaita?
- Päätelmä: kyllä.
Sääntöä "kaikilla kissoilla on hampaita" voidaan soveltaa Rubyyn, koska on tosiasia, jonka mukaan "Ruby on kissa". Tätä esimerkkiä ei ole kirjoitettu millään syntaksilla oikealle ohjelmointikielelle.
Esimerkki 2
Tämä esimerkki voidaan nähdä kirjoitettuna Prologiin, koska se on yksi suosituimmista logiikan ohjelmointikieleistä:
- naisellinen (alissa).
- maskuliininen (bobby).
- maskuliininen (carlos).
- naisellinen (doris).
- poika (doris, carlos).
- poika (Carlos, Bobby).
- poika_ (doris, alissa).
- isän_ (F, P): - uros (F), pojan_ (P, F).
Ohjelmasta tulee vaikea lukea, koska Prolog eroaa huomattavasti muista kielistä. Mikä tahansa koodikomponentti, joka muistuttaa "naisellinen (alissa)". se on tosiasia.
Yksi sääntö on "isän_ (F, P): - uros (F), lapsen_ (P, F)". Symboli ": -" voidaan lukea "on totta, jos". Isot kirjaimet tarkoittavat, että muuttujia voidaan soveltaa mihin tahansa esineeseen, joten F voisi tarkoittaa carloksia, dorisia, alissaa tai bobbya. Tämä koodi voidaan kääntää seuraavasti:
- Alissa on nainen.
- Bobby on mies.
- Carlos on mies.
- Doris on nainen.
- Doris on Carlosin tytär.
- Carlos on Bobbyn poika.
- Doris on Alissa tytär.
- «F on P: n isä» on totta, jos F on mies ja P on F: n poika.
tiedustelu
Oletetaan, että haluat tutustua ohjelmaan saadaksesi lisätietoja. Voit hakea pyytämällä selvittääksesi, kenen isän kanssa Bobby on:? - isa_of (bobby, X). Järjestelmä ilmoittaa seuraavan vastauksen: X = Carlos.
Tässä tapauksessa välitetään suhde, jossa yksi sen arvoista on muuttuja. Se mitä Prolog teki, oli soveltaa erilaisia esineitä tähän suhteeseen, kunnes yksi niistä oli loogisesti vankka.
Carlosin ainoa isä on Bobby ja Bobby on mies. Tämä täytti säännön "isän_ (F, P): - maskuliininen (F), pojan_ ((P, F)". Kun X on "carlos", logiikka on terve.
Muut tiedustelut
Prologille voidaan tehdä muita yleisempiä kyselyitä, jotka saavat järjestelmän tuottamaan useita tuloksia:
-? (vanhempi, lapsi).
- Isä = bobby
- Lapsi = Carlos
- Isä = Carlos
- Lapsi = doris
Kuten on nähty, logiikkaohjelmointi ei edellytä tiedon hankkimista siitä, että alissa tai bobby ovat ihmisiä, jotta heistä saadaan tietoa. Itse asiassa ei ole tarpeen ilmoittaa, että on olemassa käsite nimeltään henkilö.
Useimmissa ei-loogisissa ohjelmointikielissä sinun on määriteltävä nämä käsitteet ensin, ennen kuin voit kirjoittaa ohjelmia, jotka käsittelevät tietoja ihmisistä.
Viitteet
- Syvä AI (2020). Looginen ohjelmointi. Ostettu: deepai.org.
- Wikiversiteetti (2020). Ohjelmointikielten teoria / Looginen ohjelmointi. Kuvannut: en.wikiversity.org.
- Imperial College London (2006). Looginen ohjelmointi. Otettu: doc.ic.ac.uk.
- Jia-Huai Sinä (2020). Johdanto logiikkaohjelmointiin. Albertan yliopisto. Otettu: eng.ucy.ac.cy.
- C2 Wiki (2020). Looginen ohjelmointi. Otettu: wiki.c2.com.