Számlálás a prológban

A korlátlan keresés a program hatékonyságának forrásává válhat, így néha szükséges korlátozni vagy kizárni az egészet. Ehhez a "cut-off" tervezését a Prolog biztosítja.

Számlálás a prológban

Az X és Y közötti összefüggést a következő három szabály határozhatja meg:

1. szabály: ha X <3, то Y = 0

2. szabály: ha 3<= X и X <6, то Y = 2

3. szabály: ha 6 <= X, то Y = 4

A Prologon ez egy f (X, Y) bináris reláció segítségével fejezhető ki az alábbiak szerint:

f (X, 0): - X <3. % Правило 1

f (X, 2): - 3 =

f (X4): - 6 =

Ebben a programban természetesen feltételezzük, hogy a számítás kezdetén f (X, Y) X már meghatározott számmal; ez az összehasonlító operátorok elvégzéséhez szükséges.

A Prolog igazolja az objektív kijelentések összekapcsolását balról jobbra. Ebben az esetben megfelelhet a célkifejezésnek, amely nem koordinálható. Ha ez megtörténik, akkor a balra történő váltás addig történik, amíg meg nem talál egy összehangolható céladatot, vagy az összes korábbi célkifejezés kimerült. Ha nincs balra kijelölt cél-kijelentés, akkor a célkiírások összekapcsolása nem koordinálható. Azonban, ha az előző célmegállapodás újra összeegyeztethető, a Prolog folytatja a cél-kijelentések balról jobbra történő igazolását, a következő cél jóváhagyástól kezdődően. A baloldali elmozdulás folyamatát a cél kijelentésének és a jobbra való visszatérésnek nevezzük a visszatérési mechanizmusnak.

írni ('less than'), írni (Y).

írjon ('less than'), írjon (X).

A célnyilatkozat - kevesebb (5, 2). az X = 5 és az Y = 2 első állításának fejéhez illeszkedik. Az X mondat testében azonban nem lehet megegyezni a kötőszó első kifejezésével

Ezt a folyamatot a programon keresztül történő közvetlen promócióval történő célzott jóváhagyás összehangolására előretekerésnek nevezzük.

Vágás a prológban, vágás.

Egy speciális célnyilatkozat a "!", A Called clipping. A csonkolás a következőképpen valósul meg: a CU előtti vágás előtti koordinálása után nem veszik figyelembe az összes feltételezést, amelyen ugyanaz a predikátum található, mint a vágás.

A kivágás eltávolítása a programból a deklaratív jelentés megváltozásához vezethet. De vannak olyan esetek is, amikor a cut-off nem érinti. Az utóbbi típusú vágások használata kevésbé óvatos, ezért ezeket a vágásokat néha "zöld vágásoknak" nevezik. A program láthatósága szempontjából ez a vágás "ártatlan", és használatuk tökéletesen elfogadható. Amikor elolvassa a programot, egyszerűen figyelmen kívül hagyhatja őket. Éppen ellenkezőleg, a kivágás, amely a deklaratív jelentést érinti, "piros". A piros vágás olyan vágás, amely miatt a programot nehéz megérteni, és rendkívüli óvatossággal kell használni.

Példák a kivágással:

1) A maximális számítás

2) A tétel összekapcsolása a listával

-add (a, Lst1, Lst2), Lst1 = [b, v, c], írjon (Lst2). % [a, b, v, c] Igen.

-adj hozzá (a, Lst1, Lst2), Lst1 = [b, a, c], írni (Lst2).% Nem

A programozó az új operátorokat úgy határozza meg, hogy speciális mondatokat vezet be a programba, amelyeket néha irányelveknek neveznek. Az ilyen mondatok szerepet játszanak az új szereplők meghatározásában. Az operátor definíciója a programban korábban meg kell jelennie, mint bármely olyan kifejezés, amely ezt az állítást használja. Például a szülõi kijelentést egy irányelv határozza meg

- op (600, xfx, szülő).

Egy ilyen rekord azt mondja a Prolognak, hogy a "szülő" 600-as prioritással és "xfx" típusú operátorral kívánja használni, ami az infix operátor egyik típusát jelenti. Az 'xfx' specifikáló formája azt jelzi, hogy az 'f' jelű operátor az 'x' által jelölt argumentumok között helyezkedik el.

A kezelőtípusok három csoportja van, amelyeket a specifikátorok jeleznek:

1) beilleszteni a három típusú operátort: ​​xfx xfy yfx

2) előtagolja a két típus üzemeltetőit: fx fy

3) két típusú postfix-operátor: xf yf

A specifikátorokat oly módon választják ki, hogy jobban tükrözzék a kifejezés szerkezetét, amelyben az "f" az operátornak felel meg, és "x" és "y" az érveit.

Van különbség az "x" és az "y" között. Ha az érvelés zárójelben van, vagy nincs szerkezete (ez egy egyszerű objektum), akkor prioritása 0; ha strukturális, akkor elsőbbsége megegyezik a fő funktori prioritásával. Az "x" használatával egy argumentumot jeleznek, amelynek prioritása szigorúan magasabb, mint a kezelő prioritása (azaz száma szigorúan kisebb, mint a kezelő prioritási száma); "y" -al az argumentumot jelöljük, amelynek prioritása nagyobb vagy egyenlő az operátor prioritásával.

A Prolog tipikus predikátumai.

Tipikus predikátumok - lehetővé teszi annak meghatározását, hogy az objektum milyen típusú.

1) var (X) - Ez a cél sikeres, ha az X jelenleg nem egy adott változó.

2) nonvar (X) - Ez a cél sikeres, ha X egy változótól eltérő kifejezés, vagy ha X egy már meghatározott változó.

3) atom (X) - Ez a cél akkor igaz, ha X atom.

4) egész (X) - A cél igaz, ha X egy egész számot jelöl.

5) atom (X) - A cél igaz, ha X egy egész szám vagy egy atom.

Kapcsolódó cikkek