Laufzeit und Komplexität

Größe: px
Ab Seite anzeigen:

Download "Laufzeit und Komplexität"

Transkript

1 Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen und O-Notation Problemgröße Vernachlässigung nicht relevanter Teile, O-Notation Wichtige Komplexitätsklassen und typische Laufzeiten Laufzeitanalyse von Algorithmen Beispiele: Binäre und lineare Suche Medieninformatik Algorithmen und Datenstrukturen 1

2 Motivation Suchen Wie schnell kann man suchen? Medieninformatik Algorithmen und Datenstrukturen 2

3 Suche in einem Feld Ein Feld (Array) a Mit n Elementen im Beispiel n=10 Indiziert von 0 bis n-1 im Beispiel 0 bis 9 Aufsteigend sortiert für alle 0 pos n-1: a[pos] a[pos+1] Problemstellung Suche ein vorgegebenes Element s in a Bestimme Index pos, so dass a[pos] gleich s und gebe pos zurück Falls s nicht in dem Feld gebe n zurück a s Problem: Suche in einem Feld Eingabe: Feld a mit n Elementen Suchwert s Ausgabe: pos falls ein pos existiert mit a[pos] gleich s n sonst Nicht enthalten, Rückgabe 10 Medieninformatik Algorithmen und Datenstrukturen 3

4 Lineare Suche Lineare Suche Idee Teste sequentiell (hintereinander) von links nach rechts alle Feldelemente auf Gleichheit mit Suchwert Sobald gefunden breche ab a ==? s 42 Lineare Suche Algorithmus Initialisiere Indexvariable (Position) pos mit 0 Durchlaufe eine Schleife Falls pos ein korrekter Index ist (innerhalb der Feldgrenzen) und das Element noch nicht gefunden wurde Erhöhe pos um 1 Gebe pos zurück # Lineare Suche pos = 0 while pos < n and a[pos]!= s: pos = pos+1 return pos Medieninformatik Algorithmen und Datenstrukturen 4

5 Laufzeitbetrachtung mit Anzahl Schritten Benchmarking nicht aussagekräftig Implementieren des Algorithmus in spezifischer Programmiersprache Testen mit verschiedenen Eingaben Probleme Abhängig von Hardware, Sprache, Compiler, Implementierungsdetails, Testauswahl Ausführen auf doppelt so schnellem Rechner macht Algorithmus nicht besser/effizienter Besser: Anzahl der Einzelschritte Einzelschritt als abstrakte Zeiteinheit Bestimmung der Anzahl der Einzelschritte Unabhängig von Hardware, Implementierungsdetails (Sprache, Compiler) Probleme, z.b. Testauswahl Im Beispiel ist Element nicht im Feld, also werden alle Elemente getestet Was passiert, wenn das Element im Feld ist? Medieninformatik Algorithmen und Datenstrukturen 5

6 Laufzeitbetrachtung Lineare Suche Analyse Schritte konkretes Beispiel Zuweisung 10 Schleifendurchläufe a 4 Einzelschritte Zwei Tests Feldzugriff Addition Letzter Test Rückgabe Anzahl Schritte = 43 Schritte a s # Lineare Suche pos = 0 while pos < n and a[pos]!= s: pos = pos+1 return pos Medieninformatik Algorithmen und Datenstrukturen 6

7 Abstraktionen für die Laufzeitbetrachtung Abstraktion vom Rechner und der konkreten Implementierung Berechnen der Anzahl der Einzelschritte Basierend auf abstrakter Maschine, möglichst nahe an realer Hardware für Realisierung Einzelschritt Definition eines Einzelschritts zum Beispiel Zuweisung, Addition, Vergleich,... Abstraktion von konkreten Problemen Allgemeine Beschreibung der Eingabeobjekte statt konkrete Werte Festlegung der Größe der Eingabeobjekte, zum Beispiel Feldgröße n Aussagen über besten, mittleren, schlechtesten Fall zum Beispiel Element gefunden, Element nicht gefunden Aussagen für große n, Vernachlässigung von Bestandteilen die unabhängig von n sind Medieninformatik Algorithmen und Datenstrukturen 7

8 Größe der Eingabeobjekte Abstraktion von konkreter Menge an möglichen Eingabeobjekten Das Wesentliche ist meist die Größe Kein einheitliches Maß möglich ein irgendwie hergeleitetes n Meist in Zusammenhang mit Problemstellung Beispiele Feldgröße n (oder Anzahl der Elemente) für Suchen und Sortieren Gleichungssysteme mit m Gleichungen und k Unbekannten, für n kann m k gewählt werden, die Anzahl der Koeffizienten Graphen, für n zum Beispiel Anzahl der Knoten oder Anzahl der Kanten... Medieninformatik Algorithmen und Datenstrukturen 8

9 Bester, mittlerer, schlechtester Fall Bester Fall Konstruktion einer spezifischen Eingabe Mit der minimal möglichen Anzahl von Schritten Meist nicht charakteristische Aussage Mittlerer Fall Bei allen möglichen Eingaben, (oder mit Nebenbedingungen auf relevante Eingaben beschränkt) Durchschnittliche Anzahl von Schritten über alle diese Eingaben Interessante und schwierigste Aussage Schlechtester Fall Konstruktion einer spezifischen Eingabe Mit der maximal möglichen Anzahl von Schritten Relevante und meist machbare Aussage Medieninformatik Algorithmen und Datenstrukturen 9

10 Lineare Suche Bester Fall Eingabe s = a[0] Analyse Zuweisung Schleife einmal mit Vergleich Feldzugriff Vergleich Rückgabe Anzahl Schritte = = 5 Schritte Bester Fall Immer 5 Schritte Unabhängig von Feldgröße a s # Lineare Suche pos = 0 while pos < n and a[pos]!= s: pos = pos+1 return pos Medieninformatik Algorithmen und Datenstrukturen 10

11 Lineare Suche Schlechtester Fall Eingabe s nicht im Feld s a[pos] für alle 0 Analyse Zuweisung Schleife n-mal mit Vergleich Feldzugriff Vergleich Addition Letzter Vergleich Rückgabe Anzahl Schritte pos < n n + 2 = n Schritte Schlechtester Fall Immer 3+4 n Schritte a s # Lineare Suche pos = 0 while pos < n and a[pos]!= s: pos = pos+1 return pos Medieninformatik Algorithmen und Datenstrukturen 11

12 Lineare Suche Mittlerer Fall Eingabe Annahme über Verteilung der Eingabeobjekte muss gemacht werden Position von s im Feld, sowie s nicht im Feld, sind gleichverteilt Analyse Falls s an der Position pos für 0 pos < n: Laufzeit = 2+4 pos + 3 = pos Falls s nicht enthalten: Laufzeit 3 + 4n Vereinfachende Annahme (Feld eins länger, s in a[n]): Laufzeit 5+4n Laufzeit im Mittel ist (bei Gleichverteilung) Summe Laufzeiten für 0 pos n (inklusive nicht enthalten) geteilt durch n+1 Dies entspricht n, Herleitung nächste Seite Anzahl Schritte: n Schritte Mittlerer Fall Im Schnitt n Schritte Ungefähr halb so viel wie im schlechtesten Fall (entspricht Intuition) Medieninformatik Algorithmen und Datenstrukturen 12

13 Herleitung Mittlerer Fall Summe der möglichen Laufzeiten durch Anzahl mögliche Laufzeiten n i=0 5 4 i n 1 Konstanten rausziehen Summe aufspalten n i=0 5 n 1 4 i=0 n 1 n i Summen auflösen Gauß (Induktionsbeweis) 5 n 1 n 1 4 n n 1 2 n 1 Vereinfachen 5 4 n n 1 2 n 1 Vereinfachen 5 2 n Medieninformatik Algorithmen und Datenstrukturen 13

14 Aussagen über Algorithmenlaufzeit Man sucht nach relativen Aussagen über Skalierbarkeit Bei Verdopplung der Eingabegröße braucht der Algorithmus doppelt so lang Interessant ist Relative Lage Für große n Beispiel Schlechteste Laufzeit bei linearer Suche 3+4n Vernachlässigen kleinerer Funktionsteile 4n Vernachlässigen von Konstanten n Aussage Bei Verdopplung von n doppelt so lange Medieninformatik Algorithmen und Datenstrukturen 14

15 Vernachlässigen kleiner Funktionsteile Vernachlässigen kleiner Funktionsteile Idee Aussagen von Laufzeitfunktion für große n Konzentration auf den am stärksten wachsenden Teil der Funktion Beispiel: 4n statt 3 + 4n Für kleine n ist der Unterschied zwischen 3 + 4n und 4n relativ groß Bei n = 2 ist die Abweichung rund 20 Prozent Aber bei ~ 1 Million Schritte pro Sekunde liegt der Fehler im Mikrosekundenbereich Für große n ist der Fehler relativ zu der Zahl minimal Schon bei n = 10,000 ist der Fehler kleiner als ein Hundertstel eines Prozents und die Gesamtlaufzeit noch kleiner als eine Sekunde Je größer n, desto geringer der Fehler 3+4n 4n Medieninformatik Algorithmen und Datenstrukturen 15

16 Vernachlässigen von Konstanten Vernachlässigen von Konstanten Aussagen von Laufzeitfunktionen unabhängig von Hardware Konstante Faktoren repräsentieren Dauer eines Schritts Ignorieren von konstanten Faktoren Beispiel: n statt 4n Der Unterschied zwischen 4n und n ist ein konstanter Faktor Aussagen wie Bei Verdopplung der Eingabegröße braucht der Algorithmus doppelt so lange werden dadurch nicht beeinträchtigt Konstante Faktoren sind typischerweise abhängig von weg abstrahierten Eigenschaften n statt 4n könnte durch 4 mal schneller Maschine erreicht werden Annahme, dass Einzelschritt nur ein Viertel Zeiteinheit braucht 4n n Medieninformatik Algorithmen und Datenstrukturen 16

17 Zuordnung von Klassen zu Funktionen Idee Gruppieren von Funktionen Vernachlässigen und Reduktion aufs Wesentliche Wenn zwei Funktionen nach Vernachlässigung und Reduktion identisch sind, dann gehören Sie zu der gleichen Klasse Namen für die wichtigsten Klassen Formal O-Notation (asymptotisch obere Schranken) Beispiel: Lineare Suche Laufzeitfunktion T(n) = n Vernachlässigung: n 4 n n, T(n) ist linear n ist auch linear Weitere Beispiele n + 5 n² 5 n² n² quadratisch n + 3 n³ 3 n³ n³ kubisch log n 4 log n log n logarithmisch n n 3 2 n 2 n exponentiell Medieninformatik Algorithmen und Datenstrukturen 17

18 O-Notation T O(g) T wächst nicht schneller als g g ist eine asymptotische obere Schranke von T Ab einem bestimmten n wächst g schneller als T Ab einem bestimmten n ist für ein bestimmtes c der Wert c g(n) immer größer als T(n) Formale Spezifikation T O(g) Es existiert eine Konstante c 0 eine Konstante n 0 0 so dass für alle n n 0 gilt, dass T(n) c g(n) n 0 c g(n) T(n) c 0 n 0 0 n n 0 : T n c g n Medieninformatik Algorithmen und Datenstrukturen 18

19 O-Notation Andere Symbole Alternative Schreibweise: T = O(g) Eigentlich T O(g), aber = Notation hat sich eingebürgert Sprechweise bleibt, T ist in O von g Notationsproblem Achtung bei Gleichungsketten: Gleichheit gilt nicht!!! g = (T) genau dann wenn T = O(g) g wächst mindestens so schnell wie T T = (g) genau dann wenn T = O(g) und g = O(T) T und g sind von der gleichen Wachstumsordnung Sinnvoll für gute Abschätzungen Medieninformatik Algorithmen und Datenstrukturen 19

20 Rechnen mit der O-Notation Zugehörigkeit zu Komplexitätsklassen f = O(f) O(O(f)) = O(f) Ignorieren von Konstanten möglich, für c Konstante c O(f) = O(f) O(c f) = O(f) O(f+c) = O(f) Addition (Maximum) O(f) + O(g) = O(max(f,g)) O(c 0 + c 1 n + c 2 n c k n k ) = O(n k ) Multiplikation (bleibt Multiplikation) O(f) O(g) = O(f g) Es gilt O(1) < O(log(n)) < O (n) < O (n log(n)) < O(n 2 ) <... < O(2 n ) Medieninformatik Algorithmen und Datenstrukturen 20

21 Einfluss auf die Analyse Initialisierung Ignorieren von Konstanten Einfache Initialisierung und Aufräumen kann ignoriert werden f und h nicht von n abhängig, das heißt konstant Beispiel Lineare Suche Initialisierung i = 0 ignorieren Rückgabe ignorieren // Algorithmus A, Konstanten f g(n) h O(A) = O(f) + O(g) + O(h) = O(g) # Lineare Suche i = 0 while i < n and a[i]!= s: i = i+1 return i Medieninformatik Algorithmen und Datenstrukturen 21

22 Einfluss auf die Analyse Sequenz, Verzweigung Verzweigung und Sequenz Addition der Teile entspricht Maximum Sequenz Bei hintereinander ausgeführten Algorithmenteilen wird der einfachere vernachlässigt Verzweigung Abschätzung nach oben, Maximum der beiden Verzweigungsmöglichkeiten // Algorithmus A, Sequenz f g O(A) = O(f) + O(g) = O(max(f,g)) // Algorithmus B, Verzweigung if t: f else: g h O(B) = O(t) + O(max(f,g)) + O(h) = O(max(t,f,g,h)) Medieninformatik Algorithmen und Datenstrukturen 22

23 Sequenz, Verzweigung in Linearer Suche Einmaliger Durchlauf der while-schleife Sequenz bei Durchlauf Schleife Bei hintereinander ausgeführten Algorithmenteilen wird der einfachere vernachlässigt Erster Vergleich, dann Feldzugriff, dann zweiter Vergleich, dann Addition Alles konstant (O(1)), also gesamt konstant Verzweigung bei Abbruch Schleife Maximum der beiden Verzweigungsmöglichkeiten Entweder erster Test klappt nicht, oder zweiter Test klappt nicht Alles konstant, also gesamt konstant Einmaliger Durchlauf while-schleife ist O(1) # Lineare Suche i = 0 while i < n and a[i]!= s: i = i+1 return i Medieninformatik Algorithmen und Datenstrukturen 23

24 Einfluss auf die Analyse Schleife Schleife ist Multiplikation Häufigkeit in Abhängigkeit von n in der Schleifenkörper durchlaufen wird Multiplizieren mit dieser Häufigkeit Annahme: O(t) O(f) // Algorithmus A, Schleife while t: f O(A) = O(f) Anzahl Durchläufe in Abhängigkeit von n For-Schleife n-maliges Durchlaufen Mit n multiplizieren Beispiel n-maliges Durchlaufen (for Schleife) Linearer Algorithmus f n O(n) = O(n) O(n) = O(n²) // Algorithmus A, for-schleife for i in 1..n: f O(A) = O(f) n Medieninformatik Algorithmen und Datenstrukturen 24

25 Schleife in Linearer Suche Anzahl der Durchläufe Im besten Fall 1 mal (O(1)) Im schlechtesten Fall n mal (O(n)) Im mittleren Fall n/2 mal (O(n)) Anzahl Durchläufe O(n) Zusammengefasst Schleifenkörper O(1) Anzahl Durchläufe O(n) Initialisierung und Ende O(1) Gesamt: O(n) # Lineare Suche i = 0 while i < n and a[i]!= s: i = i+1 return i Medieninformatik Algorithmen und Datenstrukturen 25

26 O statt T Laufzeit T(n) T ist Funktion, die die Anzahl der Elementarschritte eines Algorithmus in Abhängigkeit der Eingabegröße n berechnet Genau für konkrete Laufzeit Schwierig zu berechnen (viel Fallunterscheidung) Nicht direkt aussagekräftig für Skalierungsaussagen Komplexität O(T(n)) Zuordnung einer Laufzeitfunktion T zu einer Klasse von Funktionen Ungenau für konkrete Laufzeit Viel leichter zu berechnen Sofort aussagekräftig für relevante Skalierungsaussagen Aussagen über Effizienz von Algorithmen Angabe von O(T(n)), asymptotische obere Grenze Meist Angabe von f mit T(n) = (f), gleiches Wachstum Medieninformatik Algorithmen und Datenstrukturen 26

27 Bezeichnungen O(1): konstant O(log i (n)): logarithmisch (Basis i egal) O(n): linear O(n log i (n)): keine Bezeichnung, trotzdem sehr wichtig! O(n²): quadratisch O(n³): kubisch O(nk ): polynomiell (bzw. polynomiell begrenzt), beliebiges k O(2n ): exponentiell Medieninformatik Algorithmen und Datenstrukturen 27

28 Typische Laufzeiten polynomiell exponentiell Logarithmisch, linear und n log(n) sind gut handhabbar Höhergradig polynomiell meist machbar Exponentiell ist massiv unangenehm Grenze des praktisch Lösbaren Medieninformatik Algorithmen und Datenstrukturen 28

29 Typische Beispiele in den Klassen O(1): Feldzugriff, Hashing O(log i (n)): Binäre Suche O(n): Lineare Suche O(n log i (n)): Sortieren schnell O(n²): Sortieren langsam, kürzeste Wege O(nk ): Simplex (Praxis) O(2n ): Simplex (Theorie), Aussagenlogik, Ganzzahlige Optimierung Medieninformatik Algorithmen und Datenstrukturen 29

30 Kritik O-Notation und vorgestellte Herangehensweise Grobe Abschätzung Gute Informationen für schlechtesten Fall und große Probleme (Skalierung) Praxis Konstanter Faktor nicht berücksichtigt. Wichtig für Benutzerinteraktion ob 0,2 oder 2 Sekunden Wartezeit Wenn Problemgröße beschränkt ist, kann ein laut O-Notation schlechteres Verfahren besser sein Spezielle Hardware wird nicht berücksichtigt (nur implizit Beispiel: Termauswertung als Elementaroperation) Mittelwert kann wichtiger sein (Beispiel Simplex) Mitdenken nicht vergessen! (Gilt öfter ;-) Medieninformatik Algorithmen und Datenstrukturen 30

31 Komplexität Problem/Algorithmus Nicht verwechseln! Verschiedene Lösungsalgorithmen für ein Problem möglich Komplexität eines Problems Zugehörigkeit zur Komplexitätsklasse der Laufzeit des besten Algorithmus Beispiel: Suche in sortiertem Feld, Komplexität O(log(n)) Komplexität eines Algorithmus Zugehörigkeit Komplexitätsklasse der Laufzeit dieses Algorithmus Beispiel: Suche in sortierten Feld mit linearer Suche, Komplexität O(n) Komplexität eines Problems schwierig zu bestimmen Komplexität einer Problemklasse schwierig zu bestimmen Bekanntestes Beispiel: P NP Beweis steht noch aus!! P Klasse Polynomieller Probleme NP Klasse Nichtdeterministisch Polynomieller Probleme (nur exponentielle Algorithmen zur Lösung bisher bekannt) Medieninformatik Algorithmen und Datenstrukturen 31

32 Suchen Lineare Suche Suchen Problemgröße: n, Anzahl der Feldelemente Komplexität: O(n) Beste: O(1) Mittlere: O(n) Schlechteste: O(n) Keine Voraussetzungen an Liste Suchen in sortierter Liste Wenn Liste sortiert, dann geht es besser... a s # Lineare Suche pos = 0 while pos < n and a[pos]!= s: pos = pos+1 return pos Medieninformatik Algorithmen und Datenstrukturen 32

33 Suchen in Sortierter Liste Binäre Suche Suchen in sortierter Liste Problemgröße: n, Anzahl der Feldelemente Komplexität: O(log n) Beste: O(1) Mittlere: O(log n) Schlechteste: O(log n) Liste muss sortiert sein 0 i n 1 :a[i] a[i 1] Suche in sortierten und unsortierten Feldern sind zwei unterschiedliche Probleme a s # Binäre Suche li = 0 re = n-1 while re >= li: x = (li+re)/2 if s == a[x]: return x if s < a[x]: re = x-1 else: li = x+1 return n Medieninformatik Algorithmen und Datenstrukturen 33

34 Binäre Suche Beispiel Halbiere den Suchbereich Bis gefunden oder Suchbereich leer a s # Binäre Suche li = 0 re = n-1 while re >= l: x = (li+re)/2 if s == a[x]: return x if s < a[x]: re = x-1 else: li = x+1 return n li=0 li=5 li=5 re=6 li=re= 6 re=6 li=7 nicht gefunden re=9 re=9 Medieninformatik Algorithmen und Datenstrukturen 34

35 Binäre Suche Rekursiv Rekursiver Algorithmus bs_rek Aufruf mit bs_rek(0, n-1) Reduktion auf Teilfeld, halbiere Problemgröße Suche in Teilfeld, Löse halb so großes Problem Terminierung wenn Teilfeld leer oder gefunden, Problem trivial Typische Rekursion Löse Problem durch Problemreduktion Lösen des kleineren Problems durch rekursiven Aufruf Abfangen trivialer Fall Keine explizite Schleife mehr # Binäre Suche rekursiv # a, n vorhanden def bs_rek(li, re): if re < li: return n x = (li+re)/2 if s == a[x]: return x if s < a[x]: return bs_rek(li, x-1) else return bs_rek(x+1, re) Medieninformatik Algorithmen und Datenstrukturen 35

36 Analyse der Binären Suche Betrachtung schlechtester Fall Element nicht gefunden Schleife wird beendet wenn li und re sich treffen Wenn li und re sich treffen noch genau ein Durchlauf (konstant, ignoriert) Bei jedem Durchlauf wird Abstand von l und r halbiert Initial ist der Abstand n Beim zweiten Durchlauf n/2 Beim dritten Durchlauf n/4... Schleife wird log(n) mal durchlaufen, O(log(n)) [formal folgt] Anweisungen innerhalb Schleife konstant Anweisungen sind unabhängig von n, also konstant Einfluss Anweisungen wird ignoriert, O(1) Komplexität Binäre Suche: O(log(n)) Medieninformatik Algorithmen und Datenstrukturen 36

37 Analyse Binäre Suche Rekurrenz Laufzeit der binären Suche Was ist T(n)? Rekursiver Aufruf Halb so großes Problem T(n/2) Anweisungen in Funktion Unabhängig von n Konstant c, O(1) Es gilt also T(n) = T(n/2) + c # Binäre Suche rekursiv # a, n vorhanden def bs_rek(li, re): if re < li: return n x = (li+re)/2 if s == a[x]: return x if s < a[x]: return bs_rek(li, x-1) else return bs_rek(x+1, re) eine Rekurrenz-Beziehung Medieninformatik Algorithmen und Datenstrukturen 37

38 Auflösen der Rekurrenz Lösen der Rekurrenz: T(n) = T(n/2) + c Annahme: T(1) konstant d, n = 2 k T(2 k ) = T(2 k-1 ) + c = T(2 k-2 ) + c + c = T(2 k-3 ) + c + c + c... = T(2 k-k ) + k c = d+ k c T(2 k ) ~ k Es gilt log 2 (2 k ) = k, Anzahl Ziffern Binärdarstellung Also ist Laufzeit für diesen Fall logarithmisch Beliebige n, obere Abschätzung mit nächster Zweierpotenz Verlängern des Feldes auf das nächste 2 k, 2 k-1 < n 2 k T(n) O(log 2 (n)) da T(2 k-1 ) = T(2 k-2 ) + c da T(2 k-2 ) = T(2 k-3 ) + c Medieninformatik Algorithmen und Datenstrukturen 38

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

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

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

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

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

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

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling Approximationsalgorithmen: Klassiker I Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling VO Approximationsalgorithmen WiSe 2011/12 Markus Chimani

Mehr

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert Inhalt Einführung 1. Arrays 1. Array unsortiert 2. Array sortiert 3. Heap 2. Listen 1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert 3. Bäume

Mehr

1. Grundlegende Konzepte der Informatik

1. Grundlegende Konzepte der Informatik 1. Grundlegende Konzepte der Informatik Inhalt Algorithmen Darstellung von Algorithmen mit Programmablaufplänen Beispiele für Algorithmen Aussagenlogik Zahlensysteme Kodierung Peter Sobe 1 Algorithmen

Mehr

4 Greedy-Algorithmen (gierige Algorithmen)

4 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

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

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

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

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

IT-Sicherheit Kapitel 3 Public Key Kryptographie

IT-Sicherheit Kapitel 3 Public Key Kryptographie IT-Sicherheit Kapitel 3 Public Key Kryptographie Dr. Christian Rathgeb Sommersemester 2013 1 Einführung In der symmetrischen Kryptographie verwenden Sender und Empfänger den selben Schlüssel die Teilnehmer

Mehr

Teile und Herrsche Teil 2

Teile und Herrsche Teil 2 Teile und Herrsche Teil 2 binär Suchen und schnell Multiplizieren Markus Fleck Manuel Mauky Hochschule Zittau/Görlitz 19. April 2009 Suchen in langen Listen (0, 1, 2, 7, 8, 9, 9, 13, 13, 14, 14, 14, 16,

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

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Technische Universität München Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für

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

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Teil II. Nichtlineare Optimierung

Teil II. Nichtlineare Optimierung Teil II Nichtlineare Optimierung 60 Kapitel 1 Einleitung In diesem Abschnitt wird die Optimierung von Funktionen min {f(x)} x Ω betrachtet, wobei Ω R n eine abgeschlossene Menge und f : Ω R eine gegebene

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

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

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

Kap. 4.2: Binäre Suchbäume

Kap. 4.2: Binäre Suchbäume Kap. 4.2: Binäre Suchbäume Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 11. VO DAP2 SS 2009 26. Mai 2009 1 Zusätzliche Lernraumbetreuung Morteza Monemizadeh:

Mehr

Sortierte Folgen 250

Sortierte Folgen 250 Sortierte Folgen 250 Sortierte Folgen: he 1,...,e n i mit e 1 apple applee n kennzeichnende Funktion: M.locate(k):= addressof min{e 2 M : e k} Navigations Datenstruktur 2 3 5 7 11 13 17 19 00 Annahme:

Mehr

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen 9.4 Binäre Suchbäume Erweiterung: Einfügen an der Wurzel Standardimplementierung: Der neue Schlüssel wird am Ende des Suchpfades angefügt (natürlich, weil zuerst festgestellt werden muss, ob der Schlüssel

Mehr

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Algorithmen und Datenstrukturen 265 10 Binäre Suchbäume Suchbäume Datenstruktur, die viele Operationen dynamischer Mengen unterstützt Kann als Wörterbuch, aber auch zu mehr eingesetzt werden (Prioritätsschlange)

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

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

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Lenstras Algorithmus für Faktorisierung

Lenstras Algorithmus für Faktorisierung Lenstras Algorithmus für Faktorisierung Bertil Nestorius 9 März 2010 1 Motivation Die schnelle Faktorisierung von Zahlen ist heutzutage ein sehr wichtigen Thema, zb gibt es in der Kryptographie viele weit

Mehr

Kontrollstrukturen - Universität Köln

Kontrollstrukturen - Universität Köln Kontrollstrukturen - Universität Köln Mario Manno Kontrollstrukturen - Universität Köln p. 1 Was sind Sprachen Auszeichnungssprachen HTML, XML Programmiersprachen ASM, Basic, C, C++, Haskell, Java, Pascal,

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

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

Binäre lineare Optimierung mit K*BMDs p.1/42

Binäre lineare Optimierung mit K*BMDs p.1/42 Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Grundlagen der Programmierung 2. Bäume

Grundlagen der Programmierung 2. Bäume Grundlagen der Programmierung 2 Bäume Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 24. Mai 2006 Graphen Graph: Menge von Knoten undzugehörige (gerichtete oder ungerichtete)

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

2. Die Darstellung von Algorithmen

2. Die Darstellung von Algorithmen 2. Die Darstellung von Algorithmen Aus den Einführungsbeispielen und Übungsaufgaben ist erkennbar, dass zur Darstellung von Algorithmen Grundelemente notwendig sind. Neben der Notation einzelner elementarer

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12. Kapitel 13. Bäume. Bäume 1 Kapitel 13 Ziele 2 Den Begriff des Baums in der Informatik kennenlernen als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf n verstehen und schreiben können Verschiedene Möglichkeiten

Mehr

MATHEMATISCHE ANALYSE VON ALGORITHMEN

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

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean

Noch für heute: primitive Datentypen in JAVA. Primitive Datentypen. Pseudocode. Dezimal-, Binär- und Hexadezimalsystem. der logische Typ boolean 01.11.05 1 Noch für heute: 01.11.05 3 primitie Datentypen in JAVA Primitie Datentypen Pseudocode Name Speichergröße Wertgrenzen boolean 1 Byte false true char 2 Byte 0 65535 byte 1 Byte 128 127 short 2

Mehr

OPERATIONS-RESEARCH (OR)

OPERATIONS-RESEARCH (OR) OPERATIONS-RESEARCH (OR) Man versteht darunter die Anwendung mathematischer Methoden und Modelle zur Vorbereitung optimaler Entscheidungen bei einem Unternehmen. Andere deutsche und englische Bezeichnungen:

Mehr

Codes und Informationsgehalt

Codes und Informationsgehalt Aufgaben 2 Codes und Informationsgehalt Auf wie viele Dezimalziffern genau können vorzeichenlose ganze Zahlen in einem binären Code der Länge 32 bit dargestellt werden? 2 Codes und Informationsgehalt Auf

Mehr

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg 19.04.2011 Vorlesung Algorithmische Geometrie LEHRSTUHL FÜR ALGORITHMIK I INSTITUT FÜR THEORETISCHE INFORMATIK FAKULTÄT FÜR INFORMATIK Martin Nöllenburg 19.04.2011 Überlagern von Kartenebenen Beispiel: Gegeben zwei

Mehr

Vorschriften und Probleme... Das Problem der Wüstenposten. - Reisende dürfen die Wüste nur "kontrolliert" (bei einem "wachen" Posten) betreten

Vorschriften und Probleme... Das Problem der Wüstenposten. - Reisende dürfen die Wüste nur kontrolliert (bei einem wachen Posten) betreten Das Problem der Wüstenposten Vorschriften und Probleme... - Reisende dürfen die Wüste nur "kontrolliert" (bei einem "wachen" Posten) betreten - Nur ein wacher Posten lässt Personen in die Wüste einreisen

Mehr

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

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

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 8, Donnerstag 11.

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015. Vorlesung 8, Donnerstag 11. Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 8, Donnerstag 11. Dezember 2014 (Cache-Effizienz, Teile und Herrsche) Junior-Prof. Dr.

Mehr

Elemente der Analysis II

Elemente der Analysis II Elemente der Analysis II Kapitel 3: Lineare Abbildungen und Gleichungssysteme Informationen zur Vorlesung: http://www.mathematik.uni-trier.de/ wengenroth/ J. Wengenroth () 15. Mai 2009 1 / 35 3.1 Beispiel

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Vorlesung 3 MINIMALE SPANNBÄUME

Vorlesung 3 MINIMALE SPANNBÄUME Vorlesung 3 MINIMALE SPANNBÄUME 72 Aufgabe! Szenario: Sie arbeiten für eine Firma, die ein Neubaugebiet ans Netz (Wasser, Strom oder Kabel oder...) anschließt! Ziel: Alle Haushalte ans Netz bringen, dabei

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007 Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

Sortieren. Eine Testmenge erstellen

Sortieren. Eine Testmenge erstellen Sortieren Eine der wohl häufigsten Aufgaben für Computer ist das Sortieren, mit dem wir uns in diesem Abschnitt eingeher beschäftigen wollen. Unser Ziel ist die Entwicklung eines möglichst effizienten

Mehr

FB Informatik. Fehler. Testplan

FB Informatik. Fehler. Testplan Fehler #include int i,n,summe; int summe (int); cout 0) cin>n; i=summme(n); cout

Mehr

6. Algorithmen der Computer-Geometrie

6. Algorithmen der Computer-Geometrie 6. Algorithmen der Computer-Geometrie 1. Einführung 2. Schnitt von zwei Strecken 3. Punkt-in-Polygon-Test 4. Schnitt orthogonaler Strecken 5. Punkteinschlussproblem Geo-Informationssysteme 146 6.1 Computer-Geometrie

Mehr

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen: 6 Partiell geordnete binäre Bäume: Heap (Haufen) Motivation für manchen Anwendungen nur partielle Ordnung der Elemente statt vollständiger nötig, z.b. - Prioritätsschlange: nur das minimale (oder maximale)

Mehr

Algorithmen und Datenstrukturen Balancierte Suchbäume

Algorithmen und Datenstrukturen Balancierte Suchbäume Algorithmen und Datenstrukturen Balancierte Suchbäume Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Überblick Einführung Einfügen und Löschen Einfügen

Mehr

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie Wintersemester 2009/10, Prof. Dr. Udo Hahn, Erik Fäßler Übungsblatt 3 vom 19.11.2009 Abgabe bis 26.11.2009, 14:30 Uhr; per

Mehr

Codierung, Codes (variabler Länge)

Codierung, Codes (variabler Länge) Codierung, Codes (variabler Länge) A = {a, b, c,...} eine endliche Menge von Nachrichten (Quellalphabet) B = {0, 1} das Kanalalphabet Eine (binäre) Codierung ist eine injektive Abbildung Φ : A B +, falls

Mehr

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de. Stammbaum. Stammbaum. Stammbaum lausthal Beispiele Stammbaum Informatik II. Zachmann lausthal University, ermany zach@in.tu-clausthal.de. Zachmann Informatik - SS 06 Stammbaum Stammbaum / Parse tree, Rekursionsbaum Parse tree, Rekursionsbaum

Mehr

Das Lastverteilungsproblem

Das Lastverteilungsproblem Das Lastverteilungsproblem Approximationsalgorithmen Referent Franz Brauße Veranstaltung Proseminar Theoretische Informatik Universität Trier, FB IV Dozent Prof. Dr. Henning Fernau 23.02.2012 Übersicht

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems

13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13 Java 4 - Entwurfsmuster am Beispiel des Rucksackproblems 13.1 Modellierung des Rucksackproblems 13.2 Lösung mit Greedy-Algorithmus 13.3 Lösung mit Backtracking 13.4 Lösung mit Dynamischer Programmierung

Mehr

Kapitel 7: Formaler Datenbankentwurf

Kapitel 7: Formaler Datenbankentwurf 7. Formaler Datenbankentwurf Seite 1 Kapitel 7: Formaler Datenbankentwurf Die Schwierigkeiten der konzeptuellen Modellierung sind zu einem großen Teil dadurch begründet, dass sich die relevanten Strukturen

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008

Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008 Aufgaben des MSG-Zirkels 10b Schuljahr 2007/2008 Alexander Bobenko und Ivan Izmestiev Technische Universität Berlin 1 Hausaufgaben vom 12.09.2007 Zahlentheorie 1 Aufgabe 1.1 Berechne die (quadratischen)

Mehr

Kapitel 15: Differentialgleichungen

Kapitel 15: Differentialgleichungen FernUNI Hagen WS 00/03 Kapitel 15: Differentialgleichungen Differentialgleichungen = Gleichungen die Beziehungen zwischen einer Funktion und mindestens einer ihrer Ableitungen herstellen. Kommen bei vielen

Mehr

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen 9.2.5 HUT 9.2.5 3 atenstrukturen im omputer atenstrukturen ie beiden fundamentalen atenstrukturen in der Praxis sind rray und Liste Rekursion Feedback valuation rray Zugriff: schnell Umordnung: langsam

Mehr

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell): Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Steffen Börm Stand 17. Juli 014, 9 Uhr 30 Alle Rechte beim Autor. Inhaltsverzeichnis 1 Einleitung 5 Algorithmen und ihre Eigenschaften 7.1 Beispiel: Suchen in Arrays...........................

Mehr

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff

Programmieren in C. Felder, Schleifen und Fließkommaarithmetik. Prof. Dr. Nikolaus Wulff Programmieren in C Felder, Schleifen und Fließkommaarithmetik Prof. Dr. Nikolaus Wulff Addition von Zahlen 1 2 3 4 5 #include int main() { int x,y,z,sum; x = 1; y = 2; z = 4; sum = x + y + z;

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Rekursionen (Teschl/Teschl 8.1-8.2)

Rekursionen (Teschl/Teschl 8.1-8.2) Rekursionen (Teschl/Teschl 8.1-8.2) Eine Rekursion kter Ordnung für k N ist eine Folge x 1, x 2, x 3,... deniert durch eine Rekursionsvorschrift x n = f n (x n 1,..., x n k ) für n > k, d. h. jedes Folgenglied

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2008/2009 PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2008/2009 FB Informatik

Mehr

5.3 Sampling-Algorithmen

5.3 Sampling-Algorithmen 5.3 Sampling-Algorithmen Vorgehensweise in der Statistik: Gesamtheit von Werten durch kleine, möglichst repräsentative Stichprobe darstellen. (Vgl. z. B. Hochrechnungen für Wahlergebnisse.) Genauer: Gegeben

Mehr

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Post-quantum cryptography

Post-quantum cryptography Post-quantum cryptography Post-quantum cryptography 1. Komplexität & Quantencomputer 2. Kryptografie in Gittern 3. FHE Eine Revolution im Datenschutz? WIESO? KOMPLEXITÄT Public-Key-Kryptografie Grafiken:

Mehr

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Kürzeste Wege in Graphen Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik Gliederung Einleitung Definitionen Algorithmus von Dijkstra Bellmann-Ford Algorithmus Floyd-Warshall Algorithmus

Mehr

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau

Codierung. Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Codierung Auszug aus dem Skript von Maciej Liśkiewicz und Henning Fernau Ein bisschen Informationstheorie Betrachten wir das folgende Problem: Wie lautet eine sinnvolle Definition für das quantitative

Mehr

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2008/09. Universität Freiburg, Germany

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2008/09. Universität Freiburg, Germany Informatik I Grundlagen der systematischen Programmierung Peter Thiemann Universität Freiburg, Germany WS 2008/09 Organisatorisches Vorlesung Di und Do, 11-13 Uhr, HS 101-00-036 Dozent Prof. Dr. Peter

Mehr

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt - 17 - Die Frage ist hier also: Für welche x R gilt x = x + 1? Das ist eine quadratische Gleichung für x. Es gilt x = x + 1 x x 3 = 0, und man kann quadratische Ergänzung machen:... ( ) ( ) x x + = 3 +

Mehr

Theoretische Informatik SS 04 Übung 1

Theoretische Informatik SS 04 Übung 1 Theoretische Informatik SS 04 Übung 1 Aufgabe 1 Es gibt verschiedene Möglichkeiten, eine natürliche Zahl n zu codieren. In der unären Codierung hat man nur ein Alphabet mit einem Zeichen - sagen wir die

Mehr

Seminar Komplexe Objekte in Datenbanken

Seminar Komplexe Objekte in Datenbanken Seminar Komplexe Objekte in Datenbanken OPTICS: Ordering Points To Identify the Clustering Structure Lehrstuhl für Informatik IX - Univ.-Prof. Dr. Thomas Seidl, RWTH-Aachen http://www-i9.informatik.rwth-aachen.de

Mehr

Charakteristikenmethode im Beispiel

Charakteristikenmethode im Beispiel Charakteristikenmethode im Wir betrachten die PDE in drei Variablen xu x + yu y + (x + y )u z = 0. Das charakteristische System lautet dann ẋ = x ẏ = y ż = x + y und besitzt die allgemeine Lösung x(t)

Mehr

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4

Arbeiten mit Arrays. 4.1 Eigenschaften. 4.1.1 Schlüssel und Element. Kapitel 4 Arbeiten mit s Eine effiziente Programmierung mit PHP ohne seine s ist kaum vorstellbar. Diese Datenstruktur muss man verstanden haben, sonst brauchen wir mit weitergehenden Programmiertechniken wie der

Mehr