4XLFNVRUW. Geschichte:

Größe: px
Ab Seite anzeigen:

Download "4XLFNVRUW. Geschichte:"

Transkript

1 4XLFNVRUW Geschichte: - Sortieren ist wegen seines Gebrauches in vielen Anwendungen das meist studierte Problem in der Informatik - grundlegendes Sortierproblem: Prozess der Neuordnung einer gegebenen Ansammlung von Größen in eine auf- oder absteigende Folge Æ Daten werden also auf eine vorher festgelegte Ordnung sortiert; kann z.b. nach Zahlenwerten (z.b. PLZ) oder Alphabet geschehen Æ Ziel des Sortierens: Daten nach geschicktem Sortieren schneller und einfacher wiederfinden - mathematische Darstellung des Sortierproblems: Geg.: Folge s 1,s,,s n ; s i Schlüssel Ges.: Permutation, so dass gilt s V ) «V - erste Betätigungen im Sortieren: Amerika, 1. Jahrhundert; schon damals war es üblich, alle 10 Jahre eine Volkszählung durchzuführen Æ mit gewonnenen Daten wuchs Interesse an verschiedenen Statistiken Æ für diese Erhebungen musste Datenmaterial nach verschiedenen Gesichtspunkten sortiert werden, was in mühevoller Handarbeit geschah - Hermann Hollerith erfand 180 erste Sortiermaschine, die batteriebetrieben war Æ dank ihr wurde es möglich, Daten der Volkszählung, die auf Lochkarten gestanzt wurden, zu sortieren (Nadeln tasteten Löcher ab, traf Nadel auf ein Loch HOHNWULVFKHU.RWDNWKHUJHVWHOOW IIHWH.ODSSH VRUWLHUWH Dateikarte fiel auf den jeweiligen Stapel), erleichterte Arbeit, verkürzte Zeit - kamen immer mehr Datenmassen einher ZXUGHGD6RUWLHUPDVFKLH mit automatischer Papierzuführung verwendet - Durchbruch gelang 130 HUVWHUSURJUDPPLHUEDUHU&RPSXWHU - schon hatte man Interesse, Sortierproblem damit zu lösen; man wusste, dass Computer aufgrund ihrer Arbeitsweise geradezu dafür geschaffen sind, Daten zu sortieren - mittlerweile gibt es viele Sortieralgorithmen; betrachten zuerst uicksort, vergleichen später noch mit anderen Sortieralgorithmen - uicksort-algorithmus von Charles Antony Richard Hoare, kurz C.A.R. Hoare oder Tony Hoare, britischer Informatiker, erfand Grundform des Algorithmus 16; wie kam er darauf?

2 - Algorithmus wurde entdeckt, als Hoare als Austauschstudent nach Moskau kam - erhielt dort Möglichkeit, bei einem neuen Projekt für automatische Übersetzung vom Russischen ins Englische mitzuarbeiten, damals wurden Wörterbücher auf Magnetband gespeichert : UWHUHLHV6DW]HVPXVVWHDOSKDEHWLVFKVRUWLHUW werden, um Übersetzung vom Band abrufen zu können; Hoare ging vom Fakt aus, dass es effizient ist, bei einem Sortieralgorithmus die Elemente über große Distanzen zu tauschen uicksort war geboren - da Hoare Algorithmus 16 entwickelte, musste er das Verfahren noch Entrekursivieren, da sich zu dieser Zeit keine Rekursion in Programmiersprachen ausdrücken ließ - Hoare verfasste 16 seinen Artikel über uicksort; dort beschrieb er nicht nur seinen Algorithmus, sondern analysierte ihn auch - seine Vorhersagen über die Effizienz seines Verfahrens bestätigten sich später in der Praxis - obwohl es Algorithmus schon seit 16 gibt, ist uicksort noch der meist verwendete Sortieralgorithmus; ist überraschend, weil in den letzten Jahren viele Forscher daran arbeiten, einen schnelleren Sortieralgorithmus zu finden

3 Zu uicksort: - uicksort meist erste Wahl bei Sortierprogrammen, außer man hat detailliertere Informationen über den Input, in diesem Fall: andere Sortieralgorithmen können uicksort übertreffen - andere Besonderheit von uicksort: Reichtum der Komplexitätsanalyse - obwohl worst-case-komplexität von uicksort schlecht ist, kann man beweisen, dass seine durchschnittliche Komplexität ziemlich gut ist; tatsächlich ist uicksorts durchschnittliche Komplexität die bestmögliche unter bestimmten Komplexitätsmodellen für das Sortieren Konkreter: uicksort funktioniert schlecht für fast sortierte Inputs, aber sehr gut für zufällige Inputs - uicksort folgt der Divide-&-Conquer-Strategie (Teile und Herrsche) - Divide-&-Conquer-Strategie hat drei Phasen: 1. Man teilt Problem in mehrere Teilprobleme von fast gleicher Größe (Aufteilungsphase). Man löst die sich ergebenen Teilprobleme unabhängig voneinander 3. Man legt die Lösungen der Teilprobleme in eine Lösung für das ursprüngliche Problem zusammen (Verschmelzungsphase) - Beschreibung von uicksort, angewandt auf ein Feld A[0:n-1] 1. Man wählt ein Pivotelement aus A[0:n-1] aus. Man ordnet die Elemente von A, teilt A in ein linkes und rechtes Teilfeld, so dass kein Element im linken Teilfeld größer und kein Element im rechten Teilfeld kleiner als das Pivotelement ist 3. Man sortiert linkes und rechtes Teilfeld rekursiv Æ Divide-&-Conquer-Strategie: Schritt 1 und entsprechen der Aufteilungsphase, Schritt 3 läuft aus das unabhängige Lösen der herbeigeführten Teilprobleme hinaus (da sich die Teilfelder nicht überlappen, können sie unabhängig voneinander sortiert werden), welches das gesamte Feld sortiert, die Verschmelzungsphase ist also nicht mehr notwendig - zwei entscheidende Ausführungsprobleme: Methode für das Auswählen des Pivotelements und Methode für das Aufteilen des Inputs, wenn Pivotelement ausgewählt ist

4 Pivotelement auswählen: - entscheidende Voraussetzung für einen effizienten Divide-&-Conquer- Algorithmus: Aufteilen des Inputs in zwei fast gleichgroße Felder Æ Pivotelement so wählen, dass es fast gleichgroße Aufteilungen des Feldes A herbeiführt - Annahme: A enthält verschiedene Elemente; beste Wahl des Pivotelements: Median von A (so dass zwei fast gleichgroße Teilfelder entstehen); obwohl einige gute Algorithmen den Median finden können, ohne das Feld zu sortieren, laden sie alle zu viele Unkosten auf sich, um für eine praktische Ausführung von uicksort nützlich zu sein Möglichkeit fällt weg - 3 Möglichkeiten für die Wahl des Pivotelements: erste und einfachste ist das Auswählen eines Elements von einer fixierten Position von A; im allg. funktioniert diese Wahl nicht so gut, außer wenn der Input zufällig ist; wenn Input fast sortiert, würde er äußerst ungleich bei jeder Iteration aufgeteilt werden, was in eine sehr schlechte Durchführung des gesamten Algorithmus enden würde versuchen, den Median von A zu approximieren, indem man den Median von einer kleinen Teilmenge von A berechnet hier verbreitet benutzte Methode: Mittelwert vom ersten, mittleren und letzten Element von A wird Pivotelement; solch eine Methode funktioniert gut, obwohl es für bestimmte Inputs immer noch in sehr ungleiche Aufteilungen während jeder Iteration enden könnte mittels Zufallszahlengenerator kann man zufällig ein Element von A als Pivotelement auswählen; man kann zeigen, dass ohne Rücksicht auf die anfängliche Input-Verteilung jeder Schritt mit hoher Wahrscheinlichkeit in fast gleichgroße Aufteilungen enden wird Æ wählt man Pivotelement zufällig aus, spricht man vom randomisierten uicksort äquivalent dazu: Input wird in eine zufällige Reihenfolge permutiert

