Algorithms & Data Structures 2

Größe: px
Ab Seite anzeigen:

Download "Algorithms & Data Structures 2"

Transkript

1 Algorithms & Data Structures 2 Complexity WS2017 B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz)

2 KLASSISCHER (DETERMINISTISCHER) ALGORITHMUSBEGRIFF Allgemeingültige, detaillierte, eindeutige und formalisiert ("rein mechanisch") ausführbare Vorschrift zum schrittweisen Lösen einer lösbaren Aufgabenklasse d.h. aller durch konkrete Parameterwerte charakterisierten Aufgaben eines bestimmten Typs, z.b. Lösen der quadratischen Gleichung x² + px + q = 0 (p, q - Parameter) unter Zugrundelegung eines bestimmten Prozessortyps Mensch, v. Neumann-Rechner, RAM, Turingmaschine,...; sequentiell, sequentiell-parallel, parallel mit endlichem Aufwand (Ressourcen, Zeit) niedergeschrieben als endlicher Text in einer vereinbarten Notierungsform Durch Einbringen nichtdeterministischer, stochastischer, evolutionärer, genetischer,... Elemente gelangt man zu Algorithmen, die zum Lösen bestimmter Aufgabenklassen wesentlich leistungsfähiger sind als klassische Algorithmen: stochastische (probabilistische), genetische,... Algorithmen. Algorithms & Datastructures 2 // 2017W // 2

3 DETERMINISMUS deterministischer Algorithmus zu jedem Zeitpunkt der Verarbeitung besteht höchstens eine Möglichkeit der Fortsetzung Beispiel: Durchwandern eines Irrgartens "immer an der Wand lang" nichtdeterministischer Algorithmus es gibt Zeitpunkte der Verarbeitung, bei denen zwei oder mehr Möglichkeiten der Fortsetzung beliebig ausgewählt werden können Beispiel: zufälliges Suchen im Irrgarten Algorithms & Datastructures 2 // 2017W // 3

4 FORMALE EIGENSCHAFTEN EINES ALGORITHMUS Korrektheit Gestellte Aufgabe richtig gelöst? (Dijkstra) Robustheit Werden Sonderfälle sicher abgehandelt? Allgemeingültigkeit Arbeitet er für beliebige Eingaben? Verständlichkeit Ist er verständlich aufgeschrieben? Effizienz Laufzeit? Speicherplatzbedarf? Messung (nach Implementation) Analyse für idealisierten Modellrechner / Referenzmaschine Interesse: Wachstum der Effizienz Algorithms & Datastructures 2 // 2017W // 4

5 KOMPLEXITÄT Speicherplatzkomplexität Wird (primärer, sekundärer) Speicherplatz effizient genutzt? Laufzeitkomplexität Steht die Laufzeit im akzeptablen/vernünftigen/optimalen Verhältnis zur Aufgabe? Worst-case Analyse Best-case Analyse Average-case Analyse (schwierig Verteilungsannahmen!) => Interesse an oberen und unteren Schranken => Interesse an Größenordnung (konstante Faktoren nicht vordergründig) Algorithms & Datastructures 2 // 2017W // 5

6 CASES Ausgangspunkt: Sei P das betrachtete Problem x... Eingabe, x =n Länge von x T P (x)... Laufzeit von P auf x T P (n)... Laufzeit von P bei Problemgröße n best case: oft leicht zu bestimmen, nicht repräsentativ worst case: konservativ, meist leicht zu bestimmen T P (n) = sup{ T P (x) x = n und x ist Eingabe für P } amortisierter worst case: durchschnittlicher Aufwand für eine schlechtest mögliche Folge von Operationen. average case: oft nicht leicht zu handhaben, aber praxisrelevant. Definition einer Wahrscheinlichkeitsverteilung q n für mögliche x T P,qn (n) = x = n und x ist Eingabe für P T P,qn (x) q n (x) Mittelwert worüber? Inputs gleich verteilt? Algorithms & Datastructures 2 // 2017W // 6

7 FUNKTIONENKLASSEN Groß-O-Notation O-, - und - Notation obere, untere bzw. genaue Schranken Idee beim Aufwand kommt es auf Summanden und konstante Faktoren letztlich nicht an Gründe Interesse am asymptotischen Verhalten für große Eingaben genaue Analyse oft technisch sehr aufwendig / unmöglich lineare Beschleunigungen sind leicht möglich (Tausch von Hard- und Software) Ziel Einteilung der Komplexitätsmessungen nach Funktionenklassen, z.b. O(f) Menge von Funktionen, die in der Größenordnung von f sind Algorithms & Datastructures 2 // 2017W // 7

8 ERMITTLUNG DES LEISTUNGSVERHALTENS Messung einer konkreten Implementierung auf realer Zielmaschine: Laufzeitmessung für repräsentative Eingaben Berechnung/Analyse des Laufzeit- Speicherplatzverbrauches für idealisierte Zielmaschine: Turingmaschine (TM) Random Access Maschine (RAM) Ermittlung/Analyse teurer Elementaroperationen: Anzahl der Vergleiche / Vertauschungen beim Sortieren Anzahl der Multiplikationen / Divisionen beim numerischen Rechnen Algorithms & Datastructures 2 // 2017W // 8

9 MESSUNG Experimentelle Bestimmung der Laufzeit Mögliche Ergebnisse: Programm, das den Algorithmus implementiert exekutiere das Programm mit unterschiedlichen Eingabedaten (n) verwende eine Methode zur Messung der Laufzeit t(ms) n Algorithms & Datastructures 2 // 2017W // 9

10 MESSUNG Vergleich von Geschwindigkeit eines Algorithmus erfordert Mittelwertbildung Arithmetisches Mittel Geometrisches Mittel Harmonisches Mittel K AM = x i / K i=1 K GM = P x 1/K i i=1 K HM = K / ( ( 1 / x i ) ) i=1 Algorithms & Datastructures 2 // 2017W // 10

