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,