Dochází ke kontrole - Occurs check - Wikipedia
v počítačová věda, dojde ke kontrole je součástí algoritmy pro syntaktické unifikace. Způsobuje sjednocení a proměnná PROTI a struktura S selhat, pokud S obsahuje PROTI.
Aplikace v dokazování věty
v dokazování věty, sjednocení bez kontroly výskytu může vést k nezdravý odvození. Například Prolog fotbalová brankauspěje, závazné X na cyklickou strukturu, která nemá protějšek v Herbrandův vesmír Jako další příklad [1]bez výskytu - zkontrolujte, a důkaz rozlišení lze najít pro non-teorém [2]: negace tohoto vzorce má konjunktivní normální forma , s a označující Funkce Skolem pro první a druhý existenční kvantifikátor; literály a jsou unifiable bez kontroly výskytu, produkující vyvrací prázdnou klauzuli.

Implementace Prologu
Implementace Prolog obvykle vynechávají kontrolu výskytu z důvodů efektivity, což může vést ke kruhovým datovým strukturám a opakování. Neprovedením kontroly výskytu je nejhorší složitost sjednocení termínu s termínem je v mnoha případech snížena zna; zejména v častých případech sjednocení proměnných termínů se runtime zmenší na .[poznámka 1]
Naivní vynechání kontroly výskytu vede k vytvoření cyklických struktur a může způsobit navždy sjednocení smyčky. Moderní implementace založené na Colmerauerově Prologu II,[4][5][6][7]použití racionální sjednocení stromu Chcete-li se vyhnout smyčce, podívejte se na obrázek pro příklad spuštění sjednocujícího algoritmu uvedeného v Sjednocení (informatika) # Algoritmus sjednocení, snaží se vyřešit cíl , avšak bez nastane kontrolní pravidlo (pojmenováno „šek“ tam); aplikace pravidla „vyloučit“ místo toho vede v posledním kroku k cyklickému grafu (tj. nekonečnému členu).
Implementace ISO Prolog mají vestavěný predikát unify_with_occurs_check / 2 pro sjednocení zvuku, ale mohou použít nezdravé nebo dokonce smyčkové algoritmy, pokud je sjednocení vyvoláno jinak, za předpokladu, že algoritmus funguje správně pro všechny případy, které „nepodléhají kontrole výskytu“ (NSTO).[8]
Implementace nabízející zvukové sjednocení pro všechna sjednocení jsou Qu-Prolog a Jahodový prolog a (volitelně prostřednictvím modulu runtime): XSB, SWI-Prolog a Tau Prolog.
Viz také
W.P. Weijland (1990). „Sémantika pro logické programy bez kontroly výskytu“. Teoretická informatika. 71: 155–174. doi:10.1016 / 0304-3975 (90) 90194-m.
Poznámky
Reference
- ^ David A. Duffy (1991). Principy automatizovaného dokazování vět. Wiley.; zde: str.143
- ^ Neformálně a brát znamenat např. "x miluje y", vzorec zní"Pokud někdo někoho miluje, pak musí existovat jediná osoba, kterou milují všichni."
- ^ F. Pereira; D. Warren; D. Bowen; L. Byrd; L. Pereira (1983). Uživatelská příručka C-Prolog verze 1.2 (Technická zpráva). SRI International. Citováno 21. června 2013.
- ^ A. Colmerauer (1982). K.L. Clark; S.-A. Tarnlund (eds.). Prolog a nekonečné stromy. Akademický tisk.
- ^ M.H. van Emden; J.W. Lloyd (1984). "Logická rekonstrukce Prolog II". J. Logické programování. 2: 143–149.
- ^ Joxan Jaffar; Peter J. Stuckey (1986). „Sémantika logického programování nekonečných stromů“. Teoretická informatika. 46: 141–158. doi:10.1016/0304-3975(86)90027-7.
- ^ B. Courcelle (1983). „Základní vlastnosti nekonečných stromů“ (PDF). Teoretická informatika. 25: 95–169. doi:10.1016/0304-3975(83)90059-2. Archivovány od originál (PDF) dne 2014-04-21. Citováno 2013-06-21.
- ^ 7.3.4 Normální sjednocení v Prologu ISO / IEC 13211-1: 1995.
Tento článek je založen na materiálu převzatém z Zdarma online slovník výpočetní techniky před 1. listopadem 2008 a začleněno pod "licencování" podmínek GFDL, verze 1.3 nebo novější.