210 likes | 356 Views
INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet. Hans Fr. Nordhaug/ Ola Bø. Kompleksitet. Problemer kan være mer eller mindre vanskelige å løse - eksempler fra graf-algoritmer Eulers sykel Besøker hver kant nøyaktig en gang Kan løses i lineær tid Hamiltons sykel
E N D
INF 295 Algoritmer og datastrukturerForelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø
Kompleksitet • Problemer kan være mer eller mindre vanskelige å løse - eksempler fra graf-algoritmer • Eulers sykel • Besøker hver kant nøyaktig en gang • Kan løses i lineær tid • Hamiltons sykel • Besøker hver node i en urettet graf nøyaktig en gang, men retur til startnoden. • Har ingen kjent effektiv algoritme • Korteste uveide vei • Løselig i lineær tid • Lengste uveide vei • Har ingen kjent effektiv algoritme
Håndterbar • Problemer som kan løses i polynomsk tid er håndterbare (tractable). • Og problemer som ikke kan løses i polynomsk tid er uhåndterbare (intractable). • Hvorfor denne grensen? • Ikke-polynomsk kjøretid vokser for fort. • Sjelden høyere grad enn 3 (eller store koeff.) • Gode egenskaper for polynomer. • Leder til kompleksitetsteori.
Klassene P og NP • P er klassen av bestemmelsesproblemer som kan bli løst i polynomsk tid av (deterministiske) algoritmer. • NP er klassen av bestemmelsesproblemer som kan bli løst av ikke-deterministiske polynomske algoritmer.
NP-komplette problemer • Det finnes en rekke viktige problemer som har tilnærmet samme kompleksitet - disse problemene klassifiseres som NP-komplette problemer. • Vet ikke om de kan løses i polynomisk tid. • Men kan vi løse ett i polynomisk tid, kan vi løse alle.
Typiske vekstrater Polynomiske
Klassifisering av problemer • Lette problemer • Kjøretid er avhengig av størrelsen på input • Når noen algoritmer sies å kjøre i logaritmisk tid forutsetter det at data allerede er på plass • Generelt er faktisk lineær kjøretid det beste vi kan regne med • Uløselige problemer • Det kan vises at ikke alle problemer kan løses med datamaskin - • eksempel: Stoppe-problemet (Halting problem)
Stoppeproblemet • Vi tenker oss at vi skal lage et program Term som kan finne ut om et annet program Q inneholder en evig loop eller vil terminere • Term(Q)=true hvis Q avslutter • Lager så dette programmetvoid P(prog Q){ while (Term(Q));} • Utfører så kallet P(P) • Vil P terminere da? • Hvis Term(P) =false, vil P terminere - selvmotsigelse • Hvis Term(P) = true, vil P går i evig løkke - selvmotsigelse • Vi har dermed bevist (ved moteksempel) at det er umulig å lage et program som avgjør om et program vil terminere eller gå i evig løkke.
NP-problemer • NP står for Nondeterministic Polynomial. • Våre datamaskiner følger et program av instruksjoner som hele tiden avgjør hva som skal gjøres videre- de er deterministiske • I dette tilfellet tenker vi oss en forbedret maskin som (hele tiden) gjetter riktig på hva som er best å gjøre videre - en ikke-deterministisk maskin. • Et NP problem kan løses i polynomisk tid på en ikke-deterministisk maskin. • Et uløselig problem er fortsatt uløselig med en ikke-deterministisk maskin.
Ikke-deterministiske algoritmer • Tofase-prosedyre: • Ikke-deterministisk (gjetting) fase: En mulig løsning (L) genereres for problemet (P). • Deterministisk (verifisering) fase: En deterministisk algoritme som returner Yes/Ja, hvis L faktisk er en løsning av P. • En ikke-deterministisk polynomsk algoritme bruker polynomsk tid på verifiseringsfasen.
NP-problemer • Det kan vises at hvis vi kan formulere et problem som et ja/nei-spørsmål og det er mulig å avgjøre om et ja -tilfelle er korrekt i polynomisk tid - da er problemet i NP. • Eksempel: Hamiltonsk sykel. Gitt en sekvens av noder da kan det lett avgjøres at de faktisk utgjør en Hamiltonsk sykel. • NP inneholder alle problemer som kan løses i polynomisk tid fordi løsningen er en avgjørelse. • Det er mye lettere å sjekke en gitt løsning enn å finne en polynomisk løsning. Allikevel har en hittil ikke funnet problemer i NP som ikke har løsning i polynomisk tid. • Det finnes løselige problemer som ikke er NP
Mange kjente problemer er i NP • Hamiltonian circuit • Finn en løkke som besøker alle noder en gang. • Travelling salesman • Finn kortest tur mellom n byer. (Kortest Ham. i en komplett graf med positive heltallsvekter.) • Knapsack problem • Finn mest verdifulle undermengde av n gjenstander som får plass i en sekk med en gitt kapasitet. • Partition problem • Finn ut om en mengde av heltall, kan deles i to adskilte mengder med samme sum.
Polynomsk løsning av NP? • Men at vi har funnet en eksponentiell løsning beviser ikke at det ikke finnes en polynomisk løsning. • For NP-problemene klarer vi ikke: • Å bevise at en polynomisk løsning ikke finnes • Eller å finne en polynomisk løsning • Et $1,000,000 –spørsmål: • Er P=NP?
NP-komplette problemer • Et subsett av NP som inneholder de vanskeligste • Karakteriseres ved at alle NP problem kan reduseres til et hvilket som helst NP-komplett problem i polynomisk tid. • Reduksjonsmetode: • Lag en transformering som kan overføre en hver instans P1 av NP problemet til en instans P2 av det NP-komplette problemet. • Løs P2 og transformer løsningen tilbake til P1 • Eksempel: Desimal innmating Binær beregning Desimal visning av resultat. • Transformeringen må kunne utføres i polynomisk tid
Polynomsk reduksjon • Et bestemmelsesproblem D1 er polynomsk reduserbart til D2 hvis det finnes en funksjon t som transformerer alle instanser av D1 til instanser av D2 slik at: • t mapper alle D1-ja til D2-ja og alle D1-nei til D2-nei. • t beregnes med an algoritme som tar polynomsk tid.
NP-komplette problemer • NP-komplette problemer kan derfor brukes til å løse alle NP-problemer med ved hjelp av transformering • transformeringsoverhead er i polynomisk tid • Hvis det finnes ett NP-komplett problem som kan løses i polynomisk tid, da kan alle NP-problemer løses i polynomisk tid. • Hvis et NP-komplett problem PK kan transformeres til et NP-problem P i polynomisk tid. Da er også P NP-komplett.
Eksempel på bevis for at et problem er NP-komplett. • Skal vise at følgende problem er NP-komplett • Reisende salgsmann(TS) • Besøker hver node i en komplett urettet graf en gang. Finnes det en rundtur som er kortere enn k.? • Vet at: Hamilton-sykel-problemet (HC) er NP-komplett. • Nok å vise et det NP-komplette problemet (HC) kan transformeres til TS i polynomisk tid.
Fra HC til TS HC:Finne en enkel sykel som besøker alle noder én gang TS: finnes det en enkel sykel som besøker alle noder og har totalkostnad<=K Søker en enkel sykel med totalkostnad <=|V|
Fra HC til TS • Transformasjon • G er grafen til HC • G' er grafen til TS • Alle kanter i G' som også er i G får lengde 1 • De andre kantene får lengde 2 • Løsning • Hvis G har n noder og vi i G' kan svare ja på om det finnes en TS av lengde=n, da finnes det også en Hamiltonsk sykel i G
Mengden av problemer • Er P=NP? Alle problemer Uavgjørbare NP P NP-komplette