Informatik II Prüfungsvorbereitungskurs

Ähnliche Dokumente
Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Datenstrukturen & Algorithmen

Bäume, Suchbäume und Hash-Tabellen

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

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Informatik II, SS 2014

Geordnete Binärbäume

Tutorium Algorithmen & Datenstrukturen

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Datenstrukturen & Algorithmen

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen Suchbaum

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

Advanced Programming in C

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Theoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke

6. Algorithmen der Computer-Geometrie

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Datenstrukturen und Algorithmen

Algorithmen & Datenstrukturen 1. Klausur

Programmiertechnik II

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

Kapitel 9 Suchalgorithmen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Ein Algorithmus heißt rekursiv, wenn er sich selbst aufruft. Meist werden nur einzelne Module eines Gesamtalgorithmus rekursiv verwendet.

Abstrakte Datentypen.

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

Übung Algorithmen I

Sortierte Folgen 250

Abschnitt 18: Effizientes Suchen in Mengen

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

Geometrie I. Sebastian Redinger Informatik 2 Programmiersysteme Martensstraße Erlangen

Grundlagen der Programmierung

Es sei a 2 und b 2a 1. Definition Ein (a, b)-baum ist ein Baum mit folgenden Eigenschaften:

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Binärbäume. Prof. Dr. E. Ehses,

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

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Informatik II Prüfungsvorbereitungskurs

Was bisher geschah ADT Menge mit Operationen: Suche nach einem Element Einfügen eines Elementes Löschen eines Elementes Realisierung durch

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

6 Speicherorganisation

Algorithmen und Datenstrukturen (für ET/IT)

368 4 Algorithmen und Datenstrukturen

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

Klausur Informatik B April Teil I: Informatik 3

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Übung zur Vorlesung Algorithmische Geometrie

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

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

Grundlagen der Programmierung 2. Bäume

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

EndTermTest PROGALGO WS1516 A

Klausur Datenstrukturen und Algorithmen SoSe 2012

Java Einführung Collections

Algorithmen und Datenstrukturen Balancierte Suchbäume

Was bisher geschah. 1. Zerlegung in monotone Polygone 2. Triangulierung der monotonen Teilpolygone

Codes und Informationsgehalt

Datenstrukturen & Algorithmen

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

Routing Algorithmen. Begriffe, Definitionen

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

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Algorithmen und Datenstrukturen

2 Java: Bäume. 2.1 Implementierung von Bäumen. 2.2 Implementierung eines binären Suchbaums. 2.3 Traversierung von Bäumen

Übersicht Datenstrukturen und Algorithmen. Literatur. Algorithmus: Wikipedia Definition. Vorlesung 1: Einführung. Prof. Dr.

Algorithmen und Datenstrukturen

Beispiellösung zur Prüfung Datenstrukturen und Algorithmen D-INFK

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

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

Algorithmen und Datenstrukturen 1

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapitel 6: Graphalgorithmen Gliederung

2. Übungsblatt zu Algorithmen II im WS 2016/2017

Suchen und Sortieren Sortieren. Heaps

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Erinnerung VL

13. Binäre Suchbäume

Graphen: Datenstrukturen und Algorithmen

1. Grundlegende Konzepte in Java (6 Punkte)

Präfx Trie zur Stringverarbeitung. Cheng Ying Sabine Laubichler Vasker Pokhrel

Fortgeschrittene Programmiertechnik Klausur SS 2015 Angewandte Informatik Bachelor

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Inhalte Informatik. I1 Grundprinzip des objektorientierten Modellierens I3 Modellieren von Netzwerkanwendungen

INSTITUT FÜR THEORETISCHE INFORMATIK, PROF. SANDERS

Transkript:

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 Path Algorithmus Datenbanksysteme 2

Themenübersicht 20.3: Java 21.3: Objektorientierte Programmierung 22.3: Dynamische Datenstrukturen 23.3: Datenbanksysteme 3

4

Repetition: Datenstrukturen 5

Übersicht Laufzeiten (worst-case) Array Zugriff auf i-tes Element: 1 Einfügen: Löschen: Suche: Array sortiert: log (mittels binärer Suche) Sonst: Liste Zugriff auf i-tes Element: Einfügen: 1 Löschen: Suche: 6

Übersicht Laufzeiten (worst-case) Unbalancierter Baum: degeneriert zu Liste im worst-case Fall Einfügen: Löschen: Suche: Balancierter Baum: Hat immer eine Höhe von 2, d.h. alle Laufzeiten sind gleich Einfügen: 2 Löschen: 2 Suche: 2 7

Übersicht Laufzeiten (worst-case) Min- oder Max-Heap min / max extrahieren: 2 Einfügen: 2 Löschen: 2 Suche: 2 8

LIFO vs. FIFO LIFO (Stack): Last-In-First-Out Element, das zuletzt hinzugefügt wurde wird als erstes gelöscht FIFO (Warteschlange): First-In-First-Out Warteschlange Element, das am längsten in Datenstruktur befindet wird als erstes gelöscht 9

Einfach verkettete Liste: Im Speicher Node n1 = new Node(23, null); Node n2 = new Node(17, n1); Node n3 = new Node (12, n2); val = 12 next val = 17 next val = 23 next null 10

Stapel (Stack) mittels verketteter Liste top public class Stack { private Node top = null; public void Push(double val) { } public double Pop() { } } val = 12 next val = 17 next val = 23 next null 11

Prüfung 08.2014 Aufgaben 8a & 8b FIFO und LIFO Whiteboard 12

Aufbau einer Hashtabelle 1. Array für Schlüssel und Daten 2. Hashfunktion zur Berechnung des Array-Index (Position) der einzufügenden Objekten 3. Datenzugriff auf Array Bei Kollisionen verwende lineares Sondieren 13

Beispiel Telefonbuch class Telefonbuch{ String [ ] keys = new int [10]; int [ ] values = new int [10]; int n = 0; } int hash (String name) { return name.charat(0) % 10; } // insert, probe, etc. 14

Beispiel Telefonbuch insert("giu", 112523); insert("peter", 051823); keys values 0 Peter 051823 1 Giu 112523 15

Beispiel Hashtabelle Prüfung 01.2015 Aufgabe 8 16

Bonus: Verkettung mittels Überläufer Kollision beim Einfügen: Verkettung mittels Überläufer Bildquelle: Wikipedia 17

Bonus: Lineares Sondieren Wenn lineares Sondieren verwendet wird, um Kollisionen zu vermeiden, dann muss Suche nach Element nebst Einfügen angepasst werden Beginne Suche bei Position hash(key) und Sondiere linear bis der Eintrag mit key gefunden wurde Quelle: «Algorithmen und Datenstrukturen» (Ottmann & Widmayer) 18

Bonus: Binärbaum-Höhe Höhe ist definiert als die max. Weglänge zwischen Wurzel und Blattknoten Minimale Höhe eines Binärbaums mit Knoten ist 2 (exakt: 2 ) Höhe: Anzahl Level 1, wobei Level 0 die Wurzel ist Quelle: «Datenstrukturen und Algorithmen» (Güting & Dieker) 19

Laufzeit von Operationen auf Binärbäumen Im Mittel benötigt Einfügen / Löschen / Suchen in einem Binärbaum 2 Achtung: nur im Mittel! Worst-case Verhalten ist trotzdem bei nicht-balancierten Binärbäumen 2 weil bei jeder Abzweigung von Wurzel bis zu Blattknoten jeder Teilbaum halbiert wird 2 gibt an wie oft halbiert werden kann 20

Balancierte Bäume Garantiere, dass Binärbaum mit Knoten stets eine Höhe von 2 Bildquelle: «Datenstrukturen und Algorithmen» (Güting & Dieker) 21

Prüfung 01.2015 Aufgabe 5a Balancierten Baum zeichnen Whiteboard 22

Prüfung 08.2014 Aufgaben 5a & 5d Code um Baum zu traversieren Asymptotischer worst-case Speicherplatzverbrauch Whiteboard 23

Algorithmen: Point-in-Polygon, Shortest Path 24

Point-in-Polygon Algorithmus Schnittfreie Polygone sind Jordankurven und zerlegen die Ebene in zwei Gebiete: das Innere und das Äussere Wir können dies ausnutzen, indem man Polygon mit Geraden schneidet 25

Abzählmethode Wird verwendet um zu überprüfen, ob sich ein Punkt im Polygon befindet Punkt liegt im Inneren eines Polygons, wenn von Punkt aus in beliebige Richtung ausgehender Strahl ungeradzahlig viele Polygonkanten kreuzt Bereiche zwischen ungeradzahligen und geradzahligen Schnittpunkten liegen im Inneren des Polygons 26

Abzählmethode P Zusätzlich: Punkt befindet sich zwischen einem ungeradzahligen und einem geradzahligen Schnittpunkt 27

Echte und unechte Schnitte Echte Schnitte Unechte Schnitte Bildquelle: Informatik II Vorlesung 28

Echte Schnitte überprüfen boolean IntersectHorizontalLeft(int x, int y, Vertex a, Vertex b) { if (b.y < y && y <= a.y) { // Kante von oben nach unten return (x-a.x) * (b.y - a.y) <= (b.x-a.x)*(y-a.y); } else if(a.y < y && y <= b.y) { // Kante von unten nach oben return (x-a.x) * (b.y - a.y) >= (b.x-a.x)*(y-a.y); } else return false; } 29

Prüfung 08.2015 Aufgabe 8 Schaf vs. Wolf Whiteboard 30

Dijkstra s Shortest Path Gegeben: Gerichteter Graph, mit Knotenmenge und Kantenmenge, bei dem jeder Kante eine Länge zugeordnet ist Problem: Finde zu Startpunkt S und Endpunkt K den kürzesten Pfad entlang der Kanten im Graph 31

Dijkstra s Shortest Path: Implementation : Knoten, die Teil eines minimalen Pfades erkannt wurden : Knoten, die von aus direkt erreichbar sind Min-Heap, da wir aus R Knoten mit kleinster Pfadlänge nehmen : Knoten die noch nicht berücksichtigt wurden Bildquelle: Informatik II Vorlesung 32

Dijkstra s Shortest Path: Algorithmus Beispiel (Whiteboard) 33

Part 4: Datenbanksysteme 34

Vorbereitungstipps In Gruppen lernen kann vorteilhaft sein Bei Fragen ist gleich jemand da Fragen beantworten hilft Verständnis Unbedingt alle alten Prüfungen lösen (Wichtig) Eine Prüfung verwenden, um Prüfungssituation zu simulieren (auf Zeit) Übungen anschauen und versuchen zu verstehen Blick in alte Übungen werfen http://lec.inf.ethz.ch/baug/informatik2/2014/ http://lec.inf.ethz.ch/baug/informatik2/2015/ 35

Fragen zu Übungen oder alten Prüfungen Ich stehe gerne zur Verfügung für Fragen zu den Übungen und alten Prüfungen, falls welche auftauchen sollten während der Vorbereitung: g@accaputo.ch Meine Slides zu den diesjährigen Informatik II Übungen: http://accaputo.ch/hilfsassistenz/informatik-2-d-baug-2016/ 36

Prüfungstipps Zeit pro Punkt ausrechnen: Dauer Prüfung / Anz. Punkte Uhr an Prüfung mitnehmen (z.b. Wecker) Gute Abschätzung um zu sehen, ob man zu viel Zeit mit einer Aufgabe verbringt Prüfung zuerst durchblättern und schauen, welche Aufgaben einfach zu lösen sind. Diese dann gleich als erstes lösen! 37