• Keine Ergebnisse gefunden

Studiengang MI / WI

N/A
N/A
Protected

Academic year: 2021

Aktie "Studiengang MI / WI"

Copied!
38
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Fachbereich Automatisierung und Informatik: Programmierung 2 1

Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm Hochschule Harz

FB Automatisierung und Informatik mwilhelm@hs-harz.de

Raum 2.202

Tel. 03943 / 659 338

Programmierung 2

Studiengang MI / WI

(2)

Fachbereich Automatisierung und Informatik: Programmierung 2 2

Inhalt der Vorlesung

Überblick:

Objekte und Methoden

Swing

Exception

I/O-Klassen / Methoden

Threads

Algorithmen (Das Collections-Framework)

Design Pattern

Graphentheorie

JUnit

(3)

Fachbereich Automatisierung und Informatik: Programmierung 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

String name int id double entfernung

(4)

Fachbereich Automatisierung und Informatik: Programmierung 2 4

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;

...

}

(5)

Fachbereich Automatisierung und Informatik: Programmierung 2 5

Arten der Graphen

Kanten ohne Richtung, zyklisch

Kanten haben Richtung, zyklisch

Kanten ohne Richtung, keine Zyklen

Kanten haben Richtung, keine Zyklen

(6)

Fachbereich Automatisierung und Informatik: Programmierung 2 6

Allgemeiner Graph (Kanten ungerichtet, zyklisch)

(7)

Fachbereich Automatisierung und Informatik: Programmierung 2 7

Gerichteter Graph (Kanten haben Richtung, zyklisch)

(8)

Fachbereich Automatisierung und Informatik: Programmierung 2 8

Azyklischer Graph

Kanten haben keine Richtung

Es treten keine Zyklen auf

(9)

Fachbereich Automatisierung und Informatik: Programmierung 2 9

Gerichteter azyklischer Graph (keine Zyklen)

DAG = directed graphic acyclic graph

(10)

Fachbereich Automatisierung und Informatik: Programmierung 2 10

Beispiel: Freunde auf Facebook

(11)

Fachbereich Automatisierung und Informatik: Programmierung 2 11

Visuelle Darstellung der Synonyme des Wortes „game“

gleich oder sehr ähnlich

(12)

Fachbereich Automatisierung und Informatik: Programmierung 2 12

Visuelle Darstellung der Synonyme des Wortes „game“

gleich oder sehr ähnlich

(13)

Fachbereich Automatisierung und Informatik: Programmierung 2 13

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();

} }

(14)

Fachbereich Automatisierung und Informatik: Programmierung 2 14

Gewichtete Graphen

(15)

Fachbereich Automatisierung und Informatik: Programmierung 2 15

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(16)

Fachbereich Automatisierung und Informatik: Programmierung 2 16

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(17)

Fachbereich Automatisierung und Informatik: Programmierung 2 17

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(18)

Fachbereich Automatisierung und Informatik: Programmierung 2 18

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(19)

Fachbereich Automatisierung und Informatik: Programmierung 2 19

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(20)

Fachbereich Automatisierung und Informatik: Programmierung 2 20

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(21)

Fachbereich Automatisierung und Informatik: Programmierung 2 21

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(22)

Fachbereich Automatisierung und Informatik: Programmierung 2 22

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

(23)

Fachbereich Automatisierung und Informatik: Programmierung 2 23

Aufgabe: Finde den kürzesten Weg zu jedem Vertex

In jedem Vertex steht die Entfernung (vom Start aus)

(24)

Fachbereich Automatisierung und Informatik: Programmierung 2 24

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

(25)

Fachbereich Automatisierung und Informatik: Programmierung 2 25

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

Algorithmus:Edsger W. Dijkstra, 1930 - 2002

(26)

Fachbereich Automatisierung und Informatik: Programmierung 2 26

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.

(27)

Fachbereich Automatisierung und Informatik: Programmierung 2 27

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.

(28)

Fachbereich Automatisierung und Informatik: Programmierung 2 28

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.

(29)

Fachbereich Automatisierung und Informatik: Programmierung 2 29

(30)

Fachbereich Automatisierung und Informatik: Programmierung 2 30

A: 437

B: 385 C: 355

D: 325

E: 255 F: 150 G: 201

H: 0 Start: A

Ziel: H 164 f: 250

275 309

335 233

141

186

Bez: g:Distanz

169

(31)

Fachbereich Automatisierung und Informatik: Programmierung 2 3131

A

B: 9341,45 C: 11732

D: 11213,39

E: 8592,25 F: 5645,79 G: 8847,04

H: 0 Start: A

Ziel: H 7330,45 f: 4902,49

4617,32 5369,51

8592,25 8847,04

3458,28

4182,72 Bez: g:Distanz

5645,79

(32)

Fachbereich Automatisierung und Informatik: Programmierung 2 32

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

(33)

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

(34)

Fachbereich Automatisierung und Informatik: Programmierung 2 34

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

(35)

Fachbereich Automatisierung und Informatik: Programmierung 2 35

A

B C

D F

E

G Start: A

Ziel: G

2 3

7

4

3

3

1 2 2

2

Beispiel 1

(36)

Fachbereich Automatisierung und Informatik: Programmierung 2 36

A

B C

D F

E

G Start: A

Ziel: G

2 3

7

4

3

3

1 2 7

2

Beispiel 2

(37)

Fachbereich Automatisierung und Informatik: Programmierung 2 37

A

B: 9341,45 C: 11732

D: 11213,39

E: 8592,25 F: 5645,79 G: 8847,04

H: 0 Start: A

Ziel: H

f: 4902,49 7330,45

4617,32 5369,51

8592,25 8847,04

3458,28

4182,72 Bez: g:Distanz

5645,79

Beispiel 3

(38)

Fachbereich Automatisierung und Informatik: Programmierung 2 38

A

B C D

E F

G Start: A

Ziel: G

2 6

8 4

5 1

6 5

Beispiel 4

Referenzen

ÄHNLICHE DOKUMENTE

1.3 eine persönlich und fachlich geeignete Kontaktperson als Betreuer/in für die/den Studierende/n während der Ableistung der Praxiszeit zu benennen3. 1.4 der betreuenden

Um den spezifischen Anforderungen an Gewerbebauten gerecht zu werden, wird im Gewerbegebiet eine abweichende Bauweise festgesetzt, nach der wie bei der offenen Bauweise

c) bei verbundenen Etagenheizungen und Warmwasserversorgungsanlagen entsprechend Nummer 4 Buchstabe d und entsprechend Nummer 2, soweit sie nicht dort

The highest number of persons stated will be charged for the entire booking period - this also applies to additional bookings. For technical reasons, additional bookings can only

Philipp Hlatky ist derzeit für die Weltbank in Washington tätig und schreibt für verschiedene Ma- gazine Beiträge zur medizinischen.. Anwendung

Unsere Lösungen orientieren sich direkt an den Zielen Ihrer Kom- munikation, damit die Veranstal- tung für Sie, Ihre Mitarbeiter und Ihre Kunden zum Erfolg wird.. Gemeinsam mit

It is hereby certified that the vehicles described under area of use satisfy the regulations of StVZO in the current version after modification and implemented and

4.OPMC - Open Production &amp; Maintenance Community | ECOSYSTEMS 4 – THE HYBRID EVENT.. Das Netzwerk 4.OPMC