Visualisierung von Graphenalgorithmen

Ähnliche Dokumente
Definitionen/Vorarbeit zum Thema Java

Algorithmen und Datenstrukturen (für ET/IT)

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Verhalten. Def. und Nutzen von Verhalten. Pseudocode Schreibtischtest. Algorithmen

Objektorientierte Programmierung II

1. Einführung Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt

VBA-Programmierung: Zusammenfassung

n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -

Inhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen

Objektorientierte Programmierung VL: Prof. Dr. Marco Block-Berlitz - Freie Universität Berlin Proinformatik III

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

Inhaltsverzeichnis. Grundlagen und Einführung (1. Band) 1

TURBO PASCAL VERSION 5.5

Guile Die Erweiterungssprache des GNU-Projekts

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

Inhalt. " DiaGen Historie und Beschreibung. " Architektur eines DiaGen-Editors. " Hypergraphen. " DiaGen-Editoren Komponenten

Abstrakte C-Maschine und Stack

Programmieren in Java -Eingangstest-

Einführung in die Informatik 1

Algorithmen und Datenstrukturen

EIDI 1 Einführung in die Informatik 1. PGdP Praktikum Grundlagen der Programmierung. Harald Räcke 2/217

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Inhalt. Inhalt. Was ist Programm-Visualisierung. Was ist Programm-Visualisierung Was kann man visualisieren?

Algorithmen und Datenstrukturen, FS17 Prof Dr Christian Tschudin

Diplomarbeit: Erweiterung von KIEL um Stateflow-Charts. Adrian Posor

III.1 Prinzipien der funktionalen Programmierung - 1 -

Programmierkurs Python I

Objektorientierte Programmierung Studiengang Medieninformatik

Compiler. Einführung. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München. Letzte Änderung:

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

Compiler: Einführung

Lösungsvorschlag Serie 2 Rekursion

Informatik Abitur Bayern 2017 / II - Lösung

Ein kleiner Blick auf die generische Programmierung

Memory Models Frederik Zipp

Matthias-Claudius-Gymnasium Fachcurriculum Informatik

Schnelles Prototyping für die medizinische Bildverarbeitung

Typisierung. Prüfungen zur Übersetzungszeit Type Test und Type Cast Bedingte Zuweisung Nil Übergangsparameter Grade der Typisierung. 3.

4. Algorithmen und Datenstrukturen I Grundlagen der Programmierung 1 (Java)

10. OLAPLINE-Anwendertreffen

Informatik I. Grundlagen der systematischen Programmierung. Peter Thiemann WS 2007/08. Universität Freiburg, Germany

Sourcecode generieren? Ja, aber wie?

Visualisierung von Algorithmen

Algorithmen und Datenstrukturen

Compilerbau für die Common Language Run-Time

Inhaltsverzeichnis 1 Der objektorientierte Ansatz 2 Elementare Objekte und Ausdrücke

Graphalgorithmen 2. Dominik Paulus Dominik Paulus Graphalgorithmen / 47

Algorithmen und Datenstrukturen (für ET/IT)

Java-Grundkurs für Wirtschaftsinformatiker

Implementieren von Klassen

Java Einführung Programmcode

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Algorithmen und Datenstrukturen

Informatik II - Übung 01

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1 Einführung: Algorithmen. Algorithmen und Datenstrukturen WS 2012/13. Pro f. Dr. Sán do r Fe k e te

Organisatorisches. Algorithmen und Datenstrukturen (für ET/IT) Programm heute. Tutorübungen

Informatik I: Einführung in die Programmierung

B2.1 Abstrakte Datentypen

Vorsemesterkurs Informatik Übungsaufgaben. Tag 4a - Python

Überblick. Klassen Optionale Typen DOM. Optionale Parameter Klassen. Einführung. 2 Motivation 3 Werkzeuge 4 Demonstration 5 Dart

Konvexe Hülle. Abbildung: [Wikipedia]: Nicht-konvexe Menge (links), konvexe Menge (rechts) KIT Institut für Theoretische Informatik 510

Berichte aus der Informatik. Dieter Pawelczak. Start in die C-Programmierung

Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung

Inhalt. n Algorithmus. n Euklidscher Algorithmus. n Sortieren. n Programmiersprachen. n Entwicklungsschritte eines Programms.

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

Teil 3 - Java. Grundlagen Klassen, Attribute Methoden

Einstieg in die Informatik mit Java

Algorithmen und Datenstrukturen (Informatik II) SS Klausur

Java-Grundkurs für rtschaftsinformatiker

Vorlesung Datenstrukturen

Das Interface-Konzept am Beispiel der Sprache Java

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Introduction to Python. Introduction. First Steps in Python. pseudo random numbers. May 2016

Algorithmen und Datenstrukturen

Programmiersprachen und Übersetzer

Einführung in die STL

Ein Design Tool für objektorientierte portable Programmierschnittstellen

Transkript:

Visualisierung von Graphenalgorithmen Philipp Matthias Hahn Technische Universität Darmstadt FB Informatik, FG Systemprogrammierung pmhahn@informatik.tu-darmstadt.de 15. August 2002 Technische Universität Darmstadt

Warum Visualisierung? Der Veranstalter Generieren von Beispielen Validieren von Implementierungen Der Zuhörer Verstehen der Beispiele Experimentieren Technische Universität Darmstadt 1

Software Visualisierung Algorithmen-Visualisierung statische Algorithmen- Visualisierung dynamische Algorithmen- Visualisierung Programm-Visualisierung statische Code- Visualisierung dynamische Code- Visualisierung statische Daten- Visualisierung dynamische Daten- Visualisierung Technische Universität Darmstadt 2

Algorithmus, Programme Algorithmen sind exakt formulierte Rechenvorschriften, die auf Computern als ausführbare Programme implementiert und auf diese Art für die Lösung von Aufgaben angewandt werden können. Ein Algorithmus besteht somit aus einer wohldefinierten endlichen Folge von elementaren Rechenoperationen und Entscheidungen, um aus einer bestimmten Menge von Eingabegrößen [... ] das gewünschte Resultat [... ] zu erzeugen. Technische Universität Darmstadt 3

Algorithmen-Visualisierung 1. Bearbeite die Kanten sortiert nach ihrem Kantengewicht. Start Sortiere Kanten 2. Wähle die nächste Kante mit dem kleinsten Kantengewicht. 3. Verwerfe sie, wenn sie zusammen mit den bereits ausgewählten Kanten einen Kreis bildet. Noch unbetrachtete Kanten? Ende nein ja Wähle Kante 4. Anderenfalls füge sie der Menge der ausgewählten Kanten hinzu. Kante bildet Kreis? ja nein 5. Wiederhole alle Schritte ab 2. verwerfen Kante hinzufügen Technische Universität Darmstadt 4

Programm-Visualisierung def kruskal ( E, fe ): E.sort ( fe ) Tree = [ ] for e in E: ==> if hascycle( Tree+[e,] ): pass else: Tree.append( e ) return Tree Technische Universität Darmstadt 5

Daten-Visualisierung 1 2 3 4 5 6 7 1 2 3 4 5 6 7 Technische Universität Darmstadt 6

Was angezeigt werden soll Quelltexte Eingangsgraph Hilfsgraphen Interne Datenstrukturen Traces von Variablen Rekursionen Technische Universität Darmstadt 7

Zwei Arten der Visualisierung Ereignisgesteuert Datengesteuert Technische Universität Darmstadt 8

Ereignisgesteuert Das Programm steuert die Animation for e in E: display. colorize ( e,red ) if hascycle( Tree+[e,] ): display. colorize ( e,gray ) else: Tree.append( e ) display. colorize ( e,blue ) Zum Beispiel LEDA Wo ist der Algorithmus? Technische Universität Darmstadt 9

