Szerkesztő:Bbr98/SLD rezolúció

Az SLD rezolúció ( Selective Linear Definite clause resolution) a logikai programozásban alkalmazott alapvető következtetési szabály . Ez a rezolúció finomítása.

Az SLD következtetési szabály

szerkesztés

Adott egy goal klóz amely a megoldandó probléma tagadása:

 

kiválasztott literállal   és egy meghatározott input klózzal :

 

akinek a pozitív literálja (atom)   egyesül az atommal   a kiválasztott literálból  , Az SLD felbontás egy újabb goal klózt eredményez, amelyben a kiválasztott literál helyébe az input klóz negatív literáljai lépnek és az egyesítő helyettesítést   alkalmazzák:

 

A legegyszerűbb esetben, a propozíciós logikában az atomok   és   azonosak, és az egyesítő helyettesítés   üres. Általánosabb esetben azonban szükséges az egyesítő helyettesítés, hogy a két literál azonos legyen.

Az "SLD" név eredete

szerkesztés

Az "SLD-felbontás" nevet Maarten van Emden adta a Robert Kowalski által bevezetett meg nem nevezett következtetési szabályra. [1] Neve az SL rezolúcióból származik. Az "SLD" jelentése "SL felbontás határozott klózokkal".

Mind az SL, mind az SLD esetében az "L" azt a tényt jelenti, hogy a bizonyítás a klózok lineáris sorrendjére korlátozható:

 

ahol a "top klóz"   egy input klóz, és minden más klóz   olyan rezolvens, akinek egyik szülője az előző klóz   . A bizonyítás cáfolat, ha az utolsó klóz   az üres klóz.

Az SLD-ben a szekvencia összes klóza goal klóz, a másik szülő pedig input klóz. SL rezolúcióban a másik szülő vagy bemeneti klóz, vagy egy előd klóz a sorozat elején.

SLD felbontási stratégiák

szerkesztés

Az SLD rezolúciós implicit módon meghatározza az alternatív számítások keresési fáját, amelyben a kezdeti goal klóz a fa gyökeréhez kapcsolódik. A fa minden csomópontjához és a program minden olyan meghatározott klózhoz, amelynek pozitív literálja egyesül a kiválasztott literállal a csomóponthoz társított goal klózban, létezik egy gyermekcsomópont az SLD felbontásával kapott goal klózhoz.

A levél nélküli csomópont, amelynek nincs gyermeke, akkor sikeres csomópont, ha a hozzá tartozó goal klóz az üres klóz.

Az SLD rezolúció nem determinisztikus abban az értelemben, hogy nem határozza meg a keresési stratégiát a keresési fa felfedezéséhez. A Prolog először a fa mélységében kutat, egy-egy ágat, visszalépés segítségével, amikor egy hibacsomópontra bukkan. A mélységi keresés nagyon hatékony a számítási erőforrások felhasználásában, de hiányos, ha a keresési tér végtelen ágakat tartalmaz: a számítás nem fejeződik be. Más keresési stratégiák is alkalmazhatók, ideértve a szélességikeresés, a legjobbat először keresés, valamint az elágazás és kolátozás keresést. Ezenkívül a keresés történhet egymás után, egy-egy csomópont, vagy párhuzamosan sok csomópont egyszerre.

Az SLD rezolúció szintén nem determinisztikus a korábban említett értelemben, miszerint a kiválasztási szabályt nem a következtetési szabály, hanem egy külön döntési eljárás határozza meg, amely érzékeny lehet a program végrehajtási folyamatának dinamikájára.

Az SLD felbontású keresési tér egy vagy-fa, amelyben a különböző ágak alternatív számításokat képviselnek. A propozíciós logikai programok esetében az SLD általánosítható úgy, hogy a keresési tér egy és-vagy fa, amelynek csomópontjait egyetlen literálok jelölik, amelyek részcélokat képviselnek, és a csomópontokat összekapcsolják konjunkcióval vagy diszjunkcióval. Általános esetben, amikor a konjugált részcélok változókat osztanak meg, az és-vagy fa ábrázolása bonyolultabb.

Adott a logikai program:

q :- p.
p.

és a legfelső szintű cél:

q.

a keresési tér egyetlen elágazásból áll, amelyben q p redukáljuk, amely a részcélok üres halmazává redukálódik, jelezve a sikeres számítást. Ebben az esetben a program olyan egyszerű, hogy nincs szerepe a kiválasztási funkciónak, és nincs szükség semmilyen keresésre.

Klauzális logikában a programot a tagok sora képviseli:

 

 

a legfelső szintű célt pedig a goal klóz képviseli egyetlen negatív literállal:

 

A keresési tér egyetlen cáfolatból áll:

 

ahol a   az üres klózt jelenti.

Ha a következőklózt adnánk a programhoz:

q :- r.

akkor lenne egy további elágazás a keresési térben, amelynek levélcsomópontja r hibacsomópont. A Prologban, ha ezt a klózt hozzáadnák az eredeti program elejéhez, akkor a Prolog a klózok írási sorrendjét használná a keresési tér elágazásainak sorrendjének meghatározásához. A Prolog először ezt az új ágat próbálta ki, kudarcot vallott, majd visszalépett, hogy megvizsgálja az eredeti program egyetlen ágát, és sikeres legyen. Ha ez a klóz:

p :- p.

most hozzáadódna a programhoz, akkor a keresési fa egy végtelen ágat tartalmazna. Ha ezt a klózt próbálná ki először, akkor a Prolog végtelen ciklusba kerülne, és nem találná meg a sikeres elágazást.

Az SLDNF [2] az SLD rezolóció kiterjesztése, hogy kezelje a negációt, mint kudarcot . Az SLDNF-ben a goal klózok tartalmazhatnak tagadásokat hibás literálként, hívjuk az alakot  -nek, amelyek csak akkor választhatók ki, ha nem tartalmaznak változót. Ilyen változó nélküli literál kiválasztásakor egy alszámítással próbálják megállapítani, hogy van-e SLDNF cáfolat a megfelelő nem negatív literálból kiindulva   mint felső klóz. A kiválasztott részcél   akkor sikerül, ha az alellenálló meghiúsul, és akkor is, ha az alellenálló sikerül.

Lásd még

szerkesztés
  • John Alan Robinson

Hivatkozások

szerkesztés
  1. Robert Kowalski Predicate Logic as a Programming Language Memo 70, Department of Artificial Intelligence, University of Edinburgh. 1973. Also in Proceedings IFIP Congress, Stockholm, North Holland Publishing Co., 1974, pp. 569-574.
  2. Krzysztof Apt and Maarten van Emden, Contributions to the Theory of Logic Programming, Journal of the Association for Computing Machinery. Vol, 1982 - portal.acm.org

Külső linkek

szerkesztés
  • [1] Definíció a számítástechnika ingyenes on-line szótárából