5 Input aufteilen - Aufteilungsphase startet mit dem Initialisieren der Zeiger L und R und dem Auswählen des z.b. rechtesten Elements als Pivotelement - haben Teilfeld A[Begin,End], Begin < End; zwei Zeiger L und R; L bewegt sich von links nach rechts, beginnend auf Position Begin; R bewegt sich von rechts nach links, fängst bei Position End an - Zeiger L wachsend, bis ein Element A[L] größer als das Pivotelement ist; ähnlich: R fallend, bis es auf ein Element A[R] stößt, dass kleiner als das Pivotelement ist; dann tauscht man A[L] und A[R] - Ablauf setzt sich fort, bis sich beide Zeiger kreuzen, was auf den Abschluss der Aufteilungsphase hindeutet - letzten Zuweisungen stellen sicher, dass das Pivotelement an seine korrekte Position in der letzten sortierten Folge von A platziert wird - uicksort ruft Anfang des Aufteilungsverfahrens mit den Werten Begin = 0 und End = n-1 auf, gefolgt von einem rekursiven Aufruf, um die Teilfelder A[Begin,j-1] und A[j+1,End] (j Stelle des Pivotelements) zu sortieren - lassen Teilfelder ihrerseits wieder mit neuem Pivotelement zerlegen, bis die rekursiv gewonnenen Partitionen nur noch jeweils ein Element enthalten - Aufteilungsverfahren benötigt lineare Zeit O(n)

6 Algorithmus: (in C++) void uicksort (Element *Array, int Begin, int End) { int L = Begin, R = End; Element Temp; keytype Pivot; if (End - Begin > 0) { Pivot = Array[End].key; while (L < R) { while (L < R && Array[L].key <= Pivot) L++; while (L < R && Array[R].key >= Pivot) R--; if (L < R ) { Temp = Array[L]; Array[L] = Array[R]; Array[R] = Temp; Temp = Array[End]; Array[End] = Array[L]; Array[L] = Temp; uicksort (Array, Begin, L-1); uicksort (Array, L+1, End);

7 - Beispiel: rot Pivotelement, grün sortiert LÆ L R ÅR LÆ LÆ L R ÅR LÆ LR LR ÅR ÅR ÅR LÆ LR LÆ LR ÅR Algorithmus hat den Vorteil, dass er über eine sehr kurze innere Schleife verfügt (was die Ausführungsgeschwindigkeit stark erhöht) - 6WDELOLWlW beim Sortieren einer Datenmenge bleibt die Reihenfolge gleicher Schlüssel erhalten - UGXJVYHUWUlJOLFKNHLW gibt Auskunft, ob Sortierverfahren bereits bestehende Teilordnungen beim Sortieren ausnutzt - uicksort ist kein stabiles Verfahren und nicht ordnungsverträglich - ist ein in-place-sortierverfahren; kommt ohne zusätzlichen Speicherplatz aus (abgesehen von dem Zwischenspeicher für die Tauschoperationen und von dem für die Rekursionsaufrufe zusätzlich benötigten Platz auf dem Stack) Æ 6WDFN in der Informatik eine häufig (aber meist unbewusst) eingesetzte, spezielle Datenstruktur; kann eine beliebige Menge von Objekten aufnehmen und gibt diese entgegengesetzt zur Reihenfolge der Aufnahme wieder zurück; LIFO (Last In First Out)

8 Komplexität: - Definitionen: J( )) = { I ( ) : F > 0, 1 : I ( ) F J( ) > Θ ( 0 0 ( J ( )) = { I ( ) : F1 > 0, F > 0, 0 1 : F1 J( ) I ( ) F J( ) > 0 - man kann verschiedene Maßstäbe verwenden, um Durchführung des Sortieralgorithmus zu analysieren Æ man kann die Anzahl der Vergleiche zählen, weil die Vergleiche, die vom Sortieralgorithmus durchgeführt werden, die Hauptoperation zu sein scheinen Æ anderer wichtiger Parameter: Anzahl der Vertauschungen - hier: konzentrieren uns auf die Anzahl der Vergleiche worst-case - bestimmen Anzahl der Vergleiche, die beim worst-case benötigt werden - sei () die Anzahl der Vergleiche, die beim uicksort-algorithmus benötigt werden - der schlechteste Fall tritt ein, wenn das Pivotelement das größte oder kleinste Element des Feldes ist; bedeutet folgendes für die Anzahl der Vergleiche: ( 1) ( ) = ( 1) + ( ) = Æ worst-case-komplexität: (²) best-case: - im günstigsten Fall ist das Pivotelement i jedesmal gerade der Median; das Feld wird in zwei gleich große Teilfelder aufgeteilt; die Anzahl der Vergleiche ist minimal - in diesem Fall haben die zwei Teilfelder A[0:i-1] und A[i+1:n-1] die Größe ( ) = Rekursionsgleichung hat die Lösung ( ) = log + Θ( ) Æ best-case-komplexität: ( log )

9 average-case: - () sei hier die mittlere Anzahl von Vergleichsoperationen auf Felder der Länge - nehmen an, dass alle! Permutationen von Elementen mit der gleichen Wahrscheinlichkeit auftreten; die Wahl des Pivotelements ist gleichwahrscheinlich, somit haben wir folgende Rekursionsformel für den average-case 1 ( ) = 1+ = 1 ( ( L 1) + ( L)) - wobei 1 die Anzahl der Vergleiche mit dem Pivotelement sind - L ist die Position des Pivotelements, jede dieser Positionen hat die Wahrscheinlichkeit 1 - die Teilfelder der Längen L 1 und L sind dann zu sortieren, hierbei haben wieder alle ( L 1)! und ( L)! Permutationen gleiche Wahrscheinlichkeit - Vereinfachung ergibt sich aus der Beobachtung, dass auf der rechten Seite der Rekursion zweimal die gleiche Summe (mit unterschiedlicher Summationsrichtung) steht, also: (0) = 0 ( ) = = 0 ( L)

10 - will zwei Richtungen vorstellen, wie man das berechnen kann: :HJ - beide Seiten mit n multipliziert ( ) = - auch bei ( 1) + 1 = 0 ( 1) ( 1) = ( 1) ( L) - Subtrahiert ( 1) von () ( 1) + = 0 ( L) ( ) ( 1) ( 1) = 1 1+ ( 1) ( ) = + ( + 1) ( 1) - dividiert durch ( +1) Æ ( ) 1 ( 1) = ( + 1) ( 1) ( ) = + ( 1) 1 ( ) 1 (1) = addiert man die obigen Gleichungen, erhält man folgende Gleichung 1 ( ) = ( + 1) + 4 mit + = ln( + 1) + γ = 1 L γ 0,577 Eulersche Konstante Æ ( ) 1,386 log Æ average-case-komplexität: ( log )

11 . Weg: - Frage ist nun, wie sich die Lösung () dieser Rekursion für verhält. Experimentell wird rasch klar, dass () stärker als linear wächst (1) = 0 () = 1 (3),66 (4) 4,83 (5) = 7,4 (10) 4,43 (100) 647,85 (1000) interessant ist, dass sich die Lösung der Rekursion explizit angeben lässt ( ) = ( + 1) + 4 mit + = = 1 1 ln( + 1) + γ L - damit kann man leicht auch den Funktionsverlauf für größere verfolgen 4 (10 ) ( 10 ) 0,018 6 ( 10 ) 0,478 7 ( 10 ) 0,3 8 ( 10 ) 0,33 ( 10 ) 0, ( 10 ) 0, insgesamt ergibt das: ( ) 1,386 log Æ average-case-komplexität: ( log ) 1

12 (a) best-case (b) average-case (c) worst-case

13 Wie kann man Komplexität verbessern? - in Praxis kann worst-case vorkommen (²) uicksort fällt wieder weit zurück - kann man verhindern, indem man drei Elemente aus Input herausgreift und die Mitte als Pivotelement wählt gewährleistet, dass Pivotelement nicht Minimum oder Maximum ist worst-case vermieden - weiterer Geschwindigkeitsvorteil, wenn man uicksort mit anderen Verfahren kombiniert, z.b. Insertsort Æ Praxis zeigt, dass uicksort bei Datenmengen < 10 schlechter abschneidet als mancher Konkurrent, Nachteil kann wettgemacht werden, indem man Segmente mit weniger als 10 Elementen nicht weiter partitioniert, sondern z.b. mit Insertsort sortiert

14 Vergleich mit anderen Sortieralgorithmen: %XEEOHVRUW Algorithmus: (in C++) void Bubblesort (Element *Array, int N) { int i,j; Element Temp; for (i = 1; i < N; i++) { for (j = 1; j < N i + 1; j++) { if (Array[j - 1].key > Array[j].key) { Temp = Array[j - 1]; Array[j - 1] = Array[j]; Array[j] = Temp;

15 Komplexität (average-case) von Bubblesort: - am Anfang n-1 Vergleiche, dann n-,, bis 1 ( 1) Æ ( ) = ( 1) + ( ) = ( 1) für große : Æ ( ) - Tausch findet nur statt, wenn erstes Element > zweites, Tausch T besteht aus 3 Zuweisungen = ; wenn Datenverteilung zufällig, dann können wir annehmen, dass ein Tausch ungefähr in der Hälfte aller Fälle notwendig ist 3 Æ 7 ( ) Æ = ( ) 4 4 Anzahl Operationen in Bubblesort: ca. Bubblesort hat Komplexität ( ) = 4 - Fazit: leicht zu implementieren, für große sehr langsam

16 Insertsort Algorithmus: (in C++) void Insertsort (Element *Array, int N) { int i,j; Element Temp; for (i=0; i < N - 1; i++) { j = i + 1; Temp = Array[j]; while (j > 0 && Array[j 1].key > Temp.key) { Array[j] = Array[j-1]; j--; Array[j] = Temp; Komplexität (average-case) von Insertsort: - im ersten Schleifendurchlauf ein Vergleich, im zweiten höchstens zwei usw. Æ ( ) im Durchschnitt werden höchstens die Hälfte der Elemente in jedem Schleifendurchlauf verglichen Æ ( ) 4 - Anzahl der Kopien (sind hier nicht wirklich Tauschoperationen) ist ungefähr gleich der Anzahl der Vergleiche Æ = ( ) 4 Anzahl Operationen in Insertsort: ca. + = 4 4 Insertsort hat Komplexität ( ) - Fazit: deutlich schneller als Bubblesort

17 Æ Bubblesort schneidet im Vergleich immer am schlechtesten ab; Insertsort ist im Gegensatz zu uicksort ein stabiles und ordnungsverträgliches Sortierverfahren und somit bei vorsortierten Datenmengen schneller als uicksort (best-case bei Insertsort ist () ) Æ folgende Tabelle zeigt die Laufzeiten einiger Sortierverfahren für zufällig sortierte Datenmengen (P IV; 3,0 GHz) 50k 100k 500k 1M 5M 10M Bubblesort,31 1: Insertsort 4,6 31,15 17: Shellsort 0,01 0,05 0,36 0,3 6,76 16,1 uicksort 0,01 0,0 0,16 0,35,67 6,80 (Shellsort funktioniert wie Insertsort, nur dass man hier erst jeden h-ten Schlüssel im Input vergleicht und sortiert, h wird dann immer kleiner gesetzt bis h = 1 ist) - bei allen Vorzügen nicht vergessen: Æ uicksort nicht stabil und nicht ordnungsverträglich Æ entfaltet Optimum erst bei großen Datenmengen

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

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

Mehr

Quicksort. Referat am 18.11.1996 in Proseminar "Grundlagen der Programmierung" Inhalt. 1. Geschichte und Hintergründe des Sortierproblems

Quicksort. Referat am 18.11.1996 in Proseminar Grundlagen der Programmierung Inhalt. 1. Geschichte und Hintergründe des Sortierproblems Quicksort Referat am 18.11.1996 in Proseminar "Grundlagen der Programmierung" Inhalt 1. Geschichte und Hintergründe des Sortierproblems 2. Theoretische Grundlagen 2.1 Das Sortierproblem (lat. sors, -tis

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

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

Sortierverfahren für Felder (Listen)

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

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

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

Mehr

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

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

Mehr

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

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

Mehr

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

Programmieren I. Kapitel 7. Sortieren und Suchen

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

Mehr

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

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, zwicker@iam.unibe.ch

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

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

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

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?

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

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

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

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005 Paradigmen im Algorithmenentwurf Problemlösen Problem definieren Algorithmus entwerfen

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

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

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 2 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie viele negative Zahlen (ohne 0) lassen sich im 4-Bit-Zweierkomplement darstellen?

Mehr

Leitprogramm Bubblesort

Leitprogramm Bubblesort Leitprogramm Bubblesort Dr. Rainer Hauser Inhalt 1 Übersicht...1 2 Input-Block I: Der Sortieralgorithmus Bubblesort...2 3 Input-Block II: Die Effizienz von Bubblesort...6 4 Zusammenfassung...8 5 Lernkontrolle...9

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Sortieren und Suchen (Teil 1) WS 2012/2013 Suchen 8 False unsortiert 21 4 16 7 19 11 12 7 1 5 27 3 8 False sortiert 2 4 6 7 9 11 12 18 21 24 27 36 Suchen in unsortierten

Mehr

Grundlagen der Programmierung

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

Mehr

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

SOI 2013. Die Schweizer Informatikolympiade

SOI 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

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

Laufzeit und Komplexität

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

Mehr

Kapitel 5: Dynamisches Programmieren Gliederung

Kapitel 5: Dynamisches Programmieren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

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

Ü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

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

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

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 5. Vorlesung Martin Middendorf / Peter F. Stadler Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Quick-Sort

Mehr

Ein Scan basierter Seitenangriff auf DES

Ein Scan basierter Seitenangriff auf DES Ein Scan basierter Seitenangriff auf DES Seminar Codes & Kryptographie SS04 Tobias Witteler 29.06.2004 Struktur des Vortrags 1. Einführung / Motivation 2. Struktur von DES 3. Die Attacke Begriffsklärung:

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

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

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

MAXIMUM2.STR 02.10.2002. Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben.

MAXIMUM2.STR 02.10.2002. Struktogramme. Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben. Struktogramme 02.10.2002 Aufgabe: 3 Zahlen eingeben, größte Zahl ermitteln und ausgeben. MAX_DOZ1 Integer a, b, c, max M AX IM U M 1.S T R Inte g er a, b, c Ausgabe "Zahlen eingeben" E ing abe a, b, c

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

"Einführung in die Programmierung" Krefeld, den 24. September 2013

Einführung in die Programmierung Krefeld, den 24. September 2013 Einführung in die Programmierung Matrikelnummer: Klausur zur Vorlesung "Einführung in die Programmierung" Krefeld, den 24. September 2013 Hinweise: Übertragen Sie bitte Name und Matrikelnummer deutlich

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

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 13./14. VO DAP2 SS 2009 2./4. Juni 2009 1 2. Übungstest

Mehr

Wirtschaftsinformatik I

Wirtschaftsinformatik I Wirtschaftsinformatik I - Tutorium 6/ 7 (April 2010) Zusatzinformationen - Lösungsvorschläge Wirtschaftsinformatik I Tutorium Jochen Daum (4.Semester BWL) Universität Mannheim Rechtshinweis: Diese Präsentation

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

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

Fragen für die Klausuren

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

Mehr

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

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

KAPITEL III DAS InFORMATIK- KOCHSTUDIO

KAPITEL III DAS InFORMATIK- KOCHSTUDIO Das Informatik- Kochstudio KAPITEL III 48 Das Informatik-Kochstudio Algorithmen Algorithmen III Sortieren Ordnung ist das halbe Leben. Mit diesem Spruch nerven seit Generationen Eltern ihre Kinder. Aber

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

Entwurf von Algorithmen - Kontrollstrukturen

Entwurf von Algorithmen - Kontrollstrukturen Entwurf von Algorithmen - Kontrollstrukturen Eine wichtige Phase in der Entwicklung von Computerprogrammen ist der Entwurf von Algorithmen. Dieser Arbeitsschritt vor dem Schreiben des Programmes in einer

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

Dynamische Programmierung

Dynamische Programmierung Dynamische Programmierung Manuel Grandeit Hallo Welt -Seminar 28.06.2011 Manuel Grandeit 1 / 40 Inhaltsübersicht Einführung Münzwechsel Was ist ein Zustand? Konstruktion einer DP-Lösung Top-Down-DP Bottom-Up-DP

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch

In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch Kapitel Matrizen in C++ In der Computersprache C ist die Standardmethode zur Behandlung von Matrizen durch 1 const int n=10; 3 double a[n][n]; gegeben. Allerdings gibt es bei dieser Methode eine Reihe

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

Algorithmen & Datenstrukturen 1. Klausur

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

Mehr

Schulinternes Curriculum im Fach Informatik

Schulinternes Curriculum im Fach Informatik Schulinternes Curriculum im Fach Informatik Unterricht in EF : 1. Geschichte der elektronischen Datenverarbeitung (3 Stunden) 2. Einführung in die Nutzung von Informatiksystemen und in grundlegende Begriffe

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Dynamische Programmierung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Dynamische Programmierung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 2 Übersicht Stammt aus den Zeiten als mit Programmierung

Mehr

Beispiel zu Datenstrukturen

Beispiel zu Datenstrukturen zu Datenstrukturen Passend zum Kurs 01661 Version Juni 2008 Dieter Hoffmann Dipl.-Inform. Diese Kurshilfe zum Kurs Datenstrukuren I (Kursnummer 01661) bei Prof. Dr. Güting (Lehrgebiet Praktische Informatik

Mehr

Skript zur Vorlesung Algorithmentheorie

Skript zur Vorlesung Algorithmentheorie Skript zur Vorlesung Algorithmentheorie Prof. Dr. Georg Schnitger WS 2010/11 Hinweise auf Fehler und Anregungen zum Skript bitte an matthias@thi.informatik.uni-frankfurt.de Mit einem Stern gekennzeichnete

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

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

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Lineare Gleichungssysteme

Lineare Gleichungssysteme Lineare Gleichungssysteme Eines der am häufigsten auftretenden Standardprobleme der angewandten Mathematik ist das Lösen linearer Gleichungssysteme, etwa zur Netzwerkberechnung in der Elektrotechnik oder

Mehr

1. Grundlegende Konzepte in Java (6 Punkte)

1. Grundlegende Konzepte in Java (6 Punkte) 1. Grundlegende Konzepte in Java (6 Punkte) a) Welches der folgenden Literale ist korrekt und wenn ja, von welchem Typ ist es? "true" nicht korrekt X korrekt vom Typ String 'true' X nicht korrekt korrekt

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

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters

Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Prof. Dr. Ulrich Breitschuh Hochschule Anhalt(FH) Fachbereich Informatik Aufgaben zur C-Programmierung für die Praktikumsperiode des 1.Semesters Hinweis: Die Aufgaben 3, 6 und 8 sind testatpichtige Aufgaben.

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

Vorkurs Informatik WiSe 15/16

Vorkurs Informatik WiSe 15/16 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 16.10.2015 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Suchen Binärsuche Binäre Suchbäume 16.10.2015 Dr. Werner

Mehr

Struktur am Beispiel einer Liste

Struktur am Beispiel einer Liste Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich

Mehr

Maximale Teilsummen Algorithmendesign

Maximale Teilsummen Algorithmendesign Maximale Teilsummen Algorithmendesign Die Geschichte beginnt, als Ulf Grenander 1977 an der Brown Universität Mustererkennungstechniken an digitalisierten Bildern studiert. Er möchte, um Wahrscheinlichkeitsabschätzungen

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

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

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

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

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

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

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

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume Effiziente Algorithmen und Datenstrukturen I Kapitel 9: Minimale Spannbäume Christian Scheideler WS 008 19.0.009 Kapitel 9 1 Minimaler Spannbaum Zentrale Frage: Welche Kanten muss ich nehmen, um mit minimalen

Mehr

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS) Dominating Set 59 Literatur Dominating Set Grundlagen 60 Dominating Set (DS) M. V. Marathe, H. Breu, H.B. Hunt III, S. S. Ravi, and D. J. Rosenkrantz: Simple Heuristics for Unit Disk Graphs. Networks 25,

Mehr

Informatik II Greedy-Algorithmen

Informatik II Greedy-Algorithmen 7/7/06 lausthal Erinnerung: Dynamische Programmierung Informatik II reedy-algorithmen. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Zusammenfassung der grundlegenden Idee: Optimale Sub-Struktur:

Mehr

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Arrays und Methoden. Programmiervorkurs WS 2010 / 11 Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht

Mehr

Heuristiken im Kontext von Scheduling

Heuristiken im Kontext von Scheduling Heuristiken im Kontext von Scheduling Expertenvortrag CoMa SS 09 CoMa SS 09 1/35 Übersicht Motivation Makespan Scheduling Lokale Suche Weitere Metaheuristiken Zusammenfassung Literatur CoMa SS 09 2/35

Mehr

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von.

HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG. Das Luzifer-Rätsel. Prof. Dr. Hartmut Plesske Wintersemester 2008/09. von. HOCHSCHULE KONSTANZ TECHNIK, WIRTSCHAFT UND GESTALTUNG Fakultät Informatik Das Luzifer-Rätsel Prof. Dr. Hartmut Plesske Wintersemester 2008/09 von Max Nagl nagl@fh-konstanz.de Inhaltsverzeichnis Inhaltsverzeichnis

Mehr

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06

Balancierte Bäume. Martin Wirsing. in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer. http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 Balancierte Bäume Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.ifi.lmu.de/lehre/ss06/infoii/ SS 06 2 Ziele AVL-Bäume als einen wichtigen Vertreter balancierter

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Zeichnen von Graphen. graph drawing

Zeichnen von Graphen. graph drawing Zeichnen von Graphen graph drawing WS 2006 / 2007 Gruppe: D_rot_Ala0607 Christian Becker 11042315 Eugen Plischke 11042351 Vadim Filippov 11042026 Gegeben sei ein Graph G = (V; E) Problemstellung V E =

Mehr

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2015/16 12. Vorlesung Hashing Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Übungen Begründen Sie grundsätzlich alle Behauptungen außer die Aufgabe

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

Programmierkurs: Delphi: Einstieg

Programmierkurs: Delphi: Einstieg Seite 1 von 6 Programmierkurs: Delphi: Einstieg Aus Wikibooks Inhaltsverzeichnis 1 Einstieg Einstieg Was ist Delphi Borland Delphi ist eine RAD-Programmierumgebung von Borland. Sie basiert auf der Programmiersprache

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

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