Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 6 odgovora
  • 4.133 pregleda

Najnovija ↓

Balansiranje stabla 03.06.2007. u 12:57 · pre 236 meseci #1
Iz baze dohvatam grupu entiteta i kreiram stablo koje prikazuje njihovu medjusobnu povezanost.
Primer rezultujuceg stabla bi trebalo da bude nesto ovako:


Medjutim, problem je sto ne mogu da dodjem do algoritma koji bi vrsio balansiranje stabla, vec ono sto sam trenutno uspeo da postignem je ovo (u odnosu na primer sa gornje slike):


Od podataka sa kojima raspolazem, tj. koje sam sracunao, imam:
- za svaki entitet tj. cvor vertikalni nivo (gde je vrednost najveceg, pri vrhu, jednaka 0), horizontalni index (redom kako su dohvatani iz baze, s leva na desno)
- veze izmedju cvorova, u formatu [startni, krajnji]
- krajnja gornja-leva koordinata [x,y] u odnosu na koju bi pocelo pozicioniranje svih cvorova

Dakle, treba mi algoritam pomocu kojeg bi sracunao koordinate za svaki od cvorova tako da stablo ima koliko-toliko izbalansiran izgled. Pretpostavljam da bi se mogle koristiti nekakve tezisne funkcije, ali racunam da je bolje da me neko prvo uputi pre nego sto krenem sam da izmisljam nesto sto vec postoji.
Re: Balansiranje stabla 03.06.2007. u 16:09 · pre 236 meseci #3
Uf, sad vidim sta zelis - ti zelis balanisrano da ih nacrtas, posto kada si spomenuo balansiranje stabla prva asocijacija mi je bila balansiranje nodova a ne crtanje :)
Inace mislim da neko univerzalno resenje ne postoji za grpah-ove, mislim moze da se namesti ali uvek moze drukcije, dok da je u pitanju tree onda bi mozda moga da resis preko visine drveta, mada sada kada pogledam ovo tvoje 'stablo' mogao bi mozda i preko visine da nacrtas.
Re: Balansiranje stabla 03.06.2007. u 16:28 · pre 236 meseci #4
Citat:
negyxo: Uf, sad vidim sta zelis - ti zelis balanisrano da ih nacrtas, posto kada si spomenuo balansiranje stabla prva asocijacija mi je bila balansiranje nodova a ne crtanje :)

Sad kad i ja razmislim naslov teme bas i ne odgovara onome sto sam hteo da pitam.

Citat:
negyxo:Inace mislim da neko univerzalno resenje ne postoji za grpah-ove, mislim moze da se namesti ali uvek moze drukcije, dok da je u pitanju tree onda bi mozda moga da resis preko visine drveta, mada sada kada pogledam ovo tvoje 'stablo' mogao bi mozda i preko visine da nacrtas.

Mislio sam da krenem od "nivoa" u kojem ima najvise cvorova pa navise i nanize da nadovezujem, ali nikako to da isteram do kraja.
Re: Balansiranje stabla 07.06.2007. u 14:55 · pre 236 meseci
izmenjeno 1 put, poslednji put DeYo 07.06.2007. u 15:23
  1. DeYo07.06.2007. u 15:23zapis iz teksta poruke
#7

Ovo deluje odlicno. Hvala. Ali aplikacija koju resavam je u Javi i koliko sam video na sajtu razvoj paketa za Javu je prekinut jos za verziju 1.2, uz dodatne komentare da su imali mnogo problema sa integrisanjem tog paketa u aplete. Da koristim Graphviz kao posebnu aplikaciju ne mogu jer sam uslovljen time da citavo resenje mora da bude unutar jedne aplikacije.

Elem, kreirao sam svoj algoritam kojim sam prihvatljivo resio problem.

U grubim koracima:
- locira se nivo koji ima max broj cvorova, u tom nivou cvorovi se "rasire" na parna mesta [0,2,4...] nazovimo indexe
- krece se "na dole" za svaki od cvorova iz nivoa kroz koji se prolazi radim sledece:
* na osnovu relacija iz grana pronalazim sve "roditelje", pamtim max i min indexe roditelja
* poziciju tj. index cvora sracunavama kao (max+min)/2
* ukoliko je sracunati index vec zauzet od strane drugog cvora, uvecavam index za 1 sve dok ne pronadjem prazno mesto (evidencija praznih mesta je u matrici - Vector x Hashtable)
- analaogno za "na gore"

Naravno, sama implementacija u Javi nije bas tako prosta. Kao sto pretpostavljam da ne bi bila ni u drugim jezicima.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme