Eberhard Karls Universität Tübingen Fakultät für Informations- und Kognitionswissenschaften Wilhelm-Schickard-Institut für Informatik Diplomarbeit Bioinformatik Visualisierung von Differenzen biologischer Netzwerke Robert Krug März bis September 2009 Betreuer Prof. Dr. Michael Kaufmann Prof. Dr. Oliver Kohlbacher (Informatik) (Bioinformatik) Wilhelm-Schickard-Institut für Informatik Wilhelm-Schickard-Institut für Informatik Universität Tübingen Universität Tübingen Eidesstattliche Erklärung Hiermit versichere ich, dass ich die vorliegende Diplomarbeit selbständig und nur mit den angegebenen Hilfsmitteln angefertigt habe und dass alle Stellen, die dem Wortlaut oder dem Sinne nach anderen Werken entnommen sind, durch Angaben von Quellen als Entlehnung kenntlich gemacht worden sind. Diese Diplomarbeit wurde in gleicher oder ähnlicher Form in keinem anderen Studiengang als Prüfungsleistung vorgelegt. Tübingen, den 3. September 2009 Robert Krug Inhaltsverzeichnis 1 Einleitung 1.1 Motivation . . . . 1.2 Das “Overview and 1.3 Graphentheorie . . 1.4 yEd und die yFiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 3 3 2 Graphen Kondensation 2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . 2.2 Das Optionsfenster . . . . . . . . . . . . . . . . . . 2.3 Zentralitäten . . . . . . . . . . . . . . . . . . . . . 2.3.1 Knotengrad . . . . . . . . . . . . . . . . . . 2.3.2 Closeness . . . . . . . . . . . . . . . . . . . 2.3.3 Graph Zentralität . . . . . . . . . . . . . . 2.3.4 Node Betweenness . . . . . . . . . . . . . . 2.3.5 Wiener Index . . . . . . . . . . . . . . . . . 2.4 Verschmelzoperationen . . . . . . . . . . . . . . . . 2.4.1 Verschmelzen auf einem variablen Graphen 2.4.2 Verschmelzen auf dem statischen Graphen . 2.4.3 Einführung ins Clustering . . . . . . . . . . 2.4.4 Kondensation mit Clustering . . . . . . . . 2.4.5 Statistiken . . . . . . . . . . . . . . . . . . 2.5 Darstellung . . . . . . . . . . . . . . . . . . . . . . 2.5.1 Der kondensierte Graph . . . . . . . . . . . 2.5.2 Die Detailansicht . . . . . . . . . . . . . . . 2.6 Implementation . . . . . . . . . . . . . . . . . . . . 2.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 5 7 7 8 8 8 9 9 11 16 19 19 24 27 27 27 29 30 3 Graph-Vergleich 3.1 Einleitung . . . . . . . . . . . . . . . . . 3.2 Das Optionsfenster . . . . . . . . . . . . 3.3 Ablauf . . . . . . . . . . . . . . . . . . . 3.3.1 Vorbereitung . . . . . . . . . . . 3.3.2 Der Vergleichsvorgang . . . . . . 3.3.3 Aufbereitung und Visualisierung 3.4 Das Übersichtsfenster . . . . . . . . . . 3.5 Die Detailansicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 32 32 32 33 33 34 . . . . . . . . . . Detail” Konzept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6 3.7 3.5.1 Darstellung des Detailgraphen . . . 3.5.2 Exploration des Teilgraphen . . . . . 3.5.3 Progressives Layout . . . . . . . . . Implementation . . . . . . . . . . . . . . . . 3.6.1 Datenstrukturen . . . . . . . . . . . 3.6.2 Konstruktion des Übersichtsgraphen 3.6.3 Exploration des Teilgraphen . . . . . 3.6.4 Die “undo”-Funktion . . . . . . . . . Zusammenfassung . . . . . . . . . . . . . . 4 Anwendung 4.1 Einleitung . . . . . . . . . . . . 4.2 Grundlagen . . . . . . . . . . . 4.2.1 Biologische Grundlagen 4.2.2 Testdaten . . . . . . . . 4.3 Vergleich . . . . . . . . . . . . . 4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 37 38 38 38 40 40 41 44 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 45 45 45 46 47 57 5 Zusammenfassung und Ausblick 59 5.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.2 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Literaturverzeichnis 63 1 Einleitung Beim Arbeiten mit Graphen kommt es oft vor, dass zwei oder mehr verschiedene Graphen verglichen werden sollen. Zum Beispiel werden in der Biologie Protein-Protein Interaktionsnetzwerke von zwei verschiedenen Organismen untersucht, um Ähnlichkeiten und Unterschiede herauszufinden. Auch in der Medizin ist der Vergleich von Graphen ein wichtiges Instrument. So können zum Beispiel durch den Vergleich von einem gesunden und einem kranken Organismus Hinweise auf die Ursachen der Krankheit, und damit eventuell Möglichkeiten zur Behandlung gefunden werden. Generell kann in allen Bereichen, in denen mit Graphen gearbeitet wird, der Fall auftreten, dass zwei Graphen verglichen werden müssen. Zum Beispiel bei dynamischen Graphen wie Peer-to-peer Netzen, bei denen 2 Snapshots von verschiedenen Zeiten verglichen werden. Ist im Netzwerk ein zentraler Knoten ausgefallen, so können die Auswirkungen durch einen Vergleich des Netzwerkzustandes vor und nach dem Ausfall herausgefunden werden. Da die Graphen, mit denen heutzutage gearbeitet wird, in der Regel aber sehr groß sind, kann der Vergleich nur schwer ohne Hilfsmittel durchgeführt werden. Um diesen Vorgang zu automatisieren, wurde im Rahmen dieser Arbeit ein Verfahren entwickelt und in Form eines Moduls für den Grapheneditor yEd implementiert, mit dem es möglich ist, zwei Graphen zu vergleichen und die Unterschiede visuell darzustellen. Das “Overview and Detail”Konzept wurde in [1] formuliert und wird in Abschnitt 1.2 vorgestellt. Dieses Konzept wurde für das Verfahren, das in dieser Diplomarbeit entwickelt wurde, verwendet. Dazu wurde zunächst eine Methode entwickelt und implementiert, mit der große Graphen auf aussagekräftige Minoren reduziert werden können. Mit dieser Technik sollen die Graphen übersichtlich dargestellt werden. Das Verfahren wird in Kapitel 2 erläutert. Das eigentliche Vegleichsmodul bedient sich dann dieser Methode, um den Übersichtsgraphen, in dem die Unterschiede markiert sind, anzuzeigen. Der Ablauf und die Funktionen des Vergleichsmodules werden im Kapitel 3 vorgestellt. Mögliche Anwendungen des entwickelten Verfahrens werden in Kapitel 4 anhand verschiedener Beispiele erläutert. 1.1 Motivation Ziel dieser Diplomarbeit war es, ein Verfahren zu entwickeln, mit dem große Graphen einfach verglichen werden können. Dabei wird davon ausgegangen, dass die Unterschiede zwischen den Graphen im Vergleich zu deren Größe klein sind. Unter anderem im biologischen Bereich werden immer mehr immer größere Datenmengen produziert, deren Auswertung nur noch computergestützt möglich ist. Viele dieser Daten liegen in Graphenform vor, wie zum Beispiel Protein-Protein Interaktionsnetzwerke oder phylogenetische Bäume. Oft hat ein einzelner Graph wenig Aussagekraft und erst durch den Vergleich mit 1 1.2. DAS “OVERVIEW AND DETAIL” KONZEPT KAPITEL 1. EINLEITUNG einem ähnlichen Graphen, der zum Beispiel für eine verwandte Spezies bestimmt wurde, lassen sich sinnvolle Aussagen treffen oder bestimmte Aufgaben lösen. Da diese Graphen aber ziemlich groß werden können, ist es für einen Menschen sehr mühsam bis unmöglich, sie von Hand zu vergleichen. Um diesen Vorgang einfacher zu gestalten, wurde in dieser Diplomarbeit ein Ansatz entwickelt, mit dem sich zwei Graphen automatisch vergleichen lassen, und mit dem die Ergebnisse übersichtlich dargestellt werden können. Außerdem bietet das Verfahren die Möglichkeit, den Vergleichsgraphen zu untersuchen und die einzelnen Unterschiede im Detail zu betrachten. Als Implementationsgrundlage für die entwickelten Verfahren wurden die Graphenbibliothek yFiles und der darauf basierende Editor yEd verwendet, die in Abschnitt 1.4 vorgestellt werden und unter [13] beziehungsweise [12] zu finden sind. Diese Wahl wurde getroffen, da die yFiles viele Algorithmen bereitstellen, die in verschiedenen Bereichen dieser Arbeit verwendet werden. Außerdem bieten die yFiles umfangreiche Möglichkeiten zur Visualisierung von Graphen, die hier ebenfalls Anwendung finden. 1.2 Das “Overview and Detail” Konzept Um den Vergleich zwischen zwei Graphen sinnvoll darstellen zu können, wird in dieser Arbeit das “Overview and Detail” Konzept verwendet, das in [1] vorgestellt wurde. Bei diesem Verfahren wird davon ausgegangen, dass die Unterschiede zwischen den beiden verglichenen Graphen eher klein und stark lokalisiert sind, und große Bereiche der beiden Graphen übereinstimmen. Deshalb kann ein Übersichtsgraph konstruiert werden, der die übereinstimmenden Bereiche enthält. Die Elemente, die jeweils nur in einem der beiden Graphen vorkommen, werden in diesem Übersichtsgraphen durch spezielle Knoten repräsentiert. Da die Betonung bei dieser Methode auf den Unterschieden liegt, sollen die gemeinsamen Bereiche nur schematisch und nicht bis ins letzte Detail dargestellt werden, um die Bereiche mit Änderungen besonders hervorzuheben. Anhand des Übersichtsgraphen soll dem Benutzer die Möglichkeit gegeben werden, die Änderungen in einer detaillierten Ansicht genauer untersuchen zu können. Sowohl der Übersichtsgraph als auch der Detailgraph sollen dabei möglichst ansprechend gezeichnet werden. Es sollen also Kantenkreuzungen oder Überlappungen zwischen Graphelementen vermieden werden. Für das “Overview and Detail” Konzept sind also die folgenden vier Schritte wichtig: 1. Konstruktion des Übersichtsgraphen, der gemeinsame Elemente und Elemente, die nur in jeweils einem der beiden Graphen vorhanden sind, enthält 2. Layout des Übersichtsgraphen 3. Konstruktion eines Detailgraphen, der dem Benutzer bei Bedarf einen interressanten Bereich des Übersichtsgraphen detailliert zeigt 4. Layout des Detailgraphen Um diese Schritte zu ermöglichen, müssen zunächst die Unterschiede zwischen beiden Graphen identifiziert, und anschließend der übereinstimmende Graphenteil auf wichtige Elemente reduziert werden. Durch diese Reduktion wird der Graph zum einen übersichtlicher, 2 KAPITEL 1. EINLEITUNG 1.3. GRAPHENTHEORIE zum anderen können die Gebiete, in denen Änderungen gefunden wurden, besser erkannt werden. Bei der Konstruktion des Detailgraphen wird nur ein kleiner Teil des Übersichtsgraphen vollständig angezeigt, da davon ausgegangen wird, dass die Änderungen lokal sind, und nur die unmittelbare Umgebung für den Benutzer interessant ist. Der Detailgraph selber wird konsistent mit dem Übersichtsgraphen erzeugt, so dass Knoten, die im Übersichtsgraphen untereinander liegen, auch im Detailgraphen untereinander positioniert sind. Wenn der detaillierte Bereich aber zu klein ist, sollte der Benutzer in der Lage sein, den Detailgraphen in die gewünschte Richtung zu erweitern. Diese Erweiterung soll wiederum konsistent mit dem Übersichtsgraphen ablaufen. Wird der Detailgraph zum Beispiel nach oben erweitert, soll der Bereich, der dann eingeblendet wird, auch im Übersichtsgraphen oberhalb des schon abgebildeten Bereiches liegen. Diese Konsistenz soll dem Benutzer die Orientierung im Detailgraphen erleichtern. 1.3 Graphentheorie Die Problemstellung, die dieser Arbeit zu Grunde liegt, ist der Vergleich zweier Graphen. Deshalb werden in diesem Abschnitt einige grundlegende Begriffe aus der Graphentheorie eingeführt. Ein Graph G = (V, E) besteht aus der Knotenmenge V und der Kantenmenge E. Mit n = |V | wird die Anzahl der Knoten, und mit m = |E| die Anzahl der Kanten bezeichnet. Kanten sind Knotenpaare (u, v) mit u, v ∈ E, die in gerichteten Graphen eine Orientierung von Quell- zu Zielknoten haben. Werden zwei Knoten von mehr als einer Kante verbunden, so spricht man von Multikanten. Hyperkanten hingegen haben mehr als einen Quell- und oder Zielknoten. Für die Graphen, die mit dem Verfahren aus dieser Arbeit verglichen werden, wird davon ausgegangen, dass sie keine Hyperkanten enthalten. Es ist möglich, Kanten ein Gewicht g(e) : e 7→ x ∈ R zuzuordnen, man spricht dann von einem gewichteten Graph. Dies spielt zum Beispiel eine Rolle, wenn kürzeste Wege zwischen zwei Knoten gesucht werden, wie es bei manchen der Zentralitäten in Kapitel 2.3 der Fall ist. Dabei kann es vorkommen, dass nicht alle Kanten des Graphen den gleichen Stellenwert haben. Man spricht von planaren Graphen, wenn es möglich ist, den Graph so zu zeichnen, dass sich keine zwei Kanten kreuzen. Unter bipartiten Graphen versteht man Graphen, die in zwei Mengen von Knoten aufteilbar sind, so dass es nur Kanten zwischen diesen beiden Knotenmengen gibt, nicht aber innerhalb einer dieser Mengen. Das in dieser Diplomarbeit entwickelte Programm ist in der Lage, die hier vorgestellten Graphentypen zu verarbeiten. 1.4 yEd und die yFiles Als Grundlage für die Implementierung des hier vorgestellten Verfahrens werden die yFiles zusammen mit dem Editor yEd verwendet, die beide von der Firma yWorks entwickelt wurden. Die yFiles sind eine Graphenbibliothek, die verschiedene Graphenalgorithmen zur 3 1.4. YED UND DIE YFILES KAPITEL 1. EINLEITUNG Verfügung stellt. Der Schwerpunkt liegt auf der Visualisierung und dem Layout von Graphen, aber auch verschiedene Graphenalgorithmen wie kürzeste Wege und Zentralitäten sind vorhanden. Ein einführendes Paper in die yFiles ist [7], weiterführende Informationen zu den yFiles finden sich auf [13]. Der Grapheneditor yEd basiert auf den yFiles und bietet die Möglichkeit, viele der Verfahren aus den yFiles direkt auf Beispielgraphen anzuwenden und die Ergebnisse darzustellen. Außerdem lassen sich komfortabel eigene Module entwickeln und in den Editor integrieren. Deshalb wurde diese Methode zur Implementation des Verfahrens aus dieser Diplomarbeit verwendet. Unter [12] lassen sich sowohl der Editor als auch weitere Informationen darüber finden. 4 2 Graphen Kondensation 2.1 Einleitung Als Teil des “Overview and Detail” Konzepts aus Abschnitt 1.2 soll ein Übersichtsgraph konstruiert werden, der die strukturellen Eigenschaften eines Eingangsgraphen in einer übersichtlichen Art und Weise zusammenfasst. Dazu wird der Graph auf seine wesentlichen Teile reduziert, wobei die restlichen Teile verschmolzen werden. Im Folgenden wird dieser Vorgang als Kondensation bezeichnet. Implementiert wurde das Verfahren in Form des “GraphCondenser” Modul für den Grapheneditor yEd. Die verschiedenen Einstellungsmöglichkeiten des Moduls werden im folgenden Abschnitt 2.2 vorgestellt. In Kapitel 2.3 werden verschiedene Zentralitätsmaße eingeführt, die für das Kondensieren des Graphen verwendet werden. Der eigentliche Kondensationsvorgang mit den verschiedenen Möglichkeiten wird in Abschnitt 2.4 erläutert. Anschließend folgt das Kapitel 2.5, das die Darstellung des verschmolzenen Graphen erklärt, sowie die Möglichkeiten, die der Benutzer dabei hat. Auf einige Details der Implementierung wird in Abschnitt 2.6 eingegangen, und das ganze Kapitel schließlich in Abschnitt 2.7 zusammengefasst. 2.2 Das Optionsfenster des GraphCondenser Modules In diesem Abschnitt wird das Optionsfenster, in dem die Einstellungen für den Kondensationsvorgang eingegeben werden, vorgestellt. In Abbildung 2.1 ist ein Screenshot des Optionsfensters zu sehen. In dem mit (1) markierten roten Kästchen befinden sich die Einstellungen für das Zentralitätsmaß, das für den Kondensationsvorgang verwendet werden soll. Es gibt ein DropDown Menü, aus dem eines der in Kapitel 2.3 vorgestellten Zentralitätsmaße ausgewählt werden kann, sowie eine Checkbox, mit der eingestellt werden kann, ob die Kanten des Graphen zur Berechnung der Zentralitätswerte als gerichtet behandelt werden sollen. Für manche der Zentralitäten ist es wichtig, ob die Richtung der Kanten eine Rolle spielt. Wenn zum Beispiel kürzeste Wege gesucht werden oder die Erreichbarkeit von Knoten eine Rolle spielt, können die Werte mit gerichteten Kanten sehr unterschiedlich von den Werten, die man mit ungerichteten Kanten erhält, sein. Je nach Anwendung muss der Benutzer hier die für seinen Graphen geeigneten Einstellungen treffen. Im nächsten Kästchen, der Nummer (2), wird die Auswahl des Kondensationsverfahrens getroffen. Aus dem Drop-Down Menü kann eines der in Kapitel 2.4 vorgestellten Verfahren gewählt werden. Mit der Checkbox kann der Benutzer einstellen, ob das Verfahren nach jedem Schritt unterbrochen und der aktuelle Graph angezeigt wird. Dann kann angegeben werden, ob ein weiterer Schritt folgen soll, oder der Graph bereits genug kondensiert wur- 5 2.2. DAS OPTIONSFENSTER KAPITEL 2. GRAPHEN KONDENSATION Abbildung 2.1: Optionsfenster für das Kondensations Modul, die einzelnen Einstellungen werden im Text erklärt de. Wird der interaktive Modus gewählt, so wird die Anzahl verschmolzener Knoten für die entsprechenden Kondensationsverfahren nicht aus dem Optionsfenster übernommen, sondern dadurch bestimmt, wann der Benutzer den Vorgang abbricht. Die Optionen im Kästchen (3) geben die Möglichkeit, die entsprechenden Werte für das jeweilige Kondensationsverfahren anzupassen. Für das Clusteringverfahren, das in Abschnitt 2.4.4 vorgestellt wird, ist die Anzahl der Cluster wichtig, die hier vom Benutzer eingestellt werden kann. Die nächsten beiden Werte sind nur für die Verfahren aus den Kapiteln 2.4.1 und 2.4.2, bei denen auf einem statischen und einem sich verändernden Graphen verschmolzen wird, relevant. Bei diesen Verfahren werden benachbarte Knoten miteinander vereinigt. Wird auf einem statischen Graphen verschmolzen, so wird der Graph erst am Ende des Verschmelzungsvorgangs aktualisiert, während bei der Methode auf dem sich verändernden Graphen nach jedem Schritt ein Update erfolgt. Es kann die Anzahl der Knoten, die maximal von einem Multiknoten im Ergebnisgraphen repräsentiert werden sollen, eingestellt werden, sowie der maximale Wichtigkeitswert, den ein Multiknoten erreichen darf. Mit den Einstellungen aus dem letzten Kästchen (4) kann optional angegeben werden, dass während der Kondensation nur Knoten die einen ähnlichen Zentralitätswert haben vereinigt werden. Mit der Checkbox wird diese Option gewählt und mit dem eingestellten Wert angegeben, wie unterschiedlich die Wichtigkeit zweier Knoten sein darf, damit sie noch verschmolzen werden dürfen. Grundsätzlich muss der Benutzer die für die jeweilige Anwendung am besten geeigneten Einstellungen finden. Der zeitaufwendigste Schritt ist die Berechnung der Zentralitätswerte, die je nach verwendeter Methode durchaus einige Sekunden in Anspruch nehmen kann. Graphen mit einigen Hundert Knoten sind noch kein Problem, aber sobald 6 KAPITEL 2. GRAPHEN KONDENSATION 2.3. ZENTRALITÄTEN mehr als Tausend Knoten im Graphen sind muss man auf die Berechnung von zum Beispiel den Wiener Index Zentralitätswerten mehrere Sekunden warten. Die Knotengrad Zentralitäten hingegen sind auch für Graphen mit mehr als Tausend Knoten sehr schnell berechnet, so dass der eigentliche Aufwand bei diesem Maß in der Kondensation liegt. Für die übrigen Zentralitäten ist das restliche Verfahren vergleichsweise schnell, so dass die optimalen Einstellungen mit wenig Aufwand durch etwas Experimentieren gefunden werden können. 2.3 Zentralitäts Maße Um die Knoten eines Graphen miteinander vergleichen zu können, und die Wichtigkeit der einzelnen Knoten zu bewerten, wird ein Ähnlichkeitsmaß benötigt. Eine Möglichkeit für ein solches Maß sind Zentralitäten. Dabei wird jedem Knoten ein Wert aus dem Intervall [0, 1] zugewiesen. Dieser Wert soll eine Abschätzung für die “Wichtigkeit” des entsprechenden Knotens liefern. Für das Kondensationsmodul stehen verschiedene Zentralitätsmaße zur Verfügung, die im Folgenden vorgestellt werden. Die hier vorgestellten Zentralitätsmaße sind aus [4] entnommen, welches auch eine ausführlichere Beschreibung und weitere Zentralitätsmaße enthält. Für die einzelnen Zentralitäten sei G = (V, E) der zugrundeliegende Graph mit Knotenmenge V und Kantenmenge E. Der Grad eines Knotens v sei mit deg(v), der Zentralitätswert des Knotens mit c(v) beschrieben. Für manche der Zentralitätsmaße wird außerdem der kürzeste Weg zwischen zwei Knoten gebraucht - mit dist(u, v) sei deshalb die Länge des kürzesten Weges zwischen den Knoten u und v bezeichnet. Da für mehrere der Zentralitäten kürzeste Wege verwendet werden, ist es wichtig zu unterscheiden, ob der Graph gerichtet oder ungerichtet ist. Dies kann der Benutzer im Optionsfenster direkt nach der Wahl des Zentralitätsmaßes angeben. Je nach gewähltem Zentralitätsmaß ist die Berechnung mehr oder weniger aufwendig. Insbesondere der Wiener Index ist sehr rechenintensiv und kann bei größeren Graphen durchaus einige Zeit zur Berechnung in Anspruch nehmen. Sobald die Knotenzahl Tausend übersteigt muss, je nach Dichte des Graphen, mehrere Sekunden auf das Ergebnis der Berechnung gewartet werden. Wenn die Struktur des Graphen bekannt ist, und damit auch abgeschätzt werden kann, welche Knoten wichtig sind, kann ein geeignetes Zentralitätsmaß gewählt werden, so dass der kondensierte Graph den originalen Graph möglichst gut wiedergibt. 2.3.1 Knotengrad Das einfachste Zentralitätsmaß ist der Knotengrad. Dabei erhält jeder Knoten als Wert die Anzahl seiner ein- und ausgehenden Kanten. Dieser Wert wird noch normiert indem er durch den maximalen Grad eines Knotens im aktuellen Graphen geteilt wird. Die Knotengrad Zentralität ist also folgendermaßen definiert: c(v) = deg(v) maxv∈V deg(v) 7 (2.1) 2.3. ZENTRALITÄTEN KAPITEL 2. GRAPHEN KONDENSATION 2.3.2 Closeness Bei der Closeness Zentralität wird die Länge aller kürzesten Pfade von einem Knoten zu allen anderen Knoten des Graphen betrachtet. Ein Knoten der zu allen anderen Knoten einen geringen Abstand hat erhält einen hohen Closeness Wert. Die Idee bei diesem Maß ist, dass Knoten, die für den jeweiligen Graphen wichtig sind, im Zentrum des Graphen liegen, und deshalb einen geringen Abstand zu allen anderen Knoten haben. Berechnet wird die Closeness Zentralität, indem der Kehrwert der Summe aller kürzesten Pfadlängen eines Knotens zu allen anderen Knoten genommen wird: 1 u∈V,u6=v dist(v, u) c(v) = P (2.2) Dieses Zentralitätsmaß kann nur sinnvoll angewendet werden, wenn der Graph zusammenhängend ist. Sind einige Knoten nicht erreichbar, so wird der kürzeste Pfad zu diesen Knoten unendlich lang und der Zentralitätswert somit 0. Eine Möglichkeit dieses Problem zu umgehen ist, dass man für die Berechnung des Zentralitätswertes nur die Knoten berücksichtigt, die vom aktuellen Knoten aus erreichbar sind. Dadurch kommt es allerdings wieder zu anderen ungewollten Seiteneffekten. Zum Beispiel werden kleinere Zusammenhangskomponenten einen hohen Closeness Wert erhalten, da innerhalb der Komponente alle Knoten mit wenigen Schritten erreicht werden können. Für den Rest des Graphen ist die Komponente aber eventuell nicht so wichtig, so dass die Wichtigkeitswerte durch diese Anpassung verzerrt werden. 2.3.3 Graph Zentralität Die Graph Zentralität ist der Closeness Zentralität sehr ähnlich. Auch hier werden wieder kürzeste Wege zur Berechnung verwendet. Allerdings wird diesmal nicht über alle Wege aufsummiert, sondern das Maximum der kürzesten Wege von diesem Knoten verwendet. Das bedeutet, wie schon bei der Closeness Zentralität, dass ein Knoten mit einem hohen Graph-Zentralitätswert kurze Wege zu allen anderen Knoten des Graphen hat, und somit als besonders wichtig für den Graphen angesehen werden kann. Die Definition der Graph Zentralität ist dann: 1 c(v) = (2.3) maxu∈V,u6=v dist(v, u) Auch bei diesem Zentralitätsmaß kommt es mit nicht zusammenhängenden Graphen zu Problemen, die aber wiederum umgangen werden können, indem für die Berechnung jeweils nur erreichbare Knoten berücksichtigt werden. Allerdings treten dabei wieder die zuvor beschriebenen Seiteneffekte auf. 2.3.4 Node Betweenness Für die Node Betweenness Zentralität werden wieder kürzeste Wege betrachtet, allerdings nicht von einem bestimmten Knoten ausgehend. Bei diesem Zentralitätsmaß ist nicht die Länge wichtig, sondern wie oft ein Knoten auf kürzesten Wegen liegt. Ein Knoten mit 8 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN einem hohen Node Betweenness Wert ist Bestandteil von vielen kürzesten Wegen des Graphen. Sein Entfernen hätte eine starke Auswirkung und deshalb wird der Knoten als wichtig betrachtet. Bei der Node Betweenness Zentralität werden deshalb zunächst alle paarweisen kürzesten Wege bestimmt. Dann wird für jeden Knoten des Graphen gezählt, auf wievielen dieser kürzesten Wege der Knoten liegt. Für die normierte Version der Node Betweenness Zentralität wird anschließend noch jeder Wert durch den Maximalwert geteilt, damit die Zentralitätswerte aller Knoten im Intervall [0, 1] liegen. Die (nicht normierte) Node Betweenness Zentralität ist also definiert als: X c(v) = onP athv (x, y) (2.4) x,y∈V mit onP athv (x, y) = 1 v liegt auf dem kürzesten Weg von x nach y 0 sonst (2.5) 2.3.5 Wiener Index Der Wiener Index ist ein Wert, der für einen Graphen definiert ist, und entspricht der Summe der kürzesten Wege zwischen allen Knotenpaaren. Um nun einen Zentralitätswert für jeden Knoten zu erhalten, wird der Wiener Index für den ursprünglichen Graphen und für den Graphen ohne den jeweiligen Knoten bestimmt. Der Zentralitätswert des Knotens entspricht dann dem Unterschied zwischen diesen beiden Wiener Index Werten. Dieser Wert muss, nachdem er für alle Knoten bestimmt wurde, wieder mit dem höchsten Wert normiert werden, damit er zwischen 0 und 1 liegt. Der Wiener Index eines Knoten ist also definiert als: c(v) = wiener(G) − wiener(G \ {v}) (2.6) mit wiener(G) = X dist(u, v) (2.7) u,v∈V Es gibt noch viele weitere Zentralitätsmaße die hier nicht erwähnt wurden. Zum Beispiel sind viele Zentralitäten auf den Kanten eines Graphen definiert. Alle hier vorgstellten Zentralitätsmaße weisen nur den Knoten des Graphen einen Wert zu. Außerdem gibt es noch die Möglichkeit, verschiedene Zentralitätsmaße zu kombinieren. Dabei kann durch eine Gewichtung den verschiedenen verwendeten Zentralitäten eine unterschiedlich große Rolle zugeteilt werden. 2.4 Verschmelzoperationen Nachdem im vorigen Kapitel die verschiedenen Zentralitäten vorgestellt wurden, wird nun erklärt, wie der Graph kondensiert wird. Unter Verwendung eines der möglichen Zentralitätsmaße aus dem vorigen Abschnitt werden schrittweise Knoten mit anderen Knoten zusammengefasst und die Größe des Graphen damit reduziert. Im Folgenden wird dieser 9 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Vorgang als Verschmelzung bezeichnet. Je nach den vom Benutzer gewählten Einstellungen ist die Verkleinerung des Graphen mehr oder weniger stark. Die erste der beiden möglichen Verschmelzoperationen ist in Abbildung 2.2 dargestellt. Bei der Verschmelzung aus Abbildung 2.2 werden zwei benachbarte Knoten vereinigt. Abbildung 2.2: Eine mögliche Verschmelzoperation des Kondensationsmoduls: gestrichelte Elemente werden aus dem Graphen entfernt, der rote Knoten wird zum Multiknoten und die roten Kanten neu eingefügt Dies reduziert vor allem die Anzahl der Grad 1 Knoten in einem Graph, kann aber mit entsprechenden Einstellungen der Verschmelzparameter auch andere Knoten miteinander vereinen. An dem Beispiel aus Abbildung 2.2 sieht man außerdem, dass in manchen Fällen neue Kanten eingefügt werden. Wird ein Knoten aus dem Graphen entfernt, der aber mit anderen Knoten als dem entsprechenden Multiknoten verbunden ist, so werden Kanten vom Multiknoten zu diesem Knoten eingefügt, damit der Graph weiterhin verbunden bleibt. Sind alle Möglichkeiten für Verschmelzungen nach dieser Methode ausgeschöpft, gibt es eine zweite Methode, nach der Knoten vereinigt werden können. Diese zweite Methode ist schematisch in Abbildung 2.3 dargestellt. Bei der zweiten Verschmelzmethode aus Abbildung 2.3 werden 2 Knoten, die einen gemeinsamen benachbarten Knoten haben, miteinander vereinigt. Diese Methode wird angewandt, wenn nach der ersten Methode keine Knoten mehr verschmolzen werden können. Auch hier müssen in Fällen wie dem aus dem Beispiel neue Kanten in den Graphen eingefügt werden, damit dieser zusammenhängend bleibt. Bevor der eigentliche Verschmelzvorgang stattfindet, wird zunächst für jeden Knoten der Zentralitätswert ermittelt. Dieser stellt für den Verschmelzvorgang die Wichtigkeit des Knotens dar. Dabei wird das vom Benutzer gewählte Zentralitätsmaß verwendet. Als zusätzliche Eingabe kann optional angegeben werden, dass manche Knoten nicht verschmelzbar sind. Dies kann zum Beispiel sinnvoll sein, wenn zu Beginn bekannt ist, dass manche Knoten im aktuellen Graphen sehr wichtig sind und deshalb in der kondensierten Version des Graphen auf jeden Fall enthalten sein sollen. Außerdem wird das eine Rol- 10 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Abbildung 2.3: Die zweite mögliche Verschmelzoperation des Kondensationsmoduls: gestrichelte Elemente werden aus dem Graphen entfernt, der rote Knoten wird zum Multiknoten und die rote Kante neu eingefügt le spielen, wenn später der Vergleichsgraph zur Übersichtlichkeit kondensiert wird (siehe Kapitel 3). Mit diesen Angaben und den restlichen Parametern die im Optionsfenster eingestellt wurden (wie in Kapitel 2.2 beschrieben) wird nun die eigentliche Kondensation mit dem vom Benutzer gewählten Verfahren durchgeführt. Die folgenden Abschnitte erläutern, wie bei den einzelnen Kondensationsmethoden vorgegangen wird. 2.4.1 Verschmelzen auf einem variablen Graphen Bei diesem Verfahren wird solange ein verschmelzbares Knotenpaar ermittelt und verschmolzen, bis es keine Möglichkeit mehr gibt. Um zu entscheiden, ob ein Knotenpaar verschmolzen werden kann, wird zunächst überprüft ob mit der Vereinigung nicht ein Knoten entstünde, der zuviele andere Knoten repräsentiert. Außerdem wird überprüft ob der entstehende Knoten einen Wichtigkeitswert erhält, der die vom Benutzer gegebene Maximalgrenze übersteigt. Wurde die entsprechende Option im Optionsfenster gewählt, wird außerdem noch überprüft, ob die Wichtigkeitswerte der beiden Knoten nicht zu weit auseinander liegen, so dass nur Knoten mit ähnlichem Wert vereinigt werden. Der Unterschied zu dem Verfahren aus Kapitel 2.4.2 ist der, dass bei dem Verfahren aus diesem Kapitel der Graph nach jedem Verschmelzungsschritt angepasst wird, während bei dem Verfahren aus Kapitel 2.4.2 erst nachdem alle Knoten verschmolzen wurden aktualisiert wird. Durch die Methode aus diesem Kapitel ändert sich also in jedem Schritt die Nachbarschaft der an der aktuellen Verschmelzung beteiligten Knoten. Beim Clusteringverfahren aus Kapitel 2.4.4 hingegen wird der Graph zwar nach jedem Schritt angepasst, allerdings werden die Knoten, die verschmolzen werden, nicht auf dem ganzen Graph gesucht. In jedem Schritt wird beim Clustering die Nachbarschaft der Clusterknoten in diese verschmolzen. Für die Verschmelzung auf dem variablen Graphen wird ein passendes Knotenpaar gesucht und die beiden Knoten im Graphen vereint. Das bedeutet, dass einer der Knoten 11 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION aus dem Graphen entfernt wird, und der andere Knoten mit allen Nachbarn des entfernten Knotens verbunden wird, mit denen er noch nicht verbunden ist. Es wird gespeichert, welcher Knoten in welchem “Multiknoten” enthalten ist. Außerdem wird die Wichtigkeit des verbleibenden Knotens auf einen neuen Wert gesetzt. Der neue Wert des Multiknotens ist die Summe der Zentralitätswerte der Knoten, die in ihm enthalten sind. Somit wird ein Multiknoten mit jedem weiteren Knoten, der mit ihm verschmolzen wird, wichtiger. Durch das einfache Addieren der Wichtigkeiten ist das Verfahren wesentlich schneller, als wenn nach jedem Schritt die Zentralitätswerte des Graphen neu berechnet werden müssten, da der komplette Verschmelzvorgang aus sehr vielen Einzelschritten besteht. Außerdem berücksichtigen die Zentralitätsmaße nicht, dass ein Multiknoten mehrere Knoten repräsentiert, und deshalb einen höheren Wichtigkeitswert als ein normaler Knoten haben sollte. Einer der Parameter, die der Benutzer einstellen kann, ist die Zahl der Knoten, die maximal zu einem Multiknoten vereint werden dürfen. Wurde die Option “interactive melting process” gewählt, so werden zunächst bis zu 2 Knoten vereint. Anschließend wird der veränderte Graph angezeigt und dem Benutzer die Option gegeben, mehr als 2 Knoten zu verschmelzen. Nachdem alle Möglichkeiten 2 Knoten zu vereinen erschöpft sind, wird der Benutzer gefragt, ob noch mehr Knoten verschmolzen werden sollen. Sollte der Benutzer das bestätigen, werden solange bis zu 3 Knoten vereinigt, bis es keine Möglichkeit mehr gibt. Dann wird der Benutzer erneut gefragt, ob mehr Knoten verschmolzen werden sollen. Auf diese Weise kann der Benutzer so lange mehr Knoten vereinigen lassen, bis der gewünschte Kondensationsgrad erreicht wurde. Wird hingegen im normalen Modus kondensiert, bedeutet das, dass zunächst nur 2 Knoten verschmolzen werden und dann schrittweise immer ein Knoten mehr, bis die eingestellte Grenze erreicht ist. Auf diese Weise wird sichergestellt, dass das Ergebnis nach drei Schritten aus dem Ergebnis das nach zwei Schritten erhalten wurde, hervorgeht, auch wenn nicht nach jedem Schritt unterbrochen wird. Dadurch sind die kondensierten Graphen, die aus demselben Ursprungsgraphen, aber mit anderen Kondensationseinstellungen gewonnen wurden, ähnlicher als wenn beliebig verschmolzen werden könnte. Damit werden diese verschiedenen Versionen des Graphen miteinander vergleichbar. Durch diese Vorgehensweise kommt es zu einem weiteren Effekt: Die Graphen bei denen bis zu 2 und bei denen bis zu 3 Knoten verschmolzen wurden, unterscheiden sich kaum. Das liegt daran, dass dach dem ersten Schritt alle möglichen 2-er Paare von Knoten zu einem Multiknoten zusammengefasst wurden, diese 2-er Multiknoten aber nicht miteinander vereinigt werden können, da im zweiten Graphen nur maximal 3 Knoten in einem Multiknoten enthalten sein dürfen. Einzelne Knoten die nach dem ersten Schritt noch nicht verschmolzen wurden können in diesem Schritt noch zu einem 2-er Knoten hinzugefügt werden, der Rest des Graphen bleibt aber unverändert. Somit sind die größten Sprünge im Kondensationsfaktor des Graphen immer bei den 2-er Potenzen für die maximal verschmelzbare Knotenzahl. 12 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Abbildung 2.4: zufällig erzeugter planarer Beispielgraph mit 350 Knoten und 700 Kanten Kondensiert man den zufällig erzeugten planaren Graphen aus Abbildung 2.4 mit dem in diesem Kapitel vorgestellten Verfahren und den Einstellungen bis zu 2 Knoten verschmelzen und einem maximalen Wichtigkeitswert von 2.0, so erhält man den Graphen aus Abbildung 2.5. Erkennbar ist die deutliche Reduzierung der Knotenzahl, wobei die Form und Struktur des Graphen erhalten bleibt. Man sieht, dass einige blaue Knoten im Graphen verbleiben - diese konnten nicht mehr verschmolzen werden, da alle ihre Nachbarn schon mit anderen Knoten vereint wurden und nur 2 Knoten in einem Multiknoten enthalten sein dürfen. 13 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Abbildung 2.5: Der Graph aus Abbildung 2.4 kondensiert mit dem in Kapitel 2.4.1 vorgestellten Verfahren und den Einstellungen bis zu 2 Knoten verschmolzen und einem maximalen Wichtigkeitswert von 2.0. Normale Knoten sind blau, Multiknoten sind rot und eingefügte Kanten grün markiert. Diese Farbgebung ist in allen folgenden Abbildungen identisch. 14 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Abbildung 2.6: Der Graph aus Abbildung 2.4 kondensiert mit dem Verfahren aus Kapitel 2.4.1 und den Einstellungen bis zu 4 Knoten verschmolzen und einem maximalen Wichtigkeitswert von 2.0 Erkennbar in den Abbildungen 2.4 - 2.6 ist die zunehmende Reduzierung der Knotenzahl des Ergebnisgraphen wenn mehr Knoten verschmolzen werden dürfen. Wenn mehr als 2 Knoten verschmolzen werden dürfen, wie in Abbildung 2.6, so bleiben in diesem Beispiel keine unverschmolzenen Knoten mehr im Graphen. Die Knotenzahl wird im Vergleich zu dem Graphen aus Abbildung 2.5, bei dem nur 2 Knoten verschmolzen wurden, weiter reduziert und der Kondensationsgrad des Graphen somit erhöht. Die relative Form bleibt dennoch erhalten, entfernt sich aber deutlich weiter vom Eingangsgraphen aus Abbildung 2.4 als bei der Kondensation aus Abbildung 2.5. Durch das in diesem Kapitel beschriebene Verschmelzverfahren wird der Graph also in jedem Schritt verändert - es entfallen Knoten und in manchen Fällen werden Kanten eingefügt. Je mehr Knoten verschmolzen werden können, desto weiter entfernt sich das Ergebnis vom ursprünglichen Graphen. Der Benutzer muss für den jeweiligen Anwendungsfall selbst entscheiden, ob er mehr Wert darauf legt, dass der Graph nah am originalen Graphen bleibt, oder der Komprimierungsfaktor möglichst groß sein soll. Dies kann durch entsprechende Einstellungen im Optionsfenster (siehe auch Kapitel 2.2) erreicht werden. 15 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION 2.4.2 Verschmelzen auf dem statischen Graphen Für dieses Verfahren werden ebenfalls in jedem Schritt zwei verschmelzbare Knoten bestimmt und diese zu einem Multiknoten zusammengefasst. Die Kriterien, die bestimmen ob zwei Knoten verschmelzbar sind, sind dieselben wie die, die im vorigen Kapitel 2.4.1 beschrieben wurden. Nachdem zwei Knoten vereint wurden, wird bei diesem Verfahren aber nicht der Graph geändert. Die zusammengehörenden Knoten werden separat gespeichert und erst nach Beendigung des kompletten Kondensationsvorgangs werden die verschmolzenen Knoten mit ihren Kanten aus dem Graphen entfernt. Das jeweils nächste verschmolzene Knotenpaar wird also immer auf dem originalen Graphen gesucht. Um das zu ermöglichen, wird für jeden Knoten gespeichert, wie groß die Gruppe bereits ist, zu der er gehört, und welchen Wichtigkeitswert die Gruppe hat. Dieser wird, wie schon bei der Verschmelzung auf dem variablen Graphen, bei einer Verschmelzung auf die Summe der Wichtigkeiten der einzelnen Knoten (oder Knotengruppen) gesetzt. Auch bei diesem Verfahren wird wieder schrittweise vorgegangen, sowohl im interaktiven wie im normalen Fall. Das Ergebnis nachdem bis zu drei Knoten verschmolzen wurden geht also immer aus dem Ergebnis für bis zu zwei verschmolzenen Knoten hervor. In Abbildung 2.7 ist der Beispielgraph aus dem vorigen Kapitel mit dem Verfahren aus diesem Kapitel und den angegebenen Einstellungen verschmolzen worden. Die Einstellungen sind dieselben wie in Abbildung 2.5, damit die beiden Verfahren verglichen werden können. Zwischen den beiden Abbildungen sind nur sehr wenig Unterschiede auszumachen. Das liegt daran, dass der Graph durch die Verschmelzung von zwei benachbarten Knoten noch kaum verändert wird und somit der Unterschied zwischen den beiden Verfahren nicht wirklich zum Tragen kommt. Deshalb sind die beiden Ergebnisse nahezu identisch. 16 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Abbildung 2.7: Der Beispielgraph aus Abbildung 2.4 kondensiert mit dem Verfahren aus Kapitel 2.4.2 und den Einstellungen bis zu 2 Knoten verschmolzen und einer maximalen Wichtigkeit von 2.0 17 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Abbildung 2.8: Der Beispielgraph aus Abbildung 2.4 kondensiert mit dem Verfahren aus Kapitel 2.4.2 und den Einstellungen bis zu 4 Knoten verschmolzen und einer maximalen Wichtigkeit von 2.0 Wenn mehr Knoten verschmolzen werden, wie in dem Beispiel aus Abbildung 2.8, so wird der Unterschied zwischen den beiden bisher vorgestellten Verfahren sehr viel deutlicher. Es wurden wieder dieselben Einstellungen gewählt wie für den Graphen in Abbildung 2.6. Auffällig ist, dass mit dem Verfahren aus diesem Kapitel etwas mehr Knoten im Graphen verbleiben. Das liegt daran, dass der Graph mit dem Verfahren aus dem vorigen Kapitel 2.4.1 verändert wird, während er bei dem Verfahren aus diesem Kapitel unverändert bleibt. Die Nachbarschaft der Knoten bleibt also auch gleich, während die Multiknoten beim ersten Verfahren mit jedem Schritt neue Nachbarn erhalten und somit insgesamt mehr Knoten verschmolzen werden können. Das ist auch erkennbar daran, dass mit dem Verfahren aus dem letzten Kapitel wenn mehr Knoten verschmolzen werden sehr lange Kanten eingefügt werden, da entfernte Knoten plötzlich benachbart sind. Im Beispiel aus Abbildung 2.8 ist das nicht der Fall. Die Veränderung der Nachbarschaft bei dem Verfahren aus Kapitel 2.4.1 wird durch die zweite Verschmelzoperation aus Abbildung 2.3 ermöglicht. Es ist erkennbar, dass Strukturen aus dem ursprünglichen Graphen mit dem Verfahren aus diesem Kapitel deutlicher erhalten werden, als wenn der Graph während des Kondensationsvorganges verändert wird. Der entscheidende Vorteil dieses Verfahrens ist, dass der Ergebnisgraph deutlich näher am 18 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN ursprünglichen Graph bleibt als bei dem im vorigen Kapitel vorgestellten Verfahren. Dies kommt dadurch zustande, dass die einzelnen Verschmelzungen stärker lokalisiert sind als zuvor. Dadurch dass der Graph bei dem ersten Verfahren nach jedem Schritt verändert wird, ändert sich die Nachbarschaft der Knoten ständig, und sie können mit Knoten verschmolzen werden, von denen sie zu Beginn noch mehrere Schritte entfernt waren. Durch diese Einschränkung ist allerdings der Komprimierungsfaktor bei den Graphen nicht mehr so hoch wie zuvor, weil auch nicht mehr so viele Knoten verschmolzen werden können. Es muss also der Benutzer für den Einzelfall entscheiden, welches Verfahren für die jeweilige Aufgabe am besten geeignet ist. 2.4.3 Einführung ins Clustering Bei Clusteringverfahren ist es normalerweise das Ziel, verschiedene Objekte in Gruppen einzuteilen, so dass nur zusammengehörende Elemente in einer Gruppe enthalten sind. Diese Gruppen sind die sogenannten Cluster. Objekte die im selben Cluster liegen sollen ähnlicher sein als Objekte aus verschiedenen Clustern. Dabei wird oft eine Distanzfunktion verwendet, um die Ähnlichkeit von Objekten zu messen. Um eine Distanz definieren zu können, werden verschiedene Objektmerkmale gewählt, die charakteristisch für die jeweilige Anwendung sind. Die Anzahl der gewählten Merkmale definiert die Dimension des Merkmalsraumes. Auf diesem Merkmalsraum wird dann mit einem geeigneten Distanzmaß der Abstand zwischen den einzelnen Objekten bestimmt. Denkbare Abstandsmaße sind zum Beispiel der euklidische Abstand, die Manhattan Distanz oder die Hamming Distanz. Es gibt viele verschiedene Clusteringverfahren. Bei manchen ist von vorneherein bekannt, wieviele Cluster es gibt, bei manchen wird diese Zahl im Laufe des Verfahrens bestimmt. Eine Übersicht über einige der vielen Möglichkeiten des Clusterings ist zum Beispiel in [6] zu finden. Die bisher genannten Clusteringverfahren werden vor allem zum Clustern von Daten verwendet. In der Graphentheorie hingegen wird nach der Dichte von Graphen geclustert. Dabei werden Teilgraphen, die im Vergleich zum Rest des Graphen besonders dicht sind, zu einem Cluster zusammengefasst. Eine Einführung in verschiedene Möglichkeiten Graphen zu clustern wird in [5] gegeben. Das Clusteringverfahren, das in dieser Arbeit verwendet wurde arbeitet zwar auf Graphen, ist aber den Verfahren zum Clustering von Daten wesentlich ähnlicher als den gängigen Graphenclustering Methoden. 2.4.4 Kondensation mit Clustering In Abschnitt 2.4.3 wurden herkömmliche Clusteringverfahren vorgestellt. Für das Kondensationsmodul wird ein modifiziertes Clustering durchgeführt. Die Anzahl der Cluster wird vom Benutzer vorgegeben, und alle Knoten des Graphen werden in entsprechend viele Cluster zusammengefasst. Zu Beginn des Verfahrens werden die Clusterknoten bestimmt. Hierfür gibt es zwei Möglichkeiten. Entweder wurde die Option “cluster into important nodes” gewählt, dann werden die wichtigsten Knoten entsprechend der Zentralitätsfunktion verwendet. Oder es wurde “cluster into random nodes” gewählt, dann 19 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION werden zufällige Knoten als Clusterknoten verwendet. Das zufällige Verfahren hat den Vorteil, dass keine Zentralitätswerte berechnet werden müssen, und somit ein je nach Verfahren sehr aufwändiger Schritt gespart wird. Demgegenüber steht der Nachteil, dass mit einer sorgfältigeren Knotenauswahl ein besseres Ergebnis erreicht werden könnte. In jedem Fall stehen am Ende dieses Auswahlvorgangs eine voher festgelegte Zahl Knoten fest, in die nun der Rest der Knoten geclustert wird. Dabei wird ein sehr einfaches Distanzmaß verwendet - jeder Knoten wird in den nächstgelegenen Cluster einsortiert. Im Gegensatz zu den bisher vorgestellten Kondensationsverfahren bleiben also keine unverschmolzenen Knoten im Graphen, außer der Benutzer hat sie vor der Kondensation als unverschmelzbar markiert. Für die Kondensation wird in jedem Schritt die Nachbarschaft der Clusterknoten bestimmt, und diese dann in den jeweiligen Knoten “verschmolzen”. Der Graph wird entsprechend angepasst. Das bedeutet, dass die verschmolzenen Knoten entfernt und eventuell neue Kanten eingezogen werden. Das wird solange wiederholt, bis alle Knoten verschmolzen, beziehungsweise keine verschmelzbaren Knoten mehr vorhanden sind. Ein Verschmelzungsschritt ist in Abbildung 2.9 dargestellt. In der Abbildung 2.9 ist erkennbar, dass sowohl Knoten als auch Kanten aus dem Gra- Abbildung 2.9: Ein Schritt des Clusteringverfahrens: der rote Knoten ist ein Clusterknoten, die gestrichelten Elemente werden aus dem Graphen entfernt, während die roten Kanten neu dazukommen phen entfernt werden. Die Elemente, die nach dem Verschmelzungsschritt nicht mehr im Graphen sind, sind in der Abbildung gestrichelt. Aber es kann auch vorkommen, dass neue Kanten in den Graphen eingefügt werden. In dem Beispiel aus Abbildung 2.9 werden die in rot markierten Kanten bei dem dargestellten Verschmelzungsschritt eingefügt. Das ist notwendig, damit im nächsten Schritt die Nachbarn der Knoten, die bereits in diesem Schritt in den Clusterknoten aufgenommen wurden, verschmolzen werden können. Die Kondensation des Graphen ist also recht einfach: es werden in jedem Schritt alle Nachbarn der Clusterknoten mit diesen vereinigt und deren Nachbarn mit den entsprechenden Clusterknoten verbunden. Das wird solange wiederholt bis nur noch Clusterknoten und unverschmelzbare Knoten vorhanden sind. Im Optionsfenster können zwar vom Benutzer 20 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Werte für die maximale Anzahl an verschmolzenen Knoten und ein Grenzwert für die Wichtigkeit der Multiknoten eingestellt werden, wie schon im Abschnitt 2.2 beschrieben, für das Clusteringverfahren werden diese Einstellungen aber nicht berücksichtigt. Die einzigen relevanten Parameter sind die Anzahl der Cluster sowie das Verfahren, nach dem die Clusterknoten ausgewählt werden. Ein Beispiel für eine Kondensation mit der Clustering-Methode ist in Abbildung 2.10 Abbildung 2.10: Der Graph aus Abbildung 2.4 kondensiert mit zufälliger Clusterknoten Auswahl und 125 Clustern dargestellt. Hier wurde der Beispielgraph aus Abbildung 2.4, der schon in den vorigen Kapiteln verwendet wurde, in 125 zufällig ausgewählte Cluster kondensiert. Die Form des Ursprungsgraphen bleibt dabei relativ gut erhalten. Manche der Multiknoten waren aber schon im ursprünglichen Graphen benachbart und durch eine bessere Auswahl hätte die Struktur des Graphen deutlicher erhalten bleiben können. In Abbildung 2.11 wurde der bekannte Beispielgraph in 75 zufällig ausgewählte Cluster kondensiert. Das Ergebnis hat sich inzwischen schon recht weit vom ursprünglichen Graphen entfernt, die grobe Form ist aber immer noch erhalten worden. Auch in diesem Beispiel ist ersichtlich, dass durch eine günstigere Auswahl der Clusterknoten ein besseres Ergebnis erzielt werden könnte. 21 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Abbildung 2.11: Der Graph aus Abbildung 2.4 kondensiert mit zufälliger Clusterknoten Auswahl und 75 Clustern 22 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Abbildung 2.12: Der Graph aus Abbildung 2.4 kondensiert in die 125 wichtigsten Knoten nach der NodeBetweenness Zentralität aus Kapitel 2.3.4 Werden die Clusterknoten nicht mehr zufällig ausgewählt, sondern anhand ihrer Wichtigkeit, die mit einem der Zentralitätsmaße aus Kapitel 2.3 gemessen wird, so werden Ergebnisse wie in Abbildung 2.12 erzielt. Hier ist erkennbar, dass, im Vergleich zur zufälligen Clusterknotenauswahl aus Abbildung 2.10, die Cluster gleichmäßiger über den Graphen verteilt sind, und das Ergebnis damit sehr viel näher am ursprünglichen Graphen bleibt. Die Strukturen wie zum Beispiel die großen Zykel lassen sich im kondensierten Graphen meistens sehr gut wiedererkennen. Reduziert man die Anzahl an Clustern auf 75, so erhält man den Graphen aus Abbildung 2.13. Im Vergleich mit der zufälligen Auswahl wird wieder klar, dass die hier gewählten Cluster wesentlich günstiger liegen, und die Struktur des Ursprungsgraphen deutlicher zu erkennen ist. Auch mit dieser geringen Anzahl an Knoten lassen sich Strukturen aus dem ursprünglichen Graphen gut in der kondensierten Version wiederfinden. Das Clustering Verfahren mit den beiden Möglichkeiten Clusterknoten auszuwählen hat den entscheidenden Vorteil, dass es sehr schnell ist. Wenn erst einmal die Clusterknoten bestimmt sind, ist der Rest der Kondensation sehr einfach. Der entscheidende Faktor für die Qualität des Ergebnisses ist die Anzahl und die Methode zur Auswahl der Clusterknoten. Die zufällige Auswahl ist sehr schnell, weil die Berechnung der Zentralitäten für den Graphen eingespart wird. Mit einer angemessenen Anzahl Cluster lassen sich mit dieser Methode gute Ergebnisse erzielen, wie aus den Abbildungen 2.10 und 2.11 ersichtlich 23 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Abbildung 2.13: Der Graph aus Abbildung 2.4 kondensiert in die 75 wichtigsten Knoten nach der NodeBetweenness Zentralität aus Kapitel 2.3.4 ist. Zwar sind diese Ergebnisse nicht so nah am originalen Graphen wie bei der Auswahl nach Wichtigkeit, für manche Anwendungen kann das aber dennoch reichen. Wählt man hingegen die wichtigsten Knoten als Clusterknoten gemäß eines entsprechenden Zentralitätsmaßes, so bleibt das Ergebnis, wenn eine günstige Zahl Cluster gewählt wurde, sehr nah am ursprünglichen Graphen, und der Komprimierungsfaktor ist dennoch hoch. Beide Verfahren haben ihre Vor- und Nachteile und somit muss der Benutzer entscheiden, welches für die jeweilige Anwendung am besten geeignet ist. Durch die Geschwindigkeit des Clustering Verfahrens ist es möglich, durch einige Experimente mit wenig Zeitaufwand gute Einstellungen zu finden. 2.4.5 Statistiken In diesem Abschnitt wird die Veränderung der Grapheneigenschaften durch die verschiedenen Kondensationsverfahren mit einigen Beispielzahlen verdeutlicht. Die Wichtigkeitswerte der Knoten werden mit den zuvor eingeführten Zentralitätsmaßen gemessen. Diese Werte sind normiert, so dass sie alle zwischen null und eins liegen. Für die Auswertung wurde dieser Bereich gleichmäßig in 10 Intervalle geteilt und bestimmt, wieviele Knoten jeweils einen entsprechenden Wichtigkeitswert zugeordnet bekommen haben. Um eine statistisch signifikante Aussage treffen zu können, wurde das für viele zufällig erzeugte 24 KAPITEL 2. GRAPHEN KONDENSATION 2.4. VERSCHMELZOPERATIONEN Graphen wiederholt und die Ergebnisse über alle Versuche gemittelt. Am deutlichsten werden die Veränderungen wenn man die Knotengrad-Verteilung vor und nach dem Kondensationsvorgang betrachtet. In Tabelle 2.1 sind die Zahlen für die Verschmelzung von zufällig erzeugten Graphen dargestellt. Für die Werte der Tabelle wurden Zufallsgraphen mit 500 Knoten und 5000 Kanten erzeugt und diese dann mit den beiden Verfahren aus den Kapiteln 2.4.2 und 2.4.1 kondensiert. Dabei wurden bis zu 5 Knoten verschmolzen und ein maximaler Wichtigkeitswert von 3 verwendet. Als Wichtigkeitsmaß wurde der Knotengrad gewählt, da sich daran die Grapheigenschaften besonders gut ablesen lassen. Das Verfahren wurde 500 mal wiederholt und die erhaltenen Zahlen gemittelt. Erkennbar in Tabelle 2.1 ist, dass in den zufällig erzeugten Graphen im unkondensierten Tabelle 2.1: Knotengradverteilung vor und nach den Kondensationsverfahren aus den Abschnitten 2.4.2 und 2.4.1 bei zufällig erzeugten Graphen mit 500 Knoten und 5000 Kanten. Maximaler Knotengrad vor der Kondensation: 34, nach original Graph Methode: 70, nach variabler Graph Methode: 69 Intervall 0 − 0.1 0.1 − 0.2 0.2 − 0.3 0.3 − 0.4 0.4 − 0.5 0.5 − 0.6 0.6 − 0.7 0.7 − 0.8 0.8 − 0.9 0.9 − 1.0 Originale Verteilung 0 0 4 35 106 141 121 61 21 6 statischer Graph 0 0 0 0 0 1 11 45 51 15 variabler Graph 0 0 0 0 0 1 10 45 53 15 Zustand der Knotengrad ungefähr normalverteilt ist. Die meisten Knoten haben einen Wert um 0.5, was bei einem Zufallsgraphen erwartet wird. Werden diese Graphen mit den Verfahren aus Kapitel 2.4.2 oder 2.4.1 verschmolzen, so sieht man, dass sich die Gradverteilung der Knoten hin zu den höheren Graden verschiebt. Es gibt nach der Kondensation wesentlich weniger Knoten niederen Grades als zuvor. Auch ist erkennbar, dass die Zahlen bei beiden Kondensationsverfahren sehr ähnlich sind. Das bedeutet nicht, dass die Ergebnisgraphen ähnlich sind, sondern dass die Verteilung des Knotengrades durch beide Verfahren ähnlich beeinflusst wird. Wie schon bei den Beispielen zu den beiden Verfahren deutlich wurde können die Ergebnisgraphen sehr unterschiedlich aussehen. Die Ähnlichkeit in der Knotengradverteilung ist auf die ähnliche Vorgehensweise bei den beiden Verfahren zurückzuführen. In beiden Fällen werden benachbarte Knoten verschmolzen und es entstehen Multiknoten, die alle höchstens die vom Benutzer vorgegebene Anzahl Knoten enthalten. Der Unterschied zwischen den beiden Verfahren ist der Zeitpunkt, zu dem der Graph aktualisiert wird. Da die prinzipielle Veränderung des Graphen aber bei beiden Verfahren die gleiche ist, sind die Ergebnisse sehr ähnlich. Ein weiterer Effekt ist, dass sich die Gradverteilung nicht nur hin zu höheren Graden verschiebt, sondern die absoluten 25 2.4. VERSCHMELZOPERATIONEN KAPITEL 2. GRAPHEN KONDENSATION Tabelle 2.2: Knotengradverteilung vor und nach den beiden Clusteringverfahren aus Abschnitt 2.4.4 bei zufällig erzeugten Graphen mit 500 Knoten und 5000 Kanten. Maximaler Knotengrad vor der Kondensation: 34, nach clustering in wichtige Knoten: 88, nach clustering in zufällige Knoten: 85 Intervall 0 − 0.1 0.1 − 0.2 0.2 − 0.3 0.3 − 0.4 0.4 − 0.5 0.5 − 0.6 0.6 − 0.7 0.7 − 0.8 0.8 − 0.9 0.9 − 1.0 Originale Verteilung 0 0 4 35 107 141 122 60 21 6 Cluster in wichtige Knoten 0 5 36 16 10 7 6 6 5 5 Cluster in zufällige Knoten 0 14 17 16 12 9 8 8 7 5 Werte der Knotengrade auch deutlich größer werden. Ist der Maximalgrad im originalen Graphen noch 34, so steigt er durch die Kondensation auf 69 beziehungsweise 70 an. Dies ist vor allem dadurch zu erklären, dass die Kantenzahl durch den Kondensationsvorgang zwar ungefähr erhalten bleibt, sich die verbleibenden Kanten aber auf weniger Knoten verteilen. Wenn eine Kante aus dem Graphen entfernt wird, so bedeutet das, dass die beiden Knoten miteinander vereint werden. Wenn der Knoten, der aus dem Graphen entfernt wird, nicht Grad 1 hat, so werden alle Knoten, die mit ihm verbunden waren, mit dem Multiknoten, zu dem er hinzugefügt wurde, verbunden. Wird ein Multiknoten mit mehreren Knoten verschmolzen und erhält jedesmal neue Kanten, so ist klar, dass der Maximalgrad der Knoten nach Beendigung des Kondensationsvorganges höher ist als im Originalgraphen. Für das Clustering sehen die Zahlen hingegen etwas anders aus. In Tabelle 2.2 ist die Knotengradverteilung für zufällig erzeugte Graphen vor und nach den beiden Clusteringverfahren aus Abschnitt 2.4.4 dargestellt. Für diese Zahlen wurden Zufallsgraphen mit dem Kondensationsmodul in 100 Cluster verkleinert. Das wurde 500 mal wiederholt und die Zahlen gemittelt. Aus Tabelle 2.2 ist ersichtlich, dass die Knotengradverteilung in Zufallsgraphen durch das Clustering deutlich anders beeinflusst wird als durch die Verschmelzoperationen, die zu den Verhältnissen aus Tabelle 2.1 geführt haben. Nach dem Clustering sind im Graphen nur noch Clusterknoten und unverschmelzbare Knoten. Wie in Tabelle 2.2 zu erkennen, haben die meisten dieser Knoten einen geringen Grad. Wurde in wichtige Knoten geclustert, so ist dieser Effekt stärker ausgeprägt als bei einer zufälligen Auswahl der Clusterknoten. Vergleicht man allerdings die absoluten Werte, so sieht man, dass auch beim Clustering der maximale Knotengrad deutlich erhöht wird. Wie schon bei den Verschmelzungsmethoden wird das auch hier dadurch verursacht, dass die verbleibenden Kanten des Graphen sich auf weniger Knoten verteilen. Auch beim Clustering wird zu jedem Nachbarn eines 26 KAPITEL 2. GRAPHEN KONDENSATION 2.5. DARSTELLUNG Knotens, der mit einem Multiknoten vereint wird, eine neue Kante zum Multiknoten eingefügt. Dieser verliert zwar die Kante zu seinem ursprünglichen Nachbarn, gewinnt aber, wenn sein Nachbar nicht Grad 1 hatte, mindestens 1 neue Kante hinzu. Der absolute Grad der meisten Knoten nach dem Clustering entspricht ungefähr dem, den die meisten Knoten vor dem Clustering hatten. Das bedeutet, dass zwar einige Knoten im Grad steigen, bei vielen Knoten hält sich der Verlust und das Hinzugewinnen von Kanten allerdings die Waage. Im Vergleich zwischen den Verschmelzmethoden aus den Kapiteln 2.4.1 und 2.4.2, deren Effekt in Tabelle 2.1 zusammengefasst wird, und den Clusteringverfahren aus Kapitel 2.4.4, die in Tabelle 2.2 aufgeführt sind, wird ein deutlicher Unterschied sichtbar. Während bei den Verschmelzungsmethoden die Gradverteilung der Knoten erhalten bleibt, ändert sie sich bei den Clusteringmethoden deutlich. Die Veränderung der Knotengradverteilung wirkt sich allerdings nicht negativ auf das Ergebnis des Kondensationsvorganges aus, wie aus den verschiedenen Beispielabbildungen aus den entsprechenden Kapitel gesehen werden kann. Alle Verfahren liefern mit der kondensierten Version des Eingabegraphen eine Zusammenfassung die die Struktur annähert, und erfüllen somit die an die Kondensation gestellten Ansprüche. 2.5 Darstellung 2.5.1 Der kondensierte Graph Nachdem in den vorangegangenen Kapiteln die verschiedenen Kondensationsmöglichkeiten beschrieben wurden, wird in diesem Abschnitt auf die Darstellung des Ergebnisgraphen eingegangen. Zusätzlich zu den normalen Knoten und Kanten des Graphen sind zwei Elemente hinzugekommen, die Multiknoten und die eingefügten Kanten. Diese werden farblich markiert, damit sie von den anderen Elementen des Graphen unterschieden werden können. Außerdem werden die Labels der Multiknoten verändert. Diese werden durch eine Liste der Bezeichnungen aller Knoten ersetzt, die sie repräsentieren. In den vorangegangenen Kapiteln wurde anhand eines Beispielgraphen (Abbildung 2.4) die verschiedenen Verfahren vorgestellt. Die kondensierten Graphen aus den Abbildungen 2.5 - 2.13 enthalten diese zusätzlichen Elemente. Die roten Knoten der Abbildungen stellen Multiknoten dar, während eingefügte Kanten in grün markiert sind. 2.5.2 Die Detailansicht Für das “Overview and Detail” Konzept, das zuvor in Kapitel 1.2 beschrieben wurde, sollte aus dem Übersichtsgraphen an interessanten Stellen ein Detailgraph erzeugt werden können. Dazu muss es eine Möglichkeit geben, den Kondensationsvorgang lokal rückgängig zu machen, und den originalen Graphen an dieser Stelle anzuzeigen. Zu diesem Zweck wird, wenn ein Multiknoten im Graph angewählt wird, ein extra Fenster geöffnet, in dem bis zu einer vom Benutzer eingestellten Tiefe der Originalgraph um den ausgewählten Knoten herum angezeigt wird. Für das Layout des Detailgraphen, das auch Bestandteil des 27 2.5. DARSTELLUNG KAPITEL 2. GRAPHEN KONDENSATION “Overview and Detail” Konzeptes aus Kapitel 1.2 ist, wird hierbei die Layoutinformation des Eingangsgraphen verwendet. Das bedeutet, dass alle Knoten im Detailgraphen auf dieselbe Position gesetzt werden, auf denen sie im ursprünglichen Graphen liegen. Für das Vergleichsmodul, das in Kapitel 3 vorgestellt wird, wurde ein spezielles Verfahren für das Layouten des Detailgraphen entwickelt, das in Abschnitt 3.5.3 vorgestellt wird. Ein Fenster mit einem Detailgraphen ist in Abbildung 2.14 dargestellt. In der Abbildung 2.14 des Teils des Originalgraphen ist zu erkennen, dass am Rande des Abbildung 2.14: Ein Beispiel für ein Fenster das man erhält, wenn man im Graph aus Abbildung 2.13 einen Multiknoten auswählt dargestellten Bereiches gestrichelte Kanten hinausführen. Im Originalgraphen verbinden diese Kanten den dargestellten Teilgraphen mit dem Rest des Graphen. Wird eine dieser gestrichelten Kanten ausgewählt, so wird der angezeigte Teilgraph entlang dieser Kante erweitert. Das bedeutet, dass die Kante zu einer normalen Kante wird, mit der Orientierung die vom Originalgraphen vorgegeben ist. Der Knoten auf der anderen Seite der Kante wird in die Abbildung eingefügt und neue gestrichelte Kanten, die von diesem Knoten ausgehen angelegt. Entlang dieser Kanten kann der Graph dann beliebig weiter exploriert werden. Sollte irgendwann zuviel des Graphen sichtbar sein, so kann durch das Auswählen einer normalen Kante des Teilgraphen das Ziel dieser Kante und dessen Subgraph wieder entfernt werden. Alle Knoten und Kanten die ohne den Zielknoten der ausgewählten Kante vom Startknoten aus nicht mehr erreichbar sind werden aus dem Graphen entfernt. Die Kanten die am Rand des neuen Graphen liegen werden dann zu erweiternden Kanten. 28 KAPITEL 2. GRAPHEN KONDENSATION 2.6. IMPLEMENTATION 2.6 Implementation Da die yFiles eine Java-Bibliothek, und yEd ein Java-Programm ist, wurden auch die in dieser Diplomarbeit entwickelten Verfahren in Java implementiert. Eine Übersicht über das Kondensationsmodell ist in Abbildung 2.15 dargestellt. Um den Rechenaufwand und den Speicherbedarf des Kondensationsmoduls gering zu hal- Abbildung 2.15: Übersicht über das Kondensationsmodul ten, werden Knoten, die aus dem Graphen entfenrt werden, nicht wirklich entfernt, sondern nur unsichtbar. Alle Kanten die diesen Knoten mit dem Rest des Graphen verbinden werden ebenfalls unsichtbar. In einer Map wird zu jeder Kante gespeichert, welchen Typ sie hat. Kanten können normale Kanten, unsichtbare Kanten oder durch die Kondensation eingeführte Kanten sein. Auf diese Weise muss nicht jeder entfernte Knoten mit allen seinen Kanten extra gespeichert werden, damit man den ursprünglichen Graph später wieder rekonstruieren kann. In einer zusätzlichen Map wird zu jedem Knoten gespeichert, ob er ein normaler Knoten, ein unsichtbarer Knoten oder ein Multiknoten ist. 29 2.7. ZUSAMMENFASSUNG KAPITEL 2. GRAPHEN KONDENSATION Wird nun im Übersichtsgraphen ein Multiknoten angeklickt, so wird das schon zuvor beschriebene Extrafenster geöffnet. Dazu wird ein neuer Graph angelegt, der nur den angezeigten Teil enthält. Dieser wird dadurch gefunden, dass die Umgebung des Multiknotens im Übersichtsgraphen inklusive der unsichtbaren Elemente durchsucht wird. Eingefügte Kanten werden dabei nicht in dem neuen Teilgraph erzeugt, so dass der Graph in seiner ursprünglichen Form angezeigt wird. An dem Teilgraph wird ein Listener registriert, der dafür zuständig ist, den Graphen beim Klick auf eine erweiternde Kante zu vergrößern, oder beim Klick auf eine normale Kante zu verkleinern. Dieser Listener hat eine Liste der erweiternden Kanten, so dass er unterscheiden kann, welcher Fall eintritt. Außerdem sind der Übersichtsgraph und der Teilgraph durch Maps miteinander verbunden, so dass schnell der entsprechende Knoten im jeweils anderen Graph gefunden werden kann. Wird der Teilgraph erweitert, so muss der Knoten im ursprünglichen Graph gesucht werden, um die Nachbarschaft und somit die neuen Knoten zu finden. Diese Knoten sind dann erst einmal Teil des Übersichtsgraphen. Durch die Map, die diesen Graphen mit dem Teilgraph verbindet, kann dann herausgefunden werden, ob der entsprechende Knoten bereits in dem Teilgraphen enthalten ist, weil er von einem anderen Knoten aus schon erreicht wurde. Deshalb werden Maps für beide Richtungen benötigt. Um das Kondensationsmodul für andere Projekte besser verwenden zu können, wurden alle Funktionen javadoc konform kommentiert, und eine entsprechende Dokumentation erzeugt. 2.7 Zusammenfassung In diesem Kapitel wurden einige Kondensationsverfahren vorgestellt, mit denen ein großer Graph auf übersichtliche Art und Weise dargestellt werden kann. Diese Verfahren bedienen sich verschiedener Zentralitätsmaße, die den Knoten des Graphen Werte zuweisen, die deren Wichtigkeit wiederspiegeln sollen. Anhand dieser Wichtigkeiten werden die Knoten auf unterschiedliche Arten zusammengefasst und die Gesamtknotenzahl des Graphen damit reduziert. Damit der Graph dadurch nicht unzusammenhängend wird werden zusätzliche Kanten eingefügt, die speziell markiert werden, damit sie von den normalen Kanten unterschieden werden können. Um eine Detailansicht nach dem “Overview and Detail”Konzept zu erstellen kann der kondensierte Graph an interessanten Stellen untersucht werden, indem man einen Multiknoten anklickt. Dadurch erhält man ein Extrafenster, in dem der kondensierte Teil in seiner ursprünglichen Form um den gewählten Knoten herum ange eigt wird. In diesem Fenster ist es möglich, den Graphen zu explorieren, indem der angezeigte Teil durch Anklicken von weiterführenden Kanten erweitert wird. 30 3 Graph-Vergleich 3.1 Einleitung Das Ziel dieser Arbeit war, wie schon im Kapitel 1 beschrieben, große Graphen miteinander zu vergleichen und die Unterschiede visuell darzustellen. Dazu wurde wieder ein Modul für den Grapheneditor yEd implementiert. In diesem Kapitel wird nun erläutert, wie die Graphen verglichen, und auf welche Weise die Unterschiede in einem Übersichtsfenster angezeigt werden. Dazu wird zunächst das Optionsfenster des Modules in Kapitel 3.2 vorgestellt. Anschließend folgt mit Abschnitt 3.3 eine Erläuterung des Ablaufes des Vergleichsmodules. Die Darstellung der Ergebnisse schließlich wird in Kapitel 3.4 erklärt, und Abschnitt 3.5 beschreibt die Möglichkeiten, die der Benutzer hat, um das Ergebnis des Vergleichsvorgangs zu untersuchen. Einige Details der Implementation werden in Abschnitt 3.6 erläutert und das ganze Kapitel in Abschnitt 3.7 zusammengefasst. 3.2 Das Optionsfenster In Abbildung 3.1 ist das Optionsfenster des Vergleichsmoduls dargestellt. Hier werden die für den Vergleichsvorgang wichtigen Einstellungen vom Benutzer vorge- Abbildung 3.1: Optionsfenster des Vergleichsmoduls nommen. Die erste Option erlaubt es, den aktuell im yEd bearbeiteten Graphen als einen der beiden Graphen, die verglichen werden sollen, zu verwenden. Mit den darunter liegenden “browse. . . ” Buttons können ein (oder zwei) Dateien angegeben werden, in denen Graphen gespeichert sind. Soll für einen oder beide Graphen vor dem Vergleichen ein Layout berechnet werden, so kann dies über die Checkboxen darunter angegeben werden. Soll 31 3.3. ABLAUF KAPITEL 3. GRAPH-VERGLEICH für einen der Graphen ein Layout berechnet werden, so wird dafür ein Spring-Embedder verwendet. Dazu wird der Organic Layouter aus den yFiles mit den Standardeinstellungen benutzt. Über die letzte Einstellung kann der Benutzer bestimmen, bis zu welcher Distanz zwei erkannte Änderungen zu einer großen Änderung zusammengefasst werden sollen. Je nach Graphgröße und erwarteter Unterschiedsmenge muss hier vom Benutzer ein entsprechender Wert gewählt werden. Die Auswirkungen der in diesem Fenster vorgenommenen Einstellungen auf den Ablauf des Vergleichsvorgangs werden im Abschnitt 3.3 beschrieben. 3.3 Ablauf Dieses Kapitel beschreibt den Ablauf des Vergleichsmoduls. Er kann in drei Schritte eingeteilt werden: Vorbereitung (Kapitel 3.3.1), Vergleichsvorgang (Kapitel 3.3.2) und Visualisierung (Kapitel 3.3.3). Die einzelnen Schritte werden in den folgenden Abschnitten erläutert. 3.3.1 Vorbereitung Zunächst werden die beiden Graphen, die verglichen werden sollen, über das Optionsfenster des “Graph Compare Modules”, das im vorigen Abschnitt 3.2 vorgstellt wurde, angegeben. Hierbei hat der Benutzer die Wahl, den aktuell im yEd bearbeiteten Graphen direkt als den ersten der beiden Graphen zu wählen. Der zweite (und evtl. auch der erste) Graph wird aus einer vom Benutzer angegebenen Datei eingelesen. Die Graphen können in den Formaten ygf, gml und graphml vorliegen. Um sicher zu stellen, dass die richtigen Graphen ausgewählt sind, wird der Name der ausgewählten Datei neben dem “browse. . . ”Button angezeigt. Es besteht zusätzlich noch die Möglichkeit, einen oder beide Eingabegraphen zu layouten, sollte keine Layoutinformation für den jeweiligen Graphen vorliegen. Wählt man diese Option, so wird noch vor Beginn des eigentlichen Vergleichsvorgangs für die entsprechenden Graphen ein Layout berechnet. Dazu wird der Organic Layouter aus den yFiles mit den Standardeinstellungen verwendet. Für die Eingangsgraphen wird ein Layout benötigt, da sie auch im Ergebnisfenster (siehe Kapitel 3.4) angezeigt werden. 3.3.2 Der Vergleichsvorgang Stehen die Eingabegraphen fest, wird mit der Suche nach Unterschieden begonnen. Hierzu wird angenommen, dass zusammengehörende Knoten dadurch identifiziert werden können, dass sie in beiden Graphen das selbe Label haben. Das bedeutet, dass die Zuordnung der Knoten bekannt ist, und kein Isomorphieproblem gelöst werden muss. Deshalb ist der Vergleichsvorgang verhältnismäßig einfach. Von dieser Annahme kann in den in dieser Arbeit betrachteten Anwendungsfällen ausgegangen werden. Die gefundenen Unterschiede können Knoten oder Kanten sein, die in einem der beiden Graphen nicht vorkommen. Für jeden Unterschied wird ein eigenes Objekt angelegt. Zunächst wird jede atomare Änderung für beide Graphen bestimmt. Anschließend werden die Änderungen, die nicht weiter als eine vorgegebene Distanz von einander entfernt 32 KAPITEL 3. GRAPH-VERGLEICH 3.4. DAS ÜBERSICHTSFENSTER sind, zu komplexen Änderungen zusammengefasst. Dabei bestimmt die vom Benutzer im Optionsfenster aus Kapitel 3.2 angegebene Entfernung von Unterschieden, bis zu welcher Distanz lokale Änderungen zusammengehören. Ein Abstand von 1 bedeutet, dass zwei Knoten die in einem Graphen vorhanden und durch eine Kante verbunden sind , im anderen Graphen aber nicht, zu einer Änderung zusammengefasst werden. Auf diese Weise werden im Übersichtsfenster nicht sehr viele atomare Änderungen angezeigt, sondern weniger, dafür größere komplexe Änderungen, die fehlende Knoten und Kanten enthalten. Nach diesem Schritt gibt es zwei Listen, die jeweils eine Menge von Elementen enthalten, die nur in einem der beiden Graphen enthalten sind. 3.3.3 Aufbereitung und Visualisierung Nachdem nun alle Unterschiede zwischen den beiden Graphen bestimmt und zusammengefasst wurden, werden die Graphen mit einem der in Kapitel 2 vorgestellten Verfahren kondensiert. Dazu wird einmal der Optionsdialog des Kondensationsmoduls angezeigt, der bereits in Abschnitt 2.2 beschrieben wurde. Die hier vorgenommenen Einstellungen werden auf alle drei Graphen, die später angezeigt werden, angewendet. Da die ursprünglichen Graphen auch im Übersichtsfenster angezeigt werden, werden nicht die Graphen selbst sondern Kopien mit dem Kondensationsmodul verkleinert. Als Grundlage des Übersichtsgraphen wird einer der beiden Eingangsgraphen verwendet. Aus diesem werden die Elemente, die nur in ihm enthalten sind entfernt, und dann wird der Graph mit den vom Benutzer angegebenen Einstellungen kondensiert. Anschließend wird für jede Änderung ein Knoten eingefügt. Der resultierende Graph wird mit dem Organic Layouter aus den yFiles gelayoutet. 3.4 Das Übersichtsfenster Sind die Graphen verglichen und kondensiert worden, werden die Ergebnisse in einem Übersichtsfenster präsentiert. Ein Beispiel für ein Übersichtsfenster ist in Abbildung 3.2 dargestellt. Das Übersichtsfenster enthält mehrere Tabs, über die auf die verglichenen Graphen zugegriffen werden kann. Es sind Tabs mit den beiden Eingabegraphen in unkondensierter und kondensierter Version vorhanden, sowie ein Tab der den Übersichtsgraphen mit den Ergebnissen des Vergleichs enthält. In den einzelnen Tabs kann mit gedrückter rechter Maustaste navigiert und mit dem Mausrad gezoomt werden. Durch Anklicken von Änderungs- oder Multiknoten im Übersichtsgraphen erhält man eine Detailansicht, die im nächsten Abschnitt 3.5 beschrieben wird. Zusätzlich ist in jedem Tab eine Buttonleiste auf der rechten Seite, in der ein Button mit der Beschriftung “copy graph to yed” vorhanden ist, mit dem man den jeweiligen Graphen zur weiteren Bearbeitung in den Grapheneditor kopieren kann. In dem Tab, das den Übersichtsgraphen enthält, ist außerdem noch eine Legende unter dem Button angebracht. Darin wird verdeutlicht, welche Farbe Elemente aus welchem Graphen symbolisiert. In Abbildung 3.2 kann man die Legende sehen, die den Farben grün und rot jeweils einen Graphen zuordnet. Diese Farben entsprechen den Farben 33 3.5. DIE DETAILANSICHT KAPITEL 3. GRAPH-VERGLEICH Abbildung 3.2: Beispiel für ein Übersichtsfenster in dem die Ergebnisse des Vergleichsvorgangs präsentiert werden der Änderungsknoten im Übersichtsgraphen. Um die Lesbarkeit des Übersichtsgraphen zu verbessern, werden Knotenlabels die länger als 25 Zeichen sind abgeschnitten. Um sich zu orientieren reichen die abgeschnittenen Labels, und wenn ein interessanter Bereich in der Detailansicht untersucht wird, werden die vollständigen Knotenlabels wieder eingeblendet. 3.5 Die Detailansicht Jede komplexe Änderung ist im Übersichtsgraphen als einzelner Knoten enthalten. Um nun die jeweilige Änderung genauer untersuchen zu können, wird das Fenster, das Teile des kondensierten Graphen in ihrer ursprünglichen Form anzeigt, verwendet. In Kapitel 2.5 wurde beschrieben, wie beim Anwählen eines Multiknoten im kondensierten Graphen ein extra Fenster geöffnet wird, das den Bereich um den Multiknoten im originalen Graphen darstellt. Dieses Fenster wurde für das Vergleichsmodul angepasst. 3.5.1 Darstellung des Detailgraphen Gemäß dem “Overview and Detail” Konzept aus Kapitel 1.2 soll der Detailgraph nach der Konstruktion gelayoutet werden. Um das konsistent mit dem Übersichtsgraphen zu gestalten, werden die Knoten, deren Position im Übersichtsgraphen schon festliegt, auf 34 KAPITEL 3. GRAPH-VERGLEICH 3.5. DIE DETAILANSICHT dieselben Positionen gelegt. Die restlichen Knoten werden mit dem Organic Layouter aus den yFiles unter Berücksichtigung der Knoten mit festen Positionen gelayoutet. Sollte ein Multiknoten angewählt worden sein, so wird wie zuvor der Bereich um den Knoten im unkondensierten Zustand angezeigt. Wird aber ein Knoten ausgewählt der eine Änderung darstellt, ist die Darstellung anders. Es wird ein Bereich aus dem Graphen angezeigt, der die Elemente aus der gewählten Veränderung enthält. Die Darstellung des Graphen entspricht seinem originalen Zustand, nur sind die Elemente, die nur in diesem Graphen enthalten sind, farblich hervorgehoben. Ein Beispiel für eine solche Detailansicht ist in Abbildung 3.3 dargestellt. Erkennbar in Abbildung 3.3 sind die Elemente, die nur in einem der beiden Graphen Abbildung 3.3: Detailansicht einer Änderung. Die Elemente, die nur in einem der beiden verglichenen Graphen enthalten sind, sind farblich hervorgehoben. Die rot umrandete Buttonleiste wird im Einzelnen im Text erklärt enthalten sind. Dabei sind die Knoten in der entsprechenden Farbe umrandet und die Kanten in dieser Farbe gezeichnet. Die beiden Farben entsprechen denen, die auch im Übersichtsgraphen verwendet werden, und die im Übersichtsfenster, wie in Abschnitt 3.4 beschrieben, einem der beiden verglichenen Graphen zugeordnet werden. Der Rest des dargestellten Teilgraphen wird wie im originalen Graphen abgebildet. Für Abbildung 3.3 wurde ein Änderungsknoten aus dem Übersichtsgraphen aus Abbildung 3.2 angeklickt und der angezeigte Graph noch entlang einiger Kanten exploriert, bis aus jedem der beiden 35 3.5. DIE DETAILANSICHT KAPITEL 3. GRAPH-VERGLEICH Graphen eine Änderung zu sehen war. Die Exploration des Teilgraphen wird in Abschnitt 3.5.2 beschrieben. In der Buttonleiste des Fensters aus Abbildung 3.3 sind vier Buttons zu erkennen. Mit dem “dual view” Button lässt sich der entsprechende Bereich im anderen Graphen einblenden, so dass die beiden Graphen an einer interressanten Stelle direkt verglichen werden können. Für das Beispiel aus Abbildung 3.3 würde der Dualview aussehen wie in Abbildung 3.4. Der Graph im zweiten Fenster lässt sich nach der gleichen Methode explorieren wie Abbildung 3.4: Der Dualview für die Ansicht aus Abbildung 3.3 die kondensierten Graphen aus Abschnitt 2.5. Da in diesem Graphen keine Multi- oder Änderungsknoten enthalten sind, kommt beim Klick auf eine erweiternde Kante immer nur ein neuer Knoten hinzu. Die Knoten aus dem zweiten Graphen, die auch im ersten Graphen enthalten sind, werden auf dieselben Positionen gesetzt. Dadurch soll der Vergleich der beiden Graphen erleichtert werden. Durch die Exploration des Dualview-Graphen, die im Detail in Abschnitt 3.5.2 beschrieben wird, kann man dort zu Knoten gelangen, die im ersten Graphen (noch) nicht enthalten sind. Diese werden dann mithilfe eines Organic Layouters aus den yFiles platziert. Mit einem zweiten Klick auf den Button “dual view” wird dieser wieder deaktiviert und nur noch der erste Graph angezeigt. Mit dem zweiten Button lässt sich der Graph im Dualview Fenster layouten. Wird der “layout dualView” Button geklickt, so werden alle die Knoten aus dem Dualview Graphen, die nicht im ersten Graphen enthalten sind, gelayoutet. Dazu wird wieder ein Organic Layouter aus den yFiles verwendet. Die Knoten deren Position schon bekannt ist bleiben unverändert, damit die beiden Graphen vergleichbar bleiben. 36 KAPITEL 3. GRAPH-VERGLEICH 3.5. DIE DETAILANSICHT Durch einen Klick auf den dritten Button (“copy to yed”) wird der Graph, der gerade im primären Fenster dargestellt wird, zur weiteren Bearbeitung in den Editor yEd kopiert. Dabei bleiben Farbgebung und Position der Knoten und Kanten erhalten, und die Möglichkeiten von yEd können auf den Teilgraphen angewendet werden. In Abschnitt 3.5.2 wird beschrieben, wie die Exploration auf dem Teilgraphen des Vergleichsmoduls funktioniert. Dabei können, je nachdem was für eine Kante angeklickt wurde, mehrere Knoten zum Graph hinzukommen oder daraus entfernt werden. Um diese Änderungen einfach rückgängig zu machen ist der vierte Button (“undo”) da. Mit einem Klick darauf wird die letzte Änderung, die der Benutzer am Teilgraphen vorgenommen hat, rückgängig gemacht. 3.5.2 Exploration des Teilgraphen Die Exploration des Graphen entlang der gestrichelten Kanten funktioniert im Vergleichsmodul etwas anders als im Kondensationsmodul. Bei der normalen Graphenkondensierung wurde beim Klick auf eine erweiternde Kante der nächste Knoten eingeblendet und an diesem neuen Knoten eventuell neue erweiternde Kanten erzeugt. Dieses Verfahren wurde schon in Kapitel 2.5 beschrieben. Wird hingegen im Vergleichsmodul eine gestrichelte Kante angeklickt, gibt es drei mögliche Fälle: 1. der andere Knoten ist ein normaler Knoten 2. der andere Knoten ist ein Multiknoten 3. der andere Knoten ist ein Änderungsknoten Im ersten Fall wird verfahren wie schon bei der normalen Kondensation - der Knoten wird sichtbar und eventuell werden neue erweiternde Kanten eingefügt. Tritt Fall zwei ein, so werden alle Knoten, die Teil des Multiknotens sind, in den dargestellten Graphen eingefügt und entsprechende normale und erweiternde Kanten erzeugt. Im dritten Fall werden ebenfalls mehrere Knoten in den Graphen eingefügt. Alle Knoten und Kanten, die Teil der entsprechenden Änderung sind, werden mit farblicher Markierung dem Teilgraphen hinzugefügt. Auch hier werden wieder die entsprechenden neuen Erweiterungskanten erzeugt. Alle Knoten, die während des Explorationsvorganges zum Teilgraphen hinzugefügt werden, für die aber noch keine Layoutinformation vorhanden ist, werden nach dem Verfahren, das in Abschnitt 3.5.3 beschrieben wird, auf eine Position gesetzt. Wird der Graph entlang einer erweiternden Kante exploriert, so wird diese, nachdem alle neuen Knoten zum Graphen hinzugefügt wurden, aus dem Graph entfernt, da sie nicht Teil des ursprünglichen Graphen war. Des weiteren werden alle Kanten, die nach dem Explorationsschritt zwei normale Knoten verbinden, aber nicht im originalen Graphen enthalten waren, aus dem Teilgraphen entfernt. Dies betrifft erweiternde Kanten, die im Übersichtsgraphen während der Kondensation eingeführt wurden und durch den Explorationsschritt zu normalen Kanten des Teilgraphen geworden sind. 37 3.6. IMPLEMENTATION KAPITEL 3. GRAPH-VERGLEICH 3.5.3 Progressives Layout Eine der Annahmen zu Beginn dieser Arbeit war, dass die verglichenen Graphen sehr groß sind. Um nicht für den kompletten detaillierten Graphen ein Layout berechnen zu müssen, wird dieser schrittweise gelayoutet. Im vorigen Abschnitt wurde erläutert, wie der Graph im Extrafenster exploriert werden kann. Dabei werden manchmal mehrere Knoten gleichzeitig zum bestehenden Graphen hinzugefügt. Kommt ein Knoten zum Graphen hinzu, so gibt es zwei mögliche Fälle: die Position ist bereits bekannt oder noch nicht. Wurde die Position des Knotens schon zuvor festgelegt, so wird er wieder auf dieselbe Position gelegt, andernfalls wird er mit Hilfe eines Organic Layouters aus den yFiles platziert. Dazu wird, nachdem der Übersichtsgraph erzeugt wurde, intern ein Layoutgraph angelegt, der alle momentan sichtbaren Knoten des Übersichtsgraphen enthält. Diese werden auf die Positionen initialisiert, auf denen sie im Übersichtsgraphen liegen. Der Layoutgraph wird um einen zuvor bestimmten Faktor gestreckt, damit für alle Knoten, die später hinzugefügt werden, genügend Platz vorhanden ist. Der Streckungsfaktor wird auf die halbe Größe des größten Multiknotens gesetzt, wobei die Größe eines Multiknotens der Anzahl der darin enthaltenen Knoten entspricht. Wird nun ein Knoten zum Teilgraphen im Extrafenster hinzugefügt, so wird er entweder auf die Position, die sein entsprechendes Gegenstück im Layoutgraphen hat, gesetzt, oder es wird ein entsprechender Knoten zum Layoutgraph hinzugefügt und mit einem Organic Layouter platziert. Dann wird der Knoten im Teilgraphen auf die so errechnete Position gelegt. Vom Benutzer können beliebig viele Extrafenster mit Teilgraphen geöffnet werden, indem ein entsprechender Knoten im Übersichtsgraphen angeklickt wird. Diese Teilgraphen sind voneinander unabhängig, für alle wird aber derselbe Layoutgraph verwendet, um die Knoten zu platzieren. Wurde ein Knoten einmal zum Layoutgraph hinzugefügt, so wird er, wenn er in einem anderen Teilgraphen einmal erreicht wird, immer auf dieselbe Position gesetzt. Der Layoutgraph speichert somit die Positionen von allen bereits gelayouteten Knoten des Übersichtsgraphen. Durch dieses Verfahren wird sichergestellt, dass alle Teilgraphen, die sich der Benutzer aus demselben Übersichtsgraphen anzeigen lässt, konsistent sind. Dadurch, dass immer nur einige wenige Knoten gelayoutet werden müssen, während die Positionen der restlichen Knoten schon festliegen, ist das Verfahren in der Lage, auch große Graphen mit wenig Zeitaufwand zu verarbeiten. 3.6 Implementation 3.6.1 Datenstrukturen Eine Übersicht über die Struktur des Vergleichsmoduls ist in Abbildung 3.5 dargestellt. Der erste Schritt beim Vergleichsmodul ist die Suche nach Unterschieden in den beiden Graphen. Dazu wird für jeden Knoten im jeweils anderen Graphen nach einem Knoten mit demselben Label gesucht. Wird ein solcher Knoten gefunden, wird das in zwei Maps gespeichert, die die beiden Knoten miteinander verbinden. Werden die Knoten aus dem zweiten Graphen abgearbeitet, so muss dann nicht mehr nach einem entsprechenden Knoten gesucht werden, sondern es kann einfach in der Map nachgeschaut werden, ob ein passender 38 KAPITEL 3. GRAPH-VERGLEICH 3.6. IMPLEMENTATION Abbildung 3.5: Übersicht über die Struktur des Vergleichsmoduls Knoten existiert. Sollte für einen Knoten keine Entsprechung im anderen Graphen gefunden werden, so wird ein neues “Change” Objekt angelegt, das den entsprechenden Knoten enthält. Nachdem so alle Knoten in beiden Graphen abgearbeitet wurden, gibt es für jeden Graph eine Liste mit Knoten, die im anderen Graphen nicht enthalten sind. Im nächsten Schritt werden die Kanten untersucht. Dabei werden sie der Reihe nach durchgegangen, und im jeweils anderen Graphen nach einer entsprechenden Kante gesucht. Das geht sehr schnell, da die Zuordnung der Knoten bereits im vorigen Schritt bestimmt und in den Maps gespeichert wurde. Es muss also nur noch überprüft werden, ob die beiden Knoten der Kante Teil des anderen Graphen sind, und ob sie auch über eine Kante der entsprechenden Orientierung verbunden werden. Für fehlende Kanten wird auch jeweils ein “Change” Objekt angelegt und nachdem alle Kanten aus beiden Graphen abgearbeitet wurden, gibt es auch hier zwei Listen mit entsprechenden Objekten. Eine der Optionen, die vom Benutzer für das Vergleichsmodul festgelegt werden können, ist der Abstand, bis zu dem zwei Änderungen zusammengehören. Dieser wurde im Optionsfenster, wie in Kapitel 3.2 beschrieben, angegeben. Im nächsten Schritt werden die Listen für die beiden Graphen nun durchgegangen, und für alle Paare der Abstand der Elemente im jeweiligen Graph bestimmt. Dazu wird einmal auf beiden Graphen ein “allpairs-shortest-path” Algorithmus aus den yFiles verwendet und das Ergebnis gespeichert. Alle Änderungsobjekte, die Elemente enthalten deren Abstand kleiner als der vom Benutzer vorgegebene Abstand ist, werden zu einer großen Änderung zusammengefasst. 39 3.6. IMPLEMENTATION KAPITEL 3. GRAPH-VERGLEICH 3.6.2 Konstruktion des Übersichtsgraphen Nachdem die beiden Listen so verkleinert wurden, wird der Übersichtsgraph erzeugt. Dazu wird der Eingabegraph, der weniger Änderungen von beiden Graphen enthält, zunächst in ein neues Objekt kopiert. In diesen Graphen werden dann für jedes Änderungsobjekt neue Knoten eingefügt. Die Unterschiede aus den beiden Graphen werden durch unterschiedlich gefärbte Änderungsknoten dargestellt. Abschließend wird dieser Differenzgraph mit einem Organic Layouter aus den yFiles gelayoutet und ein Listener registriert, der dafür zuständig ist, das Extrafenster aus Abschnitt 3.5.1 zu erzeugen. Wenn der Differenzgraph erzeugt wurde, wird dem Benutzer der Optionsdialog des Kondensationsmoduls, der bereits in Kapitel 2.2 beschrieben wurde, angezeigt. Mit den dort vorgenommenen Einstellungen werden die beiden Eingabegraphen und der Differenzgraph kondensiert. Durch diese Kondensation wird der Differenzgraph zum Übersichtsgraph, der die Bedinungen des “Overview and Detail”Konzeptes aus Kapitel 1.2 erfüllt. Änderungen sind einfach zu finden, während der Rest des Graphen auf die wesentlichen Teile reduziert wurde. Die so erhaltenen Graphen werden in einem Fenster in verschiedenen Tabs angezeigt, so dass komfortabel zwischen den Graphen gewechselt werden kann. Jeder Tab bietet dabei die Möglichkeit, den enthaltenen Graphen in den yEd zu kopieren, damit dieser dort bearbeitet werden kann. 3.6.3 Exploration des Teilgraphen Wie in Abschnitt 3.5.2 beschrieben läuft die Exploration des Teilgraphen im Vergleichsmodul leicht anders als im Kondensationsmodul. Über die erweiternden Kanten können Multi- und Änderungsknoten erreicht werden. In einem solchen Fall wird immer der ganze Inhalt zum aktuellen Teilgraphen hinzugefügt. Zu jedem Multi- bzw. Änderungsknoten ist eine entsprechende Liste der Knoten gespeichert, die er repräsentiert. Wird ein solcher Knoten hinzugefügt, können über diese Listen die neuen Knoten schnell gefunden werden. Über die Maps, die die beiden Graphen verbinden, kann in konstanter Zeit überprüft werden, ob ein Knoten schon vorhanden ist, so dass es keine doppelten Knoten gibt. Das Layout der neuen Knoten, sollte es erforderlich sein, ist ebenfalls nicht sehr aufwändig, da nur diese Knoten vom Layouter bewegt werden können und der Rest der Knoten auf festen Positionen liegt. Dadurch ist das Layout schnell berechnet und der ganze Explorationsvorgang nicht sehr rechenaufwändig. Die Layoutinformationen für die einzelnen Knoten werden in einem extra Graphobjekt gespeichert, das einen Repräsentant für jeden bereits gelayouteten Knoten enthält. Über entsprechende Maps kann der Knoten und damit dessen Position im Graphen schnell gefunden werden, sollte diese Information zum Beispiel in einem anderen Extrafenster benötigt werden. 40 KAPITEL 3. GRAPH-VERGLEICH 3.6. IMPLEMENTATION 3.6.4 Die “undo”-Funktion Die Realisierung der “undo” Funktion aus Abschnitt 3.3 erwies sich als relativ aufwändig. Die yFiles stellen zwar die Möglichkeit bereit, Änderungen am Graphen rückgängig zu machen, aber diese sind nicht weitreichend genug für das Vergleichsmodul. Die Knoten und Kanten des Teilgraphen sind in speziellen Listen und Maps markiert, in denen gespeichert wird, welche Knoten Multiknoten oder normale Knoten sind, und welche Kanten normale, zusätzliche oder erweiternde Kanten sind. Um die volle Funktionsfähigkeit der Exploration des Teilgraphen gewährleisten zu können, müssen diese Listen und Maps nach einem “undo” Schritt aktualisiert werden. In Abbildung 3.6 ist ein beispielhafter “undo” Schritt dargestellt. In dem Beispiel aus Abbildung 3.6 wird zunächst zum Knoten 3 exploriert, der ein Multi- Abbildung 3.6: Beispiel für die “undo” Operation nach einem Explorationsschritt. Es ist nicht klar, welcher Knoten unsichtbar werden muss. knoten ist. Daraufhin wird der gesamte Inhalt dem Graph hinzugefügt und entsprechende neue erweiternde Kanten erzeugt. Anschließend wird dieser Schritt mit dem “undo” But- 41 3.6. IMPLEMENTATION KAPITEL 3. GRAPH-VERGLEICH ton rückgängig gemacht. Der im dritten Schritt dargestellte Graph ist die Version, die durch die yFiles wiederhergestellt wird. Das bedeutet, dass hinzugekommene und entfernte Knoten und Kanten wieder eingefügt werden, und zwar genau mit dem Aussehen, das sie zuvor hatten. Es müssen jetzt also die Knoten und Kanten herausgesucht werden, deren Aussehen verändert werden muss. Für das Beispiel aus Abbildung 3.6 wären das der Knoten 3 und die Kante zwischen den Knoten 2 und 3. Allein aus dem Aussehen der Knoten kann aber nicht rekonstruiert werden, welcher Knoten eigentlich unsichtbar, und welche Kante eigentlich eine erweiternde Kante sein müsste. Im Beispiel muss der Knoten 3 eigentlich unsichtbar werden, und die Kante die ihn mit Knoten 2 verbindet zu einer erweiternden Kante werden. Im restlichen Teilgraphen können aber natürlich noch weitere Grad 1 Knoten sein, die nur über eine Kante mit dem Graphen verbunden sind. Um die entsprechenden Elemente des Graphen eindeutig identifizieren zu können, ist es notwendig, sichtbare Knoten des Teilgraphen besonders zu markieren. Dies geschieht durch das Hinzufügen eines unsichtbaren Knotens zu jedem sichtbaren Knoten des Graphen. Dieser sogenannte “Ghostnode” wird über eine unsichtbare Kante mit dem Knoten verbunden, den er markiert. Mit den Ghostnodes ist es nach dem “undo” Schritt eindeutig, welcher Knoten im Aussehen verändert werden muss, wie in Abbildung 3.7 erkennbar ist. In Abbildung 3.7 ist nach dem Explorationsschritt mit jedem sichtbaren Knoten ein Ghostnode verbunden. Da der Ghostnode an Knoten 3 aber erst mit dem Explorationsschritt hinzugefügt wurde, wird er mit dem “undo” der yFiles wieder entfernt. Im letzten Schritt ist es somit einfach, den Knoten 3 zu identifizieren und den Graph entsprechend anzupassen. Die Markierung aller sichbaren Knoten mit einem extra Ghostnode ist sehr aufwändig, doch lässt sich das Problem nicht einfacher lösen. Durch das Entfernen und Wiedereinfügen von Knoten verändert sich deren interne id, so dass es nicht möglich ist, einfach zu jedem Knoten zu speichern, ob er sichbar ist oder nicht. Wurde er einmal aus dem Graphen entfernt und wieder eingefügt, kann dieser Wert dem Knoten nicht mehr zugeordnet werden. Aus diesem Grund muss auf die Ghostnodes zurückgegriffen werden, damit der Teilgraph und die darunterliegenden Datenstrukturen nach einem “undo” Schritt korrekt aktualisiert werden können. Alle Funktionen des Vergleichsmoduls wurden javadoc konform kommentiert, um die Verwendung in anderen Projekten zu vereinfachen. 42 KAPITEL 3. GRAPH-VERGLEICH 3.6. IMPLEMENTATION Abbildung 3.7: Beispiel für die “undo” Operation nach einem Explorationsschritt. Durch die Ghostnodes ist eindeutig, welcher Knoten unsichtbar werden muss. 43 3.7. ZUSAMMENFASSUNG KAPITEL 3. GRAPH-VERGLEICH 3.7 Zusammenfassung In diesem Kapitel wurde das Vergleichsmodul vorgestellt. Es können zwei Graphen angegeben werden, die auf Unterschiede untersucht werden. Dabei wird kein Isomorphieproblem gelöst, sondern davon ausgegangen dass die Zuordnung der Knoten bekannt ist. Wurden alle Änderungen bestimmt, wird ein Übersichtsfenster angezeigt, das neben den Eingabegraphen in normaler und kondensierter Version, einen Übersichtsgraphen enthält, in dem die Änderungen durch spezielle Knoten markiert sind. Durch Anklicken eines Änderungsknotens erhält der Benutzer ein Extrafenster, in dem die jeweilige Änderung farblich markiert in der unkondensierten Nachbarschaft des Graphen dargestellt wird. Wie schon zuvor beim Kondensationsmodul kann der Graph in diesem Extrafenster exploriert werden, indem er entlang der Erweiterungskanten traversiert wird. Dabei werden die Multi- und Änderungsknoten, wenn sie bei der Exploration erreicht werden, immer komplett entpackt und alle ihre Bestandteile zum Teilgraphen hinzugefügt. Zusätzlich gibt es im Extrafenster die Möglichkeit, den entsprechenden Bereich im anderen Graphen anzeigen zu lassen, so dass die beiden Graphen an interessanten Stellen direkt miteinander verglichen werden können. Knoten für die noch keine Position bekannt ist werden mithilfe eines Organic Layouters aus den yFiles platziert. Damit das in allen Teilgraphen konsistent geschieht wird ein Layoutgraph gehalten, in dem die Position aller bereits gelayouteter Knoten gespeichert wird. 44 4 Anwendung 4.1 Einleitung Die Motivation zur Erstellung dieser Diplomarbeit war der Vergleich großer Graphen, die insbesondere auch aus dem biologischen Bereich kommen. In diesem Kapitel werden einige Beispiele für Anwendungen vorgestellt. Dazu werden ausgewählte Graphen aus der Biologie verglichen. Zum besseren Verständnis werden dazu in Kapitel 4.2 einige Grundlagen erläutert. Die eigentlichen Vergleiche werden in Kapitel 4.3 vorgestellt und die Ergebnisse in Abschnitt 4.4 zusammengefasst. 4.2 Grundlagen 4.2.1 Biologische Grundlagen Viele der Vorgänge, die in einer Zelle ablaufen, werden durch Proteine reguliert. So werden Vorgänge durch die Anwesenheit bestimmter Proteine erst möglich, oder gerade verhindert. Proteine sind oft für einen bestimmten Schritt in einer Kette von Reaktionen zuständig, die in der exakten Reihenfolge aufeinander folgen müssen, damit die Zelle ihre Funktion erfüllen kann. Ist ein Protein verändert, oder fehlt es ganz, so bricht die Reaktion an der entsprechenden Stelle ab und die Zelle verhält sich nicht mehr normal. In Tumorzellen sind zum Beispiel Proteine nicht vorhanden oder verändert, die das Wachstum der Zelle regulieren. Ohne diese Proteine wächst die Zelle unkontrolliert und es bildet sich ein Tumor. Fehlen weitere Proteine, die die Zelle in ihrem normalen Umfeld verankern, so kann die Zelle wandern und an anderen Stellen im Körper Metastasen bilden. Hat man ein Netzwerk von Proteinen von einem Organismus im gesunden und einem im kranken Zustand, so ist die Suche nach Unterschieden ein wichtiger Schritt. Die Auswirkungen fehlender oder veränderter Proteine auf solche anomalen Vorgänge lassen sich beispielsweise durch einen Vergleich von entsprechenden Proteinnetzwerken herausfinden. Aus diesem Grund ist es wichtig herauszufinden, welche Proteine in einem kranken Organismus nicht oder übermäßig vorhanden sind, um eine geeignete Methode zur Behandlung zu finden. Solche Daten lassen sich zum Beispiel mit Microarray-Experimenten erlangen und führen in Kombination mit anderen Methoden schließlich zu einer Behandlungsmöglichkeit der entsprechenden Krankheit. Eine zweite große Gruppe biologisch relevanter Graphen sind metabolische Netzwerke. Diese Netzwerke repräsentieren spezifische Stoffwechselwege, über die ein Stoff in einen oder mehrere andere Stoffe umgewandelt wird. Ein bekanntes Beispiel hierfür ist die Glycolyse, in der Glucose zu Pyruvat umgewandelt wird, und durch die der Körper Energie 45 4.2. GRUNDLAGEN KAPITEL 4. ANWENDUNG gewinnt. In diesen Netzwerken repräsentieren die Knoten verschiedene Stoffe, die die einzelnen Zwischenschritte der Reaktion darstellen. Die Kanten repräsentieren Reaktionen, die einen Stoff in den nächsten überführen. Abhängig davon, ob eine Reaktion umgekehrt werden kann, ist eine Kante gerichtet oder ungerichtet. Durch einen Vergleich von metabolischen Netzwerken von einem gesunden und einem kranken Organismus können wiederum wichtige Informationen über die Auswirkungen, und damit Behandlungsmöglichkeiten der Krankheit gewonnen werden. Außerdem ist der Unterschied zwischen ein und demselben Stoffwechselvorgang zwischen verschiedenen Spezies interessant, um Aufschluss über die Verwandschaftsbeziehungen zu erhalten. Alle diese Vergleiche können mit dem in dieser Arbeit entwickelten Verfahren durchgeführt werden. Im Folgenden werden einige Beispiele für die Anwendung gezeigt. 4.2.2 Testdaten Die Testgraphen für die Protein-Protein Interaktionsnetzwerke, die in diesem Kapitel verwendet werden, wurden mit der PINA Plattform erstellt. Diese Plattform integriert die Daten aus sechs öffentlichen, gepflegten Datenbanken und bildet daraus nicht-redundante Protein-Protein Interaktionsnetzwerke. Diese Netzwerke können visualisiert, analysiert und heruntergeladen werden. Ein einführendes Paper in die PINA Plattform ist [11]. Unter [10] kann auf die PINA Plattform zugegriffen werden. Zur Erstellung der Testgraphen wurden die Interaktionsnetzwerke für verschiedene Listen von Proteinen, die an bestimmten Stoffwechselvorgängen beteiligt sind, mit der PINA Plattform erstellt und gespeichert. Diese Netzwerke wurden dann mit dem Vergleichsmodul aus Kapitel 3 auf Unterschiede untersucht. Um diese Proteinlisten zu erhalten, wurden mit der UniProt Datenbank Proteine gesucht, die an den jeweiligen Vorgängen beteiligt sind. Die UniProt Datenbank setzt sich aus mehreren Datenbanken zusammen, genauer kann dies in [8] nachgelesen werden. Die UniProt Datenbank kann unter [9] gefunden werden. Für die Interaktionsnetzwerke, die hier untersucht werden, wurden nur verifizierte Datenbankeinträge verwendet. Die so erhaltenen Proteinlisten sind natürlich nicht immer vollständig, stellen aber zumindest einen Teil eines tatsächlichen Proteinnetzwerkes dar. Um die Anwendung des Vergleichsmoduls zu demonstrieren reichen die so erhaltenen Netzwerke aus. Um tatsächliche Aussagen über die Unterschiede der betrachteten Stoffwechselvorgänge zwischen zwei Organismen treffen zu können, müsste deutlich mehr Aufwand in die Erstellung geeigneter Netzwerke investiert werden. Für die metabolischen Netzwerke wurden mit der Metaroute Plattform Beispielgraphen erstellt. Diese wurde in Tübingen von Torsten Blum entwickelt und implementiert. In [2] wird die Plattform vorgestellt. Mit ihr ist es möglich, in einem Organismus einen Weg von einem Metaboliten zu einem anderen zu suchen. Als Ergebnis erhält man einen Graph, der die möglichen Wege als Abfolge von Reaktionen beschreibt. Zur Berechnung dieser Wege wird ein spezieller Algorithmus verwendet, der ebenfalls von Torsten Blum entwickelt wurde. Eine genaue Beschreibung der Funktionsweise des Algorithmus ist in [3] zu finden. Mit der MetaRoute Plattform wurden für dieses Kapitel einige Graphen erstellt und miteinander verglichen. 46 KAPITEL 4. ANWENDUNG 4.3. VERGLEICH 4.3 Vergleich In diesem Kapitel wird das Vergleichsmodul aus Kapitel 3 auf verschiedene Beispielgraphen angewendet. Es werden sowohl Netzwerke desselben Stoffwechselvorgangs von Mensch und Maus verglichen, als auch künstlich abgeänderte Netzwerke. Da manche der Netzwerke zwischen Mensch und Maus zu unterschiedlich sind, ist es nicht sinnvoll, sie mit dem Vergleichsmodul zu vergleichen. Im Extremfall werden nur zwei Änderungen gefunden - jeder Eingabegraph ist dann in einem eigenen Änderungsknoten enthalten. Da solche Beispiele nicht hilfreich sind, wurden einige der Graphen, die mit der PINA Plattform aus Abschnitt 4.2.2 erstellt wurden, von Hand leicht abgeändert, so dass sie mit dem Vergleichsmodul sinnvoll untersucht werden konnten. Zuerst wurden Protein-Proteininteraktionsnetzwerke für Proteine erstellt, die im Zusammenhang mit der Apoptose beim Menschen und bei der Maus stehen. Die entsprechenden Proteinlisten wurden aus der Swissprot Datenbank gewonnen, und das Netzwerk dann mit der PINA-Plattform erstellt (siehe Abschnitt 4.2.2). Werden auf diese Weise ein Netzwerk, das für den Menschen erstellt wurde, und ein Netzwerk, das für die Maus erstellt wurde, verglichen, so ergibt sich das Bild aus Abbildung 4.1. Erkennbar in Abbildung 4.1 ist, dass die beiden Eingabegraphen wenig Gemeinsamkeiten Abbildung 4.1: Übersichtsgraph für den Vergleich von ProteinProteininteraktionsnetzwerken für Apoptoseproteine von Mensch und Maus 47 4.3. VERGLEICH KAPITEL 4. ANWENDUNG aufweisen. Es sind nur wenige blaue Knoten, in diesem Beispiel die normalen Knoten, im Übersichtsgraph vorhanden. Diese Knoten sind Bestandteil beider Eingabegraphen. Es sind sehr viele Änderungsknoten für beide Eingabegraphen enthalten. Im Zentrum des Graphen sind zwei sehr hochgradige Änderungsknoten, für jeden Eingabegraphen einer. In den Randbereichen des Graphen sind auch Änderungsknoten, die über wenige Kanten mit dem Rest des Graphen verbunden sind. Außerdem fällt auf, dass um den Graphen herum einzelne, nicht verbundene Änderungsknoten angeordnet sind. Diese enthalten Elemente, die nur in einem der beiden Eingabegraphen vorhanden sind, und dort nicht mit dem Rest des Graphen verbunden sind. Dadurch dass die Eingabegraphen sehr unterschiedlich sind, ist in den Änderungsknoten sehr viel enthalten. Klickt man zum Beispiel einen der beiden hochgradigen Änderungsknoten aus Abbildung 4.1 an, und exploriert den Teilgraphen bis zu dem anderen Änderungsknoten, so erhält man das Bild aus Abbildung 4.2. In Abbildung 4.2 ist erkennbar, dass sehr große Bereiche des Graphen nur in einem der Abbildung 4.2: Detailansicht des Übersichtsgraphen aus Abbildung 4.1 beiden Eingabegraphen enthalten sind. Da diese Bereiche zusammenhängen, waren sie alle in einem Änderungsknoten zusammengefasst. Der Aufbau des Detailgraphen dauerte in dieser Situation etwas länger als bei kleineren Beispielen, da sehr viele Knoten auf einmal ausgepackt und gelayoutet werden mussten. In diesem Bild erkennt man nicht die einzelnen Knoten, aber sehr deutlich die Bereiche, in denen nur Elemente aus einem Graphen liegen. Die schwarzen Kanten, die sich durch das Bild ziehen, sind Expansionskanten und werden, wenn sie angeklickt werden, zu normalen oder Änderungskanten. An diesem Beispiel sieht man, dass das Vergleichsmodul zwar in der Lage ist, auch sehr unterschiedliche Graphen zu verarbeiten, die Ergebnisse aber nicht unbedingt hilfreich sind. Das ist aber auch nicht anders zu erwarten, wenn zwei sehr unterschiedliche Graphen verglichen werden. Der interessante Teil des Graphen ist in diesem Falle vielleicht sogar der Bereich, der beiden Graphen gemeinsam ist. Dieser ist wiederum einfach zu finden, und wird dadurch, dass die unterschiedlichen Bereiche in einzelnen Änderungsknoten zusammengefasst wer- 48 KAPITEL 4. ANWENDUNG 4.3. VERGLEICH den, auch relativ gut dargestellt. Für das nächste Beispiel wurden zwei Graphen erstellt, die Proteine enthalten, die mit der mRNA von Mensch beziehungsweise Maus assoziiert sind. Die Proteinlisten wurden wieder aus der UniProt Datenbank gewonnen und die Graphen mit der PINA Plattform erstellt. Der Übersichtsgraph für die beiden Netzwerke ist in Abbildung 4.3 dargestellt. In der Abbildung 4.3 ist, wie schon beim Beispiel der Apoptose, zu erkennen, dass die Abbildung 4.3: Übersichtsgraph für den Vergleich von ProteinProteininteraktionsnetzwerken von mRNA assoziierten Proteinen beim Menschen und der Maus beiden Eingabenetzwerke sehr unterschiedlich sind. Es sind wieder sehr wenig normale Knoten enthalten, und der Großteil der beiden Graphen ist in den Änderungsknoten enthalten. Wählt man zum Beispiel den mittleren roten Änderungsknoten an, so erhält man den Detailgraph aus Abbildung 4.4. Die Detailansicht aus Abbildung 4.4 macht wieder deutlich, dass große Teile des Eingabegraphen nur in diesem enthalten sind, die Übereinstimmungen zwischen den beiden Graphen also sehr klein sind. Auch sind wieder einige Änderungs- und normale Knoten am Rand des Graphen aufgereiht. Diese sind nicht mit dem Rest des Graphen verbunden, die Eingabegraphen waren also ebenfalls nicht verbunden. 49 4.3. VERGLEICH KAPITEL 4. ANWENDUNG Abbildung 4.4: Detailansicht des Übersichtsgraphen aus Abbildung 4.3 50 KAPITEL 4. ANWENDUNG 4.3. VERGLEICH Für die nächsten Beispiele wurden auch wieder Netzwerke mit der UniProt Datenbank und der PINA Plattform erstellt. Dann wurden kleine Änderungen von Hand eingefügt, und die beiden unterschiedlichen Versionen miteinander verglichen. Das wurde gemacht, um zu demonstrieren, wie kleine lokale Änderungen in großen Graphen mit dem Vergleichsmodul gut gefunden und untersucht werden können. Als erstes manuell geändertes Beispiel wurde der schon zuvor verwendete Graph des Protein-Proteininteraktionsnetzwerkes von Apoptoseproteinen beim Menschen verwendet. Zu Vergleichszwecken wurden einige Knoten und Kanten entfernt, sowie neue Knoten und Kanten eingefügt. Der abgeänderte Graph wurde dann mit der ursprünglichen Version verglichen. Vergleicht man nun diese beiden Versionen, so erhält man den Übersichtsgraph aus Abbildung 4.5. In Abbildung 4.5 ist zu erkennen, dass beide Graphen viele Über- Abbildung 4.5: Übersichtsgraph für den Vergleich von einem ProteinProteininteraktionsnetzwerk von Apoptoseproteinen beim Menschen mit einer von hand abgeänderten Version einstimmungen haben. Der Großteil der Knoten und Kanten ist normal gezeichnet, was bedeutet, dass diese Elemente in beiden Graphen vorhanden sind. Die wenigen Änderungen hingegen, die von Hand hinzugefügt wurden, sind im Übersichtsgraphen durch die Signalfarben rot und grün sehr gut zu erkennen. Dadurch wird es erleichtert, interessante Gebiete im Übersichtsgraphen zu finden. Wählt man nun einen der Änderungsknoten an, so erhält man zum Beispiel die Darstellung aus Abbildung 4.6. Die Änderung, die in Abbildung 4.6 dargestellt ist, beinhaltet einen Knoten, dessen Kindknoten fast alle aus dem Graphen entfernt wurden. Man kann in der Abbildung erkennen, dass diese Knoten gleichmäßig 51 4.3. VERGLEICH KAPITEL 4. ANWENDUNG Abbildung 4.6: Detailansicht für einen Änderungsknoten des Übersichtsgraphen aus Abbildung 4.5 vom Organic Layouter um den Vaterknoten herum angeordnet wurden. Durch die rote Markierung wird deutlich, welche der Knoten aus dem Graphen entfernt wurden, und welche im Graphen verblieben sind. 52 KAPITEL 4. ANWENDUNG 4.3. VERGLEICH Als erstes Beispiel für einen Vergleich metabolischer Netzwerke wird, wie schon im einführenden Paper zu Metaroute [2], ein Netzwerk für den Pfad von Pyruvat zu Lysin in Escherichia coli und Saccharomyces cerevisiae verglichen. In Abbildung 4.7 ist der Übersichtsgraph für diesen Vergleich dargestellt. Aus dem Graphen aus Abbildung Abbildung 4.7: Übersichtsgraph für den Vergleich von einem metabolischen Netzwerk für den Pfad von Pyruvat zu Lysin in E. Coli und der Hefe 4.7 ist zu erkennen, dass die beiden metabolischen Netzwerke zwar einige gemeinsame Knoten haben, aber auch große Unterschiede. Diese Unterschiede sind allesamt miteinander verbunden, da nur zwei Änderungsknoten vorhanden sind. Klickt man auf einen der Änderungsknoten, und expandiert den Teilgraphen bis man den anderen Änderungsknoten erreicht, so erhält man ein Bild wie in Abbildung 4.8. In dem Teilgraphen, den man erhält wenn man von einem Änderungsknoten bis zum anderen exploriert, ist erkennbar, dass viele Elemente nur in einem der beiden Eingabegraphen enthalten sind. Der metabolische Pfad von Pyruvat zu Lysin ist also zwischen den beiden Organismen Hefe und E. Coli sehr unterschiedlich. Wie schon in [2] erwähnt ist die Lysin Biosynthese zwischen verschiedenen Organismen sehr unterschiedlich. In dem Ausschnitt des Teilgraphen aus Abbildung 4.8 ist erkennbar, dass in beiden Organismen das Lysin auf einem unterschiedlichen Weg erzeugt wird. Die roten Elemente stammen aus E. Coli und die grünen Elemente aus Saccharomyces cerevisiae. Man kann aus der Abbildung 4.8 erkennen, dass es in E. Coli zwei Pfade gibt, über die Pyruvat zu Lysin umgewandelt werden kann, während in Saccharomyces cerevisiae nur ein Pfad vorhanden ist. Selbst wenn ein mit E. Coli nahe verwandtes Bakterium wie Photorhabdus luminescens betrachtet wird, fällt der Vergleich ähnlich aus. 53 4.3. VERGLEICH KAPITEL 4. ANWENDUNG Abbildung 4.8: Ausschnitt aus der Detailansicht für einen Änderungsknoten aus dem Graph aus Abbildung 4.7 In Abbildung 4.9 ist eine Detailansicht für einen entsprechenden Graphen dargestellt. In der Detailansicht für den Vergleich des metabolischen Netzwerkes zur Umwandlung von Pyruvat zu Lysin in E. Coli und Photorhabdus luminescens ist erkennbar, dass auch hier zwei große Änderungen vorliegen, die beiden Eingabegraphen also sehr unterschiedlich waren. In dem Ausschnitt aus dem Teilgraphen aus Abbildung 4.9 stehen die roten Elemente für Metabolite und Reaktionen, die nur in E. Coli auftreten. In der Detailansicht ist erkennbar, dass in E. Coli ein zusätzlicher Pfad vorhanden ist, auf dem Pyruvat zu Lysin umgewandelt werden kann. 54 KAPITEL 4. ANWENDUNG 4.3. VERGLEICH Abbildung 4.9: Detailansicht für einen Änderungsknoten im Vergleichsgraphen des metabolischen Netzwerkes für die Umwandlung von Pyruvat zu Lysin in E. Coli und Photorhabdus luminescens 55 4.3. VERGLEICH KAPITEL 4. ANWENDUNG Als zweiter Stoffwechselvorgang wird die schon zuvor erwähnte Glykolyse untersucht. Hierbei werden wieder die zwei nahe verwandten Bakterien E. Coli und Photorhabdus luminescens verwendet. Der Vergleich der beiden metabolischen Netzwerke liefert den Übersichtsgraphen aus Abbildung 4.10. In der Abbildung 4.10 ist erkennbar, dass auch Abbildung 4.10: Übersichtsgraph für den Vergleich der Glykolyse bei E. Coli und Photorhabdus luminescens die Glycolyse zwischen den beiden Organismen deutliche Unterschiede aufweist. Es sind zwar einige gemeinsame Komponenten in beiden Netzwerken vorhanden, aber auch deutliche Unterschiede. Da die Elemente in den Unterschieden zusammenhängen, sind im Übersichtsgraphen in der Abbildung 4.10 nur zwei Änderungsknoten enthalten. Erstellt man nun für einen der Änderungsknoten eine Detailansicht, und exploriert den Teilgraphen bis zum anderen Änderungsknoten, so ist erkennbar, dass die Elemente, die nur in einem Graphen enthalten sind, alle mit einander verbunden sind. Deswegen gibt es im Übersichtsgraphen aus der Abbildung 4.10 nur zwei Änderungsknoten. Es sind insgesamt aber deutlich weniger Elemente in den beiden Änderungen als bei der Lysin Biosynthese aus den Abbildungen 4.8 und 4.9. Dies bedeutet, dass die Glycolyse zwischen den einzelnen Organismen stärker konserviert ist, als die Lysin Biosynthese. In Abbildung 4.11 ist ein Ausschnitt aus dem Teilgraphen dargestellt, wobei die roten Elemente für Metabolite und Reaktionen in E. Coli stehen, während die grünen Elemente aus Photorhabdus luminescens stammen. In der Detailansicht aus Abbildung 4.11 sieht man, dass in E. Coli das Pyruvat noch auf zwei anderen Wegen erreicht werden kann. In allen hier vorgestellten Beispielen wird durch die Darstellung der Ergebnisse der Vergleich der beiden Graphen sehr erleichtert. Durch die Signalfarbe der Änderungsknoten können diese leicht im Übersichtsgraphen gefunden werden. In der Detailansicht können 56 KAPITEL 4. ANWENDUNG 4.4. ZUSAMMENFASSUNG Abbildung 4.11: Detailansicht für einen Änderungsknoten aus dem Graphen aus Abbildung 4.10 exploriert bis zum anderen Änderungsknoten die verschiedenen Elemente den jeweiligen Graphen durch die deutliche Farbgebung einfach zugeordnet werden, so dass die Unterschiede deutlich werden. 4.4 Zusammenfassung In diesem Kapitel wurde das Vergleichsmodul anhand verschiedener Beispiele getestet und seine Funktionen demonstriert. Dabei wurde deutlich, dass sehr unterschiedliche Graphen zwar verglichen werden können, das Ergebnis aber nur bedingt hilfreich ist. Am ehesten können beim Vergleich zweier unterschiedlicher Graphen die Bereiche identifiziert werden, die beiden Graphen gemeinsam sind. Sind die Unterschiede im Vergleich zur Größe der Graphen hingegen klein und lokal, so können sie mit dem Vergleichsmodul gut gefunden werden. Die Detailansicht erleichtert das Untersuchen der einzelnen Änderungen und bietet mit der Exploration zusätzlich die Möglichkeit, die Umgebung der Änderung im Detail zu betrachten. Dabei werden andere Änderungen, die während der Exploration erreicht werden, in der jeweiligen Graphenfarbe eingefärbt. 57 5 Zusammenfassung und Ausblick 5.1 Zusammenfassung Die vorliegende Diplomarbeit ist in zwei große Bereiche einzuteilen - das Kondensationsund das Vergleichsmodul. Ziel war es, ein Verfahren zu entwickeln, mit dem große Graphen verglichen werden können. Zu diesem Zweck wurde das “Overview and Detail”Konzept aus Kapitel 1.2 verwendet. Zur Realisierung dieses Konzeptes wurde das Kondensationsmodul entwickelt. Damit lassen sich große Graphen visuell komprimieren. Es werden allen Knoten Wichtigkeitswerte mithilfe von Zentralitäten zugewiesen. Dann werden, in einer vom Benutzer vorgegebenen Weise, Knoten des Graphen zusammengefasst und der Graph so optisch reduziert. Nach der Kondensation hat der Benutzer die Möglichkeit, den Inhalt von Multiknoten in einem Extrafenster anzeigen zu lassen. Dazu wird ein Teil des ursprünglichen Graphen in unkondensierter Version angezeigt. Dieser Teilgraph kann entlang erweiternder Kanten vergößert werden. Um zwei Graphen zu vergleichen wurde das Vergleichsmodul (Kapitel 3) entwickelt. Für den eigentlichen Vergleich zweier Graphen wird davon ausgegangen, dass die Zuordnung der Knoten bekannt ist. Gerade für biologische Netzwerke ist diese Annahme nicht unrealistisch, da die Knoten zum Beispiel in Protein-Protein Interaktionsnetzwerken eindeutigen Proteinen zugeordnet sind, die in beiden Graphen gefunden werden können. Die Eingabegraphen und der Ergebnisgraph werden mithilfe des Kondensationsmoduls verkleinert, so dass die wichtigen Elemente - die Änderungen - vom Benutzer einfach gefunden werden können. Beim Anwählen einer der Änderungen wird ein Extrafenster geöffnet, in dem der betroffene Bereich des Graphens dargestellt wird. Dieses Fenster ähnelt dem das man bei den kondensierten Graphen erhielt, wenn ein Multiknoten angeklickt wurde. Auch hier kann der Graph entlang erweiternder Kanten vergrößert werden. Nur wird diesmal nicht in jedem Schritt ein neuer Knoten hinzugefügt, sondern immer der gesamte Inhalt des nächsten Knotens in den Teilgraphen eingefügt. Die Elemente, die dabei Teil einer Änderung sind, werden farblich markiert, so dass sie vom Benutzer einfach zu identifizieren sind. Das Extrafenster bietet die Möglichkeit, den aktuell betrachteten Bereich im zweiten Graphen anzuzeigen, so dass beide Graphen direkt miteinander verglichen werden können. Zusätzlich hat der Benutzer die Möglichkeit, den aktuell betrachteten Graphen zur weiteren Bearbeitung in den yEd zu kopieren. Sollte einer der Erweiterungs- oder Komprimierungsschritte des Teilgraphen rückgängig gemacht werden, so kann das mit der undo-Funktion erreicht werden. In Kapitel 4 wurden einige beispielhafte Anwendungen des Vergleichsmoduls auf ausgewählte biologische Graphen demonstriert. 59 5.2. AUSBLICK KAPITEL 5. ZUSAMMENFASSUNG UND AUSBLICK 5.2 Ausblick Die vorgestellten Verfahren können an mehreren Stellen verbessert und erweitert werden. Zunächst einmal könnte die Graphenexploration überarbeitet und beschleunigt werden. Da in einem Änderungsknoten sehr viele Elemente sein können, kann die Exploration eines solchen Knotens relativ lange dauern. Um einen flüssigen Programmablauf zu gewährleisten, könnte in diesem Fall der Änderungsknoten nur teilweise zum Teilgraphen hinzugefügt werden, und einige neue Änderungsknoten für den Rest des ursprünglichen Knotens eingeführt werden. Eine mögliche Erweiterung des Kondensationsmoduls und damit auch des Vergleichsmoduls wäre die Implementierung weiterer Kondensationsmethoden. So ist es zum Beispiel möglich, ein Matching auf dem Graphen zu berechnen, und die Knoten gemäß diesem Matching zu verschmelzen. Generell sind beliebige Verfahren zur Auswahl und Vereinigung von Knoten denkbar. In den meisten der Kondensationsverfahren die in dieser Arbeit entwickelt wurden spielen Zentralitätsmaße eine wichtige Rolle bei der Auswahl der Knoten, die vereinigt werden. Hier könnten ebenfalls neue Maße implementiert werden, die zum Beispiel für bestimmte Graphenklassen besonders gut geeignet sind. Für den Übersichtsgraphen des Kondensationsmoduls und die detaillierten Teilgraphen die daraus erzeugt werden wurde der Organic Layouter aus den yFiles verwendet. Anstelle dieses eher einfachen Layouters könnten beliebige andere Layouter, die an den jeweiligen Typ Graph, der verglichen werden soll, angepasst sind, verwendet werden. Es wäre auch denkbar, dass für den Übersichtsgraphen und den Detailgraphen unterschiedliche Layouter verwendet werden. Gerade bei den metabolischen Netzwerken aus Kapitel 4 fällt auf, dass der Organic Layouter nicht immer gute Ergebnisse liefert. Da in diesen Netzwerken eine Richtung vorhanden ist, nämlich ein Stoff über mehrere Schritte in einen anderen umgewandelt wird, wäre es sinnvoll, wenn der Layouter diese Richtung bei der Platzierung der Knoten und Kanten berücksichtigt. Da es in diesen Netzwerken aber oft Knoten gibt, die mit sehr vielen anderen Knoten verbunden sind, weil die entsprechenden Stoffe an vielen Reaktionen teilhaben, ist es auch für andere Layouter sehr schwierig, ein optisch ansprechendes Layout zu erstellen. Das Vergleichsmodul kann, in der hier vorgestellten Version, zwei Graphen vergleichen. Eine Erweiterung auf mehrere Graphen wäre denkbar, würde allerdings die Komplexität des Programmes deutlich erhöhen. Auch müsste die Darstellung der Ergebnisse überarbeitet werden, um sinnvoll Unterschiede zwischen allen verglichenen Graphen darstellen zu können. Eine Möglichkeit hierzu wäre eine Darstellung in 2, 5D. Hierzu gibt es sogar schon eine Erweiterung zum verwendeten Grapheneditor yEd, die ebenfalls im Rahmen einer Diplomarbeit an diesem Lehrstuhl von Johannes Spielmann entwickelt wurde. Eine sehr aufwändige Erweiterung wäre die Möglichkeit, Graphen mit unbekannter Knotenzuordnung zu vergleichen. Für diese Arbeit wurde davon ausgegangen, dass die Zuordnung bekannt ist. Gerade für biologische Anwendungen, in denen veränderte Stoffwechselvorgänge oder Ähnliches untersucht werden, ist diese Annahme nicht unrealistisch. Da aber 60 KAPITEL 5. ZUSAMMENFASSUNG UND AUSBLICK 5.2. AUSBLICK in anderen Anwendungen nicht immer von einer bekannten Zuordnung ausgegangen werden kann, wäre eine solche Erweiterung durchaus sinnvoll. Das Graphisomorphieproblem ist aber bekanntermaßen NP-hart, so dass eine Erweiterung auf Graphen mit unbekannter Knotenzuordnung sehr aufwändig würde. 61 Literaturverzeichnis [1] Albrecht, Mario, Alejandro Estrella-Balderrama, Markus Geyer, Carsten Gutwenger, Karsten Klein, Oliver Kohlbacher und Michael Schulz: 08191 Working Group Summary – Visually Comparing a Set of Graphs. In: Borgatti, Stephen P., Stephen Kobourov, Oliver Kohlbacher und Petra Mutzel (Herausgeber): Graph Drawing with Applications to Bioinformatics and Social Sciences, Nummer 08191 in Dagstuhl Seminar Proceedings, Dagstuhl, Germany, 2008. Schloss Dagstuhl - Leibniz-Zentrum fuer Informatik, Germany. [2] Blum, Torsten und Oliver Kohlbacher: MetaRoute: fast search for relevant metabolic routes for interactive network navigation and visualization. Bioinformatics, 24(18):2108–2109, 2008. [3] Blum, Torsten und Oliver Kohlbacher: Using Atom Mapping Rules for an Improved Detection of Relevant Routes in Weighted Metabolic Networks. Journal of Computational Biology, 15(6):565–576, 2008. [4] Dirk Koschützki, Katharina Anna Lehmann, Leon Peeters Stefan Richter Dagmar Tenfelde-Podehl und Oliver Zlotowski: Centrality Indices. Lecture Notes in Computer Science. Springer Berlin / Heidelberg, 2005. [5] Gaertler, Marco: Clustering. Lecture Notes in Computer Science. Springer Berlin / Heidelberg, 2005. [6] Jain, A. K., M. N. Murty und P. J. Flynn: Data clustering: a review. ACM Comput. Surv., 31(3):264–323, 1999. [7] R. Wiese, M. Eiglsperger, M. Kaufmann: yFiles: Visualization and Automatic Layout of Graphs. In: Proceedings of the 9th International Symposium on Graph Drawing (GD 2001). Springer-Verlag, 2001. [8] The UniProt Consortium: The Universal Protein Resource (UniProt). Nucleic Acids Research, 36:D190–D195, 2008. [9] The UniProt Consortium: The Universal Protein Resource (UniProt). http://www.uniprot.org/, 2008. [10] University of Helsinki: PINA: Protein Interaction Network Analysis platform. http://csbi.ltdk.helsinki.fi/pina/, 2008. 63 Literaturverzeichnis Literaturverzeichnis [11] Wu, J., Vallenius T. Ovaska K. Westermarck J. Makela T.P. und S. Hautaniemi: Integrated network analysis platform for protein-protein interactions. Nature methods, 6:75 – 77, 2008. [12] yWorks GMbH: Grapheneditor yEd. http://www.yworks.com/en/products_yed_ about.html. [13] yWorks GMbH: yFiles GraphenBibliothek. products_yfiles_about.html. 64 http://www.yworks.com/en/