KÖNIGSBERGER BRÜCKENPROBLEM

Ähnliche Dokumente
Was ist ein Problem? Ein Problem im Sinne der Programmierung ist durch Computer lösbar. Programmieren Entwurf/ Implementierung

SS / 16 schrittweise Verfeinerung -> Wirth, 1971, Programm Development by Stepwise Refinement

SS / 12

4. Kreis- und Wegeprobleme

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

Minimal spannende Bäume

Konzepte der Programmiersprachen

Eulerweg, Eulerkreis. Das Königsberger Brückenproblem. Definition 3.1. Ein Weg, der jede Kante von G genau einmal

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Graphen KAPITEL 3. Dieses Problem wird durch folgenden Graph modelliert:

Algorithmen und Datenstrukturen

1 Algorithmische Grundlagen

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 2. Spezifikation Schrittweise Verfeinerung

Programmiertechnik II

Graphdurchmusterung, Breiten- und Tiefensuche

13 Abstrakte Datentypen

Praktische Grenzen der Berechenbarkeit

Übung Algorithmen und Datenstrukturen

3. Die Datenstruktur Graph

Logische Datenstrukturen

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Fragenkatalog 1. Kurseinheit

Geheimnisprinzip: (information hiding principle, Parnas 1972)

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

Algorithmen und Datenstrukturen

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Inhalt. Einführung in die Strukturierte Programmierung 15

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Zweizusammenhang und starker Zusammenhang

Graphalgorithmen II. Werner Sembach Werner Sembach Graphalgorithmen II / 22

10 Abstrakte Datentypen

Übung Algorithmen und Datenstrukturen

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

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

Seminar: Einladung in die Mathematik

Euler und Hamiltonkreise

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

Übung Algorithmen und Datenstrukturen

Graphentheorie Graphentheorie. Grundlagen Bäume Eigenschaften von Graphen Graphen-Algorithmen Matchings und Netzwerke

Algorithmische Graphentheorie

Abschnitt 19: Sortierverfahren

Vorlesung Datenstrukturen

ABITURPRÜFUNG 2001 GRUNDFACH INFORMATIK (HAUPTTERMIN)

Bemerkung: Der vollständige Graph K n hat n(n 1)

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Algorithmen und Datenstrukturen

Algorithmen & Komplexität

6. Verkettete Strukturen: Listen

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

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

WS 2013/14. Diskrete Strukturen

Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

15. Elementare Graphalgorithmen

B2.1 Abstrakte Datentypen

Graphen. Leonhard Euler ( )

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Diskrete Mathematik für Informatiker

Klausur Algorithmentheorie

Klausur Informatik B April Teil I: Informatik 3

Sprechen Sie Java? Hanspeter Mössenböck. Tm\ dpunkt.verlag. Eine Einführung in das systematische Programmieren

1 Abstrakte Datentypen

Teil IV : Abstrakte Datentypen (ADT)

Kapitel IV Minimale Spannbäume

Diskrete Strukturen Kapitel 4: Graphentheorie (Euler-Hamilton)

1 Beispiele für Graphen

Lösungsvorschlag Serie 2 Rekursion

Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

Quicksort ist ein Divide-and-Conquer-Verfahren.

Graphen. Definitionen

Algorithmen und Datenstrukturen I Grundlagen

Graphentheorie. Formale Grundlagen (WIN) 2008S, F. Binder. Vorlesung im 2008S

14. Rot-Schwarz-Bäume

1. Einleitung wichtige Begriffe

WS 2009/10. Diskrete Strukturen

Listen. M. Jakob. Gymnasium Pegnitz. 20. September Hinführung: Wartenschlangen. Grundprinzip von Listen Rekursion

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

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

5 Graphen. Repräsentationen endlicher Graphen. 5.1 Gerichtete Graphen. 5.2 Ungerichtete Graphen. Ordnung von Graphen

VBA-Programmierung: Zusammenfassung

Aufgaben zur Klausurvorbereitung

Informatik I 2. Kapitel. Elementare Datenstrukturen. Datenstrukturen. Datenstrukturen. Rainer Schrader. 28. Mai 2008

Programmierung im Grossen

Transkript:

VOM PROBLEM ZUM PROGRAMM NUTZEN EINES FORMALEN MODELLS (U. A.) Was ist ein Problem? Ein Problem im Sinne der ierung ist durch Computer lösbar. Man kann leichter sehen, ob das Problem - oder Teile davon - bereits in einem anderen Zusammenhang gelöst wurde. Aspekte -> es läßt sich hinreichend genau spezifizieren (z. B. als Funktion Eingabewerte -> Ausgabewerte) -> das spezifizierte Verhalten läßt sich durch einen Algorithmus implementieren. Man kann bekannte Eigenschaften des Modells ausnutzen, um eine gute Lösung zu finden. Als erster Lösungsansatz läßt sich ein INFORMELLER ALGORITHMUS in der Sprache und Begriffswelt des Modells formulieren. Problem Lösung Dieser erste INFORMELLE ALGORITHMUS (-> ABSTRAKTE ALGORITHMUS) kann dann durch SCHRITTWEISE VERFEINERUNG zur IMPLEMENTIERUNG führen! Spezifikation Entwurf/ Implementierung monika.heiner@informatik.tu-cottbus.de WS 005 1.1-1 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-3 / 0 VOM PROBLEM - ÜBER MODEL - ZUM PROGRAMM Relevante Aspekte eines solchen Problems können häufig durch ein formales Modell ausgedrückt werden, z. B. numerische Probleme Lineare Gleichungssysteme, Differentialgleichungen,... Symbol-/Textverarbeitung Zeichenketten, formale Grammatiken,... KÖNIGSBERGER BRÜCKENPROBLEM... Graphen monika.heiner@informatik.tu-cottbus.de WS 005 1.1 - / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-4 / 0

(A) PROBLEM (C) MATHEMATISCHES MODELL Gibt es eine Weg über alle sieben Brücken -> von einem beliebigen Ausgangspunkt -> zurück zum Ausgangspunkt? Wobei jede Brücke nur einmal benutzt werden darf! Norden 3 4 Pregel 6 Insel Neuer Pregel 5 Osten 1 7 Alter Pregel Süden ungerichteter Graph Knoten Insel, Landgebiete Kanten Brücken Kantenbewertung Brückennamen bzw. Anzahl der Brücken N 3 4 I 1 S 5 6 7 O Es interessiert nur die Anzahl der Kanten zwischen Knoten I N S O Grapheigenschaften: symmetrisch & irreflexiv monika.heiner@informatik.tu-cottbus.de WS 005 1.1-5 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-7 / 0 (B) PROGRAMM (D) PROBLEM IN DER SPRACHE DES MODELLS Eingabe: Welche Brücke führt von wo nach wo? Ausgabe: Ja (es gibt einen geeigneten geschlossenen/offenen Weg) oder Nein (es gibt keine Lösung) Gibt es einen Weg (zusammenhängende Folge von Kanten), -> der alle Kanten genau einmal enthält (Knoten beliebig oft) und -> möglichst geschlossen ist (d. h. Anfangsknoten = Endknoten)? kurz: besitzt der Graph einen Eulerweg bzw. Eulerkreis? Anmerkung Wir beschränken uns hier (zunächst) auf die Frage nach der Existenz eines solchen Weges und verzichten auf den Weg als solches (falls es diesen gibt). Aufweichung: zur Not akzeptieren wir auch einen offenen Weg! monika.heiner@informatik.tu-cottbus.de WS 005 1.1-6 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-8 / 0

(E) PROBLEMERÖRTERUNG AUF MODELLNIVEAU Beim Passieren eines Knotens (hin- und wieder wegkommen) werden zwei anliegende Kanten abgearbeitet. Ein Knoten u mit einer ungeraden Anzahl von anliegenden Kanten kann also nur ein Randknoten des gesuchten Weges sein. Die Anzahl U solcher Knoten u (mit ungerader Anzahl von anliegenden Kanten) kann nur 0 oder geradzahlig sein. Wenn U = 0 : exisiert Eulerkreis (mit beliebigem Anfang) U = : existiert Eulerweg mit u 1 und u als Anfangs- bzw. Endknoten U > : existiert keine Lösung (G) PSEUDOKODE-ALGORITHMUS (AUF ADT GRAPH) procedure EULER (in G : GraphT, out antwort : (nein,geschlossen,offen)) var U: Integer; begin /* 1. Bestimme die Anzahl U */ U := 0; loop Knoten von G do if Anzahl der anliegenden Kanten ungerade then U := U + 1 endif endloop; /*. Auswerten der ermittelten Anzahl U */ switch U : case 0: /* geschlossen, d.h. ex Eulerkreis */ case : /* offen, d.h. es ex Eulerweg */ default /* nein, d.h. es ex keine Lösung */ endswitch end EULER. monika.heiner@informatik.tu-cottbus.de WS 005 1.1-9 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-11 / 0 (F) INFORMELLER ALGORITHMUS AUF MATHEMATISCHEN MODELL (H) INFORMELLE SPEZIFIKATION VON ADT GRAPH GraphT, NodeT, benutzte Operationen Bestimme die Anzahl U der Knoten u mit ungerader Anzahl von anliegenden Kanten! Bestimme die Antwort in Abhängigkeit von U! Knoten von G abhängig von verfügbaren Steuerstrukturen der anvisierten PS; i. allg. wird Verfeinerung notwendig sein zum schrittweisen sequentiellen Durchmustern, z. B. -> firstnode (in GraphT, out NodeT) -> nextnode (in GraphT, inout NodeT, out Boolean) -> lastnode (in GraphT, in NodeT, out Boolean) Anzahl anliegender Kanten für einen geg. Knoten -> neighbours (in GraphT, in NodeT, out Integer) Einlesen des konkreten Graphen -> initgraph (inout GraphT) -> addnode (inout GraphT, in NodeT) -> addarc (inout GraphT, in NodeT, in NodeT, in Integer) monika.heiner@informatik.tu-cottbus.de WS 005 1.1-10 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-1 / 0

ENTWICKLUNG VON PROGRAMMEN, ZUSAMMENFASSUNG ADT ALS BRÜCKENPFEILER VOM PROBLEM ZUM PROGRAMM Problem Problem Lösung (Math.) Modell Informeller Algorithmus Abstrakte Datentypen (ADT) Pseudokode-Algorithmus Verfahren zur prinzipiellen Lösung des Problems Spezifikation Entwurf/ Implementierung Datenstrukturen (DS) C / Java / Ada / Modula Oberon / Pascal Implementierung des allg. Vorgehens in einer best. PS monika.heiner@informatik.tu-cottbus.de WS 005 1.1-13 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-15 / 0 VORLESUNGSTHEMEN ADT (KLASSEN) IM ENTWURFSPROZESS grundlegende ADT -> Listen (lists) -> Stapel (Keller, stacks) -> Warteschlangen (queues) -> Mengen (sets) -> Abbildungen (maps) -> Graphen (graphs) weitere spezielle ADT -> Bäume (trees) -> Verzeichnisse (dictionaries) (math.) Modell ADT DS schrittweise Verfeinerung, i. allg. so lange, bis Schritt zur DS überschaubar monika.heiner@informatik.tu-cottbus.de WS 005 1.1-14 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-16 / 0

IMPLEMENTIERUNG VON ADT VORTEILE für Benutzer eines ADT sichtbar PS Algebra ADT Interface (export) (Definition) Vertrag Signatur - Sorten - Operation ADT-Interface - (opake) Typen -> Typnamen - Prozedurköpfe Die Implementierung des ADT (Implementation-) kann ausgewechselt werden, ohne daß die darauf aufbauenden Algorithmen (Applikations-) angepaßt werden müssen. Die Implementierungs-/Validierungsmühen, die man bei der Realisierung der investiert hat, können auch von anderen Algorithmen (derselben Problemklasse) nachgenutzt werden. für Benutzer verborgen Implementation Träger mengen und Funktionen ADT-Implementierung - Implementierung der Typen (Angabe einer Datenstruktur) - Implementierung der Prozeduren (Angabe der Prozedurkörper) Nach Festlegen der Schnittstelle können die ADT-Implementierungen und Applikations-Algorithmen unabhängig voneinander, z.b. -> parallel, -> räumlich verteilt, bearbeitet werden. monika.heiner@informatik.tu-cottbus.de WS 005 1.1-17 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-19 / 0 ZUSAMMENFASSUNG DES VORGEHENS NACHTEILE Ein solcher ierstil ist zunächst aufwendiger! Algorithmus 1 Algorithmus Algorithmus 3. Applikations- Er lohnt sich dann, wenn -> größere Projekte (mit einer erwarteten längeren Lebensdauer) -> arbeitsteilig ADT.DEF 1. Interface- -> über einen längeren Zeitraum entwickelt werden. Compileroptimierung laufzeit Impl.1 Impl. Impl.3 3. Implementation- (# GEBEN REIHENFOLGE AN) monika.heiner@informatik.tu-cottbus.de WS 005 1.1-18 / 0 monika.heiner@informatik.tu-cottbus.de WS 005 1.1-0 / 0