Horn-klauzulák: definíció, tulajdonságok és szerep a logikai programozásban

Horn-klauzulák: világos definíció, kulcsfontosságú tulajdonságok és gyakorlati szerep a logikai programozásban — hatékony tételbizonyítás és automatizált következtetés.

Szerző: Leandro Alegsa

A Horn-klauzula (vagy Horn-záradék) olyan logikai diszjunkció, amelyben a literálok között legfeljebb egy pozitív literál szerepel; az összes többi literál negatív. A név Alfred Horn nevéhez fűződik, aki 1951-ben írta le ezeket az állításokat.

Három fontos speciális esete van a Horn-klauzuláknak:

  • határozott klauzula (definite clause): pontosan egy pozitív literált tartalmaz, például egy implikáció formájában (ha p és q igazak, akkor u igaz);
  • tény (fact): nincs negatív literálja, tehát csak egy pozitív literál áll benne (például u);
  • célklauzula (goal clause vagy néha üres fejű klauzula): nincs pozitív literálja, azaz csak negatív literálokból áll (ez a logikai üres fejű klauzula a levezetésben ellentmondás vagy cél reprezentációja lehet).

határozott klauzula: ¬ p ¬ q ∨ ⋯ ∨ ¬ t u {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t\vee u} {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t\vee u}

tény: u {\displaystyle u} {\displaystyle u}

célklauzula: ¬ p ¬ q ∨ ⋯ ∨ ¬ t {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t} {\displaystyle \neg p\lor \neg q\vee \cdots \vee \neg t}

A nem-propozicionális (elsőrendű) esetben a klauzulában szereplő változókat általában implicit módon univerzálisan kvantifikáljuk a teljes mondat hatókörével. Például a következő Horn-klauzula:

¬ human ( X ) mortal ( X ) {\displaystyle \neg {\text{human}}(X)\lor {\text{mortal}}(X)} {\displaystyle \neg {\text{human}}(X)\lor {\text{mortal}}(X)}

értelmezhető úgy, hogy

X ( ¬ human ( X ) mortal ( X ) ) {\displaystyle \forall X(\neg {\text{human}}(X)\lor {\text{mortal}}(X))} {\displaystyle \forall X(\neg {\text{human}}(X)\lor {\text{mortal}}(X))}

ami logikailag egyenértékű a következő implikációval:

X ( human ( X ) → mortal ( X ) ) . {\displaystyle \forall X({\text{human}}(X)\rightarrow {\text{mortal}}(X)). } {\displaystyle \forall X({\text{human}}(X)\rightarrow {\text{mortal}}(X)).}

Felbontás és következtetés

A Horn-klauzulák fontos algebrai tulajdonsággal rendelkeznek a felbontás (resolution) szempontjából: két Horn-klauzula felbontója ismét Horn-klauzula lesz. Különösen egy célklauzula és egy határozott klauzula felbontójaként újból célklauzula keletkezik. Ez a tulajdonság lehetővé teszi hatékonyabb tételbizonyítást és lekérdezés-végrehajtást a Horn-elképzelések esetén.

Ez alapján az SLD-felbontás (selective linear definite clause resolution) szabálya alapozza meg a logikai programozás következtetési mechanizmusát: egy céltétel (a kívánt állítás tagadása) és egy határozott klauzula felbontásával új célokat kapunk; ezt ismételve vagy ellentmondást találva dönthetjük el a bizonyíthatóságot.

Logikai programozás és Prolog

A Horn-klauzulák alkotják a logikai programozás formális alapját. Gyakran használjuk a határozott klauzulákat implikációként:

( p q ∧ ⋯ ∧ t ) → u {\displaystyle (p\wedge q\wedge \cdots \wedge t)\rightarrow u} {\displaystyle (p\wedge q\wedge \cdots \wedge t)\rightarrow u}

A Horn-klauzula procedurális szemlélete a célredukciós (backward chaining) mechanizmus: ha a fej u akkor igaz, ha a test p, q, …, t mind igaz. Emiatt gyakran írják a záradékot visszafelé irányuló szabályként:

u ← ( p q ∧ ⋯ ∧ t ) {\displaystyle u\leftarrow (p\land q\land \cdots \land t)} {\displaystyle u\leftarrow (p\land q\land \cdots \land t)}

Prologban ezt egyszerűen így írjuk:

u :- p, q, ..., t.

A Prolog jelölésben a klauzulák és a célok változóit gyakran univerzális vagy egzisztenciális kvantifikálásként értelmezik a kontextustól függően: lekérdezésnél a megoldás keresése (sikeres levezetés) procedurális célként értelmezhető, míg a tételek bizonyítása klasszikus logikai ellentmondáskeresésként is felfogható.

Minimális modell és szemantika

Van Emden és Kowalski (1976) eredménye szerint minden véges (vagy általános) határozott klauzula-halmaznak létezik egy egyedi minimális (Herbrand) modellje M. Továbbá egy atomikus formula A logikai következménye a határozott klauzula-halmaznak D pontosan akkor, ha A igaz a minimális modellben M (D ⊨ A ⇔ M ⊨ A). Ennek következtében egy P probléma, amelyet pozitív literálok konjunkciója képvisel, logikailag akkor és csak akkor következik D-ből, ha P igaz M-ben.

Ez a minimális modellszemantika szolgál a logikai programok deklaratív szemantikájának alapjául, és fontos kapcsolódási pontot jelent más szemantikákkal, például a stabil modellszemantikával (különösen a normál programok és nemmonoton logikák vizsgálatakor).

Komplexitás és kielégíthetőség

A Horn-klauszulák kielégíthetőségi problémája (HORNSAT) nevezetes: a Horn-klauszulákból álló gegeben konjunkció kielégíthető érték-kiosztás megtalálása polinomiális időben, sőt lineáris időben megoldható, ezért HORNSAT P-teljesnek tekinthető a köznapi értelemben (az algoritmikus eljárások hatékonyak). Ez éles ellentétben áll az általános Boole-féle kielégíthetőségi problémával, amely NP-teljes.

Fontos azonban megjegyezni, hogy az elsőrendű Horn-feltételek kielégíthetőségének eldöntése általános esetben eldönthetetlen: az elsőrendű logika általános határozatlansága itt is érvényesül.

Gyakorlati megjegyzések és példák

Gyakorlati logikai programokban a Horn-klauzulákat gyakran használják tudásreprezentációra, szabályok és tények megadására, valamint lekérdezések végrehajtására. Egy egyszerű Prolog-példa:

apa(X) :- fiú(X), felnott(X).

fiú(janos).

felnott(janos).

Ebben a programban a szabály (határozott klauzula) azt mondja, hogy X apa, ha X fiú és X felnőtt. A tények (fact) megadják, hogy janos fiú és felnőtt, így a lekérdezés apa(janos)? sikeres lesz az SLD-felbontás segítségével.

Összefoglalva: a Horn-klauzulák egyszerre rendelkeznek kedvező elméleti tulajdonságokkal (lezártság felbontás alatt, minimális modell, hatékony kielégíthetőség) és gyakorlati jelentőséggel a logikai programozás és a Prolog megvalósításában.

Kérdések és válaszok

K: Mi az a kürtzáradék?


V: A Horn-záradék olyan literálok logikai diszjunkciója, ahol az literálok közül legfeljebb egy pozitív, az összes többi pedig negatív.

K: Ki írta le őket először?


V: Alfred Horn írta le őket először egy 1951-es cikkében.

K: Mi az a határozott záradék?


V: A Horn-féle, pontosan egy pozitív literált tartalmazó tagmondatot határozott tagmondatnak nevezzük.

K: Mi az a tény?


V: A negatív szóelemek nélküli határozott mondatot néha "ténynek" nevezik.

K: Mi az a céltagmondat?


V: A pozitív literál nélküli Horn-mondatot néha célmondatnak nevezik.

K: Hogyan működnek a változók a nem propozicionális esetekben?


V: A nem-propozicionális esetben a záradékban lévő összes változó implicit módon univerzálisan kvantifikált, a teljes záradék hatókörével. Ez azt jelenti, hogy a kijelentés minden részére vonatkoznak.

K: Milyen szerepet játszanak a Horn-féle klauzulák a konstruktív logikában és a számítási logikában? V: A Horn-klauzulák fontos szerepet játszanak az elsőrendű felbontással történő automatizált tételbizonyításban, mivel két Horn-klauzula vagy egy cél- és egy határozott klauzula közötti felbontás nagyobb hatékonyságot eredményezhet, amikor valaminek a célklauzula tagadásaként ábrázolt dolgot bizonyítunk. A logikai programozási nyelvek, például a Prolog alapjául is szolgálnak, ahol úgy viselkednek, mint a célredukciós eljárások.


Keres
AlegsaOnline.com - 2020 / 2025 - License CC3