Kodieren Von Graphen

Ähnliche Dokumente
Relationen und Graphentheorie

Algorithmen und Datenstrukturen SS09. Foliensatz 16. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

15. Elementare Graphalgorithmen

Kürzeste Wege in Graphen. Orte mit Straßenverbindungen. Coma I Rolf Möhring

Einführung in die Informatik 2

Algorithmen und Datenstrukturen 2

Vorlesung Datenstrukturen

Grundbegriffe der Informatik

Graphen. Graphen und ihre Darstellungen

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

Programmiertechnik II

Programmiertechnik II

3. Die Datenstruktur Graph

Einheit 11 - Graphen

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

Grundlagen: Algorithmen und Datenstrukturen

Konzepte der Informatik

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Kapitel 6: Graphalgorithmen Gliederung

2. Repräsentationen von Graphen in Computern

= n (n 1) 2 dies beruht auf der Auswahl einer zweielementigen Teilmenge aus V = n. Als Folge ergibt sich, dass ein einfacher Graph maximal ( n E = 2

Routing A lgorithmen Algorithmen Begriffe, Definitionen Wegewahl Verkehrslenkung

Motivation Kap. 6: Graphen

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

Graphen und Bäume. A.1 Graphen

Routing Algorithmen. Begriffe, Definitionen

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

Algorithmen und Datenstrukturen 2-1. Seminar -

Vorlesung Datenstrukturen

Grundbegriffe der Informatik

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Grundbegriffe der Informatik

Ein Graph ist ein Paar (V,E), wobei V eine Menge von Knoten und E eine Menge von Kanten (v,w) mit v,w in V ist.

Kap. 5: Graphen. Carsten Gutwenger Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund. 17. VO DAP2 SS

Grundlagen Datenstrukturen Transitive Hülle Traversierung Kürzeste Wege Spannender Baum Max. Fluss Zuordnungen. 6. Graphen

Tutorium 23 Grundbegriffe der Informatik (7. Sitzung)

Algorithmen und Datenstrukturen

Diskrete Strukturen Kapitel 4: Graphentheorie (Grundlagen)

Verteilen von Bällen auf Urnen

Graph Paar (V,E) V: nichtleere Menge von Knoten (vertex) E: Menge von Kanten (edges): Relation (Verbindung) zwischen den Knoten

Ecken des Zuordnungsproblems

Mathematische Grundlagen

8 Diskrete Optimierung

Einführung in die Informatik 2

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Kapitel 5: Graphen und Graphalgorithmen

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

WS 2008/09. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen

f h c 7 a 1 b 1 g 2 2 d

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

Programmierkurs Python

Programmierkurs Python II

Graphenalgorithmen I

Graphdurchmusterung, Breiten- und Tiefensuche

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

5. Bäume und Minimalgerüste

Fortgeschrittene Netzwerk- und Graph-Algorithmen

Kapitel 3. Kombinatorische Optimierung. 3.1 Begriffe aus der Graphentheorie

Aufgabe 24 Die Wahrheitswerte von A A B und B sind immer gleich:

Graphen: Datenstrukturen und Algorithmen

4. Welchen Zusammenhang gibt es zwischen den Eckengraden und der Anzahl der Kanten eines ungerichteten Graphen?

Beziehungsmatrix. Jürgen Lerner

Algorithmen und Datenstrukturen II

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

Einführung in die Informatik I

Isomorphie von Bäumen

Datenstrukturen & Algorithmen

Vorlesung Informatik 2 Algorithmen und Datenstrukturen

Grundbegriffe der Informatik

Angewandte Informatik

Datenstrukturen. einfach verkettete Liste

9 Minimum Spanning Trees

Grundbegriffe der Informatik

ADS: Algorithmen und Datenstrukturen 2

7. Transitive Hülle. Kante des Graphen. Zusatz-Kante der transitiven Hülle

Diskrete Mathematik. Sebastian Iwanowski FH Wedel. Kap. 6: Graphentheorie

Bäume Jiri Spale, Algorithmen und Datenstrukturen - Bäume 1

Lernmodul 2 Graphen. Lernmodul 2: Geoobjekte und ihre Modellierung - Graphen

Matchings (Paarungen) in Graphen. PS Algorithmen auf Graphen SS `06 Steven Birr

2. November Gradfolgen Zusammenhang Kürzeste Wege. H. Meyerhenke: Algorithmische Methoden zur Netzwerkanalyse 37

Verkettete Datenstrukturen: Bäume

Massive Parallelität : Neuronale Netze

Berechnung von Abständen

Graphentheorie (Teschl/Teschl 15-17)

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Anmerkungen zur Übergangsprüfung

3 Klassifikation wichtiger Optimierungsprobleme

Digraphen, DAGs und Wurzelbäume

1. Einleitung wichtige Begriffe

4. Kreis- und Wegeprobleme Abstände in Graphen

Kürzeste Wege in einem gewichteten Graphen. Anwendungen

2.7 Felder (Arrays) Das englische Wort array hatte ursprünglich militärische Bedeutung: Aufstellung zur Schlacht : Titel der Zeichnung links:

Matrizen. a12 a1. a11. a1n a 21. a 2 j. a 22. a 2n. A = (a i j ) (m, n) = i te Zeile. a i 1. a i 2. a i n. a i j. a m1 a m 2 a m j a m n] j te Spalte

Laufzeit einer DTM, Klasse DTIME

Kapitel 9: Lineare Programmierung Gliederung

Wintersemester 2004/ Februar 2005

Grundlagen: Begriffe zu Graphen

Klausur Informatik B April Teil I: Informatik 3

Transkript:

Kodieren Von Graphen Allgemeine Anwendungen: Routenplaner Netzpläne Elektrische Schaltungen Gebäudeerkennung aus Luftaufnahmen Definitionen:? Graph Ein Graph G besteht aus einem geordneten Paar G = (V,E) mit folgenden Komponenten. V = Knotenmenge = (1,2 V ) Anzahl der Knoten E = Kantenmenge: Kante ist zweielementige Teilmenge von V? Gerichteter Graph Kante ist ein geordnetes Paar <v1,v2>, d.h. verbindet die beiden Knoten v1,v2 in einer bestimmten Richtung. d.h. <v1,v2>? <v2,v1> ( 2 verschiedene Kanten) Bsp: Produktionsplan/ Produktionsschritte Sonderfall: Baum? Ungerichteter Graph Kante ist ein ungeordnetes Paar <v1,v2>, d.h. verbindet die Knoten v1,v2 ohne Richtungsangabe. Bsp : Wegbeschreibung, Verkehrsnetz (ohne Einbahnstraßen) Ungerichtete Graphen sind ein Spezialfall von gerichteten Graphen, weil zu jeder (gerichteten) Kante <v1,v2> eine (gerichtete) Kante <v2,v1> existiert. d.h. <v1,v2> = <v2,v1> ( beides die gleiche Kante)

Verfahren 1. Adjazenzmatrix Eine Adjazenzmatrix ist eine boolsche (n x n)-matrix A = (aij). Die Einträge aij beschreiben die Kanten von Knoten i zu Knoten j. Besteht eine Verbindung zwischen den Knoten i und j, so ist aij gleich 1, sonst gleich 0. Handelt es sich bei dem Graph um einen ungerichteten Graph, so ist die Matrix symmetrisch. Gewichteter Graph: Um die Kantenbewertungen abzulegen wird oft anstatt der boolschen Matrix eine reelle Matrix verwendet, wo an jeder Stelle aij die Bewertung steht (1 für nicht vorhandene Kante). Diese Matrix wird oft Strukturmatrix genannt. Speicherbedarf: = V? unabhängig von der Anzahl der Kanten? ungünstig für Graphen mit wenig Kanten? Adjazenzmatrix für dichte (hohe Kantenanzahl) Graphen geeignet 2. Inzidenzmatrix Bei einer Inzidenzmatrix A = (aij) wird jeder Knoten durch eine Zeile und jede Kante durch eine Spalte beschrieben. Wenn die Kante j den Knoten i verlässt, ist aij=-1. Wenn die Kante j auf den Knoten i zeigt, ist aij=1. Ansonsten ist aij=0.

Speicherbedarf: = V * E? Speicherbedarf hängt sowohl von der Kanten- als auch von der Knotenanzahl ab.? Die Inzidenzmatrix verbraucht somit bei Graphen mit geringer Kantenanzahl ( E < V ) weniger Speicherplatz als die Adjazenzmatrix bei größer Anzahl von Kanten ( E > V ) ist es genau umgekehrt. Im Computer haben Adjazenz- bzw. Inzidenzmatrizen den Vorteil von schnellen Zugriffs- und Berechnungszeiten. Der Vorteil der Matrizendarstellung ist, daß man sofort entscheiden kann ob eine Kante im Graph enthalten ist oder nicht. Sie haben allerdings zwei entscheidende Nachteile. Zum einen ist die Größe des Graphen durch die Festlegung der Matrixgröße begrenzt. Dies kann man nur durch aufwendige Darstellungen einer Matrix beheben. Zum anderen ist eine Adjazenzbzw. Inzidenzmatrix nur für relativ dichte Graphen vorteilhaft, da die meisten Einträge bei lichten Graphen Null sind. Nullen zu speichern nimmt unnötig viel Speicherplatz in Anspruch. Obwohl Adjazenzlisten aufwendiger zu programmieren sind, kann man mit ihnen die beiden erwähnten Nachteile beheben. 3.Adjazenzlisten Die Grundidee einer Adjazenzliste ist, jeden Knoten in einem Graph mit seinen Adjazenzknoten (benachbarten Knoten) direkt zu verbinden. Dazu werden die Knoten in einem Feld abgelegt. Jeder Knoten besitzt einen Verweis auf eine Liste welche alle benachbarten Knoten enthält.

Speicherbedarf: Für gerichtete Graphen = V + E Für ungerichtete Graphen = V +2 E?Die Kodierungslänge steigt mit wachsender Kantenanzahl stark an. Bereits ab ca. 18% der möglichen Kantenanzahl werden mehr Bits als für die Adjazenzmatrix benötigt.

Adjazenz-Listen können leicht angepasst werden um gewichtete Graphen darzustellen. Bei einem gewichteten Graph hat jede Kante ein Gewicht. Dieses Gewicht lässt sich beim Knoten v in der Liste ADJ[v] abspeichern. Diese Darstellung ist einfach und robust. Der einzige Nachteil ist, dass man nicht schnell so leicht feststellen kann, ob Kante (v1,v2) im Graph enthalten ist. Man muss dann die Liste Adj[v1] durchsuchen. Diese Datenstruktur ist viel komplexer als eine Matrix. Sie ist aber für lichte Graphen, wie sie im Verkehrswesen zum überwiegenden Teil auftreten, sehr gut geeignet. 4. Inzidenzlisten Kanten und Knoten werden in separate Listen gespeichert. Jeder Kanteneintrag beinhaltet eine Referenz zum Quellknoten und Zielknoten. Speicherbedarf: = V + E? bei ungerichteten Graphen kann einfach eine andere Interpretation der Kantenliste erfolgen wodurch der Speicherbedarf nicht vergrößert wird, ansonsten steigt der Speicherbedarf wie bei Adj-Listen auf V +2 E an. Prüfung auf Enthaltensein einer Kante <v1,v2> jedoch sehr schwierig da evtl. die gesamte Kantenliste durchlaufen werden muss.

5. Permutationsreihe Ein anderer Ansatz zur kompakten Codierung von Graphen wurde von Cook und Holder im Rahmen einer Forschungsarbeit im Bereich des maschinellen Lernens vorgestellt. Cook und Holder nutzen dieses Stringcodierschema nun zur Codierung der Adjazenzmatrizen von Graphen. Dabei wird jede Zeile eines Graphen als Bitstring aufgefasst, und es werden für jede Zeile die Anzahl der Einsen sowie die Nummer der Permutation codiert. Die maximale Anzahl von Einsen pro Zeile ist durch den maximalen Knotengrad des Graphen beschränkt. Deshalb wird nach der Codierung der Knotenanzahl des Graphen zunächst der maximale Knotengrad codiert. Bsp: