Programmierung 2 Studiengang MI / WI

Ähnliche Dokumente
Programmiertechnik II

Programmiertechnik II

Algorithmen und Datenstrukturen

12. AuD Tafelübung T-C3

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

8.4 Digraphen mit negativen Kantengewichten Grundsätzliches Betrachte Startknoten s und einen Kreis C mit Gesamtlänge < 0.

Algorithmen & Datenstrukturen 2 Praktikum 3

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Vorlesung Datenstrukturen

12. Graphen Programmieren / Algorithmen und Datenstrukturen 2 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt Wintersemester 2012 / 2013

Algorithmen und Datenstrukturen 2-1. Seminar -

Routing Algorithmen. Begriffe, Definitionen

Algorithmen und Datenstrukturen 13

Vorlesung Datenstrukturen

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

Das Steinerbaumproblem

Wir nennen einen Pfad in einem gerichteten Graphen Zyklus, wenn der Pfad im gleichen Knoten beginnt und endet, d. h.

Grundlagen: Algorithmen und Datenstrukturen

Algorithmische Graphentheorie

Institut für Programmierung und Reaktive Systeme 31. Mai Programmieren II. 12. Übungsblatt

Datenstrukturen und Algorithmen

Datenstrukturen. einfach verkettete Liste

Graphalgorithmen 1. Tillmann Zipperer Tillmann Zipperer Graphalgorithmen / 40

Informatik II Prüfungsvorbereitungskurs

Software Entwicklung 1. Graphen. Motivation. Definitionen: Graph. Annette Bieniusa / Arnd Poetzsch-Heffter

Graph Suchalgorithmus Uninformierte Suche Informierte Suche. Pfadsuche. Mario Mohr. GWV-Tutorium 2013/ Januar 2014

Graphalgorithmen II. Sebastian Ehrenfels Sebastian Ehrenfels Graphalgorithmen II / 44

Institut für Programmierung und Reaktive Systeme 27. Mai Programmieren II. 12. Übungsblatt

Graphenalgorithmen I

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Das Heiratsproblem. Definition Matching

Software Entwicklung 1

Grundbegriffe der Informatik

Algorithmen & Komplexität

Theoretische Informatik 1

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

Wie wird ein Graph dargestellt?

Übersicht. Datenstrukturen und Algorithmen. Das Rechenproblem: kürzeste Pfade. Übersicht. Vorlesung 17: Kürzeste Pfade (K24) Bellman-Ford Dijkstra

Programmierkurs Python II

Vorlesung Datenstrukturen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Vorkurs Informatik WiSe 16/17

Verkettete Datenstrukturen: Bäume

Graphentheorie. Kürzeste Wege. Kürzeste Wege. Kürzeste Wege. Rainer Schrader. 25. Oktober 2007

Breitensuche BFS (Breadth First Search)

Vorlesung Datenstrukturen

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Weiterführendes Programmieren Lineare Widerstandsnetzwerke II Aufgabenblatt 6. 1 Zusammenfassung der elektrotechnischen Begriffe

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2009

Informatik II: Algorithmen & Datenstrukturen. Blättern Sie nicht um bevor Sie dazu aufgefordert werden!

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

9 Minimum Spanning Trees

Graphalgorithmen I. Simon Regnet. May 16, Universität Erlangen. Simon Regnet (Universität Erlangen) Graphalgorithmen I May 16, / 56

ADS 2: Algorithmen und Datenstrukturen

Algorithmen I - Tutorium 28 Nr. 11

ÜBUNGSKLAUSUR Studienhalbjahr: 2. Semester. Datum: 20. Juli 2016 Bearbeitungszeit: 90 Minuten. Modul: T2INF Dozent: Stephan Schulz

Mustererkennung: Graphentheorie

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

Betriebswirtschaftliche Optimierung

1 Kürzeste Pfade in Graphen

Algorithmen und Datenstrukturen 2

Institut für Programmierung und Reaktive Systeme 5. Dezember Programmieren II. 12. Übungsblatt

Minimal spannende Bäume

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Betriebliche Optimierung

Algorithmen und Datenstrukturen 1 VL Übungstest SS Juni 2011

10 Kürzeste Pfade SSSP-Problem

Otto-von-Guericke-Universität Magdeburg Fakultät für Informatik Institut für Simulation und Graphik Prof. Dr. Holger Theisel

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Graphen. Leonhard Euler ( )

Graphdurchmusterung, Breiten- und Tiefensuche