11 BEISPIEL :: VERGLEICHSMESSUNG VON SORTIERALGORITHMEN Man betrachte 2 Sortieralgorithmen (A und B), implementiert für Maschine Y Frage: Welcher Algorithmus ist schneller? Definition: Sortiergeschwindigkeit = Problemgröße / gemessene Laufzeit Ergebnisse für Problemgröße n = 300 bei unterschiedlicher Struktur der Eingabedaten (Test 1 und Test 2) Geschwindigkeit Algorithmus A Geschwindigkeit Algorithmus B Test 1 5 (Laufzeit 60) 6 (Laufzeit 50) Test (Laufzeit 2) 60 (Laufzeit 5) Algorithmus B bei Test 1 schneller, Algorithmus A bei Test 2 schneller Frage: Welcher Algorithmus ist im Mittel schneller? Algorithms & Datastructures 2 // 2017W // 11

12 BEISPIEL :: VERGLEICH VON SORTIERALGORITHMEN Geschwindigkeit Algorithmus A Geschwindigkeit Algorithmus B Test 1 5 (Laufzeit 60) 6 (Laufzeit 50) Test (Laufzeit 2) 60 (Laufzeit 5) Arithmetisches Mittel: Geschwindigkeit Algorithmus A = (150+5)/2 = 77.5 A schneller Geschwindigkeit Algorithmus B = (60+6)/2 = 33 Geometrisches Mittel: Geschwindigkeit Algorithmus A = (150 * 5) = A schneller Geschwindigkeit Algorithmus B = (60 * 6) = Harmonisches Mittel: Geschwindigkeit Algorithmus A = 2/(1/5 + 1/150) = 9.6 Geschwindigkeit Algorithmus B = 2/(1/6 + 1/60) = B schneller (Überlege zur Probe: Algorithmus A: 600 Elemente in 62 sec, Algorithmus B: 600 Elemente in 55 sec!) Algorithms & Datastructures 2 // 2017W // 12

13 BEISPIEL :: VERGLEICH VON SORTIERALGORITHMEN Geschwindigkeit Algorithmus A Geschwindigkeit Algorithmus B Test 1 5 (Laufzeit 60) 6 (Laufzeit 50) Test (Laufzeit 2) 60 (Laufzeit 5) Arithmetisches Mittel (der Geschwindigkeit): Geschwindigkeit Algorithmus A = (150+5)/2 = 77.5 A schneller Geschwindigkeit Algorithmus B = (60+6)/2 = 33 Geometrisches Mittel (der Geschwindigkeit): Geschwindigkeit Algorithmus A = (150 * 5) = A schneller Geschwindigkeit Algorithmus B = (60 * 6) = Harmonisches Mittel (der Geschwindigkeit): Geschwindigkeit Algorithmus A = 2/(1/5 + 1/150) = 9.6 Geschwindigkeit Algorithmus B = 2/(1/6 + 1/60) = B schneller (Überlege zur Probe: Algorithmus A: 600 Elemente in 62 sec, Algorithmus B: 600 Elemente in 55 sec!) Algorithms & Datastructures 2 // 2017W // 13

14 BEISPIEL :: VERGLEICH VON SORTIERALGORITHMEN Geschwindigkeit Algorithmus A Geschwindigkeit Algorithmus B Test 1 5 (Laufzeit 60) 6 (Laufzeit 50) Test (Laufzeit 2) 60 (Laufzeit 5) Arithmetisches Mittel (der Laufzeit): Geschwindigkeit Algorithmus A = (60+2)/2 = 31 Geschwindigkeit Algorithmus B = (50+5)/2 = 27.5 B schneller Geometrisches Mittel (der Laufzeit): Geschwindigkeit Algorithmus A = (60 2) = A schneller Geschwindigkeit Algorithmus B = (50 5) = Harmonisches Mittel (der Laufzeit): Geschwindigkeit Algorithmus A = 2/(1/60 + 1/2) = 9.23 Geschwindigkeit Algorithmus B = 2/(1/50 + 1/5) = 9.09 B schneller (Überlege zur Probe: Algorithmus A: 600 Elemente in 62 sec, Algorithmus B: 600 Elemente in 55 sec!) Verwende bei Raten (z.b. Geschwindigkeit, Operationen/Sekunde, km/h,...) immer Harmonisches Mittel!! Algorithms & Datastructures 2 // 2017W // 14

15 KRITIK AN EXPERIMENTELLER MESSUNG zusätzlicher Aufwand durch Implementierung und Test des Programmes Experimente sind hinsichtlich der durchführbaren Kombinationen der Eingabegrößen beschränkt, die gewählten Kombinationen sind u.u. nicht typisch für das Verhalten des Algorithmus für den Vergleich von Algorithmen muss eine identische HW/SW Plattform verwendet werden Anforderungen an eine allgemeine Methode zur Laufzeitanalyse soll auf abstrakter Beschreibung des Algorithmus aufbauen (statt auf einer konkreten Implementierung) soll alle möglichen Eingabekombinationen berücksichtigen soll eine HW/SW-unabhängige Bewertung eines Algorithmus erlauben bezogen auf einen Idealisierten Modellrechner Algorithms & Datastructures 2 // 2017W // 15

16 IDEALISIERTER MODELLRECHNER: RAM MODELL Algorithms & Datastructures 2 // 2017W // 16

17 IDEALISIERTER MODELLRECHNER :: RAM MODELL Annahmen: Register, halten unbeschränkt große (evtl. reelle) Zahlen abzählbar unendliche Menge einzeln addressierbarer Speicherzellen direkt oder indirekt addressierbar Befehlssatz ähnlich Assembler (Laden, Speichern, arithmetische Verknüpfung von Registerinhalten, bedingte/unbedingte Sprünge), Speicherplatz Zahl der benötigten RAM-Zellen Laufzeit Zahl der ausgeführten RAM-Befehle Problem: uneingeschränkte Größe der Datenelemente: Einheitskostenmaß: jedes Datenelement belegt nur beschränkten Speicher Größe des Inputs bestimmt durch Anzahl benötigter Datenelemente z.b. Größe eines Sortierproblems gemessen in der Anzahl zu sortierender Zahlen Logarithmisches Kostenmaß: einzelnes DE kann beliebig groß sein Größe des Inputs bestimmt durch Summe der Größe der Elemente Für n > 0 ist die Anzahl der benötigten Darstellungs-Bits log 2 (n+1) Algorithms & Datastructures 2 // 2017W // 17

