22
Sadržaj 1. Uvod...................................................... 1 2. Klasa NP-teška............................................ 2 2.1.Definiranje NP klase....................................2 2.2. Klasa NP-teška.........................................3 3. Problem trgovačkog putnika................................5 3.1. Opis problema trgovačko putnika........................5 3.2. Povijest problema trgovačko putnika....................5 3.3. Je li je problem trgovačko putnika NP-težak?...........8 3.3.4. Dokaz NP-težine TSP problema.......................8 3.4. Rješavanja TSP problema................................9 3.5. Implementacija algoritma..............................12 3.5.1. Kod algoritma..................................... 12 Zaključak................................................... 14 LITERATURA.................................................. 15

NP teški problem: primjer problema trgovačkog putnika

Embed Size (px)

DESCRIPTION

Klasičan primjer NP teškog probleman na problemu trgovačkog putnika.

Citation preview

Page 1: NP teški problem: primjer problema trgovačkog putnika

Sadržaj1. Uvod....................................................................................................................................1

2. Klasa NP-teška....................................................................................................................2

2.1.Definiranje NP klase.........................................................................................................2

2.2. Klasa NP-teška.............................................................................................................3

3. Problem trgovačkog putnika...............................................................................................5

3.1. Opis problema trgovačko putnika....................................................................................5

3.2. Povijest problema trgovačko putnika...............................................................................5

3.3. Je li je problem trgovačko putnika NP-težak?.................................................................8

3.3.4. Dokaz NP-težine TSP problema...............................................................................8

3.4. Rješavanja TSP problema................................................................................................9

3.5. Implementacija algoritma..............................................................................................12

3.5.1. Kod algoritma.........................................................................................................12

Zaključak...................................................................................................................................14

LITERATURA.........................................................................................................................15

Page 2: NP teški problem: primjer problema trgovačkog putnika

1. Uvod

U ovom seminarskom radu će se opisati klasa složnosti NP-teška, iz koje dolaze,

danas, problemi velike složenosti. Opisati će se odnos problema iz NP-teške klase sa

pitanjem P=NP, te navesti primjere takvih problema. U radu će se izdvojiti problem

trgovačkog putnika koji mnogim istraživačima, u zadnjih nekoliko desetljeća plijeni

mnogo pozornosti. Opisati će se, ukratko, kako je napredovalo rješavanje toga problema

tijekom povijesti. U zavr šetku rada će biti navedena jedna implementacija u C jeziku, te

izračun složenosti.

1

Page 3: NP teški problem: primjer problema trgovačkog putnika

2. Klasa NP-teška

2.1.Definiranje NP klase

Prije definiranja klase NP-teške , u koju spadaju NP-teški problemi, definirati ćemo samu

klasu složenosti NP koja jedna od osnovnih klasa složenosti iz računalne teorije složenosti

koja je povezana sa svim klasama iz NP obitelji, te u nju spada (i u klasu NP-teški i NP-

potpuna) i problem trgovačkog putnika.

Da bi definirali NP1 trebamo objasniti nedeterminističko izvršavanje u polinomijalnom

vremenu, koja se odnose na probleme iz klase NP, i predstavljaju dva osnovna i bitna

obilježja klase NP (N predstavlja nedeterministički; eng. nondeterministic i P predstavlja

polinomijalno vrijeme; eng. polynomial time).

„Kažemo da algoritam rješava problem u polinomijalnom vremenu ako u najgorem

slučaju vremenska efikasnost algoritma teži O(p(n)) gdje je p(n) polinom problema ulazne

veličine n. „2

„Nedeterministički algoritam je procedura, koja se sastoji od dva koraka, koja uzima kao

ulaz instancu I problema odlučivanja i radi slijedeće. Nedeterministički („nagađajući“) korak:

Generira se proizvoljan niz S koji se uzima kao moguće rješenje za danu instancu problema I

(ali može i biti potpuni promašaj). Deterministički („provjere“) korak: Deterministički

algoritam uzima i I i S kao ulaz i kao izlaz daje da ako S predstavlja rješenje za instancu I

danog problema. (Ako S nije rješenje, algoritam ili vraća ne ili ne vrača ništa.)

Kažemo da nedeterministički algoritam rješava neki problem, koji je problem odlučivanja,

