Upload
tiana
View
43
Download
0
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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 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
Eulers sykel
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
Funksjon Navn
c Konstant
log N Logaritmisk
log2 N Log-kvadratisk
N Lineær
N log N
N2 Kvadratisk
N3 Kubisk
2N, N! Eksponensiell
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 programmet
void 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
NP
Alle problemer
Mengden av problemer
NP-komplette
Er P=NP?
Uavgjørbare
P