08.03.2015 Views

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

Ceo rad - PDF (1.3 MB)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Keširanje GA 79<br />

⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />

Otvoreno hešovanje za rešavanje kolizije heš-tabela je detaljnije opisano u<br />

[Crm90] i [Pau97], gde se mogu videti i ostali pristupi rešavanju kolizije, kao i<br />

njihova uporedna analiza. Detaljnije informacije o heš-tabelama se mogu naći i<br />

u [Knu73], [Brs88] i [Man91].<br />

Napomenimo i to da, osim potrebe za realizacijom preko dvostruko<br />

povezane liste, nema nikakvih drugih uticaja činjenica da se razrešava pojava<br />

kolizije na heš-red strukturi, umesto na običnoj heš-tabeli.<br />

4.3.3 Dobijanje CRC kodova<br />

U slučaju keširanja GA javlja se potreba da u svakoj generaciji, za svaku<br />

jedinku ispitujemo da li već postoji u keš memoriji (funkcija Sadrži() na slici 4.1).<br />

Prilikom poziva date funkcije potrebno je izvršiti nekoliko poređenja genetskih<br />

kodova dve jedinke, gde prva pripada populaciji u nekoj generaciji GA, a druga<br />

je zapamćena u određenom bloku keš memorije.<br />

U većini primena poređenje reči je efikasno, jer se one najčešće razlikuju<br />

već u nekom od prvih nekoliko slova, pa se poređenje brzo završava. Međutim,<br />

genetski kodovi imaju nezgodnu osobinu da se posle nekoliko generacija GA<br />

grupišu u određeni region pretrage pa postanu vrlo slični.<br />

Ta osobina još više dolazi do izražaja ukoliko su genetski kodovi relativno<br />

veće dužine pa tada direktno poređenje može biti vrlo sporo. U tom slučaju je<br />

pogodnije poređenje genetskih kodova preko njihovih CRC vrednosti. Pri tome<br />

je neophodno izračunavanje CRC vrednosti za svaku jedinku u populaciji, ali se<br />

to izvršava samo jednom. Posle toga je poređenje vrlo efikasno, jer se genetski<br />

kodovi dve jedinke ne porede direktno, već se prvo uporede njihove CRC<br />

vrednosti. Ako su one različite, genetski kodovi jedinki se sigurno razlikuju.<br />

Direktno poređenje celih genetskih kodova je potrebno samo kada su CRC<br />

vrednosti jednake, što se u praksi dešava vrlo retko.<br />

Pošto za svaku jedinku postoji izračunata CRC vrednost njenog genetskog<br />

koda, heš-funkcija se primenjuje direktno na tu CRC vrednost, a ne na ceo<br />

genetski kod. Time, ne samo što je ubrzano i uprošćeno računanje heš-funkcije,<br />

već se jedinke ravnomernije smeštaju kao blokovi u keš memoriju.<br />

Za računanje 32-bitne CRC vrednosti je, u ovoj implementaciji, primenjen<br />

algoritam zasnovan na čitanju gotovih koeficijenata (table-driven algorithm)<br />

opisan u [Wlm93]. Pošto su koeficijenti uvek isti, ima ih relativno malo (256), a<br />

njihovo izračunavanje je vremenski relativno zahtevno, oni se posebno unapred<br />

računaju, i smeštaju u datoteku ”CRC.DAT”. Pri inicijalizaciji se samo dati<br />

koeficijenti pročitaju iz datoteke i smeste u niz crctable. Na osnovu koeficijenata<br />

iz datog niza se vrlo efikasno računa CRC vrednost, kao što se može videti sa<br />

slike 4.4 koja sadrži odgovarajući programski kod u jeziku C.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!