Problem najšireg puta — разлика између измена
Садржај обрисан Садржај додат
м Renamed template |
м Разне исправке |
||
Ред 14:
Za bilo koji graf, usmeren ili neusmeren, postoji jasan algoritam za traženje najšireg puta, čim je poznata težina ivice minimalne težine: jednostavno se obrišu sve manje grane i traži se bilo koji put između ostalih ivica koristeći [[pretraga u širinu|obilazak stabla u širinu]] (BFS) ili [[pretraga u dubinu|obilazak stabla u dubinu]] (DFS). Na osnovu ovog testa, takođe postoji algoritam linearnog vremena za nalaženje najšireg {{math|''s-t''}} puta u neusmerenom grafu, koji ne koristi maksimalno razapinjuće stablo. Osnovna ideja algoritma je da se algoritam pretrage linearne vremenske složenosti primeni na grani srednje težine, i onda ili da se obrišu sve manje grane ili da se sve veće grane skupe u zavisnosti od toga da li put postoji ili ne postoji, i da se zatim rekurzivno smeste u manji rezultujući graf.
{{
Ako su težine svih grana neusmerenog grafa pozitivne, onda minimax udaljenost između parova tačaka (maksimalna težina ivica minimax puta) formira ultrametrički prostor (specijalna vrsta [[metrički prostor|metričkog prostora]]); obrnuto svaki konačan ultrametrički prostor dolazi od minimax udaljenosti. Struktura podataka formirana od minimalnog razapinjućeg stabla dozvoljava da minimax udaljenost između bilo kog para čvorova bude izračunata za konstantno vreme u zavisnosti od udaljenosti, koristeći najmanjeg zajedničkog pretka u [[Dekartovo stablo|Dekartovom stablu]] ([[binarno stablo]]). Koren Dekartovog stabla predstavlja najtežu granu minimalnog razapinjućeg stabla, i deca korena su Dekartova stabla koja su rekurzivno formirana od podstabla minimalnog razapinjućeg stabla formiranog uklanjanjem najtežih grana. Listovi Dekartovog stabla predstavljaju čvorove ulaznog grafa, a minimax rastojanje između dva čvora je jednako težini čvora koji je najmanji zajednički predak Dekartovog stabla. Jednom kad je minimalno razapinjuće stablo sortirano, Dekartovo stablo se može konstruisati za linearno vreme.
Ред 28:
Da bi se izračunala najšira širina puta za sve parove čvorova u zbijenom usmerenom grafu, kao graf koji se javlja u primeni u glasanju, asimptotski najbrži mogući pristup ima vremensku složenost {{math|''O''(''n''<sup>(3+ω)/2</sup>)}} gde je ω eksponent za brzo množenje matrica. Koristeći najbolje poznate algoritme za množenje matrica, vremenska složenost postaje {{math|''O''(''n''<sup>2.688</sup>)}}.<ref>{{citation
=== Jedan izvor ===
Ako su grane sortirane na osnovu svojih težina, onda izmenjena verzija [[Dijkstrin algoritam|Dijkstrinog algoritma]] može da računa uska grla između određenog početnog i svakog drugog čvora u grafu, za linearno vreme. Ključna ideja iza ubrzane konvencionalne verzije Dijkstrinog algoritma je da sekvenca rastojanja do svakog čvora, sa ciljem da se čvorovi uzimaju u obzir ovim algoritmom, je monotona podsekvenca svih sortiranih težinskih grana; stoga red sa prioritetom Dijkstrinog algoritma može biti zamenjen nizom brojeva od 1 do m (broj grana u grafu), gde član niza i sadrži čvorove čije rastojanje je težina grane na poziciji i u sortiranom redosledu. Ova metoda dozvoljava da se problem najšireg puta reši brzo koliko i [[algoritmi sortiranja|sortiranje]]; na primer, ako je težina grane predstavljena kao ceo broj, onda bi se vreme koje je potrebno za sortiranje liste od m celih brojeva moglo primeniti na ovaj problem.
=== Jedan izvor i jedno odredište ===
{{
Još jedna primena najširih putanja se javlja u [[Ford–Fulkerson algorithm|Ford-Fulkersonovom algoritmu]] za problem maksimalnog protoka. Više puta povećavajući protok duž maksimalnog kapaciteta puta u mreži protoka dovodi do male granice, {{math|''O''(''m'' log ''U'')}}, brojeva povećanja koji su potrebni da bi se našao maksimalni protok; ovde, grane kapaciteta su podrazumevano celi brojevi, koji su u većini slučajeva U. Ipak, ova analiza nije pozdana za nalaženje puta koji ima maksimalni kapacitet; bilo koji put čiji kapacitet ima konstantan faktor maksimuma je dovoljan. Kombinujući ovu približnu ideju sa metodom povećanja najkraćeg puta [[Edmonds–Karp algorithm|Edmonds-Karpovog algoritma]], dovodi do algoritma maksimalnog protoka koji je složenosti {{math|''O''(''mn'' log ''U'')}}.<ref name="amo">{{citation | first1=Ravindra K. |last1=Ahuja| author1-link = Ravindra K. Ahuja | first2 = Thomas L. |last2=Magnanti| author2-link = Thomas L. Magnanti | first3 = James B. |last3=Orlin| author3-link = James B. Orlin | title= Network Flows: Theory, Algorithms and Applications | publisher=Prentice Hall |year=1993|id=ISBN 0-13-617549-X|contribution=7.3 Capacity Scaling Algorithm|pages=210–212}}</ref>
Moguće je vrlo efikasno naći putanje maksimalnog kapaciteta i minimax putanje sa pojedinačnim izvorom i pojedinačnim odredištem čak i u modelima računanja kod kojih ne smemo da vršimo bilo kakvu matematičku operaciju, možemo samo da upoređujemo grane ulaznog grafa. Algoritam sadrži set od {{math|''S''}} grana za koje se zna da predstavljaju usko grlo optimalnog puta; inicijalno, {{math|''S''}} je samo set svih {{math|''m''}} grana grafa. U svakoj iteraciji algoritma, {{math|''S''}} se deli na određene podsetove {{math|''S''<sub>1</sub>, ''S''<sub>2</sub>, ...}} koje su približno istih veličina; broj podsetova u ovoj podeli nije slučajan, izabran je tako da se sve razdvojene tačke između podsetova mogu naći ponavljanjem srednjeg-traženja za vreme {{math|''O''(''m'')}}. Algoritam zatim ponovo postavlja težinu svakoj grani grafa u zavisnosti od indeksa podseta kojoj grana pripada, i zatim se na tako izmenjenom grafu primeni izmenjeni Dijkstrin algoritam; i u zavisnosti od rezultata računanja, algoritam može za linearno vreme da odredi koji od podseta sadrži granu koja ima težinu uskog grla. Nakon toga se {{math|''S''}} zameni podsetom {{math|''S''<sub>''i''</sub>}}, za koji se prethodno ustanovilo da sadrži granu uskog grla, i počinje sledeću iteraciju sa sada novim setom {{math|''S''}}. Broj podsetova na kojih se {{math|''S''}} može podeliti se eksponencijalno povećava svakim korakom, pa je broj iteracija proporcionalan logaritamskoj funkciji, {{math|''O''(''log*n'')}}, dok je vremenska složenost ovog algoritma {{math|''O''(''mlog*n'')}}.<ref>{{citation
== Euklidov set tačaka ==
Varijanta problema minimax putanje se takođe uzela u obzir za set tačaka u [[Euklidova geometrija|Euklidovoj geometriji]]. Za razliku od neusmerenih grafova, ovaj problem može da se reši vrlo efikasno tako što se nađe Euklidovo minimalno razapinjajuće stablo. Ipak, postaje komplikovanije kada je put takav da ne minimizuje samo kratka rastojanja nego, među putanjama koje imaju ista kratka rastojanja, minimizuje ili približno minimizuje ukupnu dužinu puta. Približno rešenje se može dobiti korišćenjem tzv. geometrijskih izvijača.<ref>{{citation
|