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

Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti

[es] :: Java :: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti

[ Pregleda: 2031 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sigma**2

Član broj: 63829
Poruke: 37
*.static.sbb.rs.



+1 Profil

icon Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti04.09.2008. u 10:42 - pre 190 meseci
Moze i teoretsko objasnjenje, ali meni treba java implementacija.
Evo o cemu se radi
Imam mnogo objekata klase koja npr. izgleda ovako

Code:

class Klasa{
int donji;
int gornji;
.
.
.
}


Ako mi objekti imaju za donji-gornji vrednosti npr. (3-5) i (6-10) zelim da ta dva objekta spojim u jedan sa vrednostima 3-10.
Ako nusi sukcesivni po ovom principu, onda nista, ostaju dve instance.

Problem je lako resiv da radi, ali meni treba da bude efikasan. Naime kada imam ukupno preko 10000 takvih objekata (pazi, nema preklapanja, samo mozda ima "rupa" u intervalima) radi mi mnogo sporo.

Naime, moja logika da ih sortiram pa da uporedjujem prvi sa sledecim i tako dalje, mi pravi problem jer sam sve objekte stavio u Vector, a nakon poredjenja, ako uradim spajanje (prvo objektu stavim vrednost gornji iz drugog objekta),
tada mi brisanje drugog objekta iz Vectora smeta (brisanje ne valja ni sa Enumeration ni sa Iterator).

U tom slucaju krecem ispocetka, i zato mi je sve uzasno sporo.
Moze li neko da me posavetuje ?


** greska u naslovu teme treba da pise sukcesivnih **











 
Odgovor na temu

zmau
Dragan Jovanović
programer
Šabac

Član broj: 80834
Poruke: 290
88.200.65.*



+80 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti04.09.2008. u 15:26 - pre 190 meseci
Zanimljiv problem. Šteta što nemam lufta da ga ozbiljnije proučim.
A na brzaka :
Citat:
Naime, moja logika da ih sortiram pa da uporedjujem prvi sa sledecim

Ako bi uporedo sortirao i poredio, verovatno bi uštedeo na vremenu. Znači, pre nego što umetneš item na odgovarajuće mesto, ti mu ponudiš spajanje sa prethodnim i sledećim.
Inače, da li se dešava da se intervali preklapaju međusobno ? To može da ti oteža sortiranje.

Citat:
sam sve objekte stavio u Vector

Možda bi trebao da isprobaš neku malko moderniju klasu. LinkedList mi zvuči baš kao da je njen kum hteo da naglasi da brzo radi brisanje i umetanje.
it works on my machine
 
Odgovor na temu

river
System Architect

Član broj: 12566
Poruke: 62
*.com
Via: [es] mailing liste



+1 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti04.09.2008. u 16:32 - pre 190 meseci
Pronadji u literaturi union-find algoritam. Problem lici na klasican
network connectiviti problem.
Everything should be made as simple as possible, but not simpler. - AA
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9514
*.lukoil.co.yu.



+10255 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti05.09.2008. u 08:42 - pre 190 meseci
Neka modernija kolekcija je svakako ok.
Ali evo par smernica:
1. Kako sortiraš ? U attachment-u dajem klasu koja radi voma brzi sort po quick sort algoritmu. Ja sam samo malo to doterao i prilagodio sebi. Sve što je potrebno je da tvoja klasa implementira priloženi interfejs ISortable. Snaći ćeš se već. Ako se ne snađeš, pitaj.

2. Brisanje iz vektora je do jaja "skupa" operacija. Zato, kad klasu obradiš, (ma šta to značilo) lepo je smesti u novi vektor, i na kraju stari vektor prepustiš đubretarcu. To je znano efikasnije nego brisanje elementa u vektoru.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
Prikačeni fajlovi
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9514
*.lukoil.co.yu.



+10255 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti05.09.2008. u 11:54 - pre 190 meseci
Uostalom, zašto krećeš iz početka vektora posle svake izmene ? Nastavi dalje, pa kad stigneš do kraja, onda od početka. Postavi neki flag na početku, koji ćeš da promeniš ako je bilo spajanja objekata, a ako je flag nepromenjen - posao je gotov.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

sigma**2

Član broj: 63829
Poruke: 37
*.dynamic.sbb.rs.



+1 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti06.09.2008. u 11:13 - pre 190 meseci
Hvala svima na trudu.
Sto se tice sortiranja koristim java interface Comparable i Collections.sort(), pretpostavljam da im je algoritam dovoljno dobar, da bi bilo pretenciozno da pravim neki svoj bolji.
Posto je inicijalno moj vector vec "skoro" sortiran bojim se da u tim slucajevima quick sort ne pokazuje svoju prednost u odnosu na ostale algoritme (cak mislim da je shell-sort tada bolji, ali ovo nije tema).

Slazem se sa JavaBeograd da je brisanje objekta iz Vector-a sporo.
Sve predloge sam jos ranije isprobavao, pre nego sto sam postovao problem, pa sam i radio sa novim vektorima, pa sam cak i objekte "flegovao" da li su jos u upotrebi ili ne, ali nikako da dodjem do zadovoljavajuce brzine.
Sada surfujem i trazim "union-find" algoritam, kako mi je predlozeno, mozda cu tu naci ono sto mi treba.
U svakom slucaju, hvala.
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9514
*.lukoil.co.yu.



+10255 Profil

icon Re: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti08.09.2008. u 08:16 - pre 190 meseci
Ajde okači neki fajl sa nekim vrednostima od kojih bi se generisao inicijalni skup objekata. Dakle negde oko 10.000 vrednosti koji bi se kasnije procesirali. Baš sam se nešto naložio da probam. Nešto gotivim takve problemčiće, tipa optimizacija i slično.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

[es] :: Java :: Treba mi efikasan algoritam za spajanje sikcesivnih vrednosti

[ Pregleda: 2031 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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