Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø.

Liknende presentasjoner


Presentasjon om: "INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø."— Utskrift av presentasjonen:

1 INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø

2 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

3 Eulers sykel

4 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.

5 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.

6 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.

7 Typiske vekstrater FunksjonNavn cKonstant log NLogaritmisk log 2 NLog-kvadratisk NLineær N log N N2N2 Kvadratisk N3N3 Kubisk 2 N, N!Eksponensiell Polynomiske

8 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)

9 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.

10 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.

11 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.

12 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

13 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.

14 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?

15 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

16 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.

17 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 P K kan transformeres til et NP-problem P i polynomisk tid. Da er også P NP-komplett.

18 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.

19 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|

20 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

21 NP Alle problemer Mengden av problemer NP- komplette Er P=NP? Uavgjørbare P


Laste ned ppt "INF 295 Algoritmer og datastrukturer Forelesning 23 Kompleksitet Hans Fr. Nordhaug/ Ola Bø."

Liknende presentasjoner


Annonser fra Google