Externe Darstellungen AspectJ Erfordert Java als Programmiersprache Typecasts Basiert auf Methodenaufrufen tie Visualisierung wird erst zur Übersetzungszeit mit dem Programm verwoben Wie wird die Konsistenz sichergestellt? Wie kompliziert ist die Adaption für andere Implementierungen? Technische Universität Darmstadt 10

Datengesteuert Die Datenstrukturen steuern die Animation E = AnimatedList( E ) Tree = AnimatedSet() for e in E: if not hascycle( Tree+[e,] ): Tree.append( e ) Zum Beispiel GATO Wo und wie wird e nun eingefärbt? Technische Universität Darmstadt 11

Leonardo Underlaying programaugmented program Functions and procedures definitions Data structures definitions Predicates definitions Program execution machine Write Read Underlaying Program Computation Concrete data structures Read Predicates interpreter Abstraction Recovery Computation P.computation request High level data structures P. results Visualization request Execution Time Visualizer Rendering libraries Image Rendering Computation Programming Time C-Compiler Virtuelle Maschine Undo -Funktion Visualisierungssprache Alpha Entwicklungsumgebung Grapheneditor Technische Universität Darmstadt 12

Datenfluß Graph Editor Layout Structure Algorithm Execution Environment Log/Trace Visualization System Visualization Datastructure Library Visualization Specification Visualization Library Eingabespezifikation Visualisierungssystem Programmausgabe Technische Universität Darmstadt 13

Interpreter als Virtuelle Maschine Interpreter liefert virtuelle Maschine gratis In wie weit lassen sich die interessanten Informationen automatisch aus dem Ablauf extrahieren? Model: Die Datenstrukturen View: Sicht auf die Daten Controller: Der Algorithmus Technische Universität Darmstadt 14

Python Inerpretiert Erlaubt das Experimentieren Untypisiert Keine störenden Typumwandlungen Objektorientiert Zusätzlicher Freiheitsgrad Minimalistisch Leicht zu lernen Platformunabhängig Leicht austauschbar Sandbox, Debugger, Parser, Jython,... Technische Universität Darmstadt 15

Python Wrapper Erlaubt das Protokollieren aller Veränderungen 72 Methodenaufrufe: Numerische Typen Listen, Tupel, assoziative Felder Klassen, Instanzen Methoden, Funktionen Problem: Wertzuweisung Technische Universität Darmstadt 16

Python Tracer Nutzt Python Debugger-Schnittstelle Protokolliert wichtige Ereignisse: Funktionsaufrufe inklusive aller Parameter Rückgabewerte Ausnahmebedingungen Programmzeilenausführungen Problem: Programmzeilen schlecht auswertbar Technische Universität Darmstadt 17

Python Parser * Syntaktische Analyse der Programmzeilen Zugriff auf abstrakten Syntaxbaum zur Laufzeit Ermöglicht das Aufzeichnen von Strukturinformationen Schleifenkopf Schleifenkörper Testbedingungen Diese können der Informationsrückgewinnung dienen Technische Universität Darmstadt 18

XML Mapping Dynamischer Programmablaufbaum Wertzuweisungen, Änderungen Wertabfragen, Vergleiche Strukturinformationen Export als XML Struktur Navigation über XPath mit Standardprogrammen Transformation mit XSLT in Ausgabeformate Technische Universität Darmstadt 19

Was wurde (nicht) betrachtet Eingabe von Graphen Verwendung von Algorithmenbibliotheken Datenstruktursammlungen Generierung der Animationen Didaktische Gesichtspunkte Technische Universität Darmstadt 20

Was bleibt zu tun Implementierung des Parsers Vergleich der Ergebnisse mit existierenden Lösungen Extraktion der Informationen für Animationen Weitere Datenstrukturen und Algorithmen implementieren Die anderen beobachten Technische Universität Darmstadt 21