Beispiel: (Strukturerhaltung) Begriffsklärung: (AVL-Baum) Rotationen auf Suchbäumen: Gestaltsanalyse: Lemma: Beweis: siehe Vorlesung

Größe: px
Ab Seite anzeigen:

Download "Beispiel: (Strukturerhaltung) Begriffsklärung: (AVL-Baum) Rotationen auf Suchbäumen: Gestaltsanalyse: Lemma: Beweis: siehe Vorlesung"

Transkript

1 urc zusätzlice nforderungen bzgl. einer Verteilung der lätter und Höen in Unterbäumen kann man ein egenerieren verindern; spekte: 4 - Vorteil: geringer ufwand für Grundoperationen kann zugesicert werden Nacteil: Strukturinvariante muss eralten werden. - Kosten der Struktureraltung? eispiel: (Struktureraltung) Einfügen von unter Eraltung von Fast- Vollständigkeit Wegen der alancierungseigenscaft mussten alle Knoten vertausct werden. delson-velskij und Landis sclugen folgende alancierungseigenscaft vor: 45 egriffsklärung: (VL-aum) 57 Ein binärer Sucbaum eißt VL-ausgeglicen, öenbalanciert und ein VL-aum, wenn für jeden Knoten K gilt: ie Höe des linken Unterbaums von K untersceidet sic von der Höe des recten Unterbaums öcstens um Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 6 Vorgeen: Gestaltsanalyse von VL-äumen Rotationen auf Sucbäumen atenstruktur für VL-äume Heraussucen alancieren nac Einfügen iskussion Gestaltsanalyse: Frage: Hat jeder VL-aum logaritmisce Höe? (ies ist die Voraussetzung, alle Grundoperationen mit logaritmiscen ufwand realisieren zu können.) Lemma: Für die Höe eines VL-aums mit N Knoten gilt: eweis: siee Vorlesung * log (N +) + Rotationen auf Sucbäumen: Eine Rotation ist ein lokale Reorganisation eines Sucbaums, bei der die Sucbaumeigenscaft eralten bleibt, die Höen der Unterbäume aber ggf. verändert werden. Rotation nac rects (nac links entsprecend): Es gilt: - alle Sclüssel aus sind ect kleiner als - alle Sclüssel aus sind ect größer als und ect kleiner als - alle Sclüssel aus sind ect größer als - < Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 64

2 oppelrotation links-rects (rects-links entsprecend): uc bei der oppelrotation bleibt die Sucbaum- Eigenscaft eralten. atenstruktur für VL äume: ur Realisierung von VL-äumen geen wir von der Implementierung der natürlicen Sucbäume aus: - ie aumknoten bekommen ein zusätzlices ttribut bf (balance factor), in dem die Höendifferenz von linkem und rectem Unterbaum gespeicert wird. - ie Operationen zum Einfügen und Löscen müssen angepasst werden (ggf. wird dazu auc die atenstruktur erweitert) Poetzsc-Heffter, Universität Kaiserslautern 65 Ein ictionary wird repräsentiert durc ein Objekt, das eine Referenz auf einen inärbaum entält: er leere inärbaum wird durc die null-referenz repräsentiert (leeres ictionary). Jeder Knoten eines nictleeren inärbaums wird durc ein Objekt vom Typ VLNode repräsentiert mit Instanzvariablen für: - den Sclüssel - die aten - die Referenz auf das linke Kind - die Referenz auf das recte Kind - die Höendifferenz bf ie aumknoten sind gekapselt und können von außen nur indirekt über die Grundoperationen manipuliert werden. atenstruktur-invarianten: - Sclüssel kommen nict doppelt vor. - ie inärbäume sind Sucbäume. - ie Höendifferenz ist korrekt belegt Poetzsc-Heffter, Universität Kaiserslautern 66 class VLTreeictionary implements ictionary { private VLNode root; private static class VLNode { private int key; private Object data; private VLNode left, rigt; private int bf; private VLNode( int k, Object d ) { key = k; data = d; public VLTreeictionary() { root = null; // leeres ictionary public Object get( int key ) { private VLNode searcnode( VLNode current, int key) { public void put(int key, Object value){ private VLNode insertnode( VLNode current, int key, Object v ){ private VLNode rotate(vlnode current){ public void remove( int key ) { trow RuntimeException("not available"); Poetzsc-Heffter, Universität Kaiserslautern 67 Heraussucen: - Ist der Wurzelsclüssel gleic dem gesucten Sclüssel, terminiert das Verfaren. - Ist der Wurzelsclüssel größer als der gesucte Sclüssel, suce im linken Unterbaum weiter. - Ist der Wurzelsclüssel kleiner als der gesucte Sclüssel, suce im recten Unterbaum weiter. public Object get( int key ) { VLNode tn = searcnode(root,key); if( tn == null ) { return null; else { return tn.data; private VLNode searcnode( VLNode current, int key) { if( current!=null && key!= current.key ) { if( current.key > key ) { return searcnode( current.left, key ); else { // current.key < key return searcnode( current.rigt, key ); return current; Poetzsc-Heffter, Universität Kaiserslautern 68

3 Einfügen: eispiel: Entwicklung des lgoritmus in 4 Scritten: Einfügen von 33: 45. Einfügen one ktualisieren von bf und Rotation. ktualisieren von bf, aber one Rotation ktualisieren von bf mit ufruf der Rotation 4. Rotation mit ktualisieren von bf an den rotierten Knoten Einfügen one ktualisieren von bf und Rotation : - Neue Knoten werden immer als lätter eingefügt. - ie Position des lattes wird durc den Sclüssel des neuen Knotens festgelegt. - eim ufbau eines aumes ergibt der erste Knoten die Wurzel. - Ein Knoten wird in den linken Unterbaum der Wurzel eingefügt, wenn sein Sclüssel kleiner ist als der Sclüssel der Wurzel; in den recten, wenn er größer. ieses Verfaren wird rekursiv fortgesetzt, bis die Einfügeposition bestimmt ist Poetzsc-Heffter, Universität Kaiserslautern class VLTreeictionary implements ictionary { private VLNode root; public void put( int key, Object value ){ if( root == null ) { root = new VLNode(key, value); else { VLNode res = insertnode(root,key,value); if( res!=null ) root = res; Poetzsc-Heffter, Universität Kaiserslautern 6 49 Rekursives ufsucen der Einfügestelle und Einfügen: void insertnode( VLNode current, int key, Object v ) { // pre: current!= null // if( key < current.key ) { if ( current.left == null ) { current.left = new VLNode(key,v); else { insertnode( current.left, key, v); else if( key > current.key ) { if ( current.rigt == null ) { current.rigt = new VLNode(key,v); else { insertnode( current.rigt, key, v); else { // key == current.key current.data = v;. ktualisieren von bf, aber one Rotation lgoritmisces Vorgeen: - Einfügen wie oben. - ktualisieren von bf soweit nötig: er Höendifferenz bf kann sic nur bei Knoten ändern, die auf dem Pfad von der Wurzel zum eingefügten Knoten liegen. Nur an diesen Knoten kann die VL-Eigenscaft verletzt werden. - estimmen des kritiscen Knotens KK; das ist der näcste Elternknoten zum eingefügten Knoten mit bf=. - Rotiere bei KK, Rotationstyp ergibt sic aus Pfad von eingefügtem Knoten zu KK. Wir werden zeigen, dass durc die Rotation der Unterbaum mit Wurzel KK die gleice Höe erält, die er vor dem Einfügen atte. ie alancierungsfaktoren an Knoten oberalb von KK braucen also nict aktualisiert zu werden Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 6

4 Einfügen mit ktualisieren von bf: private boolean insertnode ( VLNode current, int key, Object v ){ /* pre: current!= null ens: result==true, wenn (current) > old((current)) result==false, sonst */ if( key < current.key ) { if( current.left == null ) { current.left = new VLNode(key,v); current.bf++; // current.bf < return (current.bf>); else { if( insertnode(current.left,key,v) ){ current.bf++; return (current.bf>); else { return false; else if( key > current.key ) { // symmetrisc auf recter Seite else { // key == current.key current.data = v; return false; Poetzsc-Heffter, Universität Kaiserslautern 63 emerkung: ie obige Fassung veranscaulict die Vorgeensweise, auf dem Rückweg von einem rekursiven bstieg Operationen auszufüren. ie obige Fassung wird so nict benötigt, da bf nur bis zu kritiscen Knoten zu aktualisieren ist. Ist der kritisce Knoten gefunden, wird rotiert und damit die ktualisierungen oberalb unnötig. 3. Einfügen mit ktualisieren von bf und Rotation: Problem: ie Rotation mact es nötig, den Elternknoten des kritiscen Knotens zu modifizieren. Idee: Statt true/false liefert die Einfüge-Operation: - null, wenn sic die Höe geändert at. - ie Referenz auf den möglicerweise rotierten Unterbaum, wenn sic die Höe nict geändert at; desalb ist ggf. root zu modifizieren: public void put( int key, Object val ) { if( root == null ) { root = new VLNode(key, value); else { VLNode res = insertnode(root,key,val); if( res!=null ) { root = res; Poetzsc-Heffter, Universität Kaiserslautern 64 private VLNode insertnode ( VLNode current, int key, Object v ) { if( key < current.key ) { if( current.left == null ) { current.left = new VLNode(key,v); current.bf++; // current.bf < return (current.bf>)? null : current; else { VLNode res = insertnode(current.left,key,v); if( res == null ) { current.bf++; if( current.bf < ) { return (current.bf>)?null:current; else { return rotate( current ); else { current.left = res; return current; else if( key > current.key ) { // symmetrisc auf recter Seite else { // key == current.key current.data = v; return current; 4. Rotation mit ktualisieren von bf: Wir betracten die Situation, dass bf im kritiscen Knoten KK auf gestiegen ist, also links eingefügt wurde. ie Unterbäume von KK bezeicnen wir mit li, li.li, li.re etc. a (li) = (re)+, kann der Wurzelknoten von li nict der neu eingefügte Knoten KN sein. Es gibt vier untersciedlice Fälle: - KN ist in li.li eingefügt (rects-rotation) - KN ist in li.re eingefügt; bf ist abängig davon, ob KN neue Wurzel von li.re (links-rects-rotation) KN in li.re.li eingefügt KN in li.re.re eingefügt Fall: links-links vor Einfügen: + + (links-rects-rotation) (links-rects-rotation) Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 66

5 nac Einfügen: eacte: ie Höe nac der Rotation ist gleic der Höe vor dem Einfügen. amit wird die VL- Eigenscaft der aumteile oberalb des kritiscen Knotens nict beeinflusst. Fall: links-rects: vor Einfügen: nac Rotation: (der Fall rects-rects get analog) Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 68 nac Einfügen links-rects: nac Einfügen links-rects-links: nac Rotation: nac Rotation: (der Fall rects-links get analog) (der Fall rects-links-rects get analog) Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 63

6 nac Einfügen links-rects-rects: nac Rotation: Poetzsc-Heffter, Universität Kaiserslautern 63 - (der Fall rects-links-links get analog) - - private VLNode rotate( VLNode current ) { // pre: current!= null && current.bf == // if( current.bf == ) { VLNode cleft = current.left; if( cleft.bf == ) { // Variante LL current.left = cleft.rigt; current.bf = ; cleft.rigt = current; cleft.bf = ; return cleft; else { // LR-Varianten VLNode clrigt = cleft.rigt; current.left = clrigt.rigt; cleft.rigt = clrigt.left; clrigt.left = cleft; clrigt.rigt = current; if( clrigt.bf == ) { // LR(a) current.bf = -; cleft.bf = ; else if( clrigt.bf == - ) { // LR(b) current.bf = ; cleft.bf = ; else { // degenerierter Fall current.bf = ; cleft.bf = ; clrigt.bf = ; return clrigt; else { // current.bf == - ) // symmmetrisc fuer rects Poetzsc-Heffter, Universität Kaiserslautern 63 iskussion: eim Einfügen eines Knotens at der rebalancierte Unterbaum stets die gleice Höe wie vor dem Einfügen: - er restlice aum wird nict beeinflusst. - Höcstens eine Rotation wird benötigt. eim Löscen können ungünstigsten Falls so viele Rotationen erforderlic sein, wie es Knoten auf dem Pfad von der Löscposition bis zur Wurzel gibt. a der ufwand für eine Rotation aber konstant ist, ergeben sic maximal O(log N) Operationen. egriffsklärung: (Hasfunktion, -tabelle) Seien - S die Menge der möglicen Sclüsselwerte (Sclüsselraum) und - die Menge von dressen in einer Hastabelle (im Folgenden ist immer die Indexmenge.. m- eines Feldes). Eine Hasfunktion : S ordnet jedem Sclüssel eine dresse in der Hastabelle zu. ls Hastabelle (HT) der Größe m bezeicnen wir einen Speicerbereic, auf den über die dressen aus mit konstantem ufwand (unabängig von m) zugegriffen werden kann.. Hasing/Streuspeicerung nstatt durc scrittweises Vergleicen von Sclüsseln auf einen atensatz zuzugreifen, versuct man bei Has- oder Streuspeicerverfaren aus dem Sclüssel die Positionsinformation des atensatzes (z.. den Feldindex) zu berecnen. Für viele praktisc relevante Szenarien erreict man dadurc atenzugriff mit konstantem ufwand. Entält S weniger Elemente als, kann injektiv sein: Für alle s,t in S: s t => (s) (t) d.. die Hasfunktion ordnet jedem Sclüssel eine eineindeutige dresse zu. ann ist perfektes Hasing möglic. ndernfalls können Kollisionen auftreten: Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 634

7 Klassifikation von Hasverfaren: egriffsklärung: (Kollision, Synonym) wei Sclüssel s,t kollidieren bezüglic einer Hasfunktion, wenn (s) = (t). ie Sclüssel s und t nennt man dann Synonyme. ie Menge der Synonyme bezüglic einer dresse a aus eißt die Kollisionsklasse von a. Ist scon ein atensatz mit Sclüssel s in der Hastabelle gespeicert, nennt man einen atensatz mit einem Synonym von s einen Überläufer. nforderungen an Hasfunktionen: Eine Hasfunktion soll - sic einfac und effizient berecnen lassen (konstanter ufwand bzgl. S) - zu einer möglicst gleicmäßigen elegung der Hastabelle füren - möglicst wenige Kollisionen verursacen Poetzsc-Heffter, Universität Kaiserslautern 635 Hasverfaren untersceiden sic durc die Hasfunktion durc die Kollisionsauflösung: - extern: Überläufer werden in atenstrukturen außeralb der Hastabelle gespeicert. - offen: Überläufer werden an noc offenen Positionen der Hastabelle gespeicert. durc die Wal der Größe von der Hastabelle: - statisc: ie Größe wird bei der Erzeugung festgelegt und bleibt unverändert. - dynamisc: ie Größe kann angepasst werden. Wir betracten im Folgenden eine Realisierung einer statiscen Hastabelle mit externer Kollisionsauflösung durc ein ictionary mit binärer Suce. Hasfunktion: Entsceidend ist, dass die Hasfunktion die Sclüssel gut streut. Verbreitetes Verfaren: - Wäle eine Primzal als Hastabellen-Größe. - Wäle den ganzzaligen ivisionsrest als Haswert: private int as( int key ) { return Mat.abs(key) % astable.lengt; Poetzsc-Heffter, Universität Kaiserslautern 636 emerkung: Sclect wäre beispielsweise eine Wal von m = i als Tabellengröße bei dem ivisionsrest-verfaren, da bei inärdarstellung der Sclüssel dann nur die letzten i its relevant sind. atenstruktur: Wir realisieren eine Hastabelle als Implementierung der Scnittstelle ictionary: class Hasictionary implements ictionary { int[] astable; Object[] datatable; private ictionary[] overflowtable; public Hasictionary( int tabsize ) { /* tabsize sollte eine Primzal sein */ astable = new int[tabsize]; datatable = new Object[tabsize]; overflowtable = new ictionary[tabsize]; private int as( int key ) { public Object get( int key ) { public void put (int key,object v ){ public void remove( int key ) { Poetzsc-Heffter, Universität Kaiserslautern 637 Sei s ein Sclüssel, (s) sein Haswert. er atenstruktur Hasictionary liegen folgende Invarianten zugrunde: - ie Hastabelle entält den atensatz zu s, wenn astable[ (s) ] == key datatable[ (s) ]!= null ie aten liefert dann datatable[ (s) ]. - lle eingetragenen Elemente der Kollisionsklasse zu (s) befinden sic in der Hastabelle mit Index (s) oder in overflow[(s)]. Wegen Löscens ist es möglic, dass die Hastabelle zu (s) keinen Eintrag at, sic trotzdem aber Einträge in der Überlauftabelle zu (s) befinden! Löscen: public void remove( int key ) { int ix = as(key); if( astable[ix] == key && datatable[ix]!= null ) { datatable[ix] = null; else if( overflowtable[ix]!= null ) { overflowtable[ix].remove(key); Poetzsc-Heffter, Universität Kaiserslautern 638

8 Sucen: public Object get( int key ) { int ix = as(key); if( astable[ix] == key && datatable[ix]!= null ) { return datatable[ix]; else if( overflowtable[ix] == null ) { return null; else { Object v = overflowtable[ix].get(key); if( datatable[ix] == null ) { datatable[ix] = v; overflowtable[ix].remove(key); return v; Einfügen: public void put ( int key, Object value ) { if( value!= null ) { int ix = as(key); if( datatable[ix] == null ) { astable[ix] = key; datatable[ix] = value; else if( astable[ix] == key ) { datatable[ix] = value; else { if( overflowtable[ix] == null ) { overflowtable[ix] = new intreeictionary(); overflowtable[ix].put(key,value); Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 64 iskussion: ie Komplexität der Operationen einer Hastabelle ängt ab von: - der Hasfunktion und dem Füllungsgrad der Tabelle - dem Verfaren zur Kollisionsauflösung ei guter Hasfunktion und kleinem Füllungsgrad kommt man im Mittel mit konstantem ufwand aus. emerkung: Hasverfaren sind ein eispiel dafür, dass man sic nict immer für lgoritmen mit asymptotisc gutem Veralten interessiert. ie Hasfunktion wird dabei benutzt, um komplexere Sclüssel in einfacere, meist ganzzalige Sclüssel abzubilden. a Injektivität meist nur annäerungsweise erreict werden kann, brauct man Kollisionsauflösung. Meist verwendet man dazu offene Kollisionsauflösung. eispiel: (Strings als Sclüssel) In ezeicnerumgebungen (vgl. ESSy, Folie 4) und eklarationstabellen von Übersetzern sind die Sclüssel in natürlicerweise eicenreien. urc Hasing wird jedem ezeicner eine natürlice al als Sclüssel zugeordnet. Unter diesem alsclüssel wird die eklarationsinformation verwaltet. nwendung von Hasverfaren: Hasverfaren werden auc verwendet um Sclüsselräume zu vereinfacen. Wir betracten ier nwendungen mit eicenreicen als Sclüssel. eicenreien als Sclüssel: - Vorteile: bzgl. nwendung der sic direkt ergebende Sclüsseltyp; nict längenbescränkt. - Nacteile: Sclüsselvergleice ser teuer; nict zur Indizierung geeignet Poetzsc-Heffter, Universität Kaiserslautern 64 emerkung: ie praktisce edeutung von Hasverfaren zur Sclüsselvereinfacung wird auc durc die Metode /** Returns a as code value for te object. * Tis metod is supported for te benefit * of astables suc as tose provided by * java.util.hastable */ public native int asode(); in der Java Klasse Object verdeutlict Poetzsc-Heffter, Universität Kaiserslautern 64

9 eobactermuster: ls eispiel einer Klasse, die Objekte nur über deren Scnittstelle ansprict, betracten wir eine nwendung des eobactermusters. ktie name: String kurswert: int * * eobacter void steigen(ktie a) void fallen(ktie a) a über die eobacter nicts bekannt ist, realisiert man sie sinnvollerweise durc einen Scnittstellentyp: interface eobacter { void steigen( ktie a ); void fallen( ktie a ); // Fortsetzung näcste Folie ie ssoziation zwiscen ktien und eobactern implementieren wir durc eine Liste in der Klasse ktie, die alle eobacter der Klasse entält: oersianer oersianer public class ktie { private String name; private int kurswert; private rraylist beobacterliste; ei Realisierung der Klasse ktie ist nur bekannt, dass die eobacter über das Steigen und Fallen des ktienkurses informiert werden wollen. Wie eobacter auf Änderungen reagieren, ist nict bekannt. ie Klassen können also getrennt entwickelt werden. emerkung: as eispiel illustriert eine nwendung des Entwurfmusters eobacter (engl. observer ). ktie( String n, int anfangswert ){ name = n; kurswert = anfangswert; beobacterliste = new rraylist(); public String getname(){ return name; public int getkurswert(){ return kurswert; // Fortsetzung näcste Folie Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 644 eim Setzen des Kurswertes werden auc die eobacter benacrictigt: // Fortsetzung von voriger Folie void setkurswert( int neuerwert ){ int alterwert = kurswert; kurswert = neuerwert>? neuerwert : ; ListIterator it = beobacterliste.listiterator(); if( kurswert > alterwert ) { wile( it.asnext() ){ eobacter b = (eobacter)it.next(); b.steigen( tis ); else { wile( it.asnext() ){ eobacter b = (eobacter)it.next(); b.fallen( tis ); public void anmeldeneobacter( eobacter b ) { beobacterliste.add( b ); ur Illustration von eobacterimplementierungen betracten wir einen oersianer der - von der beobacteten ktien kauft, wenn deren Kurs unter 3 Euro fällt und er noc keine besitzt, - verkauft, wenn der Kurs über 4 Euro steigt. public class oersianer implements eobacter{ private boolean besitzt = false; void fallen( ktie a ) { if( a.getkurswert() < 3 &&!besitzt ) { System.out.println("Kauf "+a.getname()); besitzt = true; void steigen( ktie a ) { if( a.getkurswert() > 4 && besitzt ) { System.out.print("Verkauf "+a.getname()); System.out.println(); besitzt = false; nwendungsfragment: ktie vw = new ktie("vw", 354); eobacter peter = new oersianer(); vw.anmeldeeobacter( peter ); Poetzsc-Heffter, Universität Kaiserslautern Poetzsc-Heffter, Universität Kaiserslautern 646

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51

RWTH Aachen, Lehrstuhl für Informatik IX Kapitel 3: Suchen in Mengen - Datenstrukturen und Algorithmen - 51 RWTH Aacen, Lerstul für Informatik IX Kapitel 3: Sucen in Mengen - Datenstrukturen und Algoritmen - 51 Sucbäume Biser betractete Algoritmen für Suce in Mengen Sortierte Arrays A B C D - Nur sinnvoll für

Mehr

Übersicht. Einführung Universelles Hashing Perfektes Hashing

Übersicht. Einführung Universelles Hashing Perfektes Hashing Hasing Übersict Einfürung Universelles Hasing Perfektes Hasing 2 Das Wörterbuc-Problem Gegeben: Universum U = [0 N-1], wobei N eine natürlice Zal ist. Ziel: Verwalte Menge S U mit folgenden Operationen.

Mehr

6. Binäre Suchbäume. Binäre Suchbäume

6. Binäre Suchbäume. Binäre Suchbäume 6. Binäre Sucbäume Natürlice binäre Sucbäume - Begriffe und Definitionen - Grundoperationen: Einfügen, sequentielle Suce, direkte Suce, öscen - Bestimmung der mittleren Zugriffskosten Balancierte Binärbäume

Mehr

Binäre Suchbäume. 6. Binäre Suchbäume. Einfügen in binären Suchbäumen

Binäre Suchbäume. 6. Binäre Suchbäume. Einfügen in binären Suchbäumen 6. Binäre Sucbäume Natürlice binäre Sucbäume - Begriffe und Definitionen - Grundoperationen: Einfügen, sequentielle Suce, direkte Suce, öscen - Bestimmung der mittleren Zugriffskosten Balancierte Binärbäume

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Abstrakte Datentypen: Maps Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 48 Abstrakte Datentypen:

Mehr

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger.

Binäre Suchbäume. Organisatorisches. VL-10: Binäre Suchbäume. (Datenstrukturen und Algorithmen, SS 2017) Gerhard Woeginger. Organisatorisches VL-10: inäre Suchbäume (Datenstrukturen und lgorithmen, SS 17) Gerhard Woeginger Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Sprechstunde: Mittwoch 11: 12:00 Übungen: Tim Hartmann,

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition

Mehr

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Motivation. Vorlesung 10: Binäre Suchbäume Übersicht Datenstrukturen und lgorithmen Vorlesung : Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-/dsal/ 1 Suche Einfügen

Mehr

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang. WS 07/08

Bäume. Prof. Dr. Christian Böhm. in Zusammenarbeit mit Gefei Zhang.   WS 07/08 Bäume Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Standardimplementierungen für Bäume kennen lernen 3 Bäume (abstrakt) Bäume sind

Mehr

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen

Bäume. Martin Wirsing. Ziele. Implementierung von Knoten. Bäume (abstrakt) Standardimplementierungen für Bäume kennen lernen 2 Ziele Bäume Standardimplementierungen für Bäume kennen lernen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 02/0 4 Bäume (abstrakt) Implementierung von Knoten Bäume

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Was gefällt Ihnen? Sehr ausführliches Skript Fragen / Aufgaben in der Vorlesung Praktische Beispiele Tolle Aufgabenblätter

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Lernziele Die Definition wichtiger Begriffe im Zusammenhand mit Bäumen zu kennen. Markierte Bäumen, insbesondere Suchbäume,

Mehr

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 - ! 1. Rekursive Algorithmen! 2. Rekursive (dynamische) Datenstrukturen II.3.2 Rekursive Datenstrukturen - 1 - Ausdruck Ausdruck Grundwert ( Typ ) Präfix-Operator Name Methodenaufruf [ Ausdruck ] ( Ausdruck

Mehr

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden

B6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren

Mehr

Geordnete Binärbäume

Geordnete Binärbäume Geordnete Binärbäume Prof. Dr. Martin Wirsing in Zusammenarbeit mit Gilbert Beyer und Christian Kroiß http://www.pst.ifi.lmu.de/lehre/wise-09-10/infoeinf/ WS 09/10 Einführung in die Informatik: Programmierung

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda Bäume O1 O2 Text O3 O4 O5 O6 O7 Prof. Dr. Margarita Esponda SS 2012 22. ALP2-Vorlesung, M. Esponda Inhalt 1. Einführung 2. Warum Bäume? 3. Listen und Arrays vs. Bäume 4. Einfach verkettete binäre Suchbäume

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

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

Ü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

ALP II Dynamische Datenmengen

ALP II Dynamische Datenmengen ALP II Dynamische Datenmengen Teil III Iteratoren Iterator-Objekt O1 O2 O3 O4 SS 2012 Prof. Dr. Margarita Esponda 22. ALP2-Vorlesung, M. Esponda 2 Motivation: Iteratoren Wir haben für die Implementierung

Mehr

4.3.2 Ableitungsregeln

4.3.2 Ableitungsregeln Vorbereitungskurs auf die Aufnameprüfung der ETH: Matematik 4.3.2 Ableitungsregeln Der Differentialquotient [s. 43] zur Definition der Ableitung beinaltet eine Grenzwertbildung Limes), welce meist dadurc

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

3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl:

3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen. Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort 3. Funktionales Programmieren 3.2 Algorithmen auf Listen und Bäumen Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern

Mehr

Bäume. Martin Wirsing. Ziele. Baumknoten. Bäume - 2-dimensionale Listen. Standardimplementierungen für Bäume kennenlernen

Bäume. Martin Wirsing. Ziele. Baumknoten. Bäume - 2-dimensionale Listen. Standardimplementierungen für Bäume kennenlernen 2 Ziele Bäume Standardimplementierungen für Bäume kennenlernen Das Composite-Muster kennenlernen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl, Piotr Kosiuczenko, Dirk Pattinson 06/03 3 4 Bäume -

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortierte Folgen Maike Buchin 30.5., 1.6., 13.6.2017 Sortierte Folgen Häufiges Szenario: in einer Menge von Objekten mit Schlüsseln (aus geordnetem Universum) sollen Elemente

Mehr

Informatik II, SS 2014

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

Mehr

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl:

Bemerkung: Heapsort. Begriffsklärung: (zu Bäumen) Begriffsklärung: (zu Bäumen) (2) Heapsort verfeinert die Idee des Sortierens durch Auswahl: Heapsort Bemerkung: Heapsort verfeinert die Idee des Sortierens durch Auswahl: Minimum bzw. Maximum wird nicht durch lineare Suche gefunden, sondern mit logarithmischem Aufwand durch Verwendung einer besonderen

Mehr

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Robert Elsässer u.v.a. Paderborn, 29. Mai 2008 Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6 Aufgabe 1 (6 Punkte): Zunächst sollte klar sein, daß ein vollständiger Binärer

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

Typische Struktur eines Baumknotens ( Class TreeNode ):

Typische Struktur eines Baumknotens ( Class TreeNode ): inäre Suchbäume 1 Suchbäume unterstüten alle unten angegebenen Operationen für dynamische Mengen K effiient: Search(K,k) ---- Suche ein Element x von K mit Schlüssel k. Insert(K,x) ---- Füge das Element

Mehr

r 11 r 12 r 13 0 r 22 r r 33 l ik r kj die Gleichungen: k= (II) 2 (I) = 3 2 1

r 11 r 12 r 13 0 r 22 r r 33 l ik r kj die Gleichungen: k= (II) 2 (I) = 3 2 1 Tecnisce Universität Berlin Wintersemester 004/005 Fakultät II; Institut für Matematik Prof. Dr. G. Bärwolff/C. Mense.0.005 Probeklausur zur LV Numerik für Informatiker en Aufgabe a Berecnen Sie die LU-Zerlegung

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 17/18. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

8. Differentiation. f(x) f(x 0 ) =: f,x0 (x) lim

8. Differentiation. f(x) f(x 0 ) =: f,x0 (x) lim 8. Differentiation Sei I R ein Intervall. Eine Funktion f : I R eißt in x 0 I differenzierbar (Steno: diffbar), wenn der für x I, x x 0 erklärte Differenzenquotient f(x) f(x 0 ) =: f,x0 (x) nac x 0 stetig

Mehr

TU Dresden Fakultät Mathematik Institut für Numerische Mathematik 1

TU Dresden Fakultät Mathematik Institut für Numerische Mathematik 1 TU Dresden Fakultät Matematik Institut für Numerisce Matematik Lösung zur Aufgabe 4 (a) des 9. Übungsblattes größtmöglicer Definitionsbereic: Die Funktion ist überall definiert, außer an der Stelle = 3

Mehr

Anleitung zur Berechnung von Ableitungsfunktionen

Anleitung zur Berechnung von Ableitungsfunktionen Matematik 11d 7..009 Stefan Krissel Anleitung zur Berecnung von Ableitungsfunktionen Prolog Es gibt nict das Verfaren zur Berecnung der Ableitungsfunktion, genausowenig wie es das Verfaren zum Screiben

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Übungsblatt (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Allgemeine Hinweise: Die Hausaufgaben sollen in Gruppen von je bis Studierenden

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

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139

Grundlagen der Informatik / Algorithmen und Datenstrukturen. Aufgabe 139 Aufgabe 139 Aufgabe 139 Aufgabenstellung Stellen Sie den folgenden in Feldbaum-Darstellung beschriebenen Binärbaum a) graphisch (welcher Knoten ist die Wurzel?), b) in halbsequentieller Darstellung, c)

Mehr

Vorlesung für Schüler

Vorlesung für Schüler Universität Siegen Facbereic Matematik Vorlesung für Scüler 1.12.2 Emmy-Noeter-Campus Prof. Dr. H. J. Reinardt Computerlösungen dynamiscer Probleme Zusammenfassung Es werden zunäcst einface dynamisce Probleme

Mehr

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

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

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 14. Bäume. Bäume 1 Kapitel 14 Bäume Bäume 1 Ziele Den Begriff des Baums in der Informatik kennenlernen Bäume als verkettete Datenstruktur repräsentieren können Rekursive Funktionen auf Bäumen verstehen und schreiben können

Mehr

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge

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

VORKURS MATHEMATIK DRAISMA JAN, ÜBERARBEITET VON BÜHLER IRMGARD UND TURI LUCA

VORKURS MATHEMATIK DRAISMA JAN, ÜBERARBEITET VON BÜHLER IRMGARD UND TURI LUCA VORKURS MATHEMATIK DRAISMA JAN, ÜBERARBEITET VON BÜHLER IRMGARD UND TURI LUCA Mittwoc: Ableiten, Kurvendiskussionen, Optimieren, Folgen und Reien Betracte auf einem Hügel einen Weg, dessen Seitenansict

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

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen! Informatik für Informationsmanager II SS 2006 Universität Koblenz-Landau Institut für Informatik Prof. Dr. Steffen Staab Dr. Manfred Jackel Abschlussklausur 04.08.2006 Lösung Bitte in Druckschrift leserlich

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 15 Einstieg in die Informatik mit Java Collections Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 15 1 Überblick Collections 2 Hierarchie von Collections 3 Verwendung

Mehr

Suchen und Sortieren Binäre Suchbäume

Suchen und Sortieren Binäre Suchbäume Löschen (Folie 63, Seite 34 im Skript) In der Klasse Searchtree K, : Java public void delete(k k) { if(root == null) return; if(root.left == null && root.right == null && root.key == k) root = null; else

Mehr

Algorithmik 1. Organisatorisches. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2 Programmiersysteme Martensstraße Erlangen

Algorithmik 1. Organisatorisches. Friedrich-Alexander-Universität Erlangen-Nürnberg. Informatik 2 Programmiersysteme Martensstraße Erlangen Organisatorisches lgorithmik 1 Evaluation der Lehre Unmittelbar vor der Vorlesung Gerücht Super-GU Näheres später Prof. r. Michael Philippsen Friedrich-leander-Universität Erlangen-Nürnberg Informatik

Mehr

Lösung - Serie 3. D-MAVT/D-MATL Analysis I HS 2017 Dr. Andreas Steiger. 1. MC-Aufgaben (Online-Abgabe)

Lösung - Serie 3. D-MAVT/D-MATL Analysis I HS 2017 Dr. Andreas Steiger. 1. MC-Aufgaben (Online-Abgabe) D-MAVT/D-MATL Analysis I HS 07 Dr. Anreas Steiger Lösung - Serie 3. MC-Aufgaben (Online-Abgabe). Es sei ie Funktion f : [0, ) [0, ) efiniert urc f() = ln( + ), wobei er Logaritmus ln zur Basis e ist. Welce

Mehr

Aufgaben NF 11; Seite 1

Aufgaben NF 11; Seite 1 Aufgabe Ref 1: Gegeben ist die Klasse Schueler public class Schueler { private String name, vorname, kurs; // Konstruktor public Schueler(String n, String vn, String k) { name=n; vorname=vn; kurs=k; public

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

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 05: Generics Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1 / 19 Inhalt Generics

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

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1 Kapitel 13 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

Mehr

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 15/16. Kapitel 12. Listen. Listen 1 Kapitel 12 Listen Listen 1 Ziele Implementierungen für Listen kennenlernen Einfach verkettete und doppelt verkettete Listen verstehen Listen-Implementierungen in der Java-Bibliothek kennenlernen Durch

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

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

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

6. Die Exponentialfunktionen (und Logarithmen).

6. Die Exponentialfunktionen (und Logarithmen). 6- Funktionen 6 Die Eponentialfunktionen (und Logaritmen) Eine ganz wictige Klasse von Funktionen f : R R bilden die Eponentialfunktionen f() = c ep( ) = c e, ier sind, c feste reelle Zalen (um Trivialfälle

Mehr

( ), und legen deshalb eine Ebene fest. Als Aufpunkt dient ein beliebiger Punkt von g oder h, als Spannvektoren

( ), und legen deshalb eine Ebene fest. Als Aufpunkt dient ein beliebiger Punkt von g oder h, als Spannvektoren Lösungen zur analytiscen Geometrie, Buc S. 9f. a) E in die Parameterform umwandeln: x = x + x + Wäle: x = ; x = x = + E : X = x x x = + + = + In F einsetzen: + + = + = = In E einsetzen: s: X = + + ( )

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Übung 3: Die generische Klasse BinärerSuchbaum in Java 1 Datenelemente der Klasse BinaererSuchbaum Das einzige Datenelelement in dieser Klasse ist die Wurzel vom Typ BinaerBaumknoten. Die Klasse BinaerBaumknoten

Mehr

Informatik II Übung 7 Gruppe 7

Informatik II Übung 7 Gruppe 7 Informatik II Übung 7 Gruppe 7 Leyna Sadamori leyna.sadamori@inf.ethz.ch Informatik II Übung 7 Leyna Sadamori 10. April 2014 1 Administratives Nächste Übung fällt leider aus! Bitte eine andere Übung besuchen.

Mehr

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1. 4.4 Implementierung von Bäumen 4.4.1 Implementierung vollständiger Bäume mit Feldern 1 3 2 7 9 3 4 8 5 17 12 10 6 7 8 13 11 18 9 10 Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Verkettung der Überläufer) Prof. Dr. Susanne Albers Möglichkeiten der Kollisionsbehandlung Kollisionsbehandlung: Die Behandlung

Mehr

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur

Institut für Programmierung und Reaktive Systeme 17. Juli Programmieren II. Übungsklausur Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 17. Juli 2015 Hinweise: Klausurtermine: Programmieren II Übungsklausur Programmieren I: 7. September

Mehr

Unterlagen zu endlichen Körpern. Erhard Aichinger

Unterlagen zu endlichen Körpern. Erhard Aichinger Unterlagen zu endlicen Körpern Erard Aicinger Linz, im November 2005 Alle Recte vorbealten 1 KAPITEL 1 Endlice Körper 1 Definition endlicer Körper DEFINITION 11 Ein Ring mit Eins R R,,,, 0, 1 ist ein

Mehr

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Mengen. Binäre Suchbäume. Mengen: Anwendungen (II) Mengen: Lösung mit Listen 12/3/12. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps // Mengen Binäre Suchbäume Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps n Ziel: ufrechterhalten einer Menge (hier: ganzer Zahlen) unter folgenden Operationen: n eines Elements n eines Elements

Mehr

Datenstruktur Baum Software Entwicklung 1

Datenstruktur Baum Software Entwicklung 1 Datenstruktur Baum Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller Bäume gehören zu den wichtigsten in der Informatik auftretenden Datenstrukturen. [Ottmann, Widmayer: Algorithmen

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

Schnittstellen, Stack und Queue

Schnittstellen, Stack und Queue Schnittstellen, Stack und Queue Schnittstelle Stack Realisierungen des Stacks Anwendungen von Stacks Schnittstelle Queue Realisierungen der Queue Anwendungen von Queues Hinweise zum Üben Anmerkung: In

Mehr

Info B VL 11: Innere Klassen/Collections

Info B VL 11: Innere Klassen/Collections Info B VL 11: Innere Klassen/Collections Objektorientiere Programmierung in Java 2003 Ute Schmid (Vorlesung) Elmar Ludwig (Übung) FB Mathematik/Informatik, Universität Osnabrück Info B VL 11: Innere Klassen/Collections

Mehr

1 Analytische Geometrie und Grundlagen

1 Analytische Geometrie und Grundlagen $Id: vektor.tex,v 1.41 2018/05/08 15:50:54 k Exp $ 1 Analytisce Geometrie und Grundlagen 1.5 Abstände und Winkel Am Ende der letzten Sitzung atten wir eine metrisce Form des Stralensatzes ergeleiten, gegeben

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

Informatik II - Übung 07

Informatik II - Übung 07 Informatik II - Übung 07 Katja Wolff katja.wolff@inf.ethz.ch Besprechung Übungsblatt 6 Informatik II Übung 07 12.04.2017 2 Übungsblatt 6 1.) Klassen, Schnittstellen, Typumwandlung 2.) Schnittstellen und

Mehr

Übersicht. Einfache Suche. Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren

Übersicht. Einfache Suche. Hashing Skip-Lists Mengen Sortieren Order-Statistics. 2 Suchen und Sortieren Übersicht Einfache Suche Hashing Skip-Lists Mengen Sortieren Order-Statistics (Folie 6, Seite 37 im Skript) 5 6 1 4 Als assoziatives Array geeignet Schlüssel aus geordneter Menge Linke Kinder kleiner,

Mehr

Interface. So werden Interfaces gemacht

Interface. So werden Interfaces gemacht Design Ein Interface (=Schnittstelle / Definition) beschreibt, welche Funktionalität eine Implementation nach Aussen anzubieten hat. Die dahinter liegende Algorithmik wird aber der Implementation überlassen.

Mehr

Jgst. 11/I 1.Klausur

Jgst. 11/I 1.Klausur Jgst. /I.Klausur..00 A. Bestimme den Scnittpunkt und den Scnittwinkel der beiden folgenden Geraden: g : x y = 5 : + y = 5x Zunäcst müssen die beiden Geraden auf Normalform gebract werden: x y = 5 y = x

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

Algorithmen und Datenstrukturen Musterlösung 5

Algorithmen und Datenstrukturen Musterlösung 5 Algorithmen und Datenstrukturen Musterlösung 5 Martin Avanzini Thomas Bauereiß Herbert Jordan René Thiemann

Mehr

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst.

Einführung Elementare Datenstrukturen. Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen (Folie 28, Seite 15 im Skript) Der Konstruktor muß den Listenkopf head erzeugen. Der Vorgänger und Nachfolger von head ist head selbst. Einführung Elementare Datenstrukturen

Mehr

Datenstruktur Baum und Rekursion Software Entwicklung 1

Datenstruktur Baum und Rekursion Software Entwicklung 1 Datenstruktur Baum und Rekursion Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Datenstruktur Baum Bäume gehören zu den wichtigsten in der Informatik auftretenden Datenstrukturen.

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

11. Elementare Datenstrukturen

11. Elementare Datenstrukturen 11. Elementare Datenstrukturen Definition 11.1: Eine dynamische Menge ist gegeben durch eine oder mehrer Mengen von Objekten sowie Operationen auf diesen Mengen und den Objekten der Mengen. Dynamische

Mehr

Der Hauptsatz der Differential und Integralrechnung

Der Hauptsatz der Differential und Integralrechnung Der Hauptsatz der Differential und Integralrecnung Micael Karkulik, Stepan Scmeissl Präsentation für Logik als Arbeitssprace ê Präsentationstecnik 2 Inalt: 1.0 Zusammenfassung 2.0 Einleitung 3.0 Der Hauptsatz

Mehr