algorithmen und datenstrukturen - institut für informatik · liste Ο(1) Ο(𝑛) list linkedlist,...

14
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Marc Bux, Humboldt-Universität zu Berlin

Upload: dangnhu

Post on 08-Apr-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Übung Algorithmen und Datenstrukturen

Sommersemester 2017

Marc Bux, Humboldt-Universität zu Berlin

Page 2: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Agenda

1. Dijkstra-Algorithmus

2. Heaps

3. Hashtabellen

4. Lehrevaluation

2

Page 3: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Agenda

1. Dijkstra-Algorithmus

2. Heaps

3. Hashtabellen

4. Lehrevaluation

3

Page 4: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Dijkstra-Algorithmus

4

Page 5: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Agenda

1. Dijkstra-Algorithmus

2. Heaps

3. Hashtabellen

4. Lehrevaluation

5

Page 6: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Heaps

• Ein Heap ist eine auf Bäumen basierende Datenstruktur zum Speichern von Elementen, über deren Schlüssel eine totale Ordnung definiert ist

Form Constraint: Der Baum ist fast vollständig

1. Alle Ebenen außer der untersten müssen vollständig gefüllt sein

2. In der letzten Ebene werden Elemente von links nach rechts aufgefüllt

Heap Constraint: Bei einem Min-Heap (Max-Heap) sind die Schlüssel jedes Knotens kleiner (größer) als die Schlüssel seiner Kinder

• Heaps lassen sich als heapgeordnete Arrays repräsentieren

6

Page 7: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Gängige Operationen, Komplexität

• Element einfügen: neues Element als „letzten“ Knoten einfügen

neues Element „hochsickern“ lassen (”sift up”)

• Minimum löschen: Wurzel durch „letzten“ Knoten ersetzen

Wurzel „heruntersickern“ lassen (”sift down”)

7

Datenstruktur Einfügen Suchen Besonderheit Java- Interface

Java-Klassen (Auswahl)

Array / String N/A Ο(𝑛) Indexbasierter Zugriff in Ο(1) [], String

Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList

Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Stack

Queue Ο(1) Ο(𝑛) Zugriff auf zuerst eingefügtes Element in O(1)

Queue LinkedList

Binärer Heap Ο(log 𝑛) Ο(𝑛) Zugriff auf Min / Max in O(1) PriorityQueue

Page 8: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Aufgaben zu Min-Heaps

1. Geben Sie alle möglichen Min-Heaps zur Speicherung der Zahlen 1, 2, 3, 4 und 5 an.

2. Es sei der folgende Min-Heap gegeben:

Wie sieht der Heap nach Anwendung der folgenden Operationen (in der gegebenen Reihenfolge) aus?

deleteMin()

deleteMin()

add(14)

add(8) 8

Page 9: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Aufgaben zu Max-Heaps

9

Page 10: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Agenda

1. Dijkstra-Algorithmus

2. Heaps

3. Hashtabellen

4. Lehrevaluation

10

Page 11: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Hashtabellen

11

Page 12: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Datenstrukturen

12

Datenstruktur Einfügen Suchen Besonderheit Java- Interface

Java-Klassen (Auswahl)

Array / String N/A Ο(𝑛) Indexbasierter Zugriff in Ο(1) [], String

Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList

Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Stack

Queue Ο(1) Ο(𝑛) Zugriff auf zuerst eingefügtes Element in O(1)

Queue LinkedList

Binärer Heap Ο(log 𝑛) Ο(𝑛) Zugriff auf Min / Max in O(1) PriorityQueue

Hash-Tabelle Ο 1 *

Ο 1 *

Konstante Laufzeit nur im Average Case

HashMap, HashSet

Page 13: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Agenda

1. Dijkstra-Algorithmus

2. Heaps

3. Hashtabellen

4. Lehrevaluation

13

Page 14: Algorithmen und Datenstrukturen - Institut für Informatik · Liste Ο(1) Ο(𝑛) List LinkedList, ArrayList Stack Ο(1) Ο(𝑛) Zugriff auf zuletzt eingefügtes Element in O(1)

Ausblick

• nächste Woche:

Aufgabenblatt 4 durchrechnen

• zu nächster Woche:

mit Aufgabenblatt 5 auseinandersetzen

falls noch nicht vorgerechnet: zum Vorrechnen eintragen

Montag: https://dudle.inf.tu-dresden.de/algodat24/

Dienstag: https://dudle.inf.tu-dresden.de/algodat34/

(first-come-first-served)

14