INF Algoritmer: Design og effektivitet

Like dokumenter
Stein Krogdahl, Dino Karabeg, Petter Kristiansen. Kenneth A. Berman and Jerome L. Paul.

INF oktober Dagens tema: Uavgjørbarhet. Neste uke: NP-kompletthet

INF Stein Krogdahl. NB: Det som under forelesningen ble kalt et vitne er nå omdøpt til et sertifikat.

INF oktober Stein Krogdahl. Altså: Hva kan ikke gjøres raskt (med mindre P = NP)

Turingmaskiner en kortfattet introduksjon. Christian F Heide

Turingmaskiner en kortfattet introduksjon. Christian F Heide

INF2220: Time 8 og 9 - Kompleksitet, beregnbarhet og kombinatorisk søk

INF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:

Kompleksitetsteori reduksjoner

Analyse av Algoritmer

UNIVERSITETET I OSLO. Det matematisk-naturvitenskapelige fakultet

Kompleksitet og Beregnbarhet

INF2080 Logikk og beregninger

Introduksjon til Algoritmeanalyse

Kompleksitet. IN algoritmer og datastrukturer Plenumstime / repetisjon

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Følger Sipsers bok tett både i stoff og oppgaver.

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

MAT1030 Diskret Matematikk

Forelesning 29: Kompleksitetsteori

INF Algoritmer og datastrukturer

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

Forelesning 30: Kompleksitetsteori

Generell induksjon og rekursjon. MAT1030 Diskret matematikk. Generell induksjon og rekursjon. Generell induksjon og rekursjon.

Om Kurset og Analyse av Algoritmer

INF Algoritmer og datastrukturer

Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

INF Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

IN2010: Forelesning 11. Kombinatorisk søking Beregnbarhet og kompleksitet

Innhold. Innledning 1

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

Prosessoren. Bakgrunnen Innhold LMC. Assemblerkode Oppsummering instruksjonene [Englander kap 6] Hva inneholder den? Hvordan utføres instruksjonene?

Anbefalt litteratur: Pensum-bøker: Forelesere: Velkommen til INF Introduksjon til operativsystemer og datakommunikasjon

Kompleksitetsanalyse Helge Hafting Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder

INF Algoritmer og datastrukturer

Oppgave 1. Sekvenser (20%)

Forelesning 14. Rekursjon og induksjon. Dag Normann februar Oppsummering. Oppsummering. Beregnbare funksjoner

INF Algoritmer og datastrukturer

Notat for oblig 2, INF3/4130 h07

Obligatorisk oppgave 1 i INF 4130, høsten 2009

IN2080. Oppgave 1. Oppgave 2. Eksamen. Vår Den nondeterministiske endelige automaten A er gitt ved (Q, Σ, δ, q 0, F ) der

INF3/4130 PRØVE-EKSAMEN MED SVARFORSLAG Gjennomgås 1/ , (lille aud.)

MAT-INF 1100: Obligatorisk oppgave 1

MAT1030 Forelesning 19

MAT1030 Forelesning 28

LO118D Forelesning 2 (DM)

AlgDat 12. Forelesning 2. Gunnar Misund

Velkommen til MAT1030!

MAT1030 Diskret Matematikk

MAT1030 Diskret matematikk

Hashing: Håndtering av kollisjoner

Kapittel 3: Litt om representasjon av tall

Dynamisk programmering Undervises av Stein Krogdahl

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Kontinuasjonseksamen i fag SIF8010 Algoritmer og Datastrukturer Torsdag 9. August 2001, kl

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Obligatorisk oppgave 1 i INF 4130, høsten 2008

Velkommen til. IN1010 Objektorientert programmering Våren 2018

MAT1030 Diskret Matematikk

UNIVERSITETET I OSLO. Med svar-forslag

IN Algoritmer og datastrukturer

ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Svarforslag til ukeoppgaver til INF 4130

UNIVERSITETET I OSLO

IN1010 Objektorientert programmering Våren 2019

Generell rekursjon og induksjon. at(n) + bt(n 1) + ct(n 2) = 0

Avgjørbarhet / Uavgjørbarhet

Dagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist)

Kapittel 6: Funksjoner

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

