Problem putanje je fundamentalni problem u teoriji složenosti računara koji uključuje pronalaženje puta između dva vrha u grafu. Za graf G = (V, E) i dva vrha s i t, cilj je utvrditi postoji li put od s do t u G.
Za rješavanje problema putanje, jedan pristup je korištenje algoritma za označavanje. Algoritam označavanja je jednostavna i efikasna tehnika koja se može koristiti za određivanje da li postoji put između dva vrha u grafu.
Algoritam radi na sljedeći način:
1. Počnite tako što ćete označiti početni vrh kao posjećen.
2. Za svaki vrh v susjedni s, označite v kao posjećeno i dodajte ga u red čekanja.
3. Dok red nije prazan, ponovite sljedeće korake:
a. Uklonite vrh u iz reda.
b. Ako je u ciljni vrh t, tada je pronađen put od s do t.
c. Inače, za svaki vrh v susjedni u koji nije posjećen, označite v kao posjećeno i dodajte ga u red čekanja.
Algoritam za označavanje koristi strategiju prelaska u širinu (BFS) kako bi istražio graf i označio vrhove kao posjećene. Na taj način osigurava da se posjećuje svaki vrh koji se može doseći iz početnog vrha, omogućavajući algoritmu da utvrdi postoji li putanja između početnog i ciljnog vrha.
Vremenska složenost algoritma označavanja je O(|V| + |E|), gdje je |V| je broj vrhova u grafu i |E| je broj ivica. To je zato što algoritam posjećuje svaki vrh i svaku ivicu jednom. U smislu teorije računske složenosti, algoritam označavanja pripada klasi P, koja predstavlja probleme koji se mogu riješiti u polinomskom vremenu.
Evo primjera koji ilustruje primjenu algoritma označavanja:
Razmotrite sljedeći grafikon:
A --- B --- C | | D --- E --- F
Recimo da želimo da utvrdimo da li postoji put od vrha A do temena F. Algoritam obeležavanja možemo koristiti na sledeći način:
1. Počnite tako što ćete označiti vrh A kao posjećen.
2. Dodajte vrh A u red čekanja.
3. Uklonite vrh A iz reda čekanja.
4. Označite vrh B kao posjećen i dodajte ga u red čekanja.
5. Uklonite vrh B iz reda čekanja.
6. Označite vrh C kao posjećen i dodajte ga u red čekanja.
7. Uklonite vrh C iz reda čekanja.
8. Označite vrh D kao posjećen i dodajte ga u red čekanja.
9. Uklonite vrh D iz reda čekanja.
10. Označite vrh E kao posjećen i dodajte ga u red čekanja.
11. Uklonite vrh E iz reda čekanja.
12. Označiti vrh F kao posjećen.
13. Pošto je vrh F ciljni vrh, pronađen je put od A do F.
U ovom primjeru, algoritam označavanja uspješno utvrđuje da postoji put od vrha A do temena F.
Problem putanje u teoriji složenosti računanja uključuje pronalaženje puta između dva vrha u grafu. Algoritam označavanja je jednostavna i efikasna tehnika koja se može koristiti za rješavanje ovog problema izvođenjem pretraživanja u širinu i označavanjem vrhova kao posjećenih. Algoritam ima vremensku složenost od O(|V| + |E|) i pripada klasi P.
Ostala nedavna pitanja i odgovori u vezi složenost:
- Zar PSPACE klasa nije jednaka klasi EXPSPACE?
- Da li je P klasa složenosti podskup klase PSPACE?
- Možemo li dokazati da su Np i P klasa iste pronalaženjem efikasnog polinomskog rješenja za bilo koji NP kompletan problem na determinističkom TM?
- Može li NP klasa biti jednaka klasi EXPTIME?
- Postoje li problemi u PSPACE-u za koje ne postoji poznati NP algoritam?
- Može li SAT problem biti NP potpuni problem?
- Može li problem biti u klasi složenosti NP ako postoji nedeterministička Turingova mašina koja će ga riješiti u polinomskom vremenu
- NP je klasa jezika koji imaju verifikatore polinomskog vremena
- Da li su P i NP zapravo ista klasa složenosti?
- Da li je svaki jezik bez konteksta u P klasi složenosti?
Pogledajte više pitanja i odgovora u Complexity