ako i samo ako za svaku da instancu problema vraća da pri nekom izvršenju.“3

Drugim riječima rečeno, zahtijeva se od nedeterminističkog algoritma da bude

sposoban „pogoditi“ rješenje. Slijedi da, za nedeterministički algoritam kaže se da se

1 NP se od sada odnosi na klasu složenosti NP.2 Prevedeni dio iz knjige „Introduction to the Design & Analysis of Algorithms“, str 431-432. [Anany Levitin, 2012]3 Ibid, str 431.

2

Page 4: NP teški problem: primjer problema trgovačkog putnika

izvršava u polinomijalnom vremenu ako je vremenska efikasnost koraka provjere

polinomijalne složenosti.

„Dakle problem spada u NP klasu ako je rješiv u polinomijalnom vremenu

nedeterminističkim algoritmom.“4 [Levitin, 2012., 431.]

2.2. Klasa NP-teška

Za neki problem kažemo da je NP-teški (nedeterministički u polinomijalnom vremenu

teški ) problem ako se je jedan od rješavajući algoritama, toga problema, može svesti na jedan

takav da rješava bilo koji NP-problem. To znači da je NP-teški problemi u najmanju ruku

teški kao bilo koji NP-problem, ili teži.5 Dakle, NP-teški problemi ne moraju biti unutar NP

klase; niti moraju biti problemi odlučivanja nego mogu biti i problemi pretraživanja i

problemi optimizacije. Grafički prikaz odnosa između klasa NP i NP-teške su prikazani na

slici 1 pomoću Eulerovih dijagrama.

Primjeri nekih od problema koji spadaju u klasu NP-teških problema:

- problem trgovačkog putnika

- problem sume podskupova

- problem zadovoljivosti (SAT)

- problem bojanja grafa

- problem naprtnjače

- popularna igrica minolovac (minesweeper)

4 Također treba napomenuti da se često u definicijama umjesto „nedeterministčki algoritam“ koristi se naziv nedeterministički Turinog stroj. 5 Weisstein, Eric W. "NP-Hard Problem." , Math World, http://mathworld.wolfram.com/NP-HardProblem.html,

3

Page 5: NP teški problem: primjer problema trgovačkog putnika

- problem sortiranja zagorenih palačinki6

Iz gore navedene definicije navedeno je kako su NP-teški problemi teški barem kao svaki

NP problem, ili još teži. Što to znači? Koliko su NP-teški problemi zaista teški? Ako neki

problem iz klase NP-teških problema to ne znači da ga je teže riješiti od bilo kojeg problema

iz klase NP, nego da će vrijeme izvršenja algoritma za NP-teški problem biti veće od vremena

izvršenja (vremenska složenost) za algoritam NP problema. Slijedeće pitanje koje se nameće

je: „Koje je vrijeme složenosti problema iz NP klase, pa onda i iz NP-teške klase?“. Naime

konačnog odgovarana na to pitanje trenutno nema. Mnogi algoritmi iz NP klase su

polinomijalne složenosti, ali oni najteži, koji spadaju u NP-potpunu klasu, nisu polinomijalne

složenosti, ali njihova rješenja mogu biti provjerena u polinomijalnom vremenu. Danas ne

postoji niti jedan algoritam za NP-teški problem koji rješava taj problem u polinomijalnom

vremenu, ali kao što je rečeno to ne znači da ga nema i to je otvoreno pitanje danas. To pitanje

glasi: „Da li je P=NP?“. Odgovor na to pitanje će imati veliki utjecaj na računalnu znanost.

Ako se ispostavi da je P=NP kreiranjem nekoga algoritma, koji je polinomijalne

vremenske složenosti, za NP-potpuni (npr. 3SAT) problem; bi bili u mogućnosti razbiti

većinu kriptografski sustava danas. To bi utjecalo na mnoge znanosti u kojima se javljaju

takvi problemi (logistika, biologija, matematika itd.). Ipak taj odgovor ne bi odgovorio na

pitanje mogu li se problemi iz NP-teške klase svesti na algoritme polinomijalne složenosti.

Ako se ispostavi da je P≠NP, onda je sigurno da problemi iz NP-teške klase nemaju

algoritme koje rješavaju takve probleme u polinomijalnom vremenu. Danas se uvelike sumnja

da je to odgovor na pitanje P=NP7, ali nitko još nije ponudio valjan dokaz za to; ipak neke

istraživače to nije spriječilo da svoja istraživanja usmjere u tom smjeru (gdje je P≠NP).

6 Pogledati: http://www.i-programmer.info/news/112-theory/3280-pancake-flipping-is-hard-np-hard.html. 7 Istraživanje mišljenja znanstvenika o pitanju „P=NP“: http://www.cs.umd.edu/~gasarch/papers/poll.pdf .

4

Page 6: NP teški problem: primjer problema trgovačkog putnika

3. Problem trgovačkog putnika

3.1. Opis problema trgovačko putnika

U problemu trgovačkog putnika (skraćeno TSP problem, od end. traveling salesman

problem) radi se o tome da imamo trgovačkog putnika koji mora obići točno jednom sve

zadane gradove po što jeftinijoj cijeni ili najkraćim putem (ovisno kako je već problem

zadan). Pravilo je jednostavno, mora obići sve gradove jednom i vratiti se u početni grad iz

kojega je krenuo. Postoje dvije vrste TSP problema: simetrična i asimetrična. Kod simetrične

vrste problema cijena rute između dva grada je ista u oba smjera, dok kod asimetrična to ne

mora biti, tj. mogu biti različite.

To je problem iz teorije grafova koji već dugo privlači mnoge pažnje, i jedan je od

najproučavanijih, ako ne i najproučavaniji, problem iz područja računalne matematike8. Jedan

od razloga velikoga zanimanja za TSP problem je taj da se može uzeti kao polazište za

dobivanje općenitih metoda koje se mogu primijeniti u rješavanju širokog opsega diskretnih

optimizacijskih problema9. Praktična primjena TSP problema je nemala, čak i u čistoj

njegovoj formi, kao što je logistika, planiranje, proizvodnja mikročipova. Malo modificiran

on se pojavljuje i u mnogim drugim područjima kao što je izračun DNA sekvence.

3.2. Povijest problema trgovačko putnika

Izvornost problema trgovačkog putnika, i tko je nazvao taj problem tako, je nepoznata.

Mnogi su se trgovci na cesti zaista zanimali za strateško planiranje što ekonomičnije rute do

područja njihovih klijenata, tako se problem prvi put spominje u priručniku jednoga

njemačkog trgovačkog putnika iz 1832. godine10. U njemu Commis-Voyageur je opisao

problem, iako ne matematički, i dao je primjer pet rute kroz područje Njemačke i Švicarske.

Samo je jedan od tih ruta zaista bila TSP ruta jer se u ostalim četirima rutama putnik vraća

8 Applegate, Bixby, Chvatal, Cook, Traveling Salesman Problem, Princeton University Press, 2007., str 1.9 Izvor: http://www.tsp.gatech.edu/apps/index.html, (valjanost izvora: autor stranice je William Cook jedan od sukreatora algoritma pla89500).10 Applegate, Bixby, Chvatal, Cook, Traveling Salesman Problem, Princeton University Press, 2007., str 2.

5

Page 7: NP teški problem: primjer problema trgovačkog putnika

ponovo u neke gradove. Na slici 2 može se vidjeti Commis-Voyageur ruta opisana u tom

priručniku kroz područje Njemačke.

Često se ruta trgovačkog putnika naziva i (najkraći) hamiltonov ciklus po, jednom od

najvažnijih matematičara 19. stoljeća, Williamu Rowanu Hamiltonu. Hamilton je izmislio

igru Icosian koja se sastojala od 20 točaka (vrhova) koje je trebalo sve povezati posjećujući

svaki samo jednom i na kraju se vratiti u početku točku tj. naći hamiltonov ciklus. Poslije su

Hamilton i Thomas Penyngton Kirkman objavili nekoliko radova11 u kojima su obrađivali

matematičke principe koji su vezani uz problem trgovačkog putnika.

Opći oblik TSP problema prvi je počeo proučavati Karl Menger i on ga je 1930.

opisao u matematičkom smislu. Nedugo nakon toga Hassler Whitney sa Sveučilišta u

Princetonu je uveo pojam „ problem trgovačkog putnika“. Tijekom 1940-tih problem biva

proučavan od strane statističara (Mahalanobis (1940), Jessen (1942), Gosh (1948), Marks

(1948))12. Od toga razdoblja popularnost problema raste te 50-tih i 60-tih 20. stoljeća postaje

veoma popularan u europskim i američkim znanstvenim krugovima. Značaj doprinos daju

1954. godine George Dantzig, Ray Fulkerson, i Selmer Johnson, iz korporacije RAND, koji

objavljuju opis metode za rješavanje TSP problema i dajući primjer rješavanja problema od

49 instanci što je u to vrijeme bilo zapanjujući uspjeh. U narednom razdoblju zanimanje za

11 Raspravu o ranim njihovim radovima se može naći u knjizi Graph Theory 1736-1936, N.L. Biggs, E. K. Loyd, R.J. Wilson, Clarendom Press, Oxford, 1976.12 Applegate, Bixby, Chvatal, Cook, Traveling Salesman Problem, Princeton University Press, 2007., str 11.-12.

6

Slika 2: Commis-Voyageur ruta

Page 8: NP teški problem: primjer problema trgovačkog putnika

TSP problem raste još više te se istraživači iz raznih područja znanosti (matematike,

računarstva, fizike, kemije itd.) počinju baviti TSP problemom.

Richard M. Karp 1972. godine dokazuje da prominentan broj kombinatoričkih

problema NP-teško, uključujući i problem trgovačkog putnika13.

Napredak u efikasnosti rješavanja raste tako da Padberg i Rinaldi (1987) nalaze

optimalnu rutu za 532 grada, Groetschel and Holland 1987. god. za 666 instanci, Padberg i

Rinaldi 1987. nalaze optimalnu rutu za 2.392 instanci.

U 90-tim, Applegate, Bixby, Chvatal i Cook razvijaju program Concorde14 koji je

korišten za rješavanje mnogih slučajeva sa rekordnim brojem instanci. Gerhard Reinelt je

1991. objavio TSPLIB15, zbirku benchmarka instanci različite težine, koja se koristi od strane

mnogih istraživačkih skupina za uspoređivanje rezultata. Cook i ostali, su 2006. uspjeli

izračunati pomoći Concordea i  Domino-paritya optimalnu rutu za do sada rekordnu veličinu

instance od 85.900(pla85900)16. Za dobivanje rješenja pla85900 trebalo je približno 136

procesorski godina skalirano na 2.4 Ghz AMD Opteron17. To dovoljno govori o težini

problema TSP i važnosti pronalaženja efikasnog algoritma za taj problem.

13 Ibid, str. 49.14 Concorde je pisao u programskom jeziku C i ima oko 130.000 linija koda. Kod programa i popratna dokumentacija se može skinuti sa http://www.tsp.gatech.edu .15 TSPLIB je dostupan ovdje http://comopt.ifi.uni-heidelberg.de/software/TSPLIB95/ .16 Pogledati: http://www2.isye.gatech.edu/~wcook/papers/proof.pdf .17 Pogledati: http://www.tsp.gatech.edu/pla85900/compute/cpu.htm .

7

Page 9: NP teški problem: primjer problema trgovačkog putnika

Slika 3: Grafički prikaz rješenja pla85900

3.3. Je li je problem trgovačko putnika NP-težak?

Da bi dokazali da je neki problem NP-težak potrebno je metodom redukcije u

polinomijalnom vremenu pokazati da se neki „stari“ problem, za kojeg je poznato da je NP-

potpun ili NO-težak, može reducirati u polinomijalnom vremenu na taj „novi“ problem.

„Dokaz je valjan, jer ako bi se novi problem mogao riješiti u polinomijalnom vremenu, tada bi

se i stari problem primjenom redukcije mogao riješiti u polinomijalnom vremenu, pa bi zbog

NP-potpunosti ili NP-težine starog problema vrijedilo P=NP.“ [Robert Manger, prezentacije

sa FESB-a]

Problem, koji se može reducirati na problem

trgovačkog putnika je problem hamiltonovih ciklusa za koje

je dokazano da je NP-teški problem i to je posve intuitivno,

jer ruta trgovačkog putnika je zapravo najkraći Hamiltonov

ciklus. NP-težina hamiltonovih ciklusa je također dokazana

redukcijom na drugi NP-teški problem, i tako dalje sve do

cirkularnog SAT problema čija je NP-težina dokazana

8

Slika 4: Prikaz toka dokazivanje nekih NP-potpunih problema

Page 10: NP teški problem: primjer problema trgovačkog putnika

matematički, a onda su se dokazi drugih NP-teških problema svodili na reduciranje toga

problema kao što se slici 4.

3.3.4. Dokaz NP-težine TSP problema

Dakle, znamo da je problem nalaženja Hamiltonovog ciklusa NP-težak. Teorem glasi:

problem trgovačkog putnika je NP-težak.

Dokaz teorema18: Neka graf G određuje primjerak problema hamiltonovih ciklusa.

Konstruiramo u polinomijalnom vremenu potpuni graf G' kojeg shvatimo kao primjerak

problema trgovačkog putnika:

- G' ima ste vrhove kao G,

- duljine onih bridova u G' koji postoje i u G su 1,

- duljine ostalih bridova u G' su 2.

Tada G ima Hamiltonov ciklus ako i samo ako Hamiltonov ciklus minimalne duljine u G'

ima duljinu ≤ n.

3.4. Rješavanja TSP problema

Traženje što efikasnijeg algoritma za TSP problem je važno radi njegove velike

primjerne i mnogi se time bave. Kako se naslućuje da rješenje na veliku dilemu da li je P=NP

je negativan, to povlači da ne postoje sigurno algoritmi koji rješavaju NP-teške probleme u

polinonomijalnom vremenu, a tako niti za TSP problem, pa je važno naći što efikasniji

algoritam. Za rješavanje NP-teških problema koriste se tri vrste algoritama koje se dalje dijele

u pod vrste:

- Egzaktni algoritam: rješava određene kombinatorne probleme dajući globalni

minimum.

o Algoritam odsijecajućih ravnina: problem se formulira kao problem

cjelobrojnog linearnog programiranja, te se rješava simplex metodom.

18 Pogledati: http://www.cs.mun.ca/~kol/courses/6743-f07/lec10.pdf .

9

Page 11: NP teški problem: primjer problema trgovačkog putnika

o Dinamičko programiranje: temelji se na rješavanju niz primjeraka

problema iste vrste, ali manje veličine toga problema; koristiti se

memoizacija.

o Backtracking: algoritam se temelji na rekurzivnom načinu pretraživanja

čitavoga prostora stanja i problema, kako bi se našlo n-torku koja

predstavlja rješenje ili se utvrdilo da je nema; mogu se rezati pojedina pod-

stabla, koja krše ograničenja (ne vode do rješenja), što ubrzava

pretraživanje.

o Metoda grananja sa ograničenjima: poboljšana verzija backtrackinga,

primjenjiva je na optimizacijske probleme; u stablu prostora stanja i

problema režu se grane koje ne vode do dopustivog rješenja, ali i one koje

ne vode do boljeg rješenja. Za ovaj algoritam je potrebno je dobro odrediti

početno rješenje koje će nam biti mjerilo valjanosti ostalih rješenja.

- Aproksimacijski algoritmi: u polinomijalnom vremenu daju približno rješenje, te

daju i garanciju da je to rješenje „blizu“ optimalnog.

o Apsolutntne aproksimacije: približni algoritmi koji daju neku garanciju da

je apsolutna greška u odnosu na egzaktno rješenje, koje je optimalno,

manje od neke konstante.

o Relativne aproksimacije: približni algoritmi daju garanciju da je relativna

pogreška u odnosu na egzaktno rješenje manje od neke konstante.

o Aproksimacijske sheme: parametrizirane varijante relativnih aproksimacija,

koje mijenjanjem parametara omogućuju smanjenje relativne pogreške, ali

to dovodi povećanja složenosti algoritma.

- Heuristike: algoritmi koji brzim i jednostavnim računanjem daju približno rješenje,

koje se obično pokazuju zadovoljavajućim unatoč nedostatku garancije njegove

„dobrote“.

o Heuristike specifičnih problema: to su heuristični algoritmi koji su

namijenjeni za rješavanje točno određenih problema.

o Metaheuristički algoritmi19: obuhvaćaju široki skup algoritama

namijenjenih optimizacijskim problemima. Pokazali su se izuzetno dobrim

u rješavanju NP-teških problema nerješivih egzaktnim algoritmima u

stvarnom vremenu.