VELKOMMEN TIL MAT-INF1100(L) Knut Mørken Rom 1033, Niels Henrik Abels hus

MAT1030 Diskret Matematikk

MAT1030 Diskret Matematikk

Kapittel 4: Logikk (fortsettelse)

Vi som skal undervise. MAT1030 Diskret matematikk. Hva er diskret matematikk? Hva er innholdet i MAT1030?

Forelesning 25. MAT1030 Diskret Matematikk. Litt repetisjon. Litt repetisjon. Forelesning 25: Trær. Roger Antonsen

TDT4105 Informasjonsteknologi, grunnkurs

VELKOMMEN TIL MAT-INF 1100

MAT1030 Diskret matematikk

Velkommen til. INF våren 2017

VELKOMMEN TIL MAT-INF1100 og MAT-INF1105. Knut Mørken Rom Ø368, Fysikkbygget

Studentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005

MAT1030 Diskret matematikk

LØSNINGSFORSLAG EKSAMEN VÅR07, MA0301

INF Algoritmer og datastrukturer

Forelesning 27. MAT1030 Diskret Matematikk. Bevistrær. Bevistrær. Forelesning 27: Trær. Roger Antonsen. 6. mai 2009 (Sist oppdatert: :28)

Obligatorisk oppgave 2 i INF 4130, høsten 2009

Hvor raskt klarer vi å sortere?

Valg av kontaktpersoner/tillitsvalgte. MAT1030 Diskret matematikk. Oppsummering av kapittel 2. Representasjon av hele tall

INF2820 Datalingvistikk V2017 Forelesning 1.2 Jan Tore Lønning

Transkript:

INF 4130 Algoritmer: Design og effektivitet

Velkommen Forelesere: Stein Krogdahl, steinkr at ifi.uio.no Petter Kristiansen pettkr at ifi.uio.no Lærebok: Algorithms: Sequential, Parallel, and Distributed, Kenneth A. Berman and Jerome L. Paul. Til salgs i bokhandelen. (Sørg for å få boka med copyright 2005.)

Velkommen Gruppelærer: Matias Holte kjetimh at student.matnat.uio.no Obliger: Tre stykker, som må godkjennes. Andre, «nærliggende» kurs: INF-MAT 3370 INF-MAT 5360 Lineær optimering Matematisk optimering

Kvalitetssikring ved Ifi Som student har du rett og plikt til å bidra til kvalitetssikringen av studiet ditt. Dette gjør du først og fremst gjennom å delta i undervisningsevaluering. Faglærer vil ta initiativ til å sette i gang undervisningsevalueringen for hvert enkelt emne. Undervisningsevalueringen gir deg mulighet til å komme med tilbakemeldinger og innspill på undervisningen i løpet av semesteret, slik at forbedringer kan gjøres underveis. Du finner mer informasjon om dette på hovedsiden til Institutt for informatikk, under Annet Kvalitetssikring, eller ved å følge denne linken: http://www.ifi.uio.no/studinf/kvalitetssikring/studenter.

Undervisningsplan 27/08 pk Introduksjon 03/09 pk Søking i strenger (kap. 20) 10/09 pk Dynamisk programmering (kap. 9) 17/09 24/09 01/10 08/10 11/12 Eksamen (09:00, 3 timer, sted ikke fastsatt)

Algoritmer, effektivitet, kompleksitet Hvordan løse databehandlingsproblemer effektivt. Problemer interessante, formelle språk naturlige problemer (formal languages) (MATCHING, SORTING, TSP) Løsninger algoritmer Turing-maskiner Effektivitet kompleksitet kompleksitetsklasser

Algoritmer, effektivitet, kompleksitet Problemene (de formelle språkene) havner i ulike klasser, kompleksitstsklasser, ut ifra hvor effektive løsninger som er mulig for disse problemene. Problemer, formelle språk Uløsbare (unsolvable) Umedgjørlige (intractable) Lette

R ELEMENTARY 2-EXP EXPSPACE conexp NEXP EXP PSPACE conp NP P

Algoritmer, effektivitet, kompleksitet Problemene (de formelle språkene) havner i ulike klasser, kompleksitstsklasser, ut ifra hvor effektive løsninger som er mulig for disse problemene. Problemer, formelle språk Uløsbare (unsolvable) Umedgjørlige (intractable) Lette

Historisk introduksjon Den beste måte å løse et problem på (enten det er matematisk eller kulinarisk eller noe annet) er å lage en generell metode som håndterer alle situasjoner (alle instanser av problemet). På den måten kan vi si at løsning = algoritme. Eksempler: Den babylonske metode for kvadratrøtter 253 = Andregradslikningsformelen ax 2 + bx + c = 0 Euclids algoritme for største felles faktor (g.c.d.) den første ikke-trivielle algoritme?

Historisk introduksjon Fra 1900 og utover vokste feltet som kalles metamatematikk (matematiske studier av matematikken selv, dens muligheter og begrensninger). På 1930-tallet kom en del resultater omkring eksistens/ikke-eksistens av algoritmer for ulike problemer. Kurt Gödel (1931): Ufullstendighetsresultater. Alan Turing (1936): «On computable numbers, with an application to the Entscheidungsproblem». Uløsbare Løsbare Turings resultater og teknikker

Historisk introduksjon CPU John von Neumann (ca 1945): den første moderne datamaskin. Minne Program kontroll Regneenhet I/O Jack Edmonds (1965): «Paths, Trees, and Flowers», en algoritme for MAXIMUM MATCHING. Anne Camilla Elin Bjørn David Frank Artikkelen ble først refusert av redaktørene i Canadian Journal of Mathematics ettersom en triviell algoritme opplagt finnes: prøv alle muligheter!

Historisk introduksjon Kompleksitetsanalyse av den trivielle matching-algoritmen: Anta n = 100 gutter. n! = 100 * 99 * 98 * * 11 * 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1 > 10 * 10 * 10 * * 10 = 10 90. Anta 10 16 muligheter (permutasjoner) testes per sekund. (1,4 Pflops (1,4*10 15 ) er pt. verdens raskeste maskin, Roadrunner.) 10 16+4+2+3+2 = 10 27 muligheter testes per århundre. Kjøretiden for n = 100 er 10 90-27 = 10 63 århundrer(!!)! Universets antatte alder : 14 mrd år (1,4 * 10 10 < 10 11 år)! Ca(?) 10 90 elementærpartikler i det synlige univers (diameter ca 95 mrd lysår).

Historisk introduksjon Edmonds: «min algoritme har polynomisk kjøretid, den trivielle bruker eksponensiell tid!» Vi har altså nå resultater omkring problemer som har algoritmer med polynomisk kjøretid. Cook / Levin (1972): NP-completeness. Umedgjørlige Cook / Levins resultater og teknikker P (Polynomisk kjøretid)

Problemer, formelle språk Alle mulige databehandlingsproblemer Lønnsberegning, månelanding, ruteplanlegging, grafer tall «interessante», «naturlige» problemer MATCHING SORTING TSP input output Funksjoner (Mengder av I/O-par) output = JA/NEI Formelle språk (Mengder av «JA-strenger»)

Problemer, formelle språk Definisjon Et alfabet Ʃ er en endelig mengde symboler. Alfabetet vårt kan f.eks være Ʃ = {0,1} eller Ʃ = {a,, å}. (Alle symboler kan kodes med ASCII-koder el. og deretter binært.) Definisjon Ʃ* = alle endelige strenger vi kan lage med symbolene i Ʃ. For alfabetet {0,1} er Ʃ* = {ε, 0, 1, 00, 01, } i leksikografisk rekkefølge. Definisjon Et formelt språk L over Ʃ er en delmengde av Ʃ*. Når et formelt språk L skal brukes til å representere et problem, lar vi L bestå av mengden av alle «JA-instanser» for problemet vårt. Et formelt språk for SORTING (av heltallene) vil f.eks bestå av alle korrekt sorterte sekvenser av heltall: {ε, 0, 1, 2,, 01, 02,, 012, 013, }.

Algoritmer, Turing-maskiner Algoritme 1 1 397 + 56 = 397 + 46 443 input 443 output beregning regler Turingmaskin b b 0/ 1 0 b b uendelig tape (input/output) lese-/skrivehode Regler (del av maskinen) q 1 s «prosessor» Kontrollenhet med et endelig antall tilstander og regler for overgang mellom tilstandene, skriving på tapen og flytting av lese-/skrivehodet d(s,0) = (q 1, b, R) d(q 1,0) = (q 2, b, R) q 2 tilstander

Algoritmer, Turing-maskiner b 0 1 0 b b q 2 q 1 s Regler (del av maskinen) d(s,0) = (q 1, b, R) d(q 1,0) = (q 2, b, R) CPU Minne Program kontroll Regneenhet I/O

Algoritmer, Turing-maskiner program, regler 0 1 0 b b Regler (del av maskinen) s De hardkodede reglene styrer nå bare applisering av de programmerte reglene fra tapen q 1 q 2 CPU Minne Program kontroll Regneenhet I/O

Algoritmer, Turing-maskiner Problemene våre har vi sett at vi kan modellere med formelle språk. Algoritmene kan representeres med Turing-maskiner. En Turing-maskin M avgjør språket L hvis og bare hvis M beregner funksjonen f : Ʃ* {JA, NEI} slik at for hver l œ L : f(l) = JA for hver l L : f(l) = NEI En Turing-maskin M aksepterer språket L hvis og bare hvis gir stopper med svaret JA for alle l œ L. For l L krever vi ikke engang at maskinen stopper. Turing-maskiners regnekraft gir en inndeling av de formelle språkene:

Algoritmer, Turing-maskiner Alle mulige formelle språk

Algoritmer, Turing-maskiner Alle mulige formelle språk Språk som aksepteres av Turing-maskiner (svarer Ja)

Algoritmer, Turing-maskiner Alle mulige formelle språk Komplementene av de språk som aksepteres av Turing-maskiner (svarer Nei) Språk som aksepteres av Turing-maskiner (svarer Ja)

Algoritmer, Turing-maskiner Alle mulige formelle språk Komplementene av de språk som aksepteres av Turing-maskiner (svarer Nei) Språk som aksepteres av Turing-maskiner (svarer Ja) Det er kun disse språkene (problemene) som har algoritmer (svarer ja og nei). De kalles rekursive språk (R).

Algoritmer, Turing-maskiner Alle mulige formelle språk Komplementene av de språk som aksepteres av Turing-maskiner (svarer Nei) ELEMENTARY 2-EXP EXPSPACE conexp NEXP EXP PSPACE conpnp Språk som aksepteres av Turing-maskiner (svarer Ja) P Det er kun disse språkene (problemene) som har algoritmer. De kalles rekursive språk (R).

Effektivitet, kjøretid, kompleksitet Algoritmers kjøretid beregnes i prinsippet ved å telle antall operasjoner. Det tar som regel mindre tid å løse en liten probleminstans enn det tar å løse en stor, f.eks å sortere noen få tall i forhold til å sortere mange. Algoritmers kjøretid angis derfor som en funksjon av lengden på input. Polynomiske algoritmer (gode algoritmer) Hvis f(n) er en algoritmes maksimale kjøretid på instanser av lengde inntil n, så sier vi at algoritmen er polynomisk hvis f(n) = O(n k ), for en konstant k. Ekponensielle algoritmer (dårlige algoritmer) Litt feilaktig regner vi ofte algoritmer som ikke har polynomisk kjøretid for eksponensielle. Disse har typisk kjøretid Θ(k n ) eller Θ(n!), eller liknende.

Churchs tese Algoritme @ Turing-maskin Turing-maskiner kan beregne enhver funksjon som kan beregnes av en algoritme, et dataprogram eller en datamaskin. Programmeringsspråks beregningskraft Et programmeringsspråk (Java, C, Lisp, ) er Turing-komplett om det kan gjøre de samme beregninger som Turing-maskiner. Kan vi implementere en Turingmaskin i språket vårt, er det det. Universelle datamaskinmodeller En datamaskinmodell er Turing-komplett om den kan gjøre de samme beregninger som en Turing-maskin. McCullok og Pitts har vist at nevrale nett kan simulere Turing-maskiner. Uberegnbarhet Hvis en funksjon f ikke kan beregnes av en Turing-maskin, så finnes det ingen datamaskin som kan beregne f.