Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Binarno stablo u Prolog-u

[es] :: Veštačka inteligencija :: Binarno stablo u Prolog-u

[ Pregleda: 3080 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Binarno stablo u Prolog-u02.03.2007. u 02:45 - pre 208 meseci
Ovako, potrebno je implementirati binarno stablo u Prologu.
Imam facts (ne znam kako je na srpskom): leftchild(X, Y) i rightchild(X, Y) koje upisujem.
Potrebno je odrediti pravila za:
justabove(X, Y) - X je odmah iznad Y
above(X, Y) - X je bilo gde iznad Y
root(X) - X je u korenu stabla
leaf(X) - X nema ni jednu granu (list drveta)
equaldepth(X,Y) - da li X i Y imaju istu dubinu (root ima dubinu nula)
depth(X, D) - D je dubina X-a

prva dva imam uradjena:
Code:

justabove(X,Y) :- leftchild(Y,X).
justabove(X,Y) :- rightchild(Y,X).
above(X, Y) :- justabove(X, Y).
above(X,Y) :- justabove(Z,Y) , above(X,Z).


Medjutim, root mi ne uspeva. Mislim da kada bih znao kako root bih znao i ostalo ali sam jako kratak sa vremenom (10ak sati) pa ako je neko voljan da pomogne, zamolio bih za sve preostale, za svaki slucaj.
Izgledalo mi je logicno root(X) :- above(X, Y) jer mi deluje da je to ekvialent za "za svako Y, X je iznad njega, ali e radi (vraca true i za one koji nisu root). Ocigledno moje (povrsno) znanje prologa nije dovoljno za ovo.

Hvala unapred.

PS. Ako mi istekne ovaj rok, ipak bih voleo da vidim resenje, tako da tema ne zastareva. :)
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: Binarno stablo u Prolog-u10.04.2007. u 11:33 - pre 207 meseci
Necu bas pomoci puno, prolog sam slusao jednu godinu u srednjoj skoli i skoro da se secam sintakse ... :)

Mogu samo da ponudim logiku kojom bi se doslo do trazenih resenja a zapis ...

root(x) koristis nesto poput above(x,y) i negaciju above(x,z) za bilo koje z

drugim recima "postoji y takvo da je x iznad y" i "ne postoji z takvo da je z iznad x"

leaf(x) - "ne postoji leftchild(x,y)" and "ne postoji rightchild(x,y)"

Za ova poslednja dva bi se morao prisetiti sintakse jer se ne secam kako se radi sa integerima
(a treba neki tip brojaca)

ali je resenje sledeceg tipa

prvo depth(X,D)

rekurzivno se gleda

definises da je depth(root,0)

i da je depth(x,D) = depth(y,D-1) gde je justabove(x,y) ili kako vec da se pishe ...
ili jezikom pisano "postoji D takvo da postoji y i vazi justabove(x,y) i depth(y,D-1) and depth(root,0)"
(ako se ovo moze nazvati jezikom pisano ... i koji je to jezik uopste :) )


a equaldepth(x,y) svodis na to da "postoji D za koje vazi depth(x,D) i depth(y,D)"
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Binarno stablo u Prolog-u10.04.2007. u 12:40 - pre 207 meseci
Hvala na odgovoru.

Ovo za root sam i pokusavao na taj nacin ali mi nije uspevalo da to napisem kako treba (i ja sam Prolog citao od nekog ko je imao samo jednu godinu u srednjoj (dok sam ja takodje bio u srednjoj)).
Ne secam se, ali mislim da sam depth uradio kasnije na taj ili slican nacin.
 
Odgovor na temu

[es] :: Veštačka inteligencija :: Binarno stablo u Prolog-u

[ Pregleda: 3080 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.