19 Pogledati: http://www.zemris.fer.hr/~golub/ga/studenti/seminari/2007_radanovic/podjela.html.10

Page 12: NP teški problem: primjer problema trgovačkog putnika

Najjednostavniji algoritam koji se može napraviti za rješavanje TSP problema je onaj

koji jednostavno provjeriti sve moguću permutacije tražeći najkraću rutu, tj. koristiti brute

force pretraživanje prostora stanja i problema. Takav algoritam je izuzetno neefikasan jer ima

složenost O((0n-1)!), što je i za današnja računala veliki problem. Bolji algoritam, od toga,

metodom dinamičkog programiranja našli su 1962. godine Michael Held i Richard Karp. Taj

algoritam osigurava složenost O(n22n), što je puno bolje od (n-1)!, ali je opet i taj algoritam za

instance veličine 100 zahtijeva računanje sa veoma velikim brojevima.

Različiti algoritmi grananja i ograničenja uspješno rješavaju instance veličine od 40 do

60. Progresivno implementirani algoritmi uz pomoć linearnog programiranja radi dobro do

200 instanci. Implementacije algoritma, grananja sa ograničenjima zajedno sa generatom za

odsijecanja grana (grananje i odsijecanje, eng. branch and cut), se danas koristi za rješavanje

velikih instanci problema i sa tim algoritmom su riješene, do danas, rekordne instance (33810

i 85900)20.

1954 1971 1977 1980 1987 1987 1987 1994 1998 2001 2004 2005 20060

10000

20000

30000

40000

50000

60000

70000

80000

90000

100000

dantzig49 hk64 gr120 lin318 att532gr666 pr2392pla7397

usa13509 d15112sw24978

pal33810

pla85900

Graf prikazuje napredak u rješavanju TSP problema.

Ipak, danas se uz pomoć heurističkih algoritama može odrediti približno optimalna

ruta sa danim postotkom najveće pogreške. Tako su si istraživači 2001. godine dali za

problem, da riješe instancu veličine 1,904,711-gradova, tj. lokacija diljem svijeta i taj problem

su nazvali „World TSP“. Taj problem je trenutno veoma teško riješiti egzaktnim algoritmima,

20 Za detalje pogledati: http://www2.isye.gatech.edu/~wcook/papers/proof.pdf.11

Page 13: NP teški problem: primjer problema trgovačkog putnika

ali trenutno najbolje rješenje je dao Keld Helsgaun21 koristeći varijantu LKH heurističkog

algoritma. Računalni program Concorde, koji je pronašao optimalnu rutu za pla85900, je

izračunao da Keld Helsgaun-ova ruta je, u najgorem slučaju, 0.474% veća od optimalne rute.

21 Pogledati: http://www.tsp.gatech.edu/world/index.html.12

Page 14: NP teški problem: primjer problema trgovačkog putnika

3.5. Implementacija algoritma

3.5.1. Kod algoritma

Kod je napisan u programskom jeziku C.

#include <stdio.h>#define MAX 100#define INFINITY 999

int TSP_al (int c[][MAX], int ruta[], int pocetak, int n);

int main(){int n; /* Broj gradova. */int i, j; /* Brojači u petljama. */int c[MAX][MAX]; /* Matrica koja prikazuje cijenu putova između gradova. */int ruta[MAX]; /* Matrica rute. */int cost; /* Najmanja cijena. */

printf ("Problem putujeceg trgovca - dinamicko programiranje.");printf ("\nBroj gradova? ");scanf ("%d", &n);printf ("Unesite matricu troskova: (999: ne postoji veza)\n");for (i=0; i<n; i++)

for (j=0; j<n; j++)scanf ("%d", &c[i][j]);

for (i=0; i<n; i++)ruta[i] = i;

cost = TSP_al (c, ruta, 0, n);

printf ("Minimalni trosak: %d.\nTour: ", cost);for (i=0; i<n; i++)

printf ("%d ", ruta[i]+1);printf ("1\n");

}

int TSP_al (int c[][MAX], int ruta[], int pocetak, int n){int i, j, k; int mem[MAX]; int minimalna[MAX];

13

Page 15: NP teški problem: primjer problema trgovačkog putnika

int mincijena;int trencijena; /* Rubni uvjet rekurzije. */if (pocetak == n - 2)

return c[ruta[n-2]][ruta[n-1]] + c[ruta[n-1]][0];/* Izračunava rutu počevši od trenutnog grada. */mincijena = INFINITY;

for (i = pocetak+1; i<n; i++) { for (j=0; j<n; j++)mem[j] = ruta[j];

mem[pocetak+1] = ruta[i];mem[i] = ruta[pocetak+1];

if (c[ruta[pocetak]][ruta[i]] +(trencijena = TSP_al (c, mem, pocetak+1, n)) < mincijena) {mincijena = c[ruta[pocetak]][ruta[i]] + trencijena;for (k=0; k<n; k++)

minimalna[k] = mem[k];}

}for (i=0; i<n; i++) ruta[i] = minimalna[i];

return mincijena;}

3.5.2. Složenost algoritma

Analizom koda dobio sam:

T (n )=7∗c+(n−1 )∗(n∗(2∗T (n−1 )∗n))

Prve inicijalizacije varijabli, provjeravanje uvjeta i poziv funkcije return su konstante.

Prva petlja ide do n, a druga unutar if uvjeta također ide do n. S obzirom da svakim pozivom

rekurzije, tj. dolaskom u novi grad otvaraju nam se mogućnosti odlaženja u druge gradove iz

toga grada, a da ih prethodno nismo posjetili. Ukupno svih tih mogućnosti ima 2n, dalje onda

imamo (n-1) se smanjuje do 1 s obzirom da varijabla pocetak raste i što je veća iteracija u

prvoj petlji je sve manji te ga možemo zanemariri.

T (n )=7∗c+1∗n2∗2n=n22n

14

Page 16: NP teški problem: primjer problema trgovačkog putnika

Zaključak

Rješavanje NP-teških problema nije lako, ali tražiti za njih efikasne algoritme ja jako

teško; tako da svako poboljšanje, koje će smanjiti eksponencijalnu složenost, takvih algoritma

je veoma vrijedno. Perfomanse računala stalno rastu, ali to nije dovoljno za efikasno

rješavanje veoma velikih instanci takvih problema, i s obzirom na to, bitno je tražiti „bolje“

algoritme za takve probleme. Od takvih problema definitivno se ističe problem trgovačkog

putnika koji je u zadnjih nekoliko desetljeća možda najproučavaniji NP-teški problem.

Zanimljiv je radi svoje upečatljive složenosti i praktičke primjene. Mnogi se nadaju da će

nalaženjem algoritma, vremenske polinomijalne složenosti, za TSP problem okončati

otvoreno pitanje P=NP, ali takvo rješenje još nije niti „na vidiku“; a mnogi kažu da i neće

nikada biti, zbog toga što se sumnja da je P≠NP.

15

Page 17: NP teški problem: primjer problema trgovačkog putnika

LITERATURA

1. Anany Levitin (2011): Introduction to The Design and Analysis of Algorithms -

Pearson

2. David L. Applegate, Robert E. Bixby, Vasek Chvátal & William J. Cook (2007): The

Traveling Salesman Problem - Princeton University Press

3. Lane A. Hemaspaandra: SIGACT News Complexity Theory Column 36 - Dept. of

Computer Science, University of Rochester (znanstveni članak)

4. David L. Applegate, Robert E. Bixby, Vašek Chvatal, William Cook, Daniel G.

Espinoza, Marcos Goycoolea, Keld Helsgaun: Certification of an optimal TSP tour

through 85,900 cities (znanstveni članak)

5. Gerhard J. Woueginger: Exact algorithms for NP-hard problems: A survey (znanstveni

članak)

6. http://www.cs.mun.ca/~kol/courses/6743-f07/lec10.pdf , učitano 22.1.2013.

7. http://valis.cs.uiuc.edu/~sariel/teach/courses/473/notes/03_npc_notes.pdf , učitano

22.1.2013.

8. http://www.e-drustvo.org/proceedings/YuInfo2011/html/pdf/024.pdf , učitano

22.1.2013.

9. http://www.fer.unizg.hr/_download/repository/Predavanja_1-2_%5BHR%5D_-

_Uvod_u_optimizacije.pdf, učitano 22.1.2013.

10. http://www.tsp.gatech.edu/world/index.html , učitano 22.1.2013.

11. http://www.tsp.gatech.edu/, učitano 22.1.2013.

16