You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
14 Paralelizacija GA za rešavanje nekih NP-kompletnih problema<br />
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯<br />
Ovo uvodno poglavlje daje osnovne informacije o najvažnijim oblastima koje<br />
su zastupljene u <strong>rad</strong>u, a to su:<br />
• Složenost algoritama, NP-kompletni problemi i načini za njihovo rešavanje<br />
dati u odeljku 1.1;<br />
• Kratak opis GA i njihova primena u rešavanju NP-kompletnih problema<br />
prezentirani u odeljku 1.2;<br />
• Višeprocesorske arhitekture i paralelni algoritmi opisani u odeljku <strong>1.3</strong> .<br />
1.1 Složenost algoritama i NP-kompletni problemi<br />
Čest je slučaj sintaksno i semantički ispravnih programa koji korektno <strong>rad</strong>e<br />
na demonstracionim test-primerima manjih dimenzija, ali izvršavanje na<br />
instancama veće dimenzije datog problema preuzetih iz prakse traje<br />
neprihvatljivo dugo ili je nedostižno. Tada se, prirodno, postavlja pitanje da li je<br />
moguće primeniti neki bolji (brži) algoritam.<br />
Zbog toga se javila potreba za kvantifikovanjem vremena izvršavanja svakog<br />
složenijeg algoritma odnosno programa. Pri tome se nužno javlja ideja o<br />
klasifikaciji algoritama po brzini izvršavanja a takođe i klasifikacija problema koji<br />
se njima rešavaju. Vrlo važan aspekt svakog algoritma je pored vremena<br />
izvršavanja (vremenska složenost) takođe i njegova potrošnja memorijskog<br />
prostora (prostorna složenost). Za opšte infomacije o algoritmima i njihovim<br />
primenama u raznim oblastima, mogu se pogledati [Brs88], [Crm90] i [Man91] a<br />
od domaćih autora [Uro96] i [Pau97]. Osim njih mogu se koristiti i knjige [Grn72]<br />
i [Nem89] gde je dat sveobuhvatan pregled algoritama iz oblasti kombinatorne<br />
optimizacije i celobrojnog programiranja.<br />
1.1.1 Vremenska složenost algoritama<br />
Vremenska i prostorna složenost se ocenjuju asimptotski u terminima<br />
elementarnih operacija i podataka hipotetičkog računara. Postupa se na taj<br />
način da bi se izbegle razlike u konstrukciji i performansama konkretnih<br />
računara, a kao posledica pojavljuje se mogućnost da teorijski vrednujemo<br />
kvalitet datog algoritma, bez obzira na kojoj se platformi izvršava.<br />
Definicija 1.1 Za dati problem, čiji su ulazni podaci dimenzije n, kažemo da je<br />
određeni algoritam vremenske složenosti O(g(n)), ako vreme izvršavanja<br />
algoritma u najgorem slučaju ne prelazi vrednost c ⋅ g(n), gde je c konstanta.<br />
Definicija 1.2 Algoritam je polinomske složenosti po vremenu izvršavanja, ako<br />
je vremenske složenosti najviše O(n k ), za neku konstantu k.<br />
Na primer, polinomske složenosti su algoritmi za:<br />
• pretragu uređenog niza, nalaženje Fibonacci-jevih brojeva, ... (složenosti<br />
O(log n));<br />
• pretragu neuređenog niza, zbir elemenata niza, ... (složenosti O(n));<br />
• sortiranje elemenata niza, brzu Furier-ovu transformaciju (FFT), ...<br />
(složenosti O(n log n));<br />
• sabiranje matrica, množenje matrice vektorom, nalaženje najkraćeg puta<br />
(Dijkstra-in algoritam [Dij59]), nalaženje minimalnog drveta razapinjanja ...<br />
(složenosti O(n 2 )) itd.