- Loginio programavimo charakteristikos
- Tiesa ir loginis išskaičiavimas
- Pirmos eilės logika
- Klausos forma
- Dirbtinis intelektas
- Loginio programavimo pavyzdžiai
- 1 pavyzdys
- 2 pavyzdys
- Užklausa
- Kiti klausimai
- Nuorodos
Logika programavimo yra programavimo paradigma, kad naudoja loginius grandynus, o ne tik matematines funkcijas kontroliuoti, kaip faktai ir taisyklės yra nustatyti.
Vietoj kruopščiai struktūruoto valdymo srauto, kuris diktuoja, kada vykdyti ir kaip įvertinti funkcijų iškvietimus ar kitas instrukcijas, loginės programos taisyklės rašomos kaip sakiniai arba loginiai predikatai.

Loginio programavimo pavyzdžiai Prolog. Šaltinis: Autorius Kuldeepsheoran1 - ekrano kopija, „CC BY-SA 3.0“, „wikimedia commons“
Šis požiūris, dažnai naudojamas genetiniame ir evoliuciniame programavimuose, paprastai modeliui nurodo, kokį tikslą reikia pasiekti, o ne kaip jį pasiekti.
Kiekvienoje taisyklėje yra antraštė ir kūnas su formalizuota logika, o ne vykdoma matematinė funkcija. Pvz., „Ir tiesa (antraštė): jei C1, C2 ir C3 yra teisingi (kūnas)“. Faktai ar rezultatai išreiškiami be kūno, pavyzdžiui, „Ir tai tiesa“.
Tačiau kai kuriose programavimo kalbose, tokiose kaip „Prolog“, gali būti įtrauktas ir būtinasis programavimas, kad modelis galėtų pasakyti, kaip išspręsti tam tikras problemas. Pvz., „Norėdami išspręsti Y, pridėkite C1, C2 ir C3“.
Loginio programavimo charakteristikos
Loginis programavimas iš esmės skiriasi nuo kitų esamų programavimo strategijų. Užuot davę instrukcijas kompiuteriui su programa, užmezgami ryšiai tarp objektų. Tokiu būdu kompiuteris gali pagrįsti šiuos ryšius ir taip pasiekti loginius sprendimus.
Logikos programoje yra du pagrindiniai kodų rinkiniai: faktai ir taisyklės. Taisyklės taikomos faktams, norint įgyti žinių apie aplinką.
Tiesa ir loginis išskaičiavimas
Logikos programas galima iššifruoti pagal dvi svarbias sąvokas: tiesą ir loginę dedukciją. Tiesa paaiškėja, ar skaičiavimas programoje yra teisingas, ar ne, įgyvendinant programos simbolius. Loginis išskaičiavimas nustato, ar loginė išlyga yra programos padarinys.
Šios instrukcijos visada bus aiškinamos kaip loginiai sakiniai ir sakiniai, o jų vykdymo rezultatas yra loginė joje esančių skaičiavimų pasekmė.
Pirmos eilės logika
Tai teiginio logikos atomazga. Apsvarstykite, ar objektai yra teisingi, ar neteisingi iš dalinės pasaulio perspektyvos, vadinamos domenu. Loginis programavimas grindžiamas pirmosios eilės logikos apibendrinimu.
Šią logiką sudaro sintaksė ir semantika. Sintaksė yra oficiali kalba, vartojama sąvokoms reikšti. Kita vertus, pirmosios eilės loginių formulių semantika nurodo, kaip nustatyti tikrąją bet kurios formulės vertę.
Ši logika pagrįsta abėcėle ir pirmosios eilės kalba, taip pat aksiomų ir išvadų taisyklių rinkiniu.
Klausos forma
Tai yra pirmosios eilės logikos pogrupis. Jis turi normalizuotą formą, kai teiginį apibrėžia universalus priešdėlis arba universaliųjų kiekybinių rodiklių grandinė, o laisvas kiekybinių rodiklių rinkinys yra sakinyje.
Pateikiant užklausą programai, bus svarstomas sakinio, kurio antraštė gali sutapti, tekstas. Tai tas pats, kas logijoje taikyti išvados taisyklę.
Kaip išvados žingsnis pasirenkami du sakiniai, kurių savybė yra ta, kad vienas turi disjunkcinį X (teigiamas pažodis), o kitas turi disjunktyvinį ¬X (neigiamas pažodis). Šie kompromisai yra žinomi kaip vienas kitą papildantys.
Iš šių dviejų pradinių punktų yra sukurta nauja rezoliucinė sąlyga, naudojant visus pažodinius, išskyrus papildomus.
Dirbtinis intelektas
Loginis programavimas yra metodika, naudojama kompiuteriams išskaičiuoti, nes naudinga reprezentuoti žinias. Logika naudojama pavaizduoti žinias ir priverstas jas valdyti.
Logika, naudojama žinioms vaizduoti, yra klausos forma. Jis naudojamas, nes pirmojo laipsnio logika yra gerai suprantama ir gali atspindėti visas skaičiavimo problemas.
„Prolog“ yra programavimo kalba, pagrįsta loginio programavimo idėjomis. „Prolog“ idėja yra priversti logiką atrodyti kaip programavimo kalba.
Loginio programavimo pavyzdžiai
1 pavyzdys
- Faktas: Rubí yra katė.
- Taisyklė: visos katės turi dantis.
- Konsultacijos: Ar Rubí turi dantis?
- Išvada: taip.
Ruby gali būti taikoma taisyklė „visos katės turi dantis“, nes yra faktas, kuris sako: „Ruby yra katė“. Šis pavyzdys neparašytas jokia tikros programavimo kalbos sintaksė.
2 pavyzdys
Šis pavyzdys gali būti parašytas „Prolog“, nes tai viena populiariausių loginių programavimo kalbų:
- moteriška (alissa).
- vyriškas (bobis).
- vyriška (carlos).
- moteriškas (doris).
- son_of (doris, carlos).
- son_of (Carlos, Bobby).
- son_of (doris, alissa).
- tėvo (F, P): - patino (F), sūnaus (P, F).
Šią programą sunku skaityti, nes „Prolog“ labai skiriasi nuo kitų kalbų. Bet koks kodo komponentas, primenantis „moterišką (alisą)“. tai faktas.
Viena taisyklė yra „tėvo_ (F, P): - vyro (F), vaiko_ (P, F)“. Simbolis ": -" gali būti skaitomas kaip "teisinga, jei". Didžiosios raidės reiškia, kad kintamuosius galima pritaikyti bet kuriam objektui, taigi F gali reikšti karlosą, dorį, alisą ar bobį. Šis kodas gali būti išverstas kaip:
- Alissa yra moteris.
- Bobis yra vyras.
- Carlosas yra vyras.
- Doris yra moteris.
- Doris yra Karloso dukra.
- Carlosas yra Bobby sūnus.
- Doris yra Alissa dukra.
- „F yra P tėvas“ yra tiesa, jei F yra vyras, o jei P yra F sūnus.
Užklausa
Tarkime, kad norite sužinoti daugiau informacijos apie programą. Galite ieškoti klausdami, su kuriuo tėvu Bobby yra:? - tėvo_ (bobis, X). Sistema parodys šį atsakymą: X = Carlos.
Tokiu atveju perduodamas santykis, kuriame viena iš jo verčių yra kintama. Tai, ką padarė „Prolog“, pritaikė skirtingus objektus šiems santykiams, kol vienas iš jų nebuvo logiškai tvirtas.
Vienintelis Carlos tėvas yra Bobby, o Bobby yra vyras. Tai atitiko taisyklę „tėvas (F, P): - vyriškas (F), sūnus“ (F, P). Kai X yra lygus „carlos“, logika yra tvirta.
Kiti klausimai
„Prolog“ gali būti pateiktos ir kitos bendro pobūdžio užklausos, dėl kurių sistema generuoja kelis rezultatus:
-? (tėvas, vaikas).
- Tėvas = bobis
- Vaikas = Carlosas
- Tėvas = Carlosas
- Vaikas = doris
Kaip jau buvo matyti, norint gauti žinių apie juos, loginiam programavimui nereikia informacijos, kad alissa ar bobis yra žmonės. Tiesą sakant, nebūtina nurodyti, kad egzistuoja sąvoka, vadinama asmeniu.
Daugelyje nelogiškų programavimo kalbų, prieš rašydami programas, kurios apdorotų informaciją apie žmones, pirmiausia turėtumėte apibrėžti šias sąvokas.
Nuorodos
- Gilus AI (2020). Loginis programavimas. Paimta iš: deepai.org.
- Vikižodynas (2020). Programavimo kalbų teorija / Loginis programavimas. Paimta iš: en.wikiversity.org.
- Londono imperatoriškasis koledžas (2006). Loginis programavimas. Paimta iš: doc.ic.ac.uk.
- Jia-Huai tu (2020). Loginio programavimo įvadas. Albertos universitetas. Paimta iš: eng.ucy.ac.cy.
- „C2 Wiki“ (2020). Loginis programavimas. Paimta iš: wiki.c2.com.
