Föreläsning 5: Kardinalitet. Funktioners tillväxt

Relevanta dokument
ÄNDLIGT OCH OÄNDLIGT AVSNITT 4

Mängder och kardinalitet

1.1. Fördjupning: Jämförelse av oändliga mängder

Övningshäfte 3: Funktioner och relationer

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

En bijektion mellan två mängder A och B som har ändligt antal element kan endast finnas om mängderna har samma antal element.

Kap. 8 Relationer och funktioner

Föreläsning 5 Innehåll

Programkonstruktion och Datastrukturer

Explorativ övning 4 ÄNDLIGT OCH OÄNDLIGT. Övning A

Algebra I, 1MA004. Lektionsplanering

Algoritmer, datastrukturer och komplexitet

Asymptotisk komplexitetsanalys

Föreläsningsanteckningar och övningar till logik mängdlära

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

Föreläsning 8 i kursen Ma III, #IX1305, HT 07. (Fjärde föreläsningen av Bo Åhlander)

Föreläsning 1: Tal, mängder och slutledningar

Föreläsning 6: Induktion

(N) och mängden av heltal (Z); objekten i en mängd behöver dock inte vara tal. De objekt som ingår i en mängd kallas för mängdens element.

Lösning till tentamensskrivning i Diskret Matematik för CINTE och CMETE, m fl, SF1610, tisdagen den 2 juni 2015, kl

Block 1 - Mängder och tal

Material till kursen SF1679, Diskret matematik: Lite om kedjebråk. 0. Inledning

Kontinuitet och gränsvärden

Objektorienterad modellering och diskreta strukturer. 13. Problem. Sven Gestegård Robertz. Datavetenskap, LTH

Funktioner och kombinatoriska tillämpningar. Mars

Lösning av några vanliga rekurrensekvationer

Sökning och sortering

Block 1 - Mängder och tal

Kinesiska restsatsen

MS-A0409 Grundkurs i diskret matematik I

Mängder. 1 Mängder. Grunder i matematik och logik (2015) 1.1 Grundläggande begrepp. 1.2 Beskrivningar av mängder. Marco Kuhlmann

Relationer och funktioner

MS-A0409 Grundkurs i diskret matematik I

Diskret matematik, lektion 2

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Definitionsmängd, urbild, domän

Filosofisk logik Kapitel 15 (forts.) Robin Stenwall Lunds universitet

Programmering II (ID1019)

MA2047 Algebra och diskret matematik

Introduktion till formella metoder Programmeringsmetodik 1. Inledning

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Sådana avbildningar kallar vi bijektioner mellan A och B (eller från A till B).

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 1 Datastrukturer (DAT037)

Algoritmer, datastrukturer och komplexitet

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Bisektionsalgoritmen. Kapitel Kvadratroten ur 2

Lösningsförslag till övningsuppgifter, del II

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret Lektion 4

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Algoritmer, datastrukturer och komplexitet

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Algoritmer, datastrukturer och komplexitet

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Linjära ekvationssystem

LMA033/LMA515. Fredrik Lindgren. 4 september 2013

(A B) C = A C B C och (A B) C = A C B C. Bevis: (A B) C = A C B C : (A B) C = A C B C : B C (A B) C A C B C

Matematiska strukturer - Satser

Algoritmer, datastrukturer och komplexitet

Grundidén är att våra intuitiva rationella tal (bråk) alltid kan fås som lösningar till ekvationer av typen α ξ = β, där α och β är tal Z och α 0.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Sidor i boken f(x) = a x 2 +b x+c

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

12. CANTORS PARADIS. KORT ORIENTERING OM MÄNGDTEORI.

10.2. Underrum Underrum 89

KOMBINATORIK OCH BINOMIALSATSEN

Föreläsning 9: Talteori

Föreläsning 4 Datastrukturer (DAT037)

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Material till kursen SF1679, Diskret matematik: Om urvalsaxiomet mm. Axiom som är ekvivalenta med urvalsaxiomet

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

1 Att läsa matematik.

Tentamen Datastrukturer D DAT 035/INN960

Algoritmer, datastrukturer och komplexitet

Induktion, mängder och bevis för Introduktionskursen på I

Datastrukturer. föreläsning 6. Maps 1

Tal och polynom. Johan Wild

Föreläsning 9: Turingmaskiner och oavgörbarhet. Turingmaskinen. Den maximalt förenklade modell för beräkning vi kommer använda är turingmaskinen.

MA2047 Algebra och diskret matematik

Block 2 Algebra och Diskret Matematik A. Följder, strängar och tal. Referenser. Inledning. 1. Följder

Erfarenheter från labben

Föreläsning 1. Introduktion. Vad är en algoritm?

Begreppen "mängd" och "element" är grundläggande begrepp i matematiken.

Föreläsning 5. Rekursion

Metriska rum, R och p-adiska tal

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsningsanteckningar Linjär Algebra II Lärarlyftet

Föreläsning 5 Datastrukturer (DAT037)

Pseudokod Analys av algoritmer Rekursiva algoritmer

Tentamen Datastrukturer, DAT037 (DAT036)

Komplexitetsklasser och repetition

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Föreläsning 7. Felrättande koder

Rekursion och induktion för algoritmkonstruktion

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

Träd och koder. Anders Björner KTH

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Transkript:

Föreläsning 5: Kardinalitet. Funktioners tillväxt A = B om det finns en bijektion från A till B. Om A har samma kardinalitet som en delmängd av naturliga talen, N, så är A uppräknelig. Om A = N så är A uppräkneligt oändlig. Följande mängder är inte uppräkneliga (visar det senare) Reella talen i [0,1] P(N), potensmängden av N Obs: För oändliga mängder kan äkta delmängder ha samma kardinalitet. Detta kan inte inträffa för ändliga mängder. Om en mängd är uppräknelig finns det en listning av elementen i mängden. A B om det finns en injektion från A till B. A B och B A ger A = B. Detta medför: om det finns injektion A B och injektion B A så finns bijektion A B. Några uppräkneliga oändliga mängder E, de jämna icke-negativa heltalen: f(x) = 2x ger en bijektion från N till E (se föreläsning 4) Z x 0 1 2 3 4 5 6... f(x) 0 1 1 2 2 3 3... Z +, f(x) = x + 1 Z Z, vi ger ett bevis utan ord (med figur) De positiva rationella talen, Q +, är uppräkneliga Bevis: Z + är en delmängd av Q +, så Z + Q +. För omvändningen, Q + Z +, visa att de positiva rationella talen med upprepningar, Q R, är uppräknelig I så fall, dåq + är delmängd av Q R, följer att Q + Q R = N = Z + y x 1 2 3 4 5 6 7 1 2 3 4 5 1/1 2/1 3/1 4/1 5/1 6/1 7/1 1/2 2/2 3/2 4/2 5/2 6/2 7/2 1/3 2/3 3/3 4/3 5/3 6/3 7/3 1/4 2/4 3/4 4/4 5/4 6/4 7/4 1/5 1

Positionerna i listningen i figuren anger bilden av den bijektiva funktionen f : N Q R f(0) = 1/1, f(1) = 1/2, f(2) = 2/1, f(3) = 3/1, f(4) = 2/2, f(5) = 1/3,... Varje rationellt tal förekommer i listan minst en gång, och N = Q R. Följdresultat: Mängden av alla rationella tal, Q, är också uppräknelig och Mängden av strängar S (av ändlig längd) över ett ändligt alfabet A är uppräknelig För att visa detta antag att A är icke-tomt och att det finns en alfabetisk ordning av bokstäverna i A. Räkna upp strängarna i ordningen: tomma strängen λ, av längd 0 därefter alla strängar av längd 1, alfabetiskt därefter alla strängar av längd 2, etc. Detta ger en bijektion från N till listan av strängar och därmed är den uppräknelig. Exempel: A = {a,b,c} Dess alfabetiska ordning: {λ,a,b,c,aa,ab,ac,ba,...} = {f(0),f(1),f(2),...} Mängden av alla javaprogram är uppräknelig Låt S vara mängden av tillåtna tecken i ett javaprogram en javakompilator avgör om ett program är syntaktiskt korrekt använd den alfabetiska ordningen av S och mata in strängarna till kompilatorn om kompilatorn godkänner så adderar vi programmet till listan av syntaktiskt korrekta javaprogram fortsätt och testa nästa sträng, etc. På detta vis produceras en lista och en bijektion från N till mängden av javaprogram. Diagonalisering En viktig teknik (av Cantor) för att konstruera objekt som inte tillhör en uppräknelig mängd. De reella talen mellan 0 och 1 är inte uppräkneliga Motsatsbevis: Antag att de är uppräkneliga och påvisa en motsägelse. Om mängden är uppräknelig så kan den listas (dvs, det finns en bijektion från en delmängd av N). Vi visar att oberoende av hur listan produceras så kan vi konstruera ett reellt tal mellan 0 och 1 som inte finns med i listan. Därmed kan det inte finnas en sådan lista, och därför är mängden inte uppräknelig. Representera varje reellt tal i listan decimalt, t ex 1/3 = 0.333..., 1/2 = 0.500... Listan: 2

r 1 = 0.d 11 d 12 d 13 d 14... r 2 = 0.d 21 d 22 d 23 d 24... r 3 = 0.d 31 d 32 d 33 d 34... etc. Konstruera talet x = 0.x 1 x 2 x 3 x 4..., där x i = { 3 : om dii 3 4 : om d ii = 3 Därmed är x olikt varje tal i listan. Dvs, en lista med alla reella talen mellan 0 och 1 kan inte finnas. Dessa tal är inte uppräkneliga. Kan säga att R är mer oändlig än Q. Följdresultat: P(N) är inte uppräknelig Ty varje reellt tal mellan 0 och 1 kan representeras i binär form. I vart av talens N positioner finns två möjligheter, vilket stämmer med att P(N) = 2 N (föreläsning 3). Notera att vi använde diagonalisering i föreläsning 3 för att visa att stopp-problemet är oavgörbart. Funktioners tillväxt Algoritm: ändligt antal (precisa) instruktioner för att lösa ett problem Exempel: Hitta största elementet i en sekvens a 1,a 2,...,a n procedure max(a 1,a 2,...,a n ) max = a 1 for i from 2 to n if max < a i then max = a i Algoritmen max tar tid proportionell mot n Tidskomplexitet = antal operationer (storleksordningen) som krävs för att lösa problem av storlek n Vill jämföra komplexiteten hos olika algoritmer hur lång tid tar det för stora problem också dåliga (ineffektiva) algoritmer kan ibland användas för att lösa små problem ignorerar implementationsdetaljer som inkrementering av loopindex: kan alltid omvandla en loop till rak kod Vad innebär det att g växer minst lika snabbt som f? 3

Stort Ordo f och g är funktioner från N till R f = O(g) omm k c n[n > k f(n) c g(n) ] Välj k, välj sedan c (kan bero på valet av k); och bevisa implikationen. För enkelhets skull skippar vi absoluttecknen i fortsättningen. Exempel: 3n 2 + 5 = O(n 2 ) Välj k = 3 och c = 4. Då gäller för n > 3 att 4n 2 3n 2 + 9 3n 2 + 5 Obs: O(g) är en mängd, och kallas en komplexitetsklass. f = O(g) betyder egentligen f O(g) Egenskaper: f = O(g) omm O(f) O(g) Om f = O(g) och g = O(f) så O(f) = O(g) O(g) är sluten under addition: Om f = O(g) och h = O(g) så f + h = O(g) O(g) är sluten under multiplikation med reellt tal, a: Om f = O(g) så är a f = O(g) Om f = O(g) och g = O(h) så f = O(h) (transitivitet) Om f 1 = O(g 1 ) och f 2 = O(g 2 ) så f 1 + f 2 = O(g 1 + g 2 ) = O(max{g 1,g 2 }) och f 1 f 2 = O(g 1 g 2 ) Ty det finns k 1 och c 1 så f 1 (n) c 1 g 1 (n), n > k 1, och k 2 och c 2 så f 2 (n) c 2 g 2 (n), n > k 2. Välj c 3 = c 1 + c 2 och k 3 = max{k 1,k 2 }. Låt g(n) = max{g 1 (n),g 2 (n)}. Ger att f 1 (n) + f 2 (n) c 1 g 1 (n) + c 2 g 2 (n) c 1 g(n) + c 2 g(n) = (c 1 + c 2 )g(n) = c 3 g(n) = c 3 max{g 1 (n),g 2 (n)}, n > k 3. För f 1 f 2 = O(g 1 g 2 ), välj c 4 = c 1 c 2 och k 4 = max{k 1,k 2 }. Då gäller f 1 (n)f 2 (n) c 4 g 1 (n)g 2 (n), n > k 4. Några komplexitetsklasser O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n j ) O(c n ) O(n!), där j > 2 och c > 1 Exempel: Bestäm komplexitetsklass för (n! + 3 n+2 + 3n 100 )(n n + n 2 n ) Förenkla uttrycket: hitta dominerande termer Stryk 3n 100 då n! växer mycket snabbare Stryk 3 n+2 då n! växer snabbare 4

Andra termen: vilken växer snabbast, n n eller n 2 n? Ta 2-logaritmen av båda. Då logaritmen är en växande funktion gäller jämförelsen mellan log också mellan ursprungliga funktionerna Jämför alltså n log n med log n + n: klart att n log n växer snabbare, så behålln n ovan Sammanfattat är komplexitetsklassen O(n! n n ) Om en flyttalsoperation (flop) tar en nanosekund, hur stort problem (i n) kan lösas för n!n n på: en minut? en dag? ett år? Vi vill ofta jämföra algoritmer i samma komplexitetsklass. Exempel: Antag algoritm 1 har komplexitet n 2 n + 1 algoritm 2 har komplexitet n 2 /2 + 5n + 2 Båda är O(n 2 ), men algoritm 2 har en mindre ledande koefficient, så den kommer att vara snabbare för stora problem. Kan uttrycka detta mer precist som att: algoritm 1 har komplexitet n 2 + O(n) algoritm 2 har komplexitet n 2 /2 + O(n) 5