Informatik A Zusammenfassung

Größe: px
Ab Seite anzeigen:

Download "Informatik A Zusammenfassung"

Transkript

1 Informatik A Zusammenfassung 1. Daten und Zahlen 2-er Komplement Komplexitätsklassen Variablen Konstantenbezeichner Rechnen mit Binärzahlen Gleitkommazahlen 2. Java Kontrollstrukturen Algorithmus Methode Obkektorientierte Programmierung Binden (statisch, dynamisch) 3. Endliche Automaten formale Definition Bsp.: Binärzahl durch 3 teilbar? 4. Rekursion Türme von Hanoi 5. Halteproblem 6. Sortieren Komplexität-Übersicht SelectionSort BubbleSort/ShakerSort MergeSort QuickSort BucketSort/RadixSort HeapSort Heap

2 7. Abstrakte Datentypen Liste Keller Schlange (binärer) Baum Suchbaum AVL-Baum Traversierungen Intervallinorder Mengen verwalten Spielbaum 8. Hashing Ofenes Hashing Geschlossenes Hashing Laufzeit 9. Graphen gerichteter/ungerichteter Graph Implementationen Adjazenzmatrizen Adjazenzlisten Typische Probleme für Graphen 10. Suchen Tiefensuche Breitensuche 11. Wichtige Algorithmen Traversieren, Hamiltonkreis, Traveling Salesman All-pairs-shortest-path, Single-source-shortest-path Topologisches Sortieren, Chinese Postman

3 Codierung ganze Zahlen im 2-er Komplement Komplexitätsklassen: log n binäre Suche n lineare Suche n * log n schlaues Sortieren n 2 dummes Sortieren n 3 Gleihungssystem lösen 2 n alle Teilmengen n! alle Permutationen Variablen: Konstantenbezeichner Was sorgt für Speicherverwaltung? einfache Datentypen (float, char, int) Konstante Schlüsselwort final

4 Datentyp legt fest: Wertbereich Operationen Eingabe (char) in weiterverwendbare Zahlen (int) umwandeln: Jedem Zeichen ist ein ASCII-code zugewiesen Char c; (int) c liefert ASCII-Nummer in integer form Negative Zahl berechen: Gegeben x : -4 Finde +x : Inverieren : Addiere 1 : Bei Addition: Überlauf beachten! Trick: Vorzeichenbit verdoppeln, müssen nach Addition identisch sein: Ergebnis undefiniert Ergebnis ok!

5 [[ Gleitkommazahlen ]] Standart: float, double Darstellung: x = m * 2 e Verfahren: x = 13,5 = 1,6875 * 2 3 0, 6875 verdoppeln 1, 3750 verdoppeln 0, 7500 verdoppeln 1, 5000 verdoppeln 1, 0000 Reduzierte Mantisse: [ ] = Exponent: [0 1 1] = Vorzeichen Exponent Reduzierte Mantisse Multiplikation: Exponenten addieren Mantisse multiplizieren 12 * 20 = (1,5 * 2 3 ) * (1,25 * 2 4 ) = (1,5 * 1,25) * (2 3 * 2 4 ) = 1,875 * 2 7 = 240 Addition: Exponenten angleichen Mantisse addieren = (1,5 * 2 3 ) + (1,25 * 2 4 ) = (0,75 * 2 4 ) + (1,25 * 2 4 ) = (0,75 + 1,25) * 2 4 = 32

6 JAVA Kontrollstrukturen: Regeln dynamischen Ablauf der Anweisungsfolge eines Programms durch Bedingungen, Verzweigungen und Schleifen Abzählreim: Algorithmus = endlich lange Vorschrift, bestehend aus Einzelanweisungen Häufig benutzte Algorithmen Methode (Klassen- oder Objektbezogen) Schlüsselwort static Klassenmethode Aufrufmechanismus: call-by-value

7 Objektorientierte Programmierung: Klasse class Hund() Objekt Hund hasso Konstruktor Hasso = new hund() Datenfelder Hasso.gewicht = 42 Vererbung class Schlittenhund extend Hund { } Überschreiben Überladen Methoden Hasso.sitz() Auf Konstruktor der Oberklasse zugreifen super() Binden: Wenn mehrere Methoden mit gleichem Namen und unterschiedlicher Parameterliste existieren, ist die Methode überladen. Statisches Binden bezeichnet den Vorgang, einem Objekt zur Übersetzungszeit den Programmcode fest zuzuordnen; dynamisches Binden bezeichnet den Vorgang, einem Objekt zur Laufzeit den Programmcode zuzuordnen. Referenzen modellieren Zeiger, Verweise

8 Endliche Automaten: 5-Tupel A = (S,, δ, s0, F) - S == endliche Zustandsmenge - == endliches Eingabealphabet - δ: S x S == Überführungsfunktion - s0 S == Startzustand - F S == Endzustände Typische Überführungsfunktion im Code: z = delta[z] [ (int) eingabe (int) 0 ] Beispiel: ist Binärzahl durch 3 teilbar?

9 Überführungsfunktion: Eingabe Zustände 0 1 r0 r0 r1 r1 r2 r0 r2 r1 r2 r0 ist Start und Zielzustand Java-Code Zustandüberführung mit einem Feld: Zustand: s Int [ ] [ ] delta = { (0,1), 0 (2,0), 1 (1,2) }; 2 Eingabe durchgehen: For (int i=0; i < zeile.length; i++) { Wende Überführungsfunktion an: s ist Zustand switch(zeile[i]) { case `0 : s = delta[s] [0]; break; case `1 : s = delta[s] [1]; break; default } Je nach dem ob also ne 0 oder 1 als Eingabe kommt gehe in unserem Feld in den jeweiligen Zustand (in die jeweilige Zeile) // delta[2] [0] 2. Reihe 0.te Spalte

10 [[ Suchen ]] Lineare Suche == Kompletter Durchlauf eines Arrays bis gefunden Worst case: O(n) Average case: O( n 2 ) Binäre Suche == Suche in geordneter Reihe, immer Mitte der noch zu durchsuchenden Reihe betrachten und entscheiden ob rechts oder links weitergesucht werden muss. Immer: O( log n ) Rekursion: Erneuter Aufruf einer Methode aus dem Methodenrumpf heraus Typischerweise werden dabei die aktuellen Parameter so modifiziert, dass die Problemgröße schrumpft, damit nach mehrmaligem Wiederholen dieses Prinzips schließlich kein weiterer Aufruf erforderlich ist und die Rekursion abbrechen kann. Jeder rekursive Algorithmus lässt sich auch iterativ implementieren

11 [[ Türme von Hanoi ]] n Scheiben mit abnehmender Größe liegen auf Startort A Sie sollen in derselben Reihenfolge auf Zielort C zu liegen kommen Die Regeln für den Transport lauten: 1.) Jede Scheibe muss einzeln transportiert werden 2.) Es darf nie eine größere Scheibe auf einer kleineren liegen 3.) Es darf ein Hilfsort B zum Zwischenlagern verwendet werden funktion bewege (Zahl i, Stab a, Stab b, Stab c) { falls (i > 0) { bewege(i-1, a, c, b); // n-1 von Start nach Zwischen verschiebe oberste Scheibe von a nach c; bewege(i-1, b, a, c); // n-1 Scheiben von Zwischen nach Ziel } } n-1 von Start nach Zwischen erste Scheibe von Start nach Ziel n-1 Scheiben von Zwischen nach Ziel Laufzeit: O(2 n 1) Beweis durch Induktion Induktionsverankerung: f(0) = 0 = Induktionsschritt: Sei bis n 1 bewiesen: f(n) = 2 f(n 1) + 1 = 2 (2 n 1 1) + 1 = 2 n = 2 n 1 Rekursionsgleichung Induktionsannahme

12 Halteproblem Beh.: Es gibt kein Programm, welches entscheidet, ob ein gegebenes Programm, angesetzt auf einen gegebenen Input, anhält. Beweis durchwiderspruch Annahme: Es gibt eine Methode haltetest in der Klasse Fee: public class Fee { public static boolean haltetest (char[]s, char[]t) { // liefert true, falls das durch die Zeichenkette s dargestellte // Java-Programm bei den durch die Zeichenkette t dargestellten // Eingabedaten anhaelt; // liefert false, sonst } } Dann lässt sich folgendes Java-Programm in der Datei Quer.java konstruieren: import AlgoTools.IO; public class Quer { public static void main(string[] argv) { char[] s = IO.readChars(); if (Fee.haltetest(s,s)) while (true); } } Sei q der String, der in der Datei Quer.java steht. Was passiert, wenn das Programm Quer.class auf den String q angesetzt wird? D.h. java Quer < Quer.java 1. Fall: Hält an haltetest(q,q) == false Quer angesetzt auf q hält nicht! 2. Fall: Hält nicht haltetest(q,q) == true Quer angesetzt auf q hält an! Also kann es die Methode haltetest nicht geben!

13 SORTIEREN Motivation für Sortieren: 1. Häufiges Suchen Einmal sortieren, dann jeweils log n Aufwand. 2. Tritt ein Element in zwei Listen L1, L2 auf? Sortiere L1 L2, dann nach Doppelten suchen! Eine Obere Schranke bezieht sich auf einen konkreten Algorithmus...wie lange dieser braucht um das Problem zu lösen Untere Schranke sagt aus wieviele Durchläufe jeder Algorithmus für ein Problem mindestens durchlaufen muss. Also eine untere Schranke heisst, es kann keinen Algorithmus geben, der das Problem in einer schnelleren Laufzeit lösen kann

14 O(n * log n ) ist untere Schranke für sortieren durch vergleichen, weil ein binärer Baum mit n! Blättern hat mindestens die Höhe n log n. 4 [[ SelectionSort ]] jeweils das kleinste nach vorne O(n 2 ) [[ BubbleSort ]] Jeweils unterschiedliche Paare vertauschen O(n 2 ) Variation: ShakerSort: einmal von vorne, einmal von hinten

15 [[ MergeSort ]] Divide&Conquer: sortiere 1. Hälfte, sortiere 2. Hälfte und vereinige Merge-Methode nimmt jeweils das kleinere aus beiden Mengen bis eine leer, dann Rest der anderen anhängen. O(n * log n) [[ QuickSort ]] Partitioniere die Folge in eine elementweise größere und eine elementweise kleinere O(n * log n)

16 Quicksort: im ungünstigsten Fall O(n 2 ) kann verhindert werden durch Bestimmung des Medians. (aber wenig sinnvoll) [[ BucketSort ]] Sortieren durch Verteilen auf einzelne Fächer (Buckets), Alphabet muss bekannt sein! O(n)

17 [[ RadixSort ]] Sortieren von Strings über endlichen Alphabet, durch mehrmaliges anwenden von BucketSort O(n)

18 [[ HeapSort ]] Benutze Heap und entferne immer wieder die Wurzel (kleinstes Element) bis leer Binärer Baum == entweder leer oder er besteht aus einem Knoten, dem 2 weitere Knoten zugeordnet sind Vater, Söhne, Wurzel, Blätter Heap == bis auf die letzte Ebene vollständiger binärer Baum, die einzelnen Knoten enthalten Schlüssel. Der Schlüssel eines Knotens ist stets kleiner als der seiner Söhne O(n * log n) Heap Implementation? Array

19 [[Heap]] Ein Heap ist ein binärer Baum (Konstruktion von Heap O(n)) Der kleinste Schlüssel bildet die Wurzel des Baumes und alle Nachfolger sind größer. Insert: neues Element an das Ende der Heaps Element, solange nach oben schieben bis es in der Wurzel steht oder der Schlüssel des Vaters kleiner als der des Elementes selbst ist. delete: Wurzel entfernen und an seine Stelle das am Ende des Heaps befindliche Element setzen. Element solange nach unten schieben, (mit kleinstem Schlüssel tauschen) bis es Blatt ist oder die Kinder größere Schlüssel als das Element selbst besitzen. get: einfach Schlüssel aus Wurzel holen. O(1) (nur Minimum!)

20

21 In welcher Reihenfolge werden die Elemente in dem Array gespeichert? der Breite nach Wurzel: Nummer 0 linker Sohn von Knoten i: 2*i +1 rechter Sohn von Knoten i: 2*i + 2 Welche Methoden sollte ein Interface Heap ankündigen? Object min( ) void delete( ) void insert(object) Im obigen Array implementiert...heapify durch tauschen im Array Kann man gut ein bestimmtes Element im Heap suchen oder herauslöschen? nein Wie wird der Heap aufgebaut? Warum ist Laufzeit hierfür O(n), obwohl eigentlich n mal mit Aufwand O(log n) repariert werden muss? mehr Knoten in unteren Ebenen [[ Externes Sortieren ]] Sortieren auf Medien mit sequentiellem Lese- und Schreibzugriff durch wiederholtes Mischen von bereits sortierten Folgen Lauf == monoton nicht fallende Teilfolge

22 ADT == Abstrakter Datentyp (Datenstruktur + Operationen) Interface == Schnittstelle, die nur abstrakte Methodenköpfe und Konstanten enthält, muss implementiert werden [[ Liste ]] Liste == Folge von Elementen mit einem sog. Aktuellen Element Operationen: empty( ) endpos( ) reset( ) advance( ) elem( ) insert(object x) delete ( ) Liefert true, falls leer Liefert true, wenn Liste abgearbeitet Das erste Listenelement wird zum aktuellen Der Nachfolger des akt. wird zum aktuellen Liefert das aktuelle Element Fügt vor das aktuelle Element ein Element ein; das neu eingefügte wird zum aktuellen Element Löscht das aktuelle Element

23 [[ Keller ]] Keller == Folge von Elementen mit einem sog. Top-Element (Last in First out) Operationen: empty( ) push(object x ) top( ) pop( ) Liefert true, falls Keller leer ist Legt Element auf Keller Liefert oberstes Element Entfernt oberstes Element

24 [[ Schlange ]] Schlange = Folge von Elementen mit einem sog. Front-Element (First in First out) O(log n)? Operationen: enq(object x ) deq( ) front( ) empty( ) Fügt x hinten ein Entfernt vorderstes Element Liefert vorderstes Element Liefert true, falls leer

25 [[ Baum ]] (binärer) Baum = ist entweder leer oder besteht aus einem Knoten, dem ein Element und 2 binäre Bäume (Söhne) zugeordnet sind Operationen: empty( ) left( ) right( ) value( ) Liefert true, falls Baum leer ist Liefert linken Teilbaum Liefert rechten Teilbaum Liefert Wurzelelement was implementieren Bäume? Menge Die Höhe eines Baumes hängt logarithmisch von de Anzahl seiner Elemente ab

26 [[ Suchbaum ]] (links < rechts) O(log n) Suchbaum Suchbaumoperationen: lookup(compareable x) insert(compareable x) delete(compareable x) sucht x in Menge liefert Comparable-Objekt falls gefunden liefert null sonst versucht x in Menge einzufügen liefert true, falls erfolgreich liefert false sonst versucht x aus Menge zu entfernen liefert true falls erfolgreich liefert false sonst public Comparable lookup(comparable x) Beginnt bei Wurzel Solange Knoten vorliegt Vergleiche x mit Knoteninhalt Dann je nach Vergleich entweder In linken Teilbaum oder rechten Teilbaum weitermachen

27

28 [[ AVL-Baum ]] (ausgeglichen) O(log n) AVL-Baum == ausgeglichener Suchbaum (Höhen seiner Söhne unterscheiden sich um höchstens 1) bal(x) = höherechts höhelinks Höhe eines AVL-baums ist 1,45 * log n also höchstebns 45% größer als erforderlich Einfügen: höchstens 1 Rotation Löschen: höchstens x Rotationen mit x = Anzahl der Knoten auf dem Weg zur Wurzel O(log n) Suchen: O(log n)

29

30 [[ Traversierungen ]] Rekursive Implementierungen inorder( knoten ): if knoten.links null then inorder( knoten.links ) print( knoten ) if knoten.rechts null then inorder( knoten.rechts ) preorder( knoten ): print( knoten ) if knoten.links null then preorder( knoten.links ) ) if knoten.rechts null then preorder( knoten.rechts postorder( knoten ): ) ) if knoten.links null then postorder( knoten.links if knoten.rechts null then postorder( knoten.rechts print( knoten ) Iterative Implementierung von Traversierungen mit Zuhilfenahme von Kellern

31 Intervallinorder: (abfangen) Intervall-inOrder( knoten ): if knoten.links null + if knoten.links > intervallanfang then inorder( knoten.links ) if knoten < intervallende { print( knoten ) } if knoten.rechts null then inorder( knoten.rechts ) Intervallpreorder Tiefensuche im Intervall // Preorder iterativ Tiefensuche...

32 Mengen verwalten Was für Sachen muss man den mit Daten so machen wenn man sie verwaltet? speichern, wiederfinden, löschen Angenommen, ein Kunde will die Implementation einer Menge, wie realisiere ich das? Hashing oder Suchbaum.

33 [[ Spielbaum ]] Spielbaum == Baum mit zwei Typen von Knoten: Minimum und Maximum Wert eines Blattes durch statische Stellungsbewertung Wert eines min-knotens: min der Söhne Wert eines max-knotens: max der Söhne Zur Implementation: der Baum ist nicht binär, daher hat jeder Knoten einen Verweis auf eine Liste von Söhnen

34 [[ Hashing ]] Offened Hashing == Einträge werden in einem Array von Buckets verwaltet, mehere Elemente können also den selben Hashwert belegen. Bei N Buckets und n Einträgen enthält jede Liste durchschnittlich n N Buckets

35 Geschlossenes Hashing == Beschränkte Anzahl von Plätzen Verwaltung durch ein Comparable[] inhalt und ein byte[] zustand verschiedene Sondierfunktionen zum Behandeln von Kollisionen Falls y = f(x) schon belegt ist, so suche für x einen Alternativplatz - Lineares Sondieren: y, y+1, y+2, y+3,... - Quadratisches Sondieren: y, y+1, y+4, y+9,... - Rehashing: y, y+f2(x),...

36 n = Anzahl der gespeicherten Objekte, N = Anzahl der Speicherpositionen, n N = α = Auslastungsfaktor Laufzeit: erfolglose Suche: 1 1 α = 5,0 (für α = 0,8) erfolgreiche Suche: ln (1 α) α = 2,01 (für α = 0,8) In 2 Schritten wird von Elementen aus einer großen Tabelle das richtige gefunden (AVL benötigt ezwa 20 Vergleiche) Bei höherem α steigt die Anzahl der Schritte stark an (exponentiell?)

37 [[ Graphen ]] Gerichteter Graph: G = (V,E) E V (Knotenmenge), V x V (Kantenmenge) Kanten sind einseitig Hier: V = {a,b,c,d} E = {(a,c),(a,b),(c,b),(c,d),(d,b),(b,d)} Ungerichteter Graph: G = (V,E) E V (Knotenmenge) P2(V) = 2-elementige Teilmenge von V Kanten können über eine Kostenfunktion gewichtet sein c: E {Reele Zahlen} Mit Graphen können binäre beziehungen zwischen Objekten modelliert werden. Die Objekte werden durch die Knoten, die Beziehungen durch die Kanten modelliert.

38 Implmentationsmöglichkeiten: (1) durch Adjazenzmatrizen: - Platzbedarf: O( V 2 ) - Zugriff auf einzelne Knoten in konstanter Zeit möglich - Kein effizientes Verarbeiten von Nachbaknoten - sinnvoll bei dicht besetzten Graphen und bei Algorithmen die wahlfreien Zugriff auf eine Kante benötigen Unbewertete Kanten: Bewertete kanten:

39 (2) durch Adjazenzlisten: - Platzbedarf: O( E ) - kein effizienter Zugriff auf Kanten möglich - sinnvoll bei dünn besetzten Graphen und bei Algorithmen die auf Nachbarn eines Knotens zugreifen müssen

40 [[ Typische Probleme für Graphen ]] Traversieren: jeden Knoten genau einmal besuchen (Hamilton-Path) All-pairs-shortest-path-Problem: günstigster Weg für jede Start-Ziel-Variante n x n Matrix in Polynomialzeit lösbar Multiplikation zweier n x n-matrizen O(n 3 ) oder hoch2,7 Single-source-shortest-path-Problem: Von einem bestimmeten Knoten kürzester Weg zu allen Knoten in Polynomialzeit lösbar Weg von a nach f: bestens 10 Sequenz: a b d c e f Laufzeit: O( E * log( V ) ) auf Grund von Heapsortierungen (Anwendung)

41 Hamilton-Kreis: Jeden Ort besuchen, Rückkehr an Ausgangsort Laufzeit: O(2 n ) Günstigster Hamilton-Kreis Travelling Salesman: Topologisches Sortieren: Nummerierung der Knoten, dass jeder Knoten eine Zahl {0,, n 1} erhält Suche f V {0,, n 1} mit f(x) < f(y) falls (x, y) E Laufzeit: O( E ) jeden Knoten einmal ansehen konstant Chinese Postman Jeden Weg (Kante) einmal ablaufen (Eulerweg) Laufzeit: O( n k )

42 [[ Tiefensuche ]] 1. Bestimme den Knoten an dem die Suche beginnen soll 2. Expandiere den Knoten und speichere alle Nachfolger in einem Keller 3. Rufe rekursiv für jeden der Knoten in dem Stack Tiefensuche auf o Falls der Keller leer sein sollte, tue nichts o Falls das gesuchte Element gefunden worden sein sollte, brich die Suche ab und liefere ein Ergebnis Tiefensuche im Intervall 1. Bestimme den Knoten, an dem die Suche beginnen soll, und bestimme die maximale Suchtiefe 2. Prüfe, ob der aktuelle Knoten innerhalb der maximalen Suchtiefe liegt o Falls nein: Tue nichts o Falls ja: 1. Expandiere den Knoten und speichere alle Nachfolger in einem Keller 2. Rufe rekursiv für jeden der Knoten des Keller Tiefensuche im Intervall auf und gehe zu Schritt 2 Tiefensuche auf Baum mittels Keller: 1. Baum in Keller 2. Baum aus Keller 3. Wurzel pop return 4. Rechter Sohn? Ja Keller 5. Linker Sohn? Ja 3. bis nichts mehr im Keller Laufzeit: entspricht preorder

43 [[ Breitensuche ]] 1. Bestimme den Knoten, an dem die Suche beginnen soll, und speichere ihn in einer Warteschlange ab. 2. Entnimm einen Knoten vom Beginn der Warteschlange und markiere ihn. o Falls das gesuchte Element gefunden wurde, brich die Suche ab o und liefere gefunden zurück. Anderenfalls hänge alle bisher unmarkierten Nachfolger dieses Knotens, die sich noch nicht in der Warteschlange befinden, ans Ende der Warteschlange an. 3. Wiederhole Schritt Wenn die Warteschlange leer ist, dann wurde jeder Knoten bereits untersucht. Beende die Suche und liefere nicht gefunden zurück. Laufzeit: Breitensuche auf einem Baum mit Hilfe einer Schlange 1. Baum in Schlange 2. Baum aus Schlange 3. Wurzel deq return 4. Linker Sohn? Ja Schlange 5. Rechter Sohn? Ja Schlange 6. Gehe zu 2. bis nichts mehr in Schlange Unterschied: Markieren mus nicht gemacht werden, da im Baum keine Schleifen möglich sind. Beliebiger Knotennachbar bei Graph

44 [[ wichtige Algorithmen ]] while (x!= 1) { if(x%2==0) x/=2; else x = x 3 + 1; counter++; } Collatz: // wenn x gerade: x = x 2 sonst: x = x Fakultät: int fak = 1; for (i=1; i <= n; i++) fak *= i; rekursiv: static int fak(int n) { if(n==0) return 1; else return n * fak(n-1); } GGT while(y!=0) { z=x%y; x=y; y=z; } rekursiv static int ggt(int x, int y) { if(y==0) return x; else return gt(y,x%y); }

45 Dezimal Dual Positive ganze Zahlen: while(x!=0) { if(x%2==0) System.out.println( 0 ); else System.out.println( 1 ); x/=2; } obacht bits werden rückwärts generiert Mantisse: for(int i = 0; i<23; i++) { f*=2; if(f>=1) { System.out.println( 1 ); f--; } else System.out.println( 0 ); } Sieb des Eratosthenes int n = 1000 //willkürliche Obergrenze boolean[] sieb = new boolean[n]; for(int i=2; i<n; i++) sieb[i]=true; for(int i=2; i<n; i++) { if(sieb[i]) System.out.println(i); for(int j = i+1; j<n; j+=i) sieb[i]=false; //streiche alle Vielfachen der gefundenen Primzahl } }

46 Binäre Suche int[] a = {1,2,3,4,5,6,7,8,9}; int mitte, links, rechts; mitte = links = 0; rechts = a.length-1; while(links<=rechts) { mitte = (links + rechts) / 2; if(a[mitte]==x) break; //falls gefunden: fertig if(a[mitte]<x) links=mitte+1 //zu weit links? else rechts = mitte-1; //zu weit rechts? } //Sprung in die Mitte, weiter suchen links oder rechts. Dort wieder Sprung in die Mitte Fibonacci static int fib(int n) { if(n<=1) return 1; else return fib(n-1)+fib(n-2); } //

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 sieht -5 in der 4Bit 2-er Komplementdarstellung aus? 2. Berechnen Sie

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 9.6.2017 Giuseppe Accaputo g@accaputo.ch 1 Aufbau des PVK Tag 1: Java Teil 1 Tag 2: Java Teil 2 Tag 3: Algorithmen & Komplexität Tag 4: Dynamische Datenstrukturen,

Mehr

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel Algorithmen und Datenstrukturen Bäume M. Herpers, Y. Jung, P. Klingebiel 1 Lernziele Baumstrukturen und Ihre Verwendung kennen Grundbegriffe zu Bäumen anwenden können Baumstruktur in C anlegen können Suchbäume

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. Gegeben sei folgender Ausdruck (a ^ b) && (a b) && a. Welchen Wert hat er

Mehr

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

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 1 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie sieht -13 in der 8Bit 2-er Komplementdarstellung aus? 2. Woraus ergibt

Mehr

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

Name: Seite 1. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Name: Seite 1 Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort. Aufgabe 1 (8 Punkte) 1. Wie wird bei der Zusicherungsmethode die Zusicherung genannt, die vor Eintritt

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Graphen, Suchbäume, AVL Bäume Heute: Graphen und Bäume Binäre Suchbäume AVL-Bäume Nächste

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Version: 25. Jan. 2016 Schwerpunkte Aufgabe und Vorteile von Bäumen Sortieren mit Bäumen Ausgabealgorithmen:

Mehr

13. Bäume: effektives Suchen und Sortieren

13. Bäume: effektives Suchen und Sortieren Schwerpunkte Aufgabe und Vorteile von Bäumen 13. Bäume: effektives Suchen und Sortieren Java-Beispiele: Baum.java Traverse.java TraverseTest.java Sortieren mit Bäumen Ausgabealgorithmen: - Preorder - Postorder

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 07 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München 7 Fortgeschrittene Datenstrukturen Graphen

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Wörterbuchimplementationen 1. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Hashing: Implementierung von Wörterbüchern mit erwartet sehr schnellen Zugriffszeiten. Nachteile

Mehr

9. Natürliche Suchbäume

9. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Kapitel 3: Elementare Datenstrukturen Mariano Zelke Datenstrukturen 2/18 Einfach verkettete Listen Mariano Zelke Datenstrukturen 3/18 Eine Zeiger-Implementierung

Mehr

Suchen und Sortieren Sortieren. Heaps

Suchen und Sortieren Sortieren. Heaps Suchen und Heaps (Folie 156, Seite 56 im Skript) Definition Ein Heap ist ein Binärbaum, der die Heapeigenschaft hat (Kinder sind größer als der Vater), bis auf die letzte Ebene vollständig besetzt ist,

Mehr

Grundlagen. Name: Seite 2

Grundlagen. Name: Seite 2 Name: Seite 2 Grundlagen Aufgabe 1.1 (5 Punkte) Kopieren Sie in der vorgegebenen Methode alle Werte des übergebenen Arrays ary in ein neues Array und liefern Sie diese Kopie zurück. public class ArrayKopieren

Mehr

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen

Algorithmen und Datenstrukturen 2. Dynamische Datenstrukturen Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Aufgabe 1. / 16 P Instruktionen: 1) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern

Mehr

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. (a, b)-bäume / 1. Szenario: Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss. Konsequenz: Kommunikation zwischen Hauptspeicher und Festplatte - geschieht nicht Byte für Byte,

Mehr

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure

7. Dynamische Datenstrukturen Bäume. Informatik II für Verkehrsingenieure 7. Dynamische Datenstrukturen Bäume Informatik II für Verkehrsingenieure Übersicht dynamische Datenstrukturen Wozu? Oft weiß man nicht von Beginn an, wieviele Elemente in einer Datenstruktur untergebracht

Mehr

Teil VII. Hashverfahren

Teil VII. Hashverfahren Teil VII Hashverfahren Überblick 1 Hashverfahren: Prinzip 2 Hashfunktionen 3 Kollisionsstrategien 4 Aufwand 5 Hashen in Java Prof. G. Stumme Algorithmen & Datenstrukturen Sommersemester 2009 7 1 Hashverfahren:

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 217 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. Graphen und Bäume 2. Binäre Suchbäume 3. AVL-Bäume 4. Algorithmen und Datenstrukturen 2 Agenda

Mehr

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 18 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 09.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Abstrakte Datentypen und Datenstrukturen/ Einfache Beispiele Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken. Datenstruktur (DS): Realisierung

Mehr

7. Sortieren Lernziele. 7. Sortieren

7. Sortieren Lernziele. 7. Sortieren 7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

Informatik II Prüfungsvorbereitungskurs

Informatik II Prüfungsvorbereitungskurs Informatik II Prüfungsvorbereitungskurs Tag 4, 23.6.2016 Giuseppe Accaputo g@accaputo.ch 1 Programm für heute Repetition Datenstrukturen Unter anderem Fragen von gestern Point-in-Polygon Algorithmus Shortest

Mehr

Datenstrukturen und Algorithmen D-INFK

Datenstrukturen und Algorithmen D-INFK Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik Peter Widmayer

Mehr

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27 Datenstrukturen: Mathematische Grundlagen 26. Juli 2015 1 / 27 Asymptotik Die Groß-Oh Notation: f = O(g) Es gibt eine positive Konstante c > 0 und eine natürliche Zahl n 0 N, so dass f (n) c g(n) für alle

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 Bäume: Grundlagen und natürliche Suchbäume) Prof. Dr. Susanne Albers Bäume (1) Bäume sind verallgemeinerte Listen (jedes Knoten-Element kann mehr

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016

(Digital) Sorting. October 25, Algorithms & Datastructures 2 Exercises WS 2016 (Digital) Sorting October 2, 2016 Algorithms & Datastructures 2 Exercises WS 2016 Dipl.-Ing. University Linz, Institute for Pervasive Computing Altenberger Straße 69, A-4040 Linz kurz@pervasive.jku.at

Mehr

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18

EINI LogWing/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 17/18 EINI LogWing/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 17/18 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2013 PD Dr. Cyrill Stachniss Dr. Rainer Kümmerle Übungsblatt 13 Abgabe / Besprechung in Absprache

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Kürzeste Wege, Heaps, Hashing Heute: Kürzeste Wege: Dijkstra Heaps: Binäre Min-Heaps Hashing:

Mehr

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus Algorithmen verbrauchen Ressourcen Rechenzeit

Mehr

NAME, VORNAME: Studiennummer: Matrikel:

NAME, VORNAME: Studiennummer: Matrikel: TU Ilmenau, Fakultat IA Institut für Theoretische Informatik FG Komplexitätstheorie und Effiziente Algorithmen Prof. Dr. (USA) M. Dietzfelbinger Klausur Algorithmen und Datenstrukturen SS08, Ing.-Inf.

Mehr

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als

Mehr

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT) Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen

Mehr

Fragenkatalog 1. Kurseinheit

Fragenkatalog 1. Kurseinheit katalog 1. Kurseinheit 1. Wie sind Algorithmen und Datenstrukturen untrennbar miteinander verknüpft? 2. Worin besteht das Ziel einer Beschreibung auf algorithmischer Ebene? 3. Welche Kriterien gibt es

Mehr

Informatik II, SS 2014

Informatik II, SS 2014 Informatik II SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 11 (4.6.2014) Binäre Suchbäume II Algorithmen und Komplexität Binäre Suchbäume Binäre Suchbäume müssen nicht immer so schön symmetrisch sein

Mehr

Informatik II. Woche 15, Giuseppe Accaputo

Informatik II. Woche 15, Giuseppe Accaputo Informatik II Woche 15, 13.04.2017 Giuseppe Accaputo g@accaputo.ch 1 Themenübersicht Repetition: Pass by Value & Referenzen allgemein Repetition: Asymptotische Komplexität Live-Programmierung Aufgabe 7.1

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: Typprüfung (Compiler / Laufzeit) In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht: 1) Der Compiler prüft

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1

Teil 1: Suchen. Ausgeglichene Bäume B-Bäume Digitale Suchbäume. M.O.Franz, Oktober 2007 Algorithmen und Datenstrukturen - Binärbäume 1-1 Teil : Suchen Problemstellung Elementare Suchverfahren Hashverfahren Binäre Suchbäume (Wiederholung aus Prog 2) Bäume: Begriffe, Eigenschaften und Traversierung Binäre Suchbäume Gefädelte Suchbäume Ausgeglichene

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 10 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Physikalisch Technische Lehranstalt Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur Objektorientierte Programmierung im WS 2003/04 (IA 252) Zeit: 90 Minuten erlaubte Hilfsmittel: keine

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin Agenda 1. (Sortierte) Listen 2. Stacks & Queues 3. Datenstrukturen 4. Rekursion und vollständige Induktion

Mehr

Bäume 1. Thomas Röfer

Bäume 1. Thomas Röfer Bäume Thomas Röfer Preisverleihung Begriffsdefinitionen Eigenschaften Implementierung von Bäumen Durchlaufen von Bäumen Breitensuche/Tiefensuche Huffman-Kodierung Rückblick Sortieren Permutieren nach Dijkstra

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 10 (27.5.2016) Binäre Suchbäume II Algorithmen und Komplexität Zusätzliche Dictionary Operationen Dictionary: Zusätzliche mögliche Operationen:

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Informatik II Vorlesung am D-BAUG der ETH Zürich

Informatik II Vorlesung am D-BAUG der ETH Zürich Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 9, 2.5.2016 [Nachtrag zu Vorlesung : Numerische Integration, Zusammenfassung Objektorientierte Programmierung] Dynamische Datenstrukturen II:

Mehr

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1 Stud.-Nummer: Datenstrukturen & Algorithmen Seite Aufgabe. / 6 P Instruktionen: ) In dieser Aufgabe sollen Sie nur die Ergebnisse angeben. Diese können Sie direkt bei den Aufgaben notieren. 2) Sofern Sie

Mehr

Übung 4: Die generische Klasse AvlBaum in Java 1

Übung 4: Die generische Klasse AvlBaum in Java 1 Übung 4: Die generische Klasse AvlBaum in Java 1 Ein binärer Suchbaum hat die AVL -Eigenschaft, wenn sich in jedem Knoten sich die Höhen der beiden Teilbäume höchstens um 1 unterscheiden. Diese Last (

Mehr

Lernmodul 7 Algorithmus von Dijkstra

Lernmodul 7 Algorithmus von Dijkstra Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer

Mehr

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14

Keller, Schlangen und Listen. Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Keller, Schlangen und Listen Elementare Datenstrukturen Keller, Schlangen und Listen 1 / 14 Listen Listen unterstützen die Operationen Lookup, Insert, Remove. + Listen passen sich der Größe der zu speichernden

Mehr

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum

Mehr

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen 5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume

Mehr

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2 Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale

Mehr

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 Offenes Hashing) Prof. Dr. Susanne Albers Hashing: Allgemeiner Rahmen Schlüsselmenge S Universum U aller möglichen Schlüssel Hashfunktion h 0,,m-1

Mehr

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstrukturen. Mariano Zelke. Sommersemester 2012 Datenstrukturen Mariano Zelke Sommersemester 2012 Tiefensuche: Die globale Struktur Der gerichtete oder ungerichtete Graph G werde durch seine Adjazenzliste A repräsentiert. Im Array besucht wird vermerkt,

Mehr

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum.

Punkte. Teil 1. Teil 2. Summe. 1. Zeigen Sie, dass der untenstehende Suchbaum die AVL-Bedingung verletzt und überführen Sie ihn in einen AVL-Baum. Hochschule der Medien Prof Uwe Schulz 1 Februar 2007 Stuttgart Klausur Informatik 2, EDV-Nr 40303/42022 Seite 1 von 2 Name: Matr Nr: Teil 1: Keine Hilfsmittel Bearbeitungszeit: 20 Minuten Teil 1 Teil 2

Mehr

Quicksort ist ein Divide-and-Conquer-Verfahren.

Quicksort ist ein Divide-and-Conquer-Verfahren. . Quicksort Wie bei vielen anderen Sortierverfahren (Bubblesort, Mergesort, usw.) ist auch bei Quicksort die Aufgabe, die Elemente eines Array a[..n] zu sortieren. Quicksort ist ein Divide-and-Conquer-Verfahren.

Mehr

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85 Inhaltsverzeichnis Vorwort 13 Umfang 14 Einsatz als Unterrichtsmittel 14 Algorithmen mit Praxisbezug 15 Programmiersprache 16 Danksagung 17 Vorwort des Java-Beraters 18 Hinweise zu den Übungen 19 Teil

Mehr

Anwendungsbeispiel MinHeap

Anwendungsbeispiel MinHeap Anwendungsbeispiel MinHeap Uns seien n ganze Zahlen gegeben und wir möchten darin die k größten Zahlen bestimmen; zudem gelten, dass n deutlich größer als k ist Wir können das Problem mit Laufzeit in O(n

Mehr

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]

Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1] Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -108 Kapitel 5: Arrays Einführung Ein Array ist eine Reihung gleichartiger Objekte. a: a[0] a[1] a[2] a[3] a[n 1] Bezeichner a steht

Mehr

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor Albert-Ludwigs-Universität Freiburg Institut für Informatik Einführung in die Informatik Sommersemester 2018 Prof. Dr. Wolfram Burgard Andreas Kuhner Daniel Büscher Übungsblatt 13 Abgabe / Besprechung

Mehr

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen Bäume sind verallgemeinerte Listen Datenstrukturen Teil 2 Bäume Jeder Knoten kann mehrere Nachfolger haben Sie sind weiter spezielle Graphen Graphen bestehen aus Knoten und Kanten Kanten können gerichtet

Mehr

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Datenstrukturen und Algorithmen 2. Klausur SS 2001 UNIVERSITÄT PADERBORN FACHBEREICH 7 (MATHEMATIK INFORMATIK) Datenstrukturen und Algorithmen 2. Klausur SS 200 Lösungsansätze Dienstag, 8. September 200 Name, Vorname:...................................................

Mehr

Algorithmen und Datenstrukturen 12

Algorithmen und Datenstrukturen 12 12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

18. Natürliche Suchbäume

18. Natürliche Suchbäume Bäume Bäume sind. Natürliche Suchbäume [Ottman/Widmayer, Kap..1, Cormen et al, Kap. 12.1-12.] Verallgemeinerte Listen: Knoten können mehrere Nachfolger haben Spezielle Graphen: Graphen bestehen aus Knoten

Mehr

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n)

13. Hashing. AVL-Bäume: Frage: Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) AVL-Bäume: Ausgabe aller Elemente in O(n) Suche, Minimum, Maximum, Nachfolger in O(log n) Einfügen, Löschen in O(log n) Frage: Kann man Einfügen, Löschen und Suchen in O(1) Zeit? 1 Hashing einfache Methode

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Kapitel 12: Induktive

Kapitel 12: Induktive Kapitel 12: Induktive Datenstrukturen Felix Freiling Lehrstuhl für Praktische Informatik 1 Universität Mannheim Vorlesung Praktische Informatik I im Herbstsemester 2009 Folien nach einer Vorlage von H.-Peter

Mehr

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt

Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Fachhochschule Wedel 31. Januar 2004 Prof. Dr. Uwe Schmidt Aufgaben zur Klausur C und Objektorientierte Programmierung im WS 2003/04 (WI h103, II h105, MI h353) Zeit: 150 Minuten erlaubte Hilfsmittel:

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer

Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Präsenzübung Datenstrukturen und Algorithmen (SS 2013) Prof. Dr. Leif Kobbelt Thomas Ströder, Fabian Emmes, Sven Middelberg, Michael Kremer Dienstag, 28. Mai 2013 Nachname: Vorname: Matrikelnummer: Studiengang:

Mehr

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.

Wiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen. Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten

Mehr

Übungen zu Algorithmen

Übungen zu Algorithmen Institut für Informatik Universität Osnabrück, 08.11.2016 Prof. Dr. Oliver Vornberger http://www-lehre.inf.uos.de/~ainf Lukas Kalbertodt, B.Sc. Testat bis 16.11.2016, 14:00 Uhr Nils Haldenwang, M.Sc. Übungen

Mehr

7. Verkettete Strukturen: Listen

7. Verkettete Strukturen: Listen 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):

Mehr

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen

Mehr

Übung 3 Musterlösung

Übung 3 Musterlösung Prof aa Dr Ir Joost-Pieter Katoen Sebastian Junges, Benjamin Kaminski, David Korzeniewski, Tim Quatmann Hinweise: Übung 3 Musterlösung Die Lösungen müssen bis Donnerstag, den 03 Mai um 16:00 Uhr in den

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-

Mehr

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps Mengen n Ziel: Aufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: Mengen n Ziel: Aufrechterhalten einer

Mehr

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg

Mehr