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

A VIK Wikiből

Ez az oldal a korábbi SCH wikiről lett áthozva.

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