Egységszaporítás

A Wikipédiából, a szabad enciklopédiából

Az egységszaporítás vagy a Boolean korlátozás szaporítás (Boolean Constraint propagation, BCP) vagy az egy literál szabály (one literal rule, OLR) az automatizált tételbizonyítás olyan algoritmusa, amely képes egyszerűsíteni a (általában ítéletlogikai) klózok halmazát.

Definíció[szerkesztés]

Az eljárás egységklózokon alapul, azaz olyan klózokon, amelyek egyetlen literálból állnak, konjunktív normálformában. Mivel minden egyes klóznak teljesülnie kell, tudjuk, hogy ennek a literálnak igaznak kell lennie. Ha a klózok halmaza tartalmazza az egységklózt, a többi klózt a következő két szabály alkalmazásával egyszerűsítjük:

  1. minden klóz (kivéve magát az egységklózt), amely tartalmazza -t törlésre kerül (a klóz teljesül, ha is);
  2. minden olyan klózban, amely tartalmazza -t, ezt a literált töröljük ( ugyanis nem tud hozzájárulni az kielégíthetőséghez).

E két szabály alkalmazása egy új klózkészletet eredményez, amely egyenértékű a régivel.

Például a következő klózhalmaz egyszerűsíthető egységszaporítással, mert tartalmazza az klózt.

Mivel tartalmazza az literált, ez a klóz teljesen eltávolítható. Mivel tartalmazza az egységklózban szereplő literál tagadását, ez a literál eltávolítható a klózból. Az klóz nincs eltávolítva; így a kapott halmaz nem egyenértékű az eredetivel; ez a klóz eltávolítható, ha már más formában van tárolva (lásd a #Részleges modell használata szakaszt). Az egységszaporítás hatása a következőképpen foglalható össze.

( törölve) (eltávolítva) (változatlan) (változatlan)

Az így kapott klózok halmaza egyenértékű a fentiekkel. Az új egységklóz , amely az egységszaporítás eredménye, felhasználható az egységszaporítás egy további alkalmazásához, amely átalakítja a klózt -re.

Nézzünk még egy példát. A következő klózhalmaz egyszerűsíthető egységszaporítással, mert tartalmazza a klózt.

(eltávolítva) ( törölve) (változatlan) (változatlan)

Az így kapott klózok halmaza egyenértékű a fentiekkel. Az új egységklóz , amely az egységszaporítás eredménye, ezen már nem tudunk egységszaporítást végezni, így ebben az esetben marad a klózhalmaz.

Az egységszaporítás és a rezolúció[szerkesztés]

Az egységszaporítás második szabálya a rezolúció egy korlátozott formájának tekinthető, amelyben a két rezolvens közül az egyiknek mindig klóznak kell lennie. A rezolúcióhoz hasonlóan az egységszaporítás is helyes következtetési szabály, mivel soha nem hoz létre olyan új klózt, amelyet a régiek nem vonnak maguk után. Az egységszaporítás és a rezolúció közötti különbségek a következők:

  1. a rezolúció egy teljes cáfolási eljárás, míg az egységszaporítás nem az; más szóval, még ha a klózok egy halmaza ellentmondásos is, az egységszaporítás nem hozhat létre ellentmondást;
  2. két rezolvált klózt általában nem lehet eltávolítani, miután a generált klózt hozzáadták a halmazhoz; ezzel szemben az egységszaporításban részt vevő nem egységklóz eltávolítható, amikor az egyszerűsítése hozzáadódik a halmazhoz;
  3. a rezolúció általában nem tartalmazza az egységszaporításban használt első szabályt.

A rezolúciót tartalmazó hierarchiaszámítások modellezhetik az egyes szabályt alárendeléssel, a második szabályt pedig egy egységnyi rezolúciós lépéssel, majd ezt alárendeléssel.

Az egységszaporítás, amelyet ismételten alkalmaznak, amikor új egységklózokat generálnak, egy teljes kielégíthetőségi algoritmus a Horn-klózok halmazaira; ha kielégíthető, akkor egy minimális modellt is generál a halmazra: lásd Horn-kielégíthetőség.

Részleges modell használata[szerkesztés]

Az egység klózok, amelyek egy klózkészletben szerepelnek vagy abból származtathatók, egy modell részleges formájában tárolhatók (ez a részleges modell az alkalmazástól függően más literálokat is tartalmazhat). Ebben az esetben az egységszaporítás a részleges modell literáljai alapján történik, és az egységklózok eltávolításra kerülnek, ha a literáljuk szerepel a modellben. A fenti példában az egységklózt hozzá kell adni a részleges modellhez; a klóz egyszerűsítése ezután a fentiek szerint történne, azzal a különbséggel, hogy az egységklóz most eltávolításra került a halmazból. Az így kapott klózhalmaz a részleges modellben szereplő literálok érvényességének feltételezése mellett egyenértékű az eredetivel.

Bonyolultság[szerkesztés]

Az egységszaporítás közvetlen megvalósítása az ellenőrizendő halmaz teljes méretében négyzetes időigényű, amely az összes klóz méretének összege, ahol az egyes klózok mérete a bennük szereplő literálok száma.

Az egységszaporítás azonban lineáris idő alatt is elvégezhető, ha minden egyes változóhoz tároljuk azoknak a klózoknak a listáját, amelyekben az egyes literálok szerepelnek. A fenti halmaz például úgy ábrázolható, hogy az egyes klózokat a következőképpen számozzuk:

majd minden egyes változóhoz tárolja a klózok listáját, amelyek tartalmazzák a változót vagy negáltját:

Ez az egyszerű adatszerkezet a halmaz méretével lineárisan megegyező idő alatt építhető fel, és nagyon könnyen lehetővé teszi a változót tartalmazó összes klóz megtalálását. Egy literál egységszaporítása hatékonyan elvégezhető úgy, hogy csak a literál változóit tartalmazó klózok listáját vizsgáljuk át. Pontosabban, a teljes futási idő az egységszaporítás elvégzéséhez az összes egységklóz esetében lineárisan arányos a klózok halmazának méretével.

Lásd még[szerkesztés]

  • Kürt kielégíthetőség
  • Horn-Klóz
  • Automatizált tételbizonyítás
  • DPLL algoritmus

Jegyzetek[szerkesztés]

Fordítás[szerkesztés]

  • Ez a szócikk részben vagy egészben az Unit propagation című angol Wikipédia-szócikk ezen változatának fordításán alapul. Az eredeti cikk szerkesztőit annak laptörténete sorolja fel. Ez a jelzés csupán a megfogalmazás eredetét és a szerzői jogokat jelzi, nem szolgál a cikkben szereplő információk forrásmegjelöléseként.