A vágó beépített eljárás definíciója, a vágás alapesetei

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:09-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|PrologElm12}} * fejezetek: 4.1.1, 4.1.2 (eleje) * fóliák: II.12-15 Vágó eljárás (neve: !) a keresési tér szűkítésére való. Mind…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


  • fejezetek: 4.1.1, 4.1.2 (eleje)
  • fóliák: II.12-15

Vágó eljárás (neve: !) a keresési tér szűkítésére való. Mindig sikeresen fut le, a Prolog keresési fa minden ágát levágja: az adott végrehajtási állapottól vissza egészen a szülő célig, azt is beleértve minden választási pontot megszűntet. A szülő cél az a cél, amelyik meghívta az adott klózt, pl: a

last([E], E) :- !. 

klózbeli vágó szülője lehet a last([7], X) hívás. Típusai:

  • vörös: a megoldások halmazát ténylegesen módosítani kívánjuk
  • zöld: tudjuk, hogy ezen az ágon nem lesz már több megoldás

Kétféle értelemben módosíthatja a keresési teret:

  • első megoldás: a vágó klózában az őt megelőző célsorozatnak csak az első megoldása érdekes, pl:
r(X) :- s(X), !. s(X) 

első megoldása mellett kötelezi el magát.

  • elkötelezettség az adott klóz mellett: levágja az összes, az adott klóz után következő klózt, pl ha az előbb említett példában
 r(X) :- t(X) 

klóz is szerepel az előző után, akkor azt is levágja