[ Toxter @ 11.09.2006. 08:13 ] @
Pozdrav svima.
Potreban mi je jedan algoritam.
Naime o cemu se radi:

Recimo da imam niz od 100 nekih brojeva. (100 sam uzeo za primer)
Algoritam bi trebao da radi sledece: zada se broj N (recimo 10), i zada se broj M (recimo 50) i pokrene se program.
Cilj je da se izdvoji M nizova od N brojeva (u ovom primeru 50 nizova od 10 brojeva) na takav nacin da:
1. budu maksimalno random (tj. izbegavamo niz: 1, 2, 3,...10)
2. da nizovi budu maksimalno razliciti ( ili "ne slicni" - ne pada mi na pamet neki normalniji izraz :) ) tj. obavezno je da svaka
dva niza budu razlicita bar u jednom elementu (a pozeljno je da se razlikuju u sto vise elemenata).

Ako neko mozda zna neki algoritam koji zadovoljava ove uslove bio bih mu
zahvalan da ostavi link (ili bar naziv algoritma), a ja cu se pobrinuti za implementaciju.

Razlog zasto postavljam ovde temu je taj sto ce mi projekat biti u Javi pa
ako neko zna neki link na neki fin java class-library koji bi mogao biti od pomoci
onda bi to bilo super.

Pozdrav!
[ hyle @ 11.09.2006. 22:30 ] @
Brute force ne dolazi u obzir jer je problem eksponencijalne prirode.

Verovatno postoje i drugi načini da ovo rešiš primenom heuristike ali ja bih se ovde najradije poigrao upotrebom genetskih algoritama.

Problem je jasno definisan pa bi mogao lako da napišeš dobru "fitness" funkciju, a ni generisanje inicijalne populacije nije problematično. Ako hoćeš malo da optimizuješ rešenje onda možeš kao reprezentaciju brojeva iz ponuđenog niza da koristiš bitove.

Happy coding
[ pedjailic @ 12.09.2006. 20:59 ] @
Pogledaj malo sta sve moze da uradi
Code:

 Random psb = new Random();
 psb.nextInt(x);
// x postavljas tako da bude neki broj koji ogranicava opseg , sa je potrebno da se jos malo doradi po uslovima ja bas i 
// nisam najbolje razumeo postavke



[Ovu poruku je menjao hyle dana 12.09.2006. u 23:00 GMT+1]
[ Toxter @ 14.09.2006. 01:13 ] @
Za sad cu ipak generisati rucno random brojeve i tako formirati pod nizove.
Algoritam (i njegovu implementaciju) cu verovatno ostaviti za verziju 2 aplikacije :)

Pozdrav!