Binarni vyhledavaci strom - Prolog

Přednáška je věnována neprocedurálnímu programování. Většina semestru je věnována programování v jazyku Prolog, ve kterém studenti i ladí zápočtové programy. Informativně se studenti seznámí i s jazykem LISP a neprocedurálními částmi programovacích systémů.
Návštěvník

Binarni vyhledavaci strom - Prolog

Příspěvek od Návštěvník »

Ahoj,

nevite, jak v prologu otestovat, zda-li je objekt korektni binarni vyhledavaci strom? Stromy jsou struktury t(LeftSubTree, Root, RighSubTree). Diky moc predem!
Him
Supermatfyz(ák|ačka)
Příspěvky: 400
Registrován: 25. 1. 2008 19:59
Typ studia: Informatika Bc.

Re: Binarni vyhledavaci strom - Prolog

Příspěvek od Him »

Kód: Vybrat vše

%match(+V,+LftBnd,+RgtBnd)
fit(V,LftBnd,RgtBnd):-
	((number(LftBnd),V>=LftBnd);(LftBnd == nInf)),
	((number(RgtBnd),V<RgtBnd);(RgtBnd == pInf)).

%binTree(+Tree)
binTree(t(L,V,R)):-binTree(t(L,V,R),nInf,pInf).
binTree(nil,_,_).
binTree(t(L,V,R),LftBnd,RgtBnd):-fit(V,LftBnd,RgtBnd),binTree(L,LftBnd,V),binTree(R,V,RgtBnd).
Snad to bude ono. Funguje to jednoduse tak, ze si drzim cestou v jakem rozmezi se musi hodnoty vrcholu pro jednotlive podstromy. Pokud se do stromu pridavaji stejne hodnoty, ktere ve stromu jiz jsou tak predikat pocita s tim, ze se davaji vzdy do praveho syna.
nInf ~ -oo
pInt ~ +oo

Dej vedet, jestli to resi tvuj problem ;-)
Pracoval jsem na poměrně hodně materiálech pro různé předměty. Pokud Ti něco z toho ušetřilo čas, vyjádři svůj dík v podobě pár satoshi: 1H5JPTrsXie7epAQXbXhMjdgwyLbJ5NHBW ;)
Návštěvník

Re: Binarni vyhledavaci strom - Prolog

Příspěvek od Návštěvník »

Ahoj,

vypada to v pohode, diky moc. Mimochodem, psal si to sam nebo to odnekud je? Pokud za b, mohl bys mi prosim napsat, odkud?
Him
Supermatfyz(ák|ačka)
Příspěvky: 400
Registrován: 25. 1. 2008 19:59
Typ studia: Informatika Bc.

Re: Binarni vyhledavaci strom - Prolog

Příspěvek od Him »

Je to vlastní výroba. Ostatně je to nejpřímější způsob jak to napsat. To bys měl dát dohromady sám, ne? Nebo je na tom něco nejasného?
Pracoval jsem na poměrně hodně materiálech pro různé předměty. Pokud Ti něco z toho ušetřilo čas, vyjádři svůj dík v podobě pár satoshi: 1H5JPTrsXie7epAQXbXhMjdgwyLbJ5NHBW ;)
Odpovědět

Zpět na „PRG005 Neprocedurální programování“