Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen
|
|
- Renate Hummel
- vor 6 Jahren
- Abrufe
Transkript
1 Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus nachzuweisen Komplexität/Effizienz von Algorithmen: wie misst man das, wie ist dazu das ganz allgemeine Vorgehen 3.1. Einführung in den verwendeten Pseudocode Bem.: Hier werden nur die wichtigsten Konzepte kurz vorgestellt. Eine ausführlichere Erläuterung finden Sie unter AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 1
2 Pseudocode umfasst Anweisungen/Befehle Einrücken Kennzeichnet die Blockstruktur Beispiel: // Rest der Zeile ist Kommentar. Kommentare werden nicht ausgeführt! Technische Universität München Beispiel for j = 2 to länge(a) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste i = 0 A[1.. // Kommentar j - 1] ein. i = j 1 // Auch Kommentar while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key // Ausgabe: i = 7 print Gibt etwas aus. Zeichenketten in Anführungszeichen werden unverändert ausgegeben. Z.B. print X gibt den Wert der Variablen X aus. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 2
3 Pseudocode Fortsetzung: Zuweisung: z.b. X = 5 Weist der Variable X den Wert 5 zu for j = 2 to länge(a) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i = j 1 while i > 0 und A[ i ] > key do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key Feld A[Wert1.. Wert2] Ein Feld ist eine Folge von Werten. Auf den Wert an Position i des Feldes A[i], wird mit einem Indexwert i zugegriffen. A[1..j] bezeichnet die Elemente A[1], A[2],, A[j]. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 3
4 Pseudocode Fortsetzung: for i = Wert1 to Wert2 Variable i nimmt schrittweise die for j = 2 to länge(a) do Werte von Wert1 bis Wert2 an. key = A[ j ] // Füge A[ j ] in die Jedes Mal werden die Anweisung des For-Schleifenkörpers ausgeführt. i = j 1 while i > 0 und A[ i ] > key do Nach Beendigung der ganzen A[i + 1] = A[ i ] Schleife hat die Variable i den Wert i = i 1 Wert2+1 A[i + 1] = key while Bedingung do Führt einen While-Schleifenkörper aus, solange die Bedingung erfüllt ist. Problem? // sortierte Liste A[1.. j - 1] ein. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 4
5 Pseudocode Fortsetzung: if Bedingung Anweisungsblock // Bedingung erfüllt else Anweisungsblock Verzweigung im Code anhand der Bedingung. else kennzeichnet den Beispiel i = 3 if i == 0 X= 0 else X= 2 Zweig, der gewählt wird,falls die Bedingung nicht erfüllt ist. <obj>.<attr> Per. wird auf das Attribut <attr> des Objekts <obj> zugegriffen. // A: Feld, 5 Elemente i = A.länge // i hat den Wert 5 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 5
6 3.2. Einführendes Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge ist nicht sortiert Ausgabe: Permutation der Eingabefolge Sortieren der Eingabewerte: a 1 a 2 a 3 a n Beispiel Eingabe: 41, 31, 26, 59, 58 Ausgabe: 26, 31, 41, 58, 59 sortierte Liste AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 6
7 3.2.1 Konkreter Sortieralgorithmus: Sortieren durch Einfügen, Algorithmus in Pseudo-Code Insertion Sort A[1..n] ist die Eingabe, ein Feld von natürlichen Zahlen key ist der bei jeder Iteration der Schleife einzusortierende Wert Insertion_Sort (A) Beispiel Beispiel: for j = 2 to länge(a) do Eingabe A[1.. 6] = 5, 2, 4, 6, 1, 3 key = A[ j ] Prinzipieller Ablauf: // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i = j 1 while (i > 0 und A[ i ] > key) do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key // Ende der For-Schleife AuD, Kapitel 3 Effizienz, WS010/11, WS09/10, C. C. Eckert 7
8 Algorithmus in Pseudo-Code Insertion Sort A[1..n] ist die Eingabe, ein Feld von natürlichen Zahlen key ist der einzusortierende Wert Insertion_Sort (A) for j = 2 to länge(a) do key = A[ j ] // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. i = j 1 while (i > 0 und A[ i ] > key) do A[i + 1] = A[ i ] i = i 1 A[i + 1] = key // Ende der For-Schleife j key A[1.. j-1] i Beispielablauf im Detail Eingabe 5, 2, 4, 6, 1, 3 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 8
9 3.2.2 Korrektheit von Insertion Sort Anhand des Beispiels wird exemplarisch gezeigt, wie man prinzipiell vorgehen kann, um die Korrektheit zu beweisen Beobachtung: Insertion Sort berechnet das Ergebnis, indem die For-Schleife n-1 mal durchlaufen wird (n-1 Iterationen der Schleife) In jeder Iteration: A[j] bezeichnet den einzusortierenden Wert In jeder Iteration: alle Werte A[1.. j-1] liegen bereits sortiert vor und sind eine Permutation der ursprünglichen Werte der Positionen A[1.. j-1] Die Eigenschaft des Teilfeldes A[1.. j-1] ist eine so genannte Schleifeninvariante. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 9
10 Eine Schleifeninvariante muss 3 Eigenschaften erfüllen: 1 Die Bedingung gilt vor dem Schleifen-Durchlauf 2 Wenn sie vor dem Durchlauf gilt, dann gilt sie auch bis zum nächsten Durchlauf, also auch nach dem Durchlauf 3 Beim Abbruch der Schleife liefert die Schleifeninvariante nützliche Informationen im Hinblick auf Korrektheit. Bem: Idee ist ähnlich einem Induktionsbeweis Schleifeninvariante für Insertion Sort Zu Beginn jeder Iteration der For-Schleife besteht das Teilfeld A[1.. j - 1] aus den ursprünglich in A[1.. j - 1] enthaltenen Werten und A[1.. j - 1] ist geordnet. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 10
11 Nutzung der Schleifeninvariante für Korrektheitsnachweis: Vor dem erstem Schleifen-Durchlauf gilt: j = 2, und das Feld A[1.. j - 1] enthält nur ein Element: A[1], d.h. Das Feld ist sortiert, die Invariante ist erfüllt. Zeilen 4 7: Werte A[ j - 1], A[ j - 2] werden jeweils eine Position nach rechts verschoben, bis die korrekte Position A[ j ] für das einzusortierende Element mit dem Wert key gefunden ist. An dieser Position wird der Wert eingefügt. D.h. die Invariante ist erfüllt. Der Algorithmus terminiert, wenn j = n + 1 gilt, d.h. da die Invariante gilt: A[1.. j - 1], also A[1.. n], ist geordnet. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 11
12 3.2.3 Komplexität von Insertion Sort? Zu klären ist, wie man anhand des Pseudocodes abschätzen kann, wie viel Rechenzeit (oder Speicherplatz) ein Algorithmus bei einer Eingabe n benötigt. Anders formuliert: kann man eine Funktion definieren, die in Abhängigkeit von der Eingabegröße n beschreibt, in welcher Weise der Aufwand, der zur Ausführung des Algorithmus notwendig ist, wächst? D.h. man ist daran interessiert, einen Algorithmus A über eine Funktion f zu charakterisieren, die das Wachstumsverhalten von A insbesondere bei sehr großen Werten der Eingabe n beschreibt. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 12
13 Wachstums- Verhalten von Funktionen f(x) z.b. Linear: f(x) = x Logarithmisch: f(x)= log x Quadratisch: f(x) = x 2 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 13
14 Bem.: Bevor wir eine allgemeine, systematische Vorgehensweise vorstellen, soll das Vorgehen am Beispiel Insertion Sort motiviert werden. Berechnung der Laufzeit von Insertion Sort Wir treffen folgende vereinfachende Annahme: Jede Grundoperation i (dies entspricht einer Zeile im Pseudo- Code) benötigt eine konstante Zeit c i Sei n die Größe des zu sortierenden Feldes von Insertion Sort, dann ist n die Problemgröße und wir berechnen die Laufzeit von Insertion Sort als Laufzeitfunktion T(n). D.h. mit T(n) beschreiben wir das Wachstumsverhalten von Insertion Sort abhängig von der Eingabegröße n. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 14
15 Vorüberlegungen für Insertion-Sort: Zeile Kosten Zeit für alle pro Zeile Durchläufe Technische Universität München 1 c 1 2 c c 4 5 c 5 6 c 6 7 c 7 1 for j = 2 to länge(a) do 2 key = A[ j ] 3 // Füge A[ j ] in die // sortierte Liste A[1.. j - 1] ein. 4 i = j 1 5 while i > 0 und A[ i ] > key do 6 A[i + 1] = A[ i ] 7 i = i 1 8 A[i + 1] = key 8 c 8 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 15
16 Berechnung der Laufzeit T(n) von Insertion Sort: T(n): Summe aller Laufzeiten der ausgeführten Grundoperationen Beispiel: Anweisung, die c i Schritte benötigt und n-mal ausgeführt wird, erfordert eine Laufzeit von c. i n Laufzeit T(n) = c 1 n + c 2 (n 1) + c 4 (n 1) Beobachtung? n Σ + c 5 t j + c 6 (t j 1) j=2 n Σ j=2 + c 7 (t j 1) + c 8 (n 1) n Σ j=2 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 16
17 T(n) im Besten Fall (Best-Case)? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 17
18 T(n) im Schlechtesten Fall (Worst-Case)? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 18
19 Das Beispiel lehrt: (1) Wir haben von den tatsächlichen Kosten (Zeitdauer, Speicherplatz) einer auszuführenden Anweisung abstrahiert und eine Konstante c i verwendet. Dieses Vorgehen wendet man bei Laufzeituntersuchungen häufig an. Man abstrahiert von der realen Maschine, auf der ein Algorithmus ausgeführt wird, und geht von einem einfachen Maschinenmodell, der RAM-Maschine aus (siehe 3.3). (2) Eine detaillierte Analyse der Laufzeitfunktion ist bereits für ein sehr einfaches Beispiel sehr aufwändig. Was uns eigentlich interessiert ist der Grad des Wachstums einer Funktion, insbesondere der Laufzeitfunktion. Von besonderem Interesse ist die Frage des asymptotischen Verhaltens der Komplexität für n (siehe 3.4). AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 19
20 3.3 RAM-Modell Um die Laufzeit von Algorithmen zu analysieren, benutzen wir ein einfaches Modell der zugrundeliegenden Rechner. Ziel ist es, die erforderlichen Ressourcen zur Ausführung eines Algorithmus abschätzen zu können. Die exakte Zeit, die verschiedene Maschinenbefehle auf unterschiedlichen Rechnern erfordern, sind hier nicht relevant. Als Modell wird die Random-Access Machine (RAM) verwendet. Festlegungen des RAM-Modells: Wir betrachten nur sequentielle Ausführungen, also eine 1- Prozessor-Architektur, keine Parallelität. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 20
21 Alle Daten liegen im direkt zugreifbaren Speicher. Was bedeutet das? Technische Universität München Alle Speicherzugriffe dauern gleich lang. Wieso ist das eine Abstraktion, Vereinfachung? Elementare Operationen erfordern eine Zeiteinheit. Wertzuweisung: = Arithmetische Operationen, wie Addition, Subtraktion, Multiplikation: *, /, +, - Logische Operationen, wie und und oder Vergleichsoperationen, wie < und > Befehle zur Steuerung des Kontrollflusses, wie if then else AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 21
22 Zur Bestimmung der Laufzeit eines Algorithmus wird die Anzahl der bei seiner Ausführung durchgeführten elementaren Operationen ermittelt. Beispiel: Anweisung (Alg.) Anzahl der Schritte X=X+1 for i=1 to n do X=X+1 for i=1 to n do for j=1 to n do X=X+1 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 22
23 Etwas komplexeres Beispiel: Gegeben sei der fiktive Algorithmus A, der aus drei Teilen besteht, die sequentiell bearbeitet werden, also: P= Teil1; Teil2; Teil3 Der Pseudocode von P sei wie folgt gegeben: Teil1: X=X+1 Y=Y+1 Z=Z+1 Teil2: for i=1 to n do X=X+Y Y=Y*Z Teil3: for i=1 to n do for j=1 to n do X=X+1, X=Y+2, Z=Z+3 T(n) = AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 23
24 Frage: Wie ist der Grad des Wachstums der Funktion T(n) aus dem vorherigen Beispiel? Dazu betrachten wir unterschiedliche Eingabewerte n: n=2 T(2)= n=10 T(10)= n=100 T(100)= Erkenntnis? AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 24
25 3.4. Die Landau-Notation Die Landau-Notation ermöglicht die Bestimmung des Zusammenhangs zwischen der Länge der Eingabe und der Laufzeit bzw. dem Speicherplatzaufwand. Die Landau-Symbole erlauben Aussagen der Form: Die Funktion f wächst nicht schneller als die Funktion g. Mit der Landau-Notation beschreibt man das asymptotische Wachstumsverhalten, also den Grad des Wachstums (die Wachstumsrate) bei großen Eingabewerten. Wachstumsrate ist ein Kriterium, um die Effizienz eines Algorithmus zu bestimmen und um Algorithmen zu vergleichen. Beispiel: AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 25
26 3.4.1 Die Landau-Symbole Für eine gegebene Funktion g bezeichnen wir mit Ө(g) die Menge der Funktionen, für die gilt: Ө(g) = {f: es existieren positive Konstanten c 1, c 2 und n 0, so dass 0 c 1 g(n) f(n) c 2 g(n) für alle n n 0 } Notation: wir schreiben f(n) = Ө(g) Die Funktion f(n) ist bis auf einen konstanten Faktor für alle n n 0 gleich g(n). Wir sagen, dass g(n) eine asymptotisch scharfe Schranke von f(n) ist. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 26
27 Intuitiv besagt die Landau-Notation, dass Terme niedriger Ordnung für große Eingabewerte n nicht signifikant sind, konstante Anteile können ignoriert werden. Die Ө-Funktion beschränkt eine Funktion f(n) asymptotisch von oben und von unten. Beispiel: Insertion Sort, Laufzeit T(n) = 1/2n 2 3n Behauptung: T(n) = Ө(n 2 ) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 27
28 Beispiel: Gegeben quadratische Funktion f(n) = an 2 + bn + c Behauptung: f(n) = Ө(n 2 ) Allgemein gilt für jedes Polynom p(n) = ain i a i sind Konstanten, a d > 0: p(n) = Ө(n d ) d i 0 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 28
29 Wenn wir nur über eine asymptotisch obere Schranke verfügen, benutzen wir die O-Notation. Gegeben sei die Funktion g(n). Mit O(g(n)) (gesprochen O von g von n) ist die Menge definiert: O(g) = {f: es existieren positive Konstanten c >0 und n 0, so dass 0 f(n) c g(n) für alle n n 0 } Bem.: Notation: f(n) = O(n). Falls f(n) = Ө(g(n)), dann gilt auch f(n) = O(g(n)) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 29
30 Beispiel 1: Sei T(n) = 60n + 12 T(n) c g(n) T(n) g(n) n n 0 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 30
31 Beispiel 2 T(n) = 31n + 12n 2 T(n) = O(n 2 ) Beispiel 3: Lineare Suche in einem sortierten Feld mit n Elementen i=0; while (i < n) und A[i] x )do i= i+1 ; Laufzeit T(n)= O(n) Best Case: 1 Schritt Average Case: n / 2 Schritte Worst Case: n Schritte AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 31
32 Bemerkungen: Mit der O-Notation wird eine obere Schranke für die Laufzeit angegeben. Das heißt, die O-Funktion beschreibt die Laufzeit im schlechtesten Fall. Mit Hilfe der O-Notation können wir nun eine Aussage treffen, wie effizient ein Algorithmus ist. O(1): Solche Algorithmen liefern unabhängig von der Problemgröße in konstanter Zeit ein Ergebnis. Das ist z.b. der Fall, wenn die Anweisungen des Algorithmus höchstens 1 mal ausgeführt werden. Beispiel: Entfernen des ersten Elementes einer Liste. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 32
33 O(log n): Die benötigte Zeit ist proportional zum Logarithmus der Problemgröße, d.h. der Algorithmus wird mit wachsendem n langsamer. Bei jeder Verdopplung von n wächst log n um einen gewissen konstanten Wert. Dies tritt z.b. bei Algorithmen auf, die ein komplexes Problem in ein kleineres Problem umwandeln und den Aufwand auf einen konstanten Anteil verringern. Beispiel: Suche in einer sortierten Liste. O(n): Der Aufwand für einen Algorithmus ist linear in n, i.a. entfällt ein kleiner Anteil der Verarbeitung auf jedes Element der Eingabe. Beispiel: Suche in einer unsortierten Liste. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 33
34 O(nlog n): z.b. Algorithmen, die das zu lösende Problem in Teilprobleme aufteilen, diese unabhängig lösen und die Teillösungen kombinieren. Beispiel: vergleichsbasiertes Sortieren einer Liste. O(n 2 ): Quadratische Laufzeit: typisch für Algorithmen, die alle paarweisen Kombinationen von Datenelementen verarbeiten. Beispiel: Multiplikation einer Matrix mit einem Vektor O(n 3 ): Beispiel: Multiplikation von Matrizen O(2 n ): Beispiel: Bestimmung aller möglichen Teilmengen Bem. zur log-funktion: Die Basis bewirkt nur eine Änderung um einen konstanten Faktor, d.h. die Basis ist nicht von Bedeutung. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 34
35 Das Wachstumsverhalten von Funktionen Technische Universität München lg N lg 2 N N N N lg N N lg 2 N N 3/2 N Milliarden Milliarde 1 Billion Quelle R. Sedgewick, Algorithmen, Pearson Studium, 2002, S. 97 AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 35
36 O-Notation: Konstante c Bisher haben wir nur die Komplexitätsklassen (O(1), O(log n), O(n), ) betrachtet und eine Größe ignoriert: die Konstante c. Die Konstante c erlaubt uns den Vergleich von verschiedenen Funktionen und ist im asymptotischen Verhalten für n vernachlässigbar. Bemerkung: Dies gilt jedoch nicht für kleine Problemgrößen! Unter Umständen kann es deshalb sinnvoll sein, z.b. wenn die Eingabegröße n sehr klein ist, einen Algorithmus zu verwenden, der eigentlich einer höheren Komplexitätsklasse angehört, aber ein kleine Konstante c besitzt. AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 36
37 3.4.2 Rechenregeln für die O-Notation Nach dem Prinzip: teile und herrsche kann man auch die Analyse des Laufzeitverhaltens aufteilen und jeweils einzelne Teile analysieren. Die Frage bleibt: wie berechnet sich aus Teilergebnissen das Gesamtlaufzeitverhalten? Addition in der O-Notation Annahme: Laufzeiten für die Programme P 1 und P 2 seien: T 1 (n) = O( f (n)), T 2 (n) = O( g (n)) Im Algorithmus werde erst P 1 und dann P 2 ausgeführt Die Gesamtlaufzeit ergibt sich dann durch: T 1 (n) + T 2 (n) = O(max (f (n), g (n))) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 37
38 Wieso ist das so? Behauptung: Gegeben sei Eingabegröße n T 1 (n) + T 2 (n) = O(max(f (n), g (n))) Beweis: Gegeben seien die Konstanten c 1, c 2, n 1, n 2 mit folgender Eigenschaft wenn n n 1, dann T 1 (n) c 1 f (n); wenn n n 2, dann T 2 (n) c 2 g(n). Sei n 0 = max(n 1, n 2 ). Wenn n n 0, dann ist T 1 (n) + T 2 (n) c 1 f (n) + c 2 g (n). D.h. Wenn n n 0, dann ist T 1 (n) + T 2 (n) (c 1 + c 2 ) max(f (n), g (n)). d.h. T 1 (n) + T 2 (n) = O(max(f (n), g (n))) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 38
39 Beispiel 3 sequentiell ausgeführte Programmteile mit Laufzeiten P1: O(n 2 ) P2: O(n 3 ) P3: O(nlog n) Laufzeit der ersten beiden Programme: P1, P2: O(max (n 2, n 3 )) = O(n 3 ) Gesamtlaufzeit: (P1, P2), P3: O(max (n 3, nlog n)) = O(n 3 ) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 39
40 Wichtigste Rechenregeln der O-Notation 1. f (n) = O( f (n)) 2. c O( f (n)) = O( f (n)), c ist eine Konstante 3. O( f (n)) + O( f (n)) = O( f (n)) 4. O( f (n)) + O( g (n)) = O( max( f (n), g (n))) 5. O( O( f (n))) = O( f (n)) 6. O( f (n)) O( g(n)) = O( f (n) g(n)) 7. O( f (n) g(n)) = O(f (n)) O( g(n)) AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 40
41 Allgemeine Regeln für die Analyse von Algorithmen Laufzeit für jede einzelne Grundoperation/Anweisung: O(1) uniforme Kostenfunktion (logarithmische Kostenfunktion) Laufzeit für eine Folge sequentiell ausgeführter Anweisungen: Summenformel Laufzeit für eine if Abfrage: Zeit für den if-block + Zeit O(1) für Bedingungsauswertung Laufzeit für einen if then else Block der größere Zeitbedarf des then- oder des else-blockes Laufzeit von Schleifen (for, while, ) Summe aller Zeiten innerhalb des Schleifenkörpers + Überprüfen der Schleifenbedingung O(1) multipliziert mit der Anzahl der Schleifendurchläufe AuD, Kapitel 3 Effizienz, WS010/11, C. Eckert 41
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen
3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge
MehrAlgorithmen 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
Mehr8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)
Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld
MehrKapitel 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
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a
MehrAlle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).
8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame
MehrWS 2009/10. Diskrete Strukturen
WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910
MehrÜbung zur Vorlesung Berechenbarkeit und Komplexität
RWTH Aachen Lehrgebiet Theoretische Informatik Reidl Ries Rossmanith Sanchez Tönnis WS 2012/13 Übungsblatt 7 26.11.2012 Übung zur Vorlesung Berechenbarkeit und Komplexität Aufgabe T15 Entwickeln Sie ein
MehrKapitel 6 Elementare Sortieralgorithmen
Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine
MehrAbgabe: (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,
MehrKomplexitä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
MehrAlgorithmen und Datenstrukturen
1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrKostenmodell. 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
MehrKapitel 9. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:
MehrKomplexität. G. Zachmann Clausthal University, Germany Leistungsverhalten von Algorithmen
lausthal Informatik II Komplexität von Algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Leistungsverhalten von Algorithmen Speicherplatzkomplexität: Wird primärer & sekundärer
MehrProgrammiertechnik 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
MehrEffizienz von Algorithmen
Effizienz von Algorithmen Eine Einführung Michael Klauser LMU 30. Oktober 2012 Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober 2012 1 / 39 Ein einführendes Beispiel Wie würdet ihr einen Stapel
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:
MehrSuchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
MehrBabeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Rekursion
Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Rekursion Rekursion Neue Denkweise Wikipedia: Als Rekursion bezeichnet man den Aufruf
MehrEinstieg in die Informatik mit Java
1 / 32 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 32 1 Überblick: was ist Effizienz? 2 Landau-Symbole 3 Eier im Korb 4
Mehr4 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
Mehr2.2 Allgemeine (vergleichsbasierte) Sortierverfahren
. Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen
MehrAlgorithmen 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,
MehrAlgorithmen und Datenstrukturen Kapitel 1 Algorithmen & Algorithmenanalyse
Algorithmen und Datenstrukturen Kapitel 1 Algorithmen & Frank Heitmann heitmann@informatik.uni-hamburg.de 14. Oktober 2015 Frank Heitmann heitmann@informatik.uni-hamburg.de 1/48 Der Sprung ins Wasser...
Mehr2. Algorithmenbegriff
2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen
MehrSortierverfahren 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
MehrLaufzeit 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
MehrInformatik I Komplexität von Algorithmen
Leistungsverhalten von Algorithmen Informatik I Komplexität von Algorithmen G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Speicherplatzkomplexität: Wird primärer & sekundärer Speicherplatz
MehrAlgorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.
Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6. November 2014 (O-Notation, Theta, Omega) Junior-Prof. Dr. Olaf Ronneberger
MehrAchtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass
Achtung: Groß O definiert keine totale Ordnungsrelation auf der Menge aller Funktionen! Beweis: Es gibt positive Funktionen f und g so, dass f O g und auch g O f. Wähle zum Beispiel und G. Zachmann Informatik
MehrBeispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5
Robert Elsässer Paderborn, den 15. Mai 2008 u.v.a. Beispiellösung zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 5 AUFGABE 1 (6 Punkte): Nehmen wir an, Anfang bezeichne in einer normalen
Mehr2. 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
MehrAbschnitt: 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
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrUebersicht. 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, zwicker@iam.unibe.ch
MehrInhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.
1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften
MehrEntscheidungsbä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
Mehr2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung
2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
MehrDatenstrukturen, Algorithmen und Programmierung 2
Datenstrukturen, Algorithmen und Programmierung 2 Professor Dr. Petra Mutzel Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 1. VO SS 2009 14. April 2009 Petra Mutzel Kurzvorstellung
MehrUE 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
MehrGrundlagen 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
MehrStudent: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:
Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung
MehrSortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2
Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen
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 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
MehrDatenstrukturen 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
MehrModul Entscheidungsunterstützung in der Logistik. Einführung in die Programmierung mit C++ Übung 2
Fakultät Verkehrswissenschaften Friedrich List, Professur für Verkehrsbetriebslehre und Logistik Modul Entscheidungsunterstützung in der Logistik Einführung in die Programmierung mit C++ Übung 2 SS 2016
MehrEinführung in die Informatik I
Einführung in die Informatik I Berechenbarkeit und Komplexität Prof. Dr. Nikolaus Wulff Berechenbarkeit Im Rahmen der Turingmaschine fiel zum ersten Mal der Begriff Berechenbarkeit. Ein Funktion f heißt
MehrCounting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit
Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält
MehrAlgorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
MehrIdeen und Konzepte der Informatik. Programme und Algorithmen Kurt Mehlhorn
Ideen und Konzepte der Informatik Programme und Algorithmen Kurt Mehlhorn November 2016 Algorithmen und Programme Algorithmus = Schritt-für-Schritt Vorschrift zur Lösung eines Problems. Formuliert man
MehrAlgorithmen und Datenstrukturen 1-1. Seminar -
Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik
MehrSOI 2013. Die Schweizer Informatikolympiade
SOI Die Schweizer Informatikolympiade Lösung SOI Wie schreibe ich eine gute Lösung? Bevor wir die Aufgaben präsentieren, möchten wir dir einige Tipps geben, wie eine gute Lösung für die theoretischen
MehrAlgorithm Engineering was hat das mit der Praxis zu tun?
Algorithm Engineering was hat das mit der Praxis zu tun? design analyze Algorithmics implement experiment 33 Algorithmentheorie (Karikatur) models design Theory Practice analysis perf. guarantees deduction
Mehr2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren
2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes
Mehr2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:
2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden
MehrInformatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.
Informatik I 1. Kapitel Rainer Schrader Einführung in Algorithmen und Datenstrukturen Zentrum für Angewandte Informatik Köln 16. Juli 008 1 / 1 / 1 Einführung in Algorithmen Einführung in Algorithmen Gliederung
MehrKombinatorik: 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
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 7 (21.5.2014) Binäre Suche, Hashtabellen I Algorithmen und Komplexität Abstrakte Datentypen : Dictionary Dictionary: (auch: Maps, assoziative
MehrKomplexität von Algorithmen
Komplexität von Algorithmen Ziel Angabe der Effizienz eines Algorithmus unabhängig von Rechner, Programmiersprache, Compiler. Page 1 Eingabegröße n n Integer, charakterisiert die Größe einer Eingabe, die
MehrAlgorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007
Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 1 186.089 VO 3.0 Vorlesungsprüfung 19. Oktober
MehrDer folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre 1990.
Ein polynomieller Algorithmus für das N-Damen Problem 1 Einführung Der folgende Vortrag basiert auf dem Text A Polynomial Time Algorithm for the N-Queens Problem von Rok Sosic und Jun Gu aus dem Jahre
MehrAlgorithmen und Datenstrukturen 1. EINLEITUNG. Algorithmen und Datenstrukturen - Ma5hias Thimm 1
Algorithmen und Datenstrukturen 1. EINLEITUNG Algorithmen und Datenstrukturen - Ma5hias Thimm (thimm@uni-koblenz.de) 1 Allgemeines Einleitung Zu den Begriffen: Algorithmen und Datenstrukturen systematische
MehrÜ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Überblick. 1 Vorbemerkungen. 2 Algorithmen. 3 Eigenschaften von Algorithmen. 4 Historischer Überblick. Einführung
Teil I Einführung Überblick 1 Vorbemerkungen 2 Algorithmen 3 4 Historischer Überblick Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 1 1 Vorbemerkungen Was ist Informatik? Informatik
MehrDatenstrukturen und Algorithmen
Datenstrukturen und Algorithmen VO 708.031 D&A: 1. Einführung robert.legenstein@igi.tugraz.at 1 Organisatorisches VO (708.031) & UE (708.032) bei beiden extra anmelden, zwei Zeugnisse Vortragende: VO:
MehrTheoretische Informatik 1
Theoretische Informatik 1 Registermaschine David Kappel Institut für Grundlagen der Informationsverarbeitung TU Graz SS 2012 Übersicht Registermaschinen Algorithmusbegriff konkretisiert formale Beschreibung
MehrKapitel 9 Suchalgorithmen
Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in
MehrEinführung in die Programmierung Wintersemester 2011/12
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while
MehrInformatik 1. Teil 1 - Wintersemester 2012/2013. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik 1 Teil 1 - Wintersemester 2012/2013 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen 0. Rechner und Programmierung
MehrKlausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015
Klausur Paralleles Rechnen (Richtwert 60 min) 10. Dez. 2015 Aufgabe 1: (30 Punkte) 1. Erläutern Sie kurz das PRAM-Modell? Was wird sehr idealistisch, was wird realistischer im Vergleich mit echten Parallelrechnern
MehrAlgorithmen und Datenstrukturen SS09
Foliensatz 1 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 Einiges Vorweg Organisatorisches Hörer: Vorlesung: Übungen: Homepage: Prüfungsstoff:
MehrÜbung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
Mehr1. 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
MehrProf. 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
MehrT (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
MehrEINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15
EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrProgrammieren I. Kapitel 5. Kontrollfluss
Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,
MehrKapitel 1. Exakte Suche nach einem Wort. R. Stiebe: Textalgorithmen, WS 2003/04 11
Kapitel 1 Exakte Suche nach einem Wort R. Stiebe: Textalgorithmen, WS 2003/04 11 Überblick Aufgabenstellung Gegeben: Text T Σ, Suchwort Σ mit T = n, = m, Σ = σ Gesucht: alle Vorkommen von in T Es gibt
MehrKapitel 3: Untere Schranken für algorithmische Probleme Gliederung
Gliederung 1. Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs 6. Ausgewählte
MehrEffiziente 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)
MehrGrundlagen 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: anja.schanzenberger@hs-augsburg.de
MehrÜbung Algorithmen I
Übung Algorithmen I 18.5.16 Lukas Barth lukas.barth@kit.edu (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives
MehrFACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung
C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen
MehrInformatik II, SS 2014
Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 4 (7.5.2014) Asymptotische Analyse, Sortieren IV Algorithmen und Komplexität Erfahrungen 1. Übung C++ / Java sind komplett ungewohnt Struktur
Mehr1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?
1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien
MehrEinführung in die Informatik 2
Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
MehrAlgorithmen und Datenstrukturen 1-3. Seminar -
Algorithmen und Datenstrukturen 1-3. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Outline Spezielle Listen: Stacks, Queues Sortierverfahren 3. Übungsserie Wiederholung:
Mehr11. Rekursion, Komplexität von Algorithmen
11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv
MehrSortieralgorithmen. 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
MehrInformatik II - Tutorium
Sommersemester 2008 http://info2tut.blogspot.com 29. April 2007 Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Quellennachweis & Dank an: Joachim Wilke, Susanne Dinkler, Bernhard Müller,
MehrTechnische 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
Mehr1. Übungsblatt zu Algorithmen II im WS 2011/2012
Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter Sanders Moritz Kobitzsch, Dennis Schieferdecker. Übungsblatt zu Algorithmen II im WS 0/0 http://algo.iti.kit.edu/algorithmenii.php
Mehr4 Greedy-Algorithmen (gierige Algorithmen)
Greedy-Algorithmen (gierige Algorithmen) Greedy-Algorithmen werden oft für die exakte oder approximative Lösung von Optimierungsproblemen verwendet. Typischerweise konstruiert ein Greedy-Algorithmus eine
MehrGrundlagen 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: skuehn@informatik.htw-dresden.de
MehrGTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
MehrTheoretische Informatik SS 03 Übung 3
Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige
MehrInformatik. Teil 1 Wintersemester 2011/2012. Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik
Informatik Teil 1 Wintersemester 2011/2012 Prof. Dr.-Ing. habil. Peter Sobe Fachkultät Informatik / Mathematik Dieser Foliensatz wurde z.t. von Herrn Prof. Grossmann übernommen Inhalt 1. Algorithmen -
Mehr