18 IDEALISIERTER MODELLRECHNER :: PRAM MODELL (PARALLELE BERECHNUNG) Algorithms & Datastructures 2 // 2017W // 18

19 LAUFZEITANALYSE :: LANDAU SCHE O-NOTATION f = O(g) (in Worten: f wächst nicht schneller als g), wenn f = (g) (in Worten: f wächst mindestens so schnell wie g), wenn c +, n o 0, n n 0 : f(n) c g(n) c +, n o 0, n n 0 : f(n) c g(n) f = (g) (in Worten: f und g sind von der gleichen Wachstumsordnung), wenn f = o(g) (in Worten: f wächst langsamer als g), wenn f = w(g) (in Worten: f wächst schneller als g), wenn In Ottmann/Widmayer O(g) = { f a > 0, b > 0, n f(n) a g(n) + b } und (g) = { g c > 0, viele n: f(n) c g(n) } f = O(g) und g = O(f) f(n) / g(n) eine Nullfolge ist g = o(f) Algorithms & Datastructures 2 // 2017W // 19

20 LAUFZEITANALYSE :: LANDAU SCHE O-NOTATION Beispiel 3n 4 + 5n log n O(n 4 ), denn 3n 4 + 5n log n < 3n 4 + 5n 4 + 7n 4 = 15 n 4 für n >= 1. Wähle also c = 15, n 0 = 1. c +, n o 0, n n 0 : f(n) c g(n) In O(n 4 ) steht n 4 für die Funktion, die n auf n 4 abbildet. Häufig schreibt man auch h = O(n 4 ) statt h O(n 4 ) Üblicherweise verwendete Funktionen zum Messen des Wachstums: 1) logarithmische: log n 2) linear: n 3) n log n: n log n 4) quadratisch, kubisch, n 2, n 3,... 5) exponentiell: 2 n, 3 n,... Unterschied zwischen (4) und (5): handhabbar (tractable) - nicht handhabbar Algorithms & Datastructures 2 // 2017W // 20

21 (LAUFZEIT-) KOMPLEXITÄTSKLASSEN Drei zentrale Zeitkomplexitätsklassen werden unterschieden: Algorithmus A heißt: linear-zeitbeschränkt f A O ( n ) polynomial-zeitbeschränkt exponentiell-zeitbeschränkt k N, so daß f A O ( n k ). k N, so daß f A O ( k n ). Komplexitätsklassen P und NP P: Die Menge aller Sprachen (Probleme), die ein deterministischer Automat in Polynomialzeit (O(P(n)) akzeptiert NP: Die Menge aller Sprachen (Probleme), die ein nicht-deterministischer Automat in Polynomialzeit akzeptiert Algorithms & Datastructures 2 // 2017W // 21

22 BERECHNUNG DER (WORST-CASE) ZEITKOMPLEXITÄT Elementare Operationen (Zuweisung, Ein-/ Ausgabe): O ( l ) Summenregel: T 1 ( n ) und T 2 ( n ) seien die Laufzeiten zweier Programmfragmente P1 und P2 ; es gelte: T 1 ( n ) O (f ( n ) ) und T 2 ( n ) O ( g ( n ) ). Für die Hintereinanderausführung von P 1 und P 2 ist dann T 1 ( n ) + T 2 ( n ) O ( max ( f ( n ), g ( n ) ) ) Produktregel: z. B. für geschachtelte Schleifenausführung von P 1 und P 2 T 1 ( n ) * T 2 ( n ) O ( f ( n ) * g ( n ) ) Algorithms & Datastructures 2 // 2017W // 22

23 BERECHNUNG DER (WORST-CASE) ZEITKOMPLEXITÄT Fallunterscheidung: Kosten der Bedingungsanweisung ( O ( l ) ) + Kosten der längsten Alternative Schleife: Produkt aus Anzahl der Schleifendurchläufe mit Kosten der teuersten Schleifenausführung Rekursive Prozeduraufrufe: Produkt aus Anzahl der rekursiven Aufrufe mit Kosten der teuersten Prozedurausführung Algorithms & Datastructures 2 // 2017W // 23

24 BEISPIEL SORTIEREN Definition Sortieren Eingabe: Ausgabe: Reihe von Zahlen a 1, a 2,..., a n Permutation der Eingabe-Zahlenreihe a 1,...,a n, sodass gilt: a 1... a n Mögliche Lösungsalgorithmen: Insertion Sort Merge Sort Algorithms & Datastructures 2 // 2017W // 24

25 ALGORITHMUS :: INSERTION SORT Prinzip: für i=2,...,n, generiere sort. Liste a 1,..., a i durch Einfügen von a i in sortierte Liste a 1,..., a i-1 Eingabe: Pseudocode Algorithm InsertionSort: Input: Array A[1...n] Output: sortiertes Array A for i 2 to n do while A[i] < A[i-1] swap A[i] with A[i-1] decrement i Algorithms & Datastructures 2 // 2017W // 25

26 LAUFZEITANALYSE :: INSERTION SORT Laufzeit ist lineare Funktion der Anzahl der Vergleichsoperationen worst case Eingabedaten sind in umgekehrter Reihenfolge sortiert n-1 Anzahl der Vergleichsoperationen i = n (n-1) / 2 Komplexität (n 2 ) i=1 best case Eingabedaten sind bereits sortiert n-1 Anzahl der Vergleichsoperationen 1 = n-1 Komplexität (n) i=1 average case n-1 Erwartete Anzahl von V.op. (i+1)/2 = n (n+1) / 4 Komplexität (n 2 ) i=1 Algorithms & Datastructures 2 // 2017W // 26

27 ALGORITHMUS :: MERGE SORT Prinzip: Divide and Conquer Divide: Teile Array in 2 Hälften Conquer: sortiere jede Hälfte Combine: vereinige sortierte Listen in einzige sortierte Liste Pseudocode Algorithm MergeSort (A,p,q), sort A[p...q] n q - p + 1, m p + n/2 if n=1 return MergeSort(A,p,m-1) MergeSort(A,m,q) i p, j m, t 1 while (i m-1) and (j q) if j=q+1 or (i m-1 and j q and A[i] < A[j] ) B[t] A[i], i i+1, t t+1 else B[t] A[j], j j+1, t t+1 for t 1 to n A[p + t - 1] B[t] Algorithms & Datastructures 2 // 2017W // 27

28 ALGORITHMUS :: MERGE SORT Eingabe: Rekursive Struktur: Algorithms & Datastructures 2 // 2017W // 28

29 LAUFZEITANALYSE :: MERGE SORT Laufzeit ist lineare Funktion der Anzahl der Zuweisungsoperationen der Arrays A und B Im Merge-Teil sind das 2n Operationen Daher gilt für die Laufzeit T(n) = (n) + T( n/2 ) + T( n/2 ) Durch Anwendung der Master-Methode erhält man T(n) = ( n ln n ) Algorithms & Datastructures 2 // 2017W // 29

30 LAUFZEITANALYSE :: REKURRENZBEZIEHUNGEN Funktion f(n) ist definiert durch Basisfall, z.b.: f(1) = 2 Rekursiver Fall, z.b.: f(n) = f(n-1) + N Standardmethode zur Lösung von Rekurrenzen: Entfaltung wiederholte Substitutionen der rekursiven Regel, bis Basisfall erreicht ist f(n) f(n) = f(n-1) + N = f(n-2) + (N-1) + N = f(n-3) + (N-2) + (N-1) + N... = f(n-i) + (N-i+1) (N-1) + N Basisfall erreicht bei i = N-1: f(n) = (N-2) + (N-1) + N = N ( N+1)/2 + 1 = O(N 2 ) Algorithms & Datastructures 2 // 2017W // 30

31 LAUFZEITANALYSE :: TÜRME VON HANOI Ziel: Schichte alle Scheiben von Stange A auf Stange C Regel: in einem Schritt darf nur eine Scheibe bewegt werden es darf nie eine größere Scheibe auf einer kleineren zu liegen kommen Rekursive Lösung: Schichte N-1 Scheiben von A auf B um Bewege größte Scheibe von A nach C Schichte N-1 Scheiben von B auf C um Gesamtzahl der Züge : T(N) = T(N-1) T(N-1) Algorithms & Datastructures 2 // 2017W // 31

32 LAUFZEITANALYSE :: TÜRMEN VON HANOI Rekurrenzbeziehung T(N) = 2 T(N-1) + 1 T(1) = 1 Lösung durch Entfaltung T(N) = 2 ( 2 T(N-2) + 1) + 1 = = 4 T(N-2) = = 4 ( 2 T(N-3) + 1) = = 8 T(N-3) =... = 2 i T(N-i) + 2 i i Expansion bricht bei i = N-1 ab T(N) = 2 N N N Geometrische Summe, daher T(N) = 2 N - 1 = O(2 N ) Algorithms & Datastructures 2 // 2017W // 32

33 LAUFZEITANALYSE :: REKURRENZ T(N) = 2 T(N/2) + N für N 2 T(1) = 1 T(N) = 2 ( 2T(N/4) + N/2 ) + N = 4 T(N/4) + 2N = 4 ( 2 T(N/8) + N/4 ) +2N = 8 T(N/8) + 3N... = 2 i T(N/2 i ) + in T(1) = 1 Expansion bricht bei i = ld N ab, sodass T(N) = N + N ld N Algorithms & Datastructures 2 // 2017W // 33

34 LÖSEN DER REKURRENZ DURCH RATEN UND BEWEISEN Beispiel T(N) = 2 T(N/2) + N für N 2 T(1) = 1 Annahme ( wild guess ) T(N) = N + N ld N Beweis durch Induktion Basis: T(1) = ld 1 = 1 Induktionsschritt: T(N) = 2 T(N/2) + N = 2 ( N/2 + N/2 ld (N/2)) + N = N + N ( ld N - 1 ) + N = N + N ld N Algorithms & Datastructures 2 // 2017W // 34

35 WEITERES BEISPIEL T(N) = 2 T( N ) + 1 = 2 T(N1/2) + 1 T(2) = 0 T(N) = 2 T(N1/2) + 1 = 2 ( 2 T(N1/4) + 1) + 1 = 4 T(N1/4) = 8 T(N1/8) i T(N1/2 i ) i-1 Expansion bricht bei N1/2i = 2 ab, also bei i = loglog N, daher T(N) = loglogn-1 = logn Algorithms & Datastructures 2 // 2017W // 35

36 LAUFZEITANALYSE :: LÖSEN DER REKURRENZ DURCH INDUKTION Zu zeigen Eigenschaft P gilt für alle ganzzahligen Werte n n 0 Basis: Zeige, daß P für n 0 gilt Induktionsschritt: Zeige wenn P gilt für alle k mit n 0 k n-1 dann gilt P auch für n Beispiel n-1 S(n) = i = n (n-1)/2 für n 2 i=1 Basis: S(2) = 2 (2-1)/2 = 1 Induktionsschritt: Annahme: S(k) = k(k+1)/2 für 2 k n-1 n-1 n-2 S(N) = i = i + n-1 = S(n-1) + n-1 i=1 i=1 = (n-1)(n-1-1)/2 + n-1 = (n 2-3n+2n+2-2)/2 = n (n-1)/2 Algorithms & Datastructures 2 // 2017W // 36

37 LAUFZEITANALYSE :: MASTER THEOREM Kochrezept für Rekurrenzgleichungen der Form: T(n) = a T(n/b) + f(n) mit a 1, b>1 und f(n) asymptotisch positiv und n/b entweder n/b oder n/b Falls f(n) = O ( n log b a-e ) für eine Konstante e > 0, dann T(n) = ( n log b a ) Falls k 0 sodaß f(n) = ( n log b a log k n), dann T(n) = ( n log b a log k+1 n) Falls e > 0 und c<1 sodaß f(n) = ( n log b a+e ) und a f(n/b) c f(n) für n hinreichend groß, dann T(n) = ( f(n) ) Algorithms & Datastructures 2 // 2017W // 37

38 BEISPIEL :: MASTER THEOREM Beispiel T(N) = 2 T(N/2) + N für N 2 T(1) = 1 Lösung a = 2 b = 2 f(n) = N N log b a = N log 2 2 = N 1 = N f(n) vergleichen mit N log b a ergibt Fall 2: f(n) = Θ(N log b a ) = Θ(N) => N und N sind von der gleichen Rangordnung T(N) = Θ(N log b a log N) = Θ(N log N) Algorithms & Datastructures 2 // 2017W // 38

39 ANHANG :: ANALYSE VON ALGORITHMEN Mathematische Grundlagen Logarithmen log b (xy) = log b x + log b y log b (x/y) = log b x log b y log b x a = alog b x log b a = log a x / log a b Exponenten a (b+c) = a b a c a (b-c) = a b /a c a bc = (a b ) c b = a log a b b c = a c*log a b Floor, Ceiling x = grösste ganze Zahl x x = kleinste ganze Zahl x Algorithms & Datastructures 2 // 2017W // 42

40 ANHANG :: ANALYSE VON ALGORITHMEN Mathematische Grundlagen Summen t f(i) = f(s) + f(s+1) + f(s+2) f(t) i=s wobei f eine Funktion ist, s der Startindex, und t der Endindex Geometrische Reihe f(i) = a i n a i = 1 + a + a a n = i=0 1 - a n a geometrische Reihe zeigt exponentielles Wachstum Algorithms & Datastructures 2 // 2017W // 43

41 ANHANG :: BEISPIEL ZUR ASYMPTOTISCHEN ANALYSE Algorithmus zur Bestimmung von Prefix-Mittelwerten Algorithm prefixaverages1(x): Input: Array X, enthält n Zahlen. Output: Array A, enthält n Elemente und in Element A[i] den Mittelwert der Elemente X[0],...,X[i]. for i 0 to n-1 do a 0 for j 0 to i do a a + X[j] A[i] a/(i+1) return array A Analyse... Algorithms & Datastructures 2 // 2017W // 44

42 ANHANG :: BEISPIEL ZUR ASYMPTOTISCHEN ANALYSE verbesserter Algorithmus Algorithm prefixaverages2(x): Input: Array X, enthält n Zahlen. Output: Array A, enthält n Elemente und in Element A[i] den Mittelwert der Elemente X[0],...,X[i] s 0 for i 0 to n-1 do s s + X[j] A[i] s/(i+1) return array A Analyse... Algorithms & Datastructures 2 // 2017W // 45

43 Algorithms & Data Structures 2 Complexity WS2017 B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz)

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen

Komplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany [email protected] Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer

Mehr

Informatik I Komplexität von Algorithmen

Informatik I Komplexität von Algorithmen Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany [email protected] Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung Kapitel 6 Komplexität von Algorithmen 1 6.1 Beurteilung von Algorithmen I.d.R. existieren viele Algorithmen, um dieselbe Funktion zu realisieren. Welche Algorithmen sind die besseren? Betrachtung nicht-funktionaler

Mehr

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben

2. Algorithmen und Algorithmisierung Algorithmen und Algorithmisierung von Aufgaben Algorithmen und Algorithmisierung von Aufgaben 2-1 Algorithmisierung: Formulierung (Entwicklung, Wahl) der Algorithmen + symbolische Darstellung von Algorithmen Formalismen für die symbolische Darstellung

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016)

Kostenmodell. Daniel Graf, Tobias Pröger. 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Kostenmodell Daniel Graf, Tobias Pröger 22. September 2016 (aktualisierte Fassung 5 vom 9. Oktober 2016) Erklärung: Diese Mitschrift ist als Ergänzung zur Vorlesung gedacht. Wir erheben keinen Anspruch

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Mathematische Grundlagen

Mehr

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: [email protected] Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, [email protected]

Mehr

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner

Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Summenregel. Allgemeiner Kombinatorik: Abzählverfahren (Teschl/Teschl 7) Fragestellung: Wie viele verschiedene Möglichkeiten gibt es, Elemente auszuwählen, z. B. Anzahl verschiedener möglicher Passwörter, IPAdressen, Zahlenkombinationen

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen -

Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - Grundlagen der Informatik 2 (GdI2) - Algorithmen und Datenstrukturen - 2) Algorithmenanalyse Prof. Dr. Anja Schanzenberger FH Augsburg, Fakultät für Informatik Kontakt: [email protected]

Mehr

4 Effizienz und Komplexität 3.1 1

4 Effizienz und Komplexität 3.1 1 4 Effizienz und Komplexität 3.1 1 Effizienz (efficiency): auf den Ressourcen-Verbrauch bezogene Programmeigenschaft: hohe Effizienz bedeutet geringen Aufwand an Ressourcen. Typische Beispiele: Speichereffizienz

Mehr

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

16. All Pairs Shortest Path (ASPS)

16. All Pairs Shortest Path (ASPS) . All Pairs Shortest Path (ASPS) All Pairs Shortest Path (APSP): Eingabe: Gewichteter Graph G=(V,E) Ausgabe: Für jedes Paar von Knoten u,v V die Distanz von u nach v sowie einen kürzesten Weg a b c d e

Mehr

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n)

T (n) = max. g(x)=n t(n) S(n) = max. g(x)=n s(n) Beim Logarithmischen Kostenmaß wird, im Gegensatz zum EKM, die Stelligkeit der Werte berücksichtigt und mit in die Laufzeit eingerechnet. Beispiel: R1 := R2 (R3), wobei R2 den Wert 5, R3 den Wert 10 und

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Die O-Notation Analyse von Algorithmen Die O-Notation Prof. Dr. Margarita Esponda Freie Universität Berlin ALP II: Margarita Esponda, 5. Vorlesung, 26.4.2012 1 Die O-Notation Analyse von Algorithmen Korrektheit

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung

Mehr

Kapitel 8. Rekursionsgleichungen. Landau-Symbole. Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen

Kapitel 8. Rekursionsgleichungen. Landau-Symbole. Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen Rekursionsgleichungen Landau-Symbole Kapitel 8 Lösen von Rekursionsgleichungen Allgemeines Iterationsmethode Spezialfälle Erzeugende Funktionen Kapitel 8 Rekursionsgleichungen p./42 Landau-Symbole () Modellierung

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Komplexita tstheorie eine erste Ubersicht. KTV bedeutet: Details erfahren Sie in der Komplexitätstheorie-Vorlesung.

Komplexita tstheorie eine erste Ubersicht. KTV bedeutet: Details erfahren Sie in der Komplexitätstheorie-Vorlesung. Komplexita tstheorie eine erste Ubersicht KTV bedeutet: Details erfahren Sie in der Komplexitätstheorie-Vorlesung. Probleme Problem = Menge von unendlich vielen konkreten Einzelfragen (Instanzen) F n,

Mehr

Numerische Verfahren und Grundlagen der Analysis

Numerische Verfahren und Grundlagen der Analysis Numerische Verfahren und Grundlagen der Analysis Rasa Steuding Hochschule RheinMain Wiesbaden Wintersemester 2011/12 R. Steuding (HS-RM) NumAna Wintersemester 2011/12 1 / 16 4. Groß-O R. Steuding (HS-RM)

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra

Effiziente Algorithmen und Datenstrukturen I. Kapitel 10: Lineare Algebra Effiziente Algorithmen und Datenstrukturen I Kapitel 10: Lineare Algebra Christian Scheideler WS 2008 19.02.2009 Kapitel 10 1 Überblick Notation Arithmetik auf großen Zahlen (Addition und Multiplikation)

Mehr

Grundlagen der Informatik Algorithmen und Komplexität

Grundlagen der Informatik Algorithmen und Komplexität Grundlagen der Informatik Algorithmen und Komplexität Prof. Dr. Bernhard Schiefer (basierend auf Unterlagen von Prof. Dr. Duque-Antón) [email protected] http://www.fh-kl.de/~schiefer Inhalt Einleitung

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger

Mehr

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 06/07 ITI Wagner Musterlösung Problem : Average-case-Laufzeit vs Worst-case-Laufzeit pt (a) Folgender Algorithmus löst das Problem der

Mehr

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr. Übersicht Datenstrukturen und Vorlesung 1: Prof. Dr. Erika Ábrahám Theorie Hybrider Systeme Informatik 2 http://ths.rwth-aachen.de/teaching/ss-14/ datenstrukturen-und-algorithmen/ Diese Präsentation verwendet

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Jochen Hoenicke Software Engineering Albert-Ludwigs-University Freiburg Sommersemester 2014 Jochen Hoenicke (Software Engineering) Einführung in die Informatik Sommersemester

Mehr

Grenzen der Berechenbarkeit

Grenzen der Berechenbarkeit M. Jakob Gymnasium Pegnitz 3. Mai 2015 Inhaltsverzeichnis Experimentelle Laufzeitabschätzung ausgewählter Algorithmen Historische Kryptographie Moderne Kryptographie Das Halteproblem In diesem Abschnitt

Mehr

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: 7 8 9 10 Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( )

Algorithmik Übung 3 Prof. Dr. Heiner Klocke. Sortierfolge nach Werten: 7 8 9 10 Bube Dame König As nach Farben: Karo ( ) Herz ( ) Piek ( ) Kreuz ( ) Algorithmi Übung 3 Prof. Dr. Heiner Kloce Winter 11/12 16.10.2011 Divide&Conquer- Algorithmen lassen sich gut als reursive Algorithmen darstellen. Das Prinzip eines reursiven Algorithmus beruht darauf,

Mehr

abgeschlossen unter,,,, R,

abgeschlossen unter,,,, R, Was bisher geschah Turing-Maschinen können Sprachen L X akzeptieren entscheiden Funktionen berechnen f : X X (partiell) Menge aller Turing-akzeptierbaren Sprachen genau die Menge aller Chomsky-Typ-0-Sprachen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Entscheidungsbäume Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen? Definition Entscheidungsbaum Sei T ein Binärbaum und A = {a 1,..., a n } eine zu sortierenden Menge. T ist ein Entscheidungsbaum

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 [email protected] Sprechstunde: Freitag,

Mehr

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

Algorithmen mit konstantem Platzbedarf: Die Klasse REG

Algorithmen mit konstantem Platzbedarf: Die Klasse REG Algorithmen mit konstantem Platzbedarf: Die Klasse REG Sommerakademie Rot an der Rot AG 1 Wieviel Platz brauchen Algorithmen wirklich? Daniel Alm Institut für Numerische Simulation Universität Bonn August

Mehr

Kapitel 4. Grundlagen der Analyse von Algorithmen. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Kapitel 4. Grundlagen der Analyse von Algorithmen. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen Kapitel 4 Grundlagen der Analyse von Algorithmen 1 4.1 Kostenfunktion zu Beurteilung von Algorithmen Die Angabe der Laufzeit (und etwas weniger wichtig des Speicherplatzes) liefert das wichtigste Maß für

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

3. Ziel der Vorlesung

3. Ziel der Vorlesung 3. Ziel der Vorlesung Der Zweck der Vorlesung ist das Studium fundamentaler Konzepte in der Algorithmentheorie. Es werden relevante Maschinenmodelle, grundlegende und höhere Datenstrukturen sowie der Entwurf

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

3. Übung Algorithmen I

3. Übung Algorithmen I Timo Bingmann, Christian Schulz INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS 1 KIT Timo Universität Bingmann, des LandesChristian Baden-Württemberg Schulz und nationales Forschungszentrum in der

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Abstrakte Algorithmen und Sprachkonzepte

Abstrakte Algorithmen und Sprachkonzepte Abstrakte Algorithmen und Sprachkonzepte Thomas Röfer Begriff des Algorithmus Algorithmenaufbau Programmiersprachliche Grundkonzepte Interative und rekursive Algorithmen Rückblick Aufbau und Funktionsweise

Mehr

Effizienz in Haskell

Effizienz in Haskell Informatikseminar WS03/04 Oliver Lohmann mi4430 1 Gliederung Allgemeine Definition von Effizienz Lazy Evaluation Asymptotische Analyse Parameter Akkumulation Tupling Speicherplatz kontrollieren Allgemeine

Mehr

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten

Kapitel 3. Speicherhierachie. Beispiel für Cache Effekte. Motivation Externspeicheralgorithmen. Motivation Für Beachtung von Cache Effekten Kapitel 3 Algorithmen für große Datenmengen Motivation Externspeicheralgorithmen Es werden immer größere Datenmengen gesammelt (WWW, Medizin, Gentechnik ) Daten müssen auf großen externen Massenspeichern

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Informatik I 4. Kapitel Suchen in sequentiellen Listen Informatik I 4. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 21. Mai 2008 1 / 55 2 / 55 Szenario Suchen in Daten gehört zu den wichtigsten Operationen etwa Suchen nach: Stichworten in

Mehr

Algorithmentheorie Randomisierung. Robert Elsässer

Algorithmentheorie Randomisierung. Robert Elsässer Algorithmentheorie 03 - Randomisierung Robert Elsässer Randomisierung Klassen von randomisierten Algorithmen Randomisierter Quicksort Randomisierter Primzahltest Kryptographie 2 1. Klassen von randomisierten

Mehr

Die Komplexitätsklassen P und NP

Die Komplexitätsklassen P und NP Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

Mehr

Höhere Algorithmik. Eine Vorlesung von Prof. Dr. Helmut Alt Mitschrift von Pascal-Nicolas Becker

Höhere Algorithmik. Eine Vorlesung von Prof. Dr. Helmut Alt Mitschrift von Pascal-Nicolas Becker Höhere Algorithmik Eine Vorlesung von Prof. Dr. Helmut Alt Mitschrift von Pascal-Nicolas Becker Wintersemsester 2010/2011 Stand: 02.08.2011 flattr.com/t/78695 Dieses Skript ist eine Mitschrift der Vorlesung

Mehr

Kapitel 7. Rekursionsgleichungen. Allgemeines Iterationsmethode Klassen von Rekursionsgleichungen Erzeugende Funktionen

Kapitel 7. Rekursionsgleichungen. Allgemeines Iterationsmethode Klassen von Rekursionsgleichungen Erzeugende Funktionen Kapitel 7 Rekursionsgleichungen p. /38 Kapitel 7 Rekursionsgleichungen Allgemeines Iterationsmethode Klassen von Rekursionsgleichungen Erzeugende Funktionen Kapitel 7 Rekursionsgleichungen p. 2/38 Allgemeines

Mehr

Grundlagen der Informatik I (Studiengang Medieninformatik)

Grundlagen der Informatik I (Studiengang Medieninformatik) Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: [email protected]

Mehr

Syntax von LOOP-Programmen

Syntax von LOOP-Programmen LOOP-Berechenbarkeit Syntax von LOOP-Programmen Definition LOOP-Programme bestehen aus: Variablen: x 0, x 1, x 2, x 3,... Konstanten: 0, 1, 2, 3,... Trennsymbolen:; und := Operationen: + und Befehlen:

Mehr

Algorithmen und Datenstrukturen Laufzeitabschätzung

Algorithmen und Datenstrukturen Laufzeitabschätzung Algorithmen und Datenstrukturen Laufzeitabschätzung Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Lernziele der Vorlesung Algorithmen Sortieren, Suchen,

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

Grundlagen der Programmierung 2. Parallele Verarbeitung

Grundlagen der Programmierung 2. Parallele Verarbeitung Grundlagen der Programmierung 2 Parallele Verarbeitung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 27. Mai 2009 Parallele Algorithmen und Ressourcenbedarf Themen: Nebenläufigkeit,

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

Schulmethode zur Multiplikation von n-stelligen Binärzahlen a und b: (evtl. fallen Zeilen weg, wenn das zugehörige Bit des Multiplikators 0 ist).

Schulmethode zur Multiplikation von n-stelligen Binärzahlen a und b: (evtl. fallen Zeilen weg, wenn das zugehörige Bit des Multiplikators 0 ist). 4-1 4. Algorithmen auf Zahlen Themen: Multiplikation von binären Zahlen Matrixmultiplikation 4.1 Multiplikation ganzer Zahlen Schulmethode zur Multiplikation von n-stelligen Binärzahlen a und b: n=8: aaaaaaaa

Mehr

4.Grundsätzliche Programmentwicklungsmethoden

4.Grundsätzliche Programmentwicklungsmethoden 4.Grundsätzliche Programmentwicklungsmethoden 1.1 Grundlage strukturierter und objektorientierter Programmierung Begriff Software Engineering - umfaßt den gezielten Einsatz von Beschreibungsmitteln, Methoden

Mehr

MATHEMATISCHE ANALYSE VON ALGORITHMEN

MATHEMATISCHE ANALYSE VON ALGORITHMEN MATHEMATISCHE ANALYSE VON ALGORITHMEN Michael Drmota Institut für Diskrete Mathematik und Geometrie, TU Wien [email protected] www.dmg.tuwien.ac.at/drmota/ Ringvorlesung SS 2008, TU Wien Algorithmus

Mehr

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg Sortieralgorithmen Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004 Prof. Dr. W. P. Kowalk Universität Oldenburg Literatur Die folgenden Bücher wurden für die Vorlesung verwendet. Darüber hinaus

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

Dynamische Programmierung. Problemlösungsstrategie der Informatik

Dynamische Programmierung. Problemlösungsstrategie der Informatik als Problemlösungsstrategie der Informatik und ihre Anwedung in der Diskreten Mathematik und Graphentheorie Fabian Cordt Enisa Metovic Wissenschaftliche Arbeiten und Präsentationen, WS 2010/2011 Gliederung

Mehr

Einführung in die Informatik I Kapitel II.3: Sortieren

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung

Seminar Kompressionsalgorithmen Huffman-Codierung, arithmetische Codierung Huffman-Codierung, arithmetische Codierung Theoretische Informatik RWTH-Aachen 4. April 2012 Übersicht 1 Einführung 2 3 4 5 6 Einführung Datenkompression Disziplin,die Kompressionsalgorithmen entwirft

Mehr

Programmiertechnik II

Programmiertechnik II Bäume Symboltabellen Suche nach Werten (items), die unter einem Schlüssel (key) gefunden werden können Bankkonten: Schlüssel ist Kontonummer Flugreservierung: Schlüssel ist Flugnummer, Reservierungsnummer,...

Mehr

Nichtdeterministische Platzklassen

Nichtdeterministische Platzklassen Sommerakademie 2010 Rot an der Rot AG 1: Wieviel Platz brauchen Algorithmen wirklich? Nichtdeterministische Platzklassen Ulf Kulau August 23, 2010 1 Contents 1 Einführung 3 2 Nichtdeterminismus allgemein

Mehr

Rechnerische Komplexität

Rechnerische Komplexität Proseminar Effiziente Algorithmen SS 2002 Rechnerische Komplexität Ulrike Krönert (34180) 0. Inhalt 1. Einführung 2. Algorithmen und Komplexität 2.1. Algorithmen 2.2. Laufzeitabschätzung 2.3. Polynomialzeit

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Algorithmen. Sortieren durch Auswählen, Sortieren durch Mischen und Vergleich der Laufzeit. Abschätzung der Laufzeit eines Algorithmus, O-Notation.

Algorithmen. Sortieren durch Auswählen, Sortieren durch Mischen und Vergleich der Laufzeit. Abschätzung der Laufzeit eines Algorithmus, O-Notation. Algorithmen Sortieren durch Auswählen, Sortieren durch Mischen und Vergleich der Laufzeit Abschätzung der Laufzeit eines Algorithmus, O-Notation. Rekursion Einführung in die Informatik: Programmierung

Mehr

Projekt Systementwicklung

Projekt Systementwicklung Projekt Systementwicklung Effiziente Codierung: Laufzeitoptimierung Prof. Dr. Nikolaus Wulff Effiziente Codierung Der Wunsch effizienten Code zu schreiben entstammt mehreren Quellen: Zielplattformen mit

Mehr

Folge 13 - Quicksort

Folge 13 - Quicksort Für Abiturienten Folge 13 - Quicksort 13.1 Grundprinzip des Quicksort Schritt 1 Gegeben ist ein unsortierter Array von ganzen Zahlen. Ein Element des Arrays wird nun besonders behandelt, es wird nämlich

Mehr

Mächtigkeit von WHILE-Programmen

Mächtigkeit von WHILE-Programmen Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 26. November 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 245, Seite 63 im Skript) 3 7 21 10 17 31 49 28 14 35 24 42 38 Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die

Mehr

Vorlesung 4 BETWEENNESS CENTRALITY

Vorlesung 4 BETWEENNESS CENTRALITY Vorlesung 4 BETWEENNESS CENTRALITY 101 Aufgabe! Szenario: Sie arbeiten bei einem sozialen Online-Netzwerk. Aus der Netzwerk-Struktur Ihrer Benutzer sollen Sie wichtige Eigenschaften extrahieren. [http://www.fahrschule-vatterodt.de/

Mehr

Fragen für die Klausuren

Fragen für die Klausuren Fragen für die Klausuren Vom Quellcode zum ausführbaren Programm Was ist ein Quellcode? Ist der Quellcode von einem Programm auf unterschiedlichen Rechner gleich? Nennen Sie drei Programmiersprachen. Was

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Letzte Bearbeitung: Jan 211 Ein wichtiger Aspekt bei Algorithmen sind seine "Kosten". Wir wollen uns hier ausschließlich mit der Laufzeit des gewählten Algorithmus beschäftigen.

Mehr

Elementare Zahlentheorie. Diskrete Strukturen. Winter Semester 2012 #

Elementare Zahlentheorie. Diskrete Strukturen. Winter Semester 2012 # Erster Teil 1 Elementare Diskrete Strukturen Winter Semester 2012 # 342 207 Prof. Armin Biere Institut für Formale Modelle und Verifikation Johannes Kepler Universität, Linz http://fmv.jku.at/ds Literatur

Mehr

1 Zahlentheorie. 1.1 Kongruenzen

1 Zahlentheorie. 1.1 Kongruenzen 3 Zahlentheorie. Kongruenzen Der letzte Abschnitt zeigte, daß es sinnvoll ist, mit großen Zahlen möglichst einfach rechnen zu können. Oft kommt es nicht darauf, an eine Zahl im Detail zu kennen, sondern

Mehr

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1 Sortieren 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1 Sortiermethoden (Auswahl) Allgemeine Methoden: Sortieren in Arrays Spezielle Methoden: Sortieren von Dateien 2009 Jiri Spale, Algorithmen

Mehr