Tények és szabályok - tudásmegjelenítés
A logikai programozás a modern programozás iránya, amely eredetileg a mesterséges értelemben és a nyolcvanas évek második felében alakult ki, az ötödik generációs japán számítógépes projektnek köszönhetően. A logikai programozás ötletének legteljesebb kifejeződése a Prolog (PROgramming in LOGic - programozás logikával). A Prolog nyelv eredeti verzióját 1972-ben alapították Alain Colmerauer irányításával a Marseille Egyetemen. Jelenleg a DOS (PDC Prolog, Arity Prolog stb.), A Windows (Visual Prolog, a Strawberry Prolog, a Trinc Prolog stb.), A Linux (Arity Prolog, a Visual Prolog stb.) Különböző változatai vannak.
A Prolog elméleti alapja a szimbolikus logika szekciója, amelyet a predikátumok kalkulációjának neveznek. A Prolognak számos olyan tulajdonsága van, amelyeket néhány hagyományos programozási nyelv nem tartalmaz, ami a logikai programozás területén hatékony eszköz. Ezek a tulajdonságok magukban foglalják a keresési és visszatérési kimenet mechanizmusa, a minta együttes szállításának beépített mechanizmusa és egy egyszerű, de nagy felbontású, adatstruktúrát a változás lehetőségével. A Prolog-ban nincs point-at-t-li, a -vovation és GOTO operátorok. A természetes me-something-house pro-gram-mi-ro-vanya re-kur-siya.
A Prolog program egy nyilatkozat gyűjteménye. A jóváhagyások célokból állnak. A kijelentés végén a pont "." Néha az ut-ver-zhenie mondatot mond.
A Prolog alapvető működése a nyilatkozatban foglalt célok bizonyítása.
Kétféle állítás létezik:
- a tény egyetlen cél, amely természetesen igaz;
- A szabály egy fő célpontból és egy vagy több céltárgyból áll, amelyek bizonyos körülmények között igazak.
A szabály általában több céltáblát tartalmaz a célok összekapcsolása formájában.
A konjunktúra logikus függvényként értelmezhető. Így a szabály konzisztens, ha az összes célzáró célt megegyeznek.
Válasszuk ki a Visual Prolog rendszert (www.visual-prolog.com).
Megoldjuk a kapcsolódó kapcsolatok problémáját, mivel a Prolog alkalmas a nem numerikus információk feldolgozására.
Az a tény, hogy Tom a Bob szülője, így írható a Prologra:
Itt választottuk a szülőt, mint a kapcsolat név, a tom és a bab - mint érveket ennek a kapcsolatnak. Olyan neveket írunk le, mint a tom. kezdve kisbetűvel. Minden fa vonatkozású kapcsolat (szemantikai hálózat)
a következő Visual Prolog programban olvasható:
A programozáshoz szükséged van
1. Indítsa el a Visual Prolog rendszert.

Ábra. 12.1. Visual Prolog 5.0 ablak
2. Lépjen be a File → New programba.
3. Vizsgálja meg a Project ® Test Goal célját.
A megkérdezett kérdésre: "Bob a Pat szülője?" - a rendszer igen, miután megtalálta a tényt a programban.
Egy másik kérdés: "Ki a Liz szülője?"
A kérdés: "Kik Bob gyermekei?" Adható ebben a formában:
A program általánosabb kérdésekkel is foglalkozhat: "Ki az a szülő?" Tegyük fel így:
Keress X-et és Y-t úgy, hogy X az Y szülője.
A Prologon így írt:
A rendszer viszont megtalálja a szülő-gyermek típus összes párját.
Határozza meg a szabályokat: egy nő, egy férfi, egy szülő, a szülők, a nagyapa, a nagymama.
Határozza meg a nők szabályát, amely csak a leírt világon alapul.
Hasonlóképpen, a szabály ember.
A célok az alábbiak szerint állíthatók be.
Megoldjuk a Romanov család családi kapcsolatainak problémáját, és megtaláljuk Alekszej Mikhailovics gyermekeit.
Az összes kérdést egy összetett kérdés segítségével fogjuk megtalálni.
Több szabályt is hozzáadunk: testvér, how_reign.
A testvér meghatározására vonatkozó szabály az alábbiak szerint értelmezhető:
Minden X és Y esetében X az Y testvére, ha
- X és Y közös szülő, és
- X ember, és
- X nem a saját testvére.
A cél elérésének folyamatában a Prolog automatikusan lefuttatja az opciókat, és visszalép, ha egyikük sem sikerül. Néha szükséges korlátozni vagy kizárni.
Ehhez a Prologban korlátozó keresési cél van ("clipping" (!), Amely feltétel nélkül igaz.
Csak Alexei Mikhailovics fiát találjuk
Olyan predikátumot írunk le, amely két egész számot határoz meg.
Ezek a szabályok kölcsönösen kizárják egymást. Ha az első elégedett, a második sikertelen lesz. Módosíthatja a szabály leütésével.
A Prolog szabványos predikátumot tartalmaz, amelynek befejezése mindig sikertelen - sikertelen. A hiba prediktálja a visszalépés folyamatát, vagyis az új megoldások keresése vagy a célok újragondolása. Mutassunk egy példát.
A negáció végrehajtásához használja a predikátumot nem. Használatának sajátossága, hogy minden átadott effimernek hozzá kell járulnia, azaz betonhoz. Például a kérdésre adott válasz: "Leonard nem Jason atya?"
a rendszer nem érzékeli. Meg lehet ismételni a célt: "Ki az ismert rendszerű apákból nem Jason apja?".
Így nem tud tudást szerezni a tudatlanságból, és a predikátumot nem csak ellenőrzési célokra használják.
A fenti programokon a Visual Prologon kiválaszthatja és elvégezheti a következőket: