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 77<br />

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

dvostruka heš-tabela. Ona se sastoji od dve heš-tabele koje sadrže pokazivače<br />

na blokove keš memorije. Svaki blok keš memorije se može naći pretragom po<br />

proizvoljnoj heš-tabeli.<br />

Kao što se može videti na slici 4.1, najvažnije komponente programa za<br />

keširanje GA zasnovanog na LRU strategiji, su sledeće funkcije:<br />

• Sadrži(), koja pretražuje keš memoriju, i ispituje da li ona sadrži dati genetski<br />

kod jedinke;<br />

• Dodaj(), gde se tekuća jedinka smešta u slobodan blok keš memorije;<br />

• Obriši(), koja izbacuje iz keš memorije blok (jedinku) koji najduže vremena<br />

nije korišćen i time oslobađa mesto za smeštanje nove jedinke.<br />

Funkcije Sadrži() i Dodaj() su implementirane preko prve heš-tabele, dok je<br />

za realizaciju funkcije Obriši() neohodna druga heš-tabela.<br />

Dvostruka heš-tabela se, za razliku od ostalih ranije pomenutih struktura<br />

podataka, uspešno uklopila u LRU strategiju. Sa druge strane, dobijena je vrlo<br />

efikasna implementacija, jer kao što je poznato, operacije pretrage, dodavanja i<br />

brisanja elementa u heš-tabeli u proseku zahtevaju konstantno O(1) vreme<br />

izvršavanja.<br />

4.3 Implementacija pomoću heš-red strukture<br />

Iako se operacije pretrage, dodavanja i brisanja blokova nad keš-memorijom<br />

izvršavaju u prosečno konstantnom vremenu primenom prethodnog pristupa,<br />

moguća je modifikacija koja u praksi nešto poboljšava vreme izvršavanja. To je<br />

ostvareno zamenom druge heš-tabele i korišćenjem reda (queue). Na taj način<br />

su funkcije Dodaj() i Obriši() nešto uprošćene, i imaju manje osnovnih operacija,<br />

što ih donekle ubrzava. Iako poboljšanje vremena izvršavanja (u odnosu na<br />

dvostruku heš-tabelu) nije spektakularno, razlike se mogu uočiti. Na slici 4.2 je<br />

dat shematski prikaz ove strukture.<br />

Slika 4.2 Heš-red struktura<br />

4.3.1 Heš-funkcija<br />

Osnovna ideja pri projektovanju svake heš-tabele je što ravnomerniji<br />

raspored blokova u njoj. Za heš-funkciju je izabrana metoda množenja<br />

(multiplication method). Iako se u teoriji ([Crm90]), kao nešto bolja prikazuje<br />

univerzalna heš-funkcija (universal hashing), u našem slučaju se ne pokazuju<br />

nikakve razlike. Stoga je izabrana metoda množenja, koja je jednostavnija za<br />

implementaciju.<br />

Razlozi za uspešnu primenu metode množenja se mogu objasniti<br />

specifičnim uslovima koji važe u primenjenoj heš-tabeli. Argument heš-funkcije,

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

Saved successfully!

Ooh no, something went wrong!