void bellford ( List adjlst [n], int n, int i, int j){ int d[n] = + inf ; d[i] = 0;

Teil 2: Graphenalgorithmen

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 12, Donnerstag, 22.

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

Algorithmen und Datenstrukturen 2

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/48

Kürzeste Pfade. Organisatorisches. VL-17: Kürzeste Pfade. (Datenstrukturen und Algorithmen, SS 2017) Walter Unger

Kombinatorische Optimierung

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Berechnung von Abständen

Einführung in die Informatik 2

Datenstrukturen und Algorithmen 2. Klausur SS 2001

7. Der Entwurf von Algorithmen (Fortsetzung)

3. Minimale Spannbäume. Definition 99 T heißt minimaler Spannbaum (MSB, MST) von G, falls T Spannbaum von G ist und gilt:

Algorithmen und Datenstrukturen

Grundlagen in C# und.net

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Approximationsalgorithmen für NP-harte Optimierungsprobleme

Breiten- und Tiefensuche in Graphen

Berechnung minimaler Spannbäume. Beispiel

Graphen: Datenstrukturen und Algorithmen

Datenstrukturen & Algorithmen Lösungen zu Blatt 10 FS 16

Organisatorisches. Programmierpraktikum Das Canadian Traveller Problem. Organisatorisches. Organisatorisches

Transkript:

Programmierung 2 Studiengang MI / WI Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz FB Automatisierung und Informatik mwilhelm@hs-harz.de Raum 2.202 Tel. 03943 / 659 338 Fachbereich Automatisierung und Informatik: Programmierung 2 1

Überblick: Inhalt der Vorlesung Objekte und Methoden Swing Exception I/O-Klassen / Methoden Threads Algorithmen (Das Collections-Framework) Design Pattern Graphentheorie JUnit Fachbereich Automatisierung und Informatik: Programmierung 2 2

Graph-Algorithmus Was ist ein Graph? Ein Graph besteht aus Vertices, Plätze, und Kanten, welche jeweils zwei Vertices verbinden. Sowohl die Vertices als auch die Kanten können eigene Attribute besitzen. String name int id double entfernung String name int id Fachbereich Automatisierung und Informatik: Programmierung 2

Teilimplementierung: Vertices sind explizit durch Kanten verbunden. Ein Vertex kann durch viele Kanten mit ebenso vielen Vertices verbunden sein. Kanten haben einen Anfangs- und einen Endvertex. class Vertex { private Kante[] kanten;... } class Kante { private double abstand; private Vertex anfang; private Vertex ende;... } Fachbereich Automatisierung und Informatik: Programmierung 2 4

Arten der Graphen Kanten ohne Richtung, zyklisch Kanten haben Richtung, zyklisch Kanten ohne Richtung, keine Zyklen Kanten haben Richtung, keine Zyklen Fachbereich Automatisierung und Informatik: Programmierung 2 5

Allgemeiner Graph (Kanten ungerichtet, zyklisch) Fachbereich Automatisierung und Informatik: Programmierung 2 6

Gerichteter Graph (Kanten haben Richtung, zyklisch) Fachbereich Automatisierung und Informatik: Programmierung 2 7

Azyklischer Graph Kanten haben keine Richtung Es treten keine Zyklen auf Fachbereich Automatisierung und Informatik: Programmierung 2 8

Gerichteter azyklischer Graph (keine Zyklen) DAG = directed graphic acyclic graph Fachbereich Automatisierung und Informatik: Programmierung 2 9

Beispiel: Freunde auf Facebook Fachbereich Automatisierung und Informatik: Programmierung 2 10

Visuelle Darstellung der Synonyme des Wortes game Fachbereich Automatisierung und Informatik: Programmierung 2 gleich oder sehr ähnlich 11

Visuelle Darstellung der Synonyme des Wortes game Fachbereich Automatisierung und Informatik: Programmierung 2 gleich oder sehr ähnlich 12

Implementierung:Kanten haben keine Attribute, daher nur implizit class Vertex { private static HashSet<Vertex> graphvertices; // merken der bearbeiteten Vertices private Vertex[] neighbor; // Referenzen auf Nachbarn private double attribut; // weitere Eigenschaften des Vertex... // Aufsuchen aller Vertices: Depth First Search (DFS), naechstes Semester: Breadth First Search private void alleverticesrekursiv() { if(! graphvertices.contains(this)) { graphvertices.add(this); this.dosomething(); // erledige die notwendigen Arbeiten for(int n; n < neigbor.length; n++) { Vertex v = neighbor[n]; if(v!= null) v.alleverticesrekursiv(); } } // noch nicht bearbeitet } public void alleverbundenenvertices() { graphvertices.clear(); alleverticesrekursiv(); graphvertices.clear(); } } Fachbereich Automatisierung und Informatik: Programmierung 2 13

Gewichtete Graphen Fachbereich Automatisierung und Informatik: Programmierung 2 14

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 15

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 16

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 17

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 18

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 19

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 20

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 21

Aufgabe: Finde den kürzesten Weg zu jedem Vertex Fachbereich Automatisierung und Informatik: Programmierung 2 22

Aufgabe: Finde den kürzesten Weg zu jedem Vertex In jedem Vertex steht die Entfernung (vom Start aus) Fachbereich Automatisierung und Informatik: Programmierung 2 23

Algorithmus: Wiederhole bis kein unverbrannter Knoten vorhanden: Der aktuelle Knoten ist der unverbrannte mit der geringsten Entfernung Markiere den aktuellen Knoten als verbrannt Besuche alle Nachbarn des aktuellen Knotens Falls der Nachbar n eine größere Entfernung als die Entfernung des aktuellen Knotens + Länge der Verbindungskante hat, ersetze mit dem niedrigeren Wert und vermerke den aktuellen Knoten als Teil des Pfads Fachbereich Automatisierung und Informatik: Programmierung 2 24

Algorithmus:Edsger W. Dijkstra, 1930-2002 Für jeden Vertex v im Graphen G Markiere v als unverbrannt Setze die Enfernung E(v) auf unendlich Setze Elter(v) als undefiniert Setze E(Startvertex) = 0 Solange es noch unverbrannte Vertices gibt: der unverbrannte Vertex mit der kleinsten Entfernung heist u Markiere u als verbrannt Für jeden Nachbarn n von u Falls E(u) + Abstand(u, n) < E(n) Setze E(n) = E(u) + Abstand(u, n) Setze Elter(n) = u Ende Fachbereich Automatisierung und Informatik: Programmierung 2 25

Zusammenfassung Graphen sind eine wichtige Datenstruktur. Graphen bestehen aus Vertices (Knoten) und Kanten Vier Arten von Graphen aus zwei Eigenschaften: zyklisch oder nicht gerichtet oder nicht Beispiel für einen Algorithmus auf Graphen: Dijkstra: berechnet die kürzeste Entfernung und den zugehörigen Pfad zu jedem erreichbaren Vertex von einem Startvertex aus. Fachbereich Automatisierung und Informatik: Programmierung 2 26

Alternative Algorithmen: A* (a star) Der A*-Algorithmus (auch A*-Suche) gehört zur Klasse der in-formierten Suchalgorithmen. Er dient in der Informatik der Berechnung eines kürzesten Pfades zwischen zwei Knoten in einem Graphen mit positiven Kantengewichten. Er wurde das erste Mal 1968 von Peter Hart, Nils J. Nilsson und Bertram Raphael beschrieben. Der Algorithmus gilt als Verallgemeinerung und Erweiterung des Dijkstra- Algorithmus, in vielen Fällen kann aber umgekehrt A* auch auf Dijkstra reduziert werden. Im Gegensatz zu uninformierten Suchalgorithmen verwendet der A*-Algorithmus eine Schätzfunktion (Heuristik), um zielgerichtet zu suchen und damit die Laufzeit zu verringern. Der Algorithmus ist optimal. Das heißt, dass immer die optimale Lösung gefunden wird, falls eine existiert. Fachbereich Automatisierung und Informatik: Programmierung 2 27

Alternative Algorithmen: Prim Der Algorithmus beginnt mit einem trivialen Graphen T, der aus einem beliebigen Knoten des gegebenen Graphen besteht. In jedem Schritt wird nun eine Kante mit minimalem Gewicht gesucht, die einen weiteren Knoten mit T verbindet. Diese und der entsprechende Knoten werden zu T hinzugefügt. Das Ganze wird solange wiederholt, bis alle Knoten in T vorhanden sind; dann ist T ein minimaler Spannbaum: Wähle einen beliebigen Knoten als Startgraph T. Solange T noch nicht alle Knoten enthält: Wähle eine Kante e minimalen Gewichts aus, die einen noch nicht in T enthaltenen Knoten v mit T verbindet. Füge e und v dem Graphen T hinzu. Fachbereich Automatisierung und Informatik: Programmierung 2 28

Fachbereich Automatisierung und Informatik: Programmierung 2 29

Start: A A: 437 Ziel: H 164 f: 250 Bez: g:distanz B: 385 C: 355 141 275 309 D: 325 186 E: 255 F: 150 G: 201 335 169 H: 0 233 Fachbereich Automatisierung und Informatik: Programmierung 2 30

Start: A A Ziel: H 7330,45 f: 4902,49 Bez: g:distanz B: 9341,45 C: 11732 3458,28 4617,32 5369,51 D: 11213,39 E: 8592,25 F: 5645,79 G: 8847,04 4182,72 8592,25 5645,79 H: 0 8847,04 Fachbereich Automatisierung und Informatik: Programmierung 2 31

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 6 7 8 9 10 11 12 Fachbereich Automatisierung und Informatik: Programmierung 2 32

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 Fachbereich Automatisierung und Informatik: Programmierung 2 33

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5 6 7 8 9 10 11 12 Fachbereich Automatisierung und Informatik: Programmierung 2 34

Beispiel 1 A 2 3 B C Start: A 4 2 2 Ziel: G 7 2 D 1 E F 3 3 G Fachbereich Automatisierung und Informatik: Programmierung 2 35

Beispiel 2 A 2 3 B C Start: A 4 2 7 Ziel: G 7 2 D 1 E F 3 3 G Fachbereich Automatisierung und Informatik: Programmierung 2 36

Beispiel 3 7330,45 A f: 4902,49 Bez: g:distanz Start: A Ziel: H B: 9341,45 C: 11732 3458,28 4617,32 5369,51 D: 11213,39 4182,72 E: 8592,25 F: 5645,79 G: 8847,04 8592,25 5645,79 H: 0 8847,04 Fachbereich Automatisierung und Informatik: Programmierung 2 37

Beispiel 4 2 A 5 6 B C D 8 4 6 Start: A Ziel: G E F 5 1 G Fachbereich Automatisierung und Informatik: Programmierung 2 38