Algorithmen und Datenstrukturen 11

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

Programmieren I. Kapitel 13. Listen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

17. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

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

6/23/06. Universelles Hashing. Nutzen des Universellen Hashing. Problem: h fest gewählt es gibt ein S U mit vielen Kollisionen

Wiederholung aus SWE2

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

Programmieren 2 Java Überblick

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

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

Verkettete Datenstrukturen: Listen

Übung Algorithmen und Datenstrukturen

Verkettete Listen. DVG Verkettete Listen 1

Info B VL 14: Java Collections/Reflections

Aufgaben NF 11; Seite 1

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

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

Informatik II Prüfungsvorbereitungskurs

Teil VII. Hashverfahren

Schnittstellen, Stack und Queue

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Themen. Hashverfahren. Stefan Szalowski Programmierung II Hashverfahren

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 4 ArrayList, PriorityQueue, HashSet und HashMap

8. Hashing Lernziele. 8. Hashing

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

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Kapitel 12: Induktive

Info B VL 8: Abstrakte Klassen & Interfaces

Algorithmen und Datenstrukturen in Java Jiri Spale, Algorithmen und Datenstrukturen in Java 1

Modellierung und Programmierung 1

Algorithmen und Datenstrukturen Tafelübung 11. Jens Wetzl 18. Januar 2012

Algorithmen und Datenstrukturen

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

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Grundlagen Polymorphismus Eigenschaften virtueller Klassen Mehrfachvererbung bei ROOT. Mehrfache Vererbung. Daniel Beneckenstein. 21.

JAVA KURS COLLECTION

Programmiermethodik 3. Klausur Lösung

public interface Stack<E> { public void push(e e); public E pop();

ALP II Dynamische Datenmengen Datenabstraktion

Objektorientierte Programmierung

Programmierkurs Java

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

Vererbung und Polymorphie

6. Verkettete Strukturen: Listen

Software Entwicklung 1

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (07 - Skiplisten) Prof. Dr. Susanne Albers

Effiziente verkettete Listen

Allgemeine Informatik II

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

ADT: Verkettete Listen

Einstieg in die Informatik mit Java

Effiziente verkettete Listen

Kapitel 6 HASHING. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Untersuchen Sie, inwiefern sich die folgenden Funktionen für die Verwendung als Hashfunktion eignen. Begründen Sie Ihre Antwort.

II.4.5 Generische Datentypen - 1 -

Algorithmen und Datenstrukturen

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

Software Entwicklung 1

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

Advanced Programming in C

Java Einführung Collections

Bäume, Suchbäume und Hash-Tabellen

Muster. Informatik 3 (Februar 2004) Name: Matrikelnummer: Betrachten Sie den folgenden Suchbaum. A G H J K M N

Objektorientierte Programmierung

Kapitel 5: Interfaces

Objektorientierte Programmierung

Erinnerung VL vom

Inf 12 Aufgaben

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

Verkettete Listen. Implementierung von einfach verketteten Listen. Implementierung von doppelt verketteten Listen

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Programmiermethodik 1. Klausur

3. Übungsbesprechung Programmkonstruktion

ALP II Dynamische Datenmengen

12 Collections Framework. Interfaces Maps and Collections. Collection Interface. Überblick. Collection = Containterklasse, die andere Objekte enthält.

Neue Features in C# 2.0

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

Java Schulung. Objektorientierte Programmierung in Java Teil V: Die Java Collection Klassen. Prof. Dr. Nikolaus Wulff

Klausur Grundlagen der Informatik 9. April 2015

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Datenstrukturen & Algorithmen Lösungen zu Blatt 5 FS 14

Grundlagen: Algorithmen und Datenstrukturen

Probeklausur: Programmierung WS04/05

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

Vorlesung 09: Mengen. Peter Thiemann SS 2010

4. Hashverfahren. geg.: Wertebereich D, Schlüsselmenge S = {s 1,..., s n } D. Menge A von Speicheradressen; oft: A = {0,..., m 1}

Einführung in C# Teil 3. Matthias Nübling

Kollision Hashfunktion Verkettung Offenes Hashing Perfektes Hashing Universelles Hashing Dynamisches Hashing. 4. Hashverfahren

Algorithmen und Datenstrukturen

Grundkonzepte java.util.list

Objektorientierte Programmierung Studiengang Medieninformatik

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

14. Hashing. Motivation. Naive Ideen. Bessere Idee? k(s) = s i b i

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

12. Hashing. Hashing einfache Methode um Wörtebücher zu implementieren, d.h. Hashing unterstützt die Operationen Search, Insert, Delete.

FAKULTÄT FÜR INFORMATIK

Transkript:

5. Juli 2012

1 Besprechung Blatt 10 Fragen 2 Hashing Allgemein, Hashtablestruktur Sondierungsverfahren 3 Anonyme und innere Klassen Anonyme Klassen Innere Klassen 4 Zirkuläre Arrays 5 Vorbereitung Blatt 11 Hinweise

Fragen Fragen zu Blatt 10?

Allgemein, Hashtablestruktur Zur Erinnerung: Hashfunktion: Key Wert (bzw. dessen Speicheradresse) im Optimalfall wird jede Speicherzelle nur von einem Key verwendet, dadurch direkter Zugriff (O(1)) da man nicht für alle möglichen Keys eigenen Speicherplatz reservieren kann, muss es Überschneidungen geben Quelle: http://en.wikipedia.org/wiki/file:hash_table_3_1_1_0_1_0_0_sp.svg

Allgemein, Hashtablestruktur Kollisionsauflösung mit Listen Hashtablestruktur: Array vom Typ des Listenelements (jedes Arrayelement entspricht einem Listenkopf) Vorteile: beliebig viele Elemente Kollisionen beeinflussen Plätze anderer Hashwerte nicht Nachteile: zusätzliche Listenstruktur notwendig dadurch zusätzlicher Aufwand Vorsicht: Immer vorne oder immer hinten in die Listen einfügen.

Allgemein, Hashtablestruktur Kollisionsauflösung mit Sondieren (open adressing, probing) Hashtablestruktur: Array, dass die Elemente selbst enthält. Vorteile: keine zusätzliche Listenstruktur notwendig Nachteile: max. so viele Elemente, wie Arrayelemente vorhanden sind die Überprüfung, ob ein Eintrag bereits enthalten ist, wird komplizierter

Sondierungsverfahren Sondierungsverfahren es gibt verschiedenste Sondierungsverfahren (linear, quadratisch, double hashing) schlechte Sondierungsverfahren finden nicht alle freien Plätze Beispiel: Hashtable mit Länge 9, Schrittweite 3 jedes Element kann nur in 1 3 des Arrays platziert werden freie Plätze in den restlichen 2 3 können nicht genutzt werden tritt auf, wenn Schrittweite und Arraylänge nicht teilerfremd Primzahlen als Arraylänge verhindern das (Schrittweite<Länge)

Sondierungsverfahren Beispiel: Quadratisches Sondieren Hashtable der Größe 8 Hashfunktion: Anzahl Chars (ohne Leerzeichen) % 8 Namen: Benjamin, B1, B2, Trick, Donald Duck, Track Ist die Sprungweite von der Anzahl bisheriger Sprünge abhängig, sind die Sprungketten kürzer als bei der linearen Sondierung. Einfügen von B3? Kein Platz, Potenzen von 2 durch 8 teilbar.

Anonyme Klassen Anonyme Klassen Grundidee: Deklaration einer Klasse in einer Methode die Klasse hat keinen Namen, aber ist instanziierbar statischer Typ der Klasse ist wie von Vererbung bekannt eine beliebige Vaterklasse (meist nur ein Interface) nur sinnvoll, wenn nur an einer Stelle Instanzen der Klasse angelegt werden sollen typisches Beispiel: Iteratoren Das heißt, dass (von außen) nur die Methoden des später verwendeten statischen Typs aufgerufen werden können.

Anonyme Klassen public Enumeration enumerate() { return new Enumeration() { // anonymous class MyClass cur; { cur = head; } // "constructor" public boolean hasmoreelements() { return (current!= null); } public Object nextelement() { if (cur == null) throw new NoSuchElementException(); Object res = cur; cur = cur.getnext(); // declared in MyClass return res; } }; // return statement -> semicolon required! }

Innere Klassen Innere Klassen Grundidee: Deklaration und Verwendung einer Klasse in einer anderen ( äußeren ) Klasse alle von Klassen bekannten Möglichkeiten sind für innere Klassen ebenso anwendbar (Vererbung, Konstruktoren, Methoden,...) typ. Beispiel: Listenelement-Klassen / Buckets im Hashtable Verwendung an anderen Stellen im Code nur indirekt über die (die innere Klasse enthaltende) äußere Klasse möglich. Meist will man das nicht und verhindert den Zugriff von außen komplett mit dem private-modifikator.

Innere Klassen public class IntegerArray { private int[] data; private class EvenIterator { // inner class private int next = 0; } } public boolean hasnext() { return (next < data.length); } public int getnext() { int res = data[next]; next += 2; return res; }

Zirkuläre Arrays Queue in einem Array statt den Elementen verschiebt man Start- und Endindex Maximallänge, da arraybasiert Index des Folgeelements = (akt. Index + 1) % Arraylänge damit man in O(1) hinzufügen / entfernen kann, muss man den Index des letzten / ersten Elements wissen der jeweils andere Index lässt sich mit der Länge berechnen

Hinweise 11.3: Puffer wie ein Zirkuläres Array in vollen Puffern wird der älteste Eintrag überschrieben beim Überschreiben auf Größe und Startindex aufpassen 11.4: verketteter Puffer Startindex wird im verketteten Ring zu einem Elementzeiger hinzufügen geht in O(1)! wenn ihr die Liste traversiert, macht ihr es falsch und komplizierter

Hinweise 11.1: Hashes Tabellenformat einhalten! bei mehrfachem Sondieren die Bucketnummern hintereinander auflisten zur b) ist keine mathematische Begründung notwendig 11.2: Hashes put und put2 kann sich im internen Aufbau relativ stark unterscheiden put2 und put3 eher nicht

Hinweise Evaluation Der Evaluationszeitraum endet am 07.07. Danke an alle die teilnehmen!