Fachbereich 4: Informatik Berechnung und Approximation von Kürzeste-Pfad-Statistiken in großen Netzwerken für KONECT Bachelorarbeit zur Erlangung des Grades Bachelor of Science im Studiengang Imformatik vorgelegt von Jesús Cabello González Betreuer: Dr. Jérôme Kunegis, Institut for Web Science and Technologies - WeST, Fachbereich Informatik, Universität Koblenz-Landau Gutachter: Prof. Dr. Steffen Staab, Institut for Web Science and Technologies - WeST, Fachbereich Informatik, Universitat Koblenz-Landau Koblenz, im März 2014 Zusammenfassung KONECT (The Koblenz Network Collection) ist ein Projekt, das verschiedene Netzwerkdatensätze sammelt und mit Werkzeugen der Netzwerkanalyse Netzwerkstatistiken berechnet, repräsentative Diagramme darstellt, und verschiedene Link-Vorhersagealgorithmen implementiert. Eine der Statistiken, die berechnet sind, beschäftigt sich mit der Länge der Wege in einem Netzwerk. In diese Arbeit sind implementiert und evaluiert effiziente Algorithmen zur Berechnung des Durchmessers von großen Netzwerken. Somit sind mehr Informationen über Netzwerke zur Verfügung gestellt, wovon KONECT profitieren kann. Die Arbeit ist aber auch für alle anderen Personen bzw. Studien gedacht, die Interesse an Netzwerktheorie und Netzwerkanalyse haben. 1 Inhaltsverzeichnis Inhaltsverzeichnis 2 1 Einleitung 1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Forschungsmethoden und Aufbau der Arbeit . . . . . . . . . . . 3 5 6 7 2 Theoretische Grundlagen 2.1 Netzwerk . . . . . . . . . . . . . . . . 2.2 Weg und Distanz . . . . . . . . . . . . 2.3 Durchmesser, Exzentrizität und Grad 2.4 Größte Zusammenhangskomponente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 7 12 13 13 3 Verfahren 3.1 Dijkstra-Algorithmus . . 3.2 Sampling-Algorithmus . 3.3 HyperANF-Algorithmus 3.4 iFub-Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 14 17 17 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Experimente 20 4.1 Die Laufzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 4.2 Präzisition des Durchmessers . . . . . . . . . . . . . . . . . . . . 27 4.3 Präzisition der Hop Distribution . . . . . . . . . . . . . . . . . . 28 5 Zusammenfassung und Ausblick 28 Anhang 36 Literatur 41 2 1 Einleitung Heutzutage haben wir sehr oft mit solchen Netzwerken zu tun, ohne dass es uns wirklich bewusst ist. Oft werden wir selbst ein Teil von einem Netzwerk. Als Beispiele für solche Netzwerke können Landkarten, Bahnhof- und Flugverbindungen, soziale Netzwerke, und Kommunikationsnetzwerke genannt werden. Es lässt sich feststellen, dass derzeitige Netzwerke immer komplexer und größer werden. Um Informationen aus den Netzwerken ableiten und diese auch verstehen zu können, bietet sich die Netzwerkanalyse als optimale Lösung. Durch die ständig zunehmende Komplexität der Netzwerke wird deutlich, dass herkömmliche Analysemethoden nicht ausreichen, um diese Netzwerke zu untersuchen. Unter dem Begriff der Netzwerkanalyse wird eine empirische Untersuchungsmethode verstanden, die dabei helfen soll, ein Netzwerk zu erfassen. Mit anderen Worten ausgedrückt, handelt es sich dabei um eine Methode zur Beschreibung von Strukturen und Interaktion von Individuen bzw. Akteuren. Die innere Interaktion wird als Wahrscheinlichkeit verstanden, dass ein Akteur mit k anderen Akteuren eine Relation bzw. Beziehung hat. Diese Wahrscheinlichkeit kann in vielen natürlichen Systemen durch ein Potenzgesetz beschrieben werden: P (k) ∼ k ∼γ [8]. Bei der Netzwerkanalyse handelt es sich um ein relativ neues Wissenschaftsbereich [10]. Im Rahmen der Literaturrecherche, die für die vorliegende Bachelorarbeit betrieben wurde, konnte festgestellt werden, dass in den deutschsprachigen Raum ein großes Interesse an diesem Thema besteht (z.B.[11, 12, 13]). Mithilfe von Netzwerkanalyse können unter anderen die drei wichtigsten Fragen beantwortet werden, welche sich auf Netzwerke beziehen [14]: • Was ist ein Netzwerk? • Wie kann man es beschreiben? • Was leistet es? Die Netzwerkanalyse kann als statisches Instrumentarium verstanden werden, das für Untersuchung von Netzwerken angewendet wird. Daneben bietet es eine theoretische Perspektive. Dadurch wird die Rolle der Netzwerke deutlich, Zugehörigkeit der verschiedenen Akteuren sowie ihre Handlungsmöglichkeiten [14]. Die Netzwerkanalyse spielt eine wichtige Rolle bei der Verbindung von Akteur- und Handlungstheorien mit Theorien über Organisatioen, Strukturen und Systeme. Darüber hinaus wird eine detaillierte, spezifische und systematische Beschreibung von Netzwerken möglich. Die Netzwerkanalyse findet vor allem in den soziologischen, politikwissenschaftlichen und ökonomischen Kontext statt. Unsere Gesellschaft hat sich verändert. Es besteht aus sozialen Netzwerken zwischen Akteuren. Individuen nutzen die Netzwerke vor allem, um miteinander kommunizieren zu können und neue Kontakte zu knüpfen. Früher, als es noch keine Telefone, Internet und andere Medien sowie IKT nicht gab, war ein solcher Vernetzungsgrad gar nicht möglich. Da sich die Technologie immer weiter und 3 schneller entwickelt, werden auch die bereits existierenden und neuen Netzwerke immer größer und vielfältiger. Zudem werden ihre Strukturen und Dynamik immer komplexer [15]. Dadurch entsteht eine große Herausforderung, die in der Untersuchung und Analyse solcher Netzwerke besteht. Die vorliegende Arbeit befasst sich mit Datensätzen von Netzwerken, welche KONECT ( The Koblenz Network Collection) enthält. KONECT ist ein Projekt, das verschiedene Netzwerkdatensätze sammelt und mit Werkzeugen der Netzwerkanalyse Netzwerkstatistiken berechnet, repräsentative Diagramme darstellt, und verschiedene Link-Vorhersagealgorithmen implementiert. Gegenwärtig enthält KONECT 187 verschiedene Netzwerke. Eine der Statistiken, die berechnet sind, beschäftigt sich mit der Länge der Wege in einem Netzwerk. Das Problem, der bei KONECT häufig anzutreffen ist bezieht sich auf den Durchmesser, denn dieser kann nur mit hohen Aufwand bzw. nur für kleine Datensätze exakt berechnet werden, und muss deswegen geschätzt werden. Diese Bachelorarbeit soll einen Beitrag für die Lösung dieses Engpasses bzw. Problems leisten. Im Folgenden wird das Problem näher beschrieben. Im KONECT-Projekt sind derzeitig 187 Datensätze enthalten [1]. Die Statistiken und Diagramme, welche die Netzwerke abbilden sollen, können mit einem Algorithmus generiert werden, der in Matlab implementiert ist. Die aktuell verfügbaren Statistiken können auf der KONECT-Webseite abgerufen werden. Alle Größenklassen von Netzwerken, die man auf dieser Seite finden kann, sind vertreten. Unter anderem befindet sich dort das Netzwerk des sozialen Netzwerks Twitter“, das aus 52 Millionen Knoten und 1.9 Milliarden Kanten besteht. Gegenwärtig enthält KONECT 187 verschiedene Netzwerke wobei: 41 67 79 79 79 sind ungerichtet sind gerichtet sind bipartite sind ungewichtet erlauben multiple Kanten 6 haben gewichtete Kanten 12 haben bewertete Kanten 1 erlaubt multiple gewichtete Kanten 4 erlauben positive gewichtete Kanten 72 haben Kanten mit Ankunftszeiten Ungefähr 51% der Netzwerke in KONECT besitzen Durchmesserstatistiken, die für sie berechnet bzw. erfasst worden sind. Die anderen 49% konnten bis jetzt noch nicht berechnet werden, da die Anzahl von Knoten und/oder Kanten zu groß ist und die Software, die sich mit der Berechnung beschäftigt, keine dem Stand der Dinge entsprechenden Algorithmen verwendet. Dies bietet einen großen Spielraum für die Implementierung von neuen Algorithmen (in der Programmiersprache C), die es ermöglichen sollen, möglichst große Netzwerke, die in KONECT vorhanden sind, bearbeiten zu können [1]. Der Durchmesser ist zur Zeit in KONECT für Netzwerke mit bis zu 463,670 Knoten (Netzwerk “Notre Dame”) und mit bis zu 2,985,790 Kanten (Netzwerk “Wikipedia Conflict”) berechnet. Falls Netzwerke eine größere Anzahl an Knoten und Kanten haben, sind sie noch nicht in KONECT bearbeitet. Ein Beispiel dafür stellt das Netzwerk “EU Institution” mit 300,069 Knoten und 420,045 Kanten dar. 4 In der Literatur wird der Durchmesser außerdem zumeist nur für einzelne Netzwerke berechnet; eine großangelegte vergleichende Studie über den Durchmesser von Netzwerken aus heterogenen Kategorien existiert dabei noch nicht. In dieser Arbeit wurde eine solche Studie mit den KONECT-Netzwerken möglich gemacht. 1.1 Motivation Unter dem Begriff Netzwerk versteht man eine Konstellation von Objekten, z.B. Knoten, die miteinander durch Kanten verbunden sind. Heutzutage haben wir sehr oft mit Netzwerken zu tun. Jedoch ist es uns oft nicht bewusst, dass wir gerade mit einem Netzwerk zu tun haben, oder dass wir gerade ein Teil von einem Netzwerk sind. Die in dem Kapitel 1.1. genannten Beispiele machen es deutlich, wie oft wir an solchen Netzwerken beteiligt sind und dass dieser Begriff nicht unbedingt mit einem komplizierten Inhalt zusammenhängen muss. Die bisher übliche Analysemethoden erweisen sich immer häufiger als nicht ausreichend, um die gewünschten Aufgaben zu erfüllen. Dies liegt daran, dass die Netzwerke umfassender und größer werden. Netzwerkanalyse kann bei der Erfassung und Untersuchung von allen möglichen Netzwerken. Mit ihrer Hilfe können Strukturen und die Interaktionen zwischen Individuen beschrieben werden. Netzwerkstatistiken stellen eine Möglichkeit dar, Informationen über ein Netzwerk in kompakter Form darzustellen. Die Aufgabe, die in der Beschreibung der Eigenschaften von Knoten und Kanten sowie des ganzen Graphen besteht, gewinnt immer mehr an Bedeutung. Mithilfe von Netzwerkstatistiken soll es einfach sein, die wichtigsten Eigenschaften eines Netzwerkes zu beschreiben und es somit von anderen zu unterscheiden. Solche Statistiken sind eine wichtige Basis für Algorithmen und Anwendungen, die unter anderem dabei helfen, zwischen unterschiedlichen Netzwerken zu unterscheiden [2]. In dem KONECT-Projekt sind bereits viele Statistiken für Netzwerke vorhanden. Mithilfe von KONECT kann der Durchmesser jedoch nur für kleine Datensätze berechnet werden. Diese Bachelorarbeit soll einen Beitrag für die Lösung dieses Engpasses bzw. Problems leisten. Durch die Implementierung von den nachfolgend dargestellten Algorithmen soll es am Ende möglich sein, dass der Durchmesser auch für größere Datensätze berechnet bzw. geschätzt werden kann: • Dijkstra-Algorithmus • iFub-Algorithmus • HyperANF-Algorithmus • Sampling-Algorithmus Somit wird die Herausforderung, die mit der zunehmender Komplexität von Netzwerken zumindest teilweise aufgehoben. 5 1.2 Zielsetzung Ziel der Bachelorarbeit ist es, eine Toolbox in C zu entwickeln mit der möglichst Distanzen und Hop-Distributionen von große Netzwerke berechnen. Nachdem die Toolbox entwickelt und implementiert wird, sollen möglichst viele Netzwerke aus KONECT mit dessen Hilfe untersucht werden. Dies wird im Rahmen einer Evaluation erfolgen. Um die Effektivität der implementierten Algorithmen zu messen sollen folgende Experimente durchgeführt werden: • Für exakte Algorithmen soll die Laufzeit anhand mehrerer Netzwerkdatensätze gemessen werden. Es soll ermittelt werden, welcher exakte Algorithmus der schnellste ist. • Für approximative Algorithmen muss sowohl die Laufzeit als auch die Approximationsgenauigkeit evaluiert werden. In diesem Fall kann durch geeignete Wahl von Parametern ein Trade-off zwischen Laufzeit und Genauigkeit gemacht werden. Es soll evaluiert werden, welcher Algorithmus für eine gegebene Approximationsgenauigkeit der effzienteste ist. • Es soll ermittelt werden, inwiefern Eigenschaften eines Netzwerks die Laufzeit der einzelnen Algorithmen beeinflusst. Zum Beispiel soll getestet werden, ob bestimmte Algorithmen effizienter arbeiten, wenn der Durchmesser eines Netzwerks größer oder kleiner ist, oder wenn andere Netzwerkeigenschaften gegeben sind, wie zum Beispiel ein besonders hoher ClusteringKoeffzient oder eine Gradverteilung, die einer Power-Law folgt. Es soll auch getestet werden, ob die einzelnen Algorithmen für bestimmte Netzwerktypen (soziale Netzwerke, Straßennetzwerke, usw.) besser oder schlechter geeignet sind. Es soll weiterhin herausgefunden werden, wie viele Netzwerke aus KONECT bearbeitet werden können und darüber hinaus soll die Größe des größten Netzwerkes festgestellt werden, für das dies möglich ist. Die berechneten Durchmesser sollen mit denen aus der Literatur verglichen werden. Außerdem soll durch die große Anzahl an Netzwerken in KONECT, für die der Durchmesser berechnet wird, der Vergleich des Durchmessers in einer großen Zahl von heterogenen Netzwerken durchgeführt werden, um somit Aussagen über die Struktur von Netzwerken von verschiedenen Typen machen zu können, die bei Studien über nur einige wenige Netzwerke nicht möglich wären. In diesem Experiment soll auch ermittelt werden, inwiefern Netzwerke aus verschiedenen Kategorien (z.B. soziale Netzwerke, Rechnernetzwerke, Straßennetzwerke) unterschiedliche Durchmesserwerte besitzen. Durch die große Anzahl an Netzwerken sollen hier auch statistisch signifikante Aussagen gemacht werden können. Die Bachelorarbeit ist einerseits für KONECT gedacht, d.h. die Berechnung von möglichst vielen und großen Netzwerken soll umsetzbar werden. Somit werden mehr Informationen über Netzwerke zur Verfügung gestellt, wovon KONECT profitieren kann. Es ist aber auch für alle anderen Personen bzw. Studien gedacht, die Interesse an Netzwerktheorie und Netzwerkanalyse haben. 6 1.3 Forschungsmethoden und Aufbau der Arbeit Um Instrumente als Mittel der Zielerreichung auswählen zu können, ist es sehr wichtig für eine Forschungsarbeit wie diese, eine Art und Weise des Vorgehens auszuwählen. Für die vorliegende Arbeit wurde einerseits die Literaturanalyse als Forschungsmethode eingesetzt. Dadurch kann der aktuelle Forschungsstand festgestellt werden und neue Erkenntnisse über das Thema gewonnen werden. Die Literaturrecherche bildet eine Grundlage für den theoretischen Teil der Arbeit. In dieser Bachelorarbeit wird unter anderem untersucht, wie sich die Eigenschaften (z.B. Clustering- Koeffzient, Durchmesser, Gradverteilung u.ä.) eines Netzwerks auf die Laufzeit der einzelnen Algorithmen, die im Kapitel 1.2. genannt wurden, auswirken. Im Rahmen des durchzuführenden Experiments soll festgestellt werden, welcher der einzelnen Algorithmen am schnellsten ist. Darüber hinaus soll es möglich sein, eine Aussage über die Effizient der Algorithmen zu machen. Diese Methode hilft dabei, neue Erkenntnisse über das Thema zu gewinnen und zu der Minderung der Herausforderung beizutragen, die aus der zunehmenden Komplexität der Netzwerke resultieren. Die vorliegende Arbeit gliedert sich zur Darstellung der vorgenommenen Schritte in mehrere Abschnitte: Im nun folgenden zweiten Kapitel werden die theoretischen Grundlagen dargestellt. Die wichtigsten Begriffe werden erläutert und mithilfe von Beispielen erklärt, um somit Verständnis für die nachfolgenden Kapitel zu entwickeln. In dem dritten Kapitel werden die Verfahren präsentiert, die bei der Problemlösung angewendet werden. Für den exakten Algorithmus wird der Dijkstra-Algorithmus und iFub-Algorithmus benutzt, und für den approximativen Algorithmus werden ein Sampling-Algorithmus und HyperANFAlgorithmus verwendet. Im nächsten Kapitel werden die Experimente gezeigt, die im Rahmen der vorliegenden Arbeit durchgeführt wurden. Was genau im Rahmen der Experimente gemacht werden soll, wurde bereits im Kapitel 1.2. beschrieben. In diesem Kapitel werden darüber hinaus die Ergebnisse der Experimente präsentiert. Kapitel 6 schließt die Arbeit ab. Hierbei wird das Thema zusammengefasst und zudem wird ein Ausblick für die zukünftige Forschung gegeben. 2 Theoretische Grundlagen In diesem Kapitel werden die theoretischen Konzepte und die Begriffe präsentiert, die bei der vorliegenden Arbeit eine Schlüsselrolle spielen. Entwicklung von dem Verständnis ist dabei sehr wichtig, denn ansonsten kann der Leser nicht den Inhalten der vorliegenden Arbeit folgen. An manchen Stellen werden die Begriffe mit Beispielen illustriert, um ihre Rolle zu verdeutlichen. 2.1 Netzwerk In der Literatur wird darauf hingewiesen, dass die Begriffe Netzwerk und Graph synonym verwendet werden können [9]. Es kommt darauf an, aus welcher Perspektive das Thema betrachtet wird. Diestel (2006) beschreibt einen Graphen 7 als ein Paar G = (V, E) disjunkter Mengen. Die Bestandteile von E können als 2-elementige Teilmengen von V bezeichnet werden. Anders formuliert, unter dem Begriff Netzwerk versteht man eine Menge von Elementen, die als Knoten (V ) bzw. Ecken genannt werden. Zudem besteht ein Netzwerk aus Kanten (E), die als Beziehungen oder Verbindungen zwischen den Knoten fungieren [9, 16]. Es sind zahlreiche Systeme in der realen Welt vorhanden, die in Form von Netzwerken auftreten. In der mathematischen Literatur werden die Netzwerke eher als Graphen bezeichnet aber im Grunde genommen handelt es sich um den gleichen Begriff. Die Netzwerke können graphisch dargestellt werden, in dem die Knoten als Punkte gezeichnet werden und diese dann mit einer Linie (Kante) verbindet [16]. Die Knoten repräsentieren dabei Akteure, die nicht nur Menschen sein müssen, sondern auch Organisationen, Unternehmen, Länder usw. [10]. Mithilfe von Kanten werden die Beziehungen zwischen den Knoten abgebildet. Die formale Definition eines Netzwerkes ist unabhängig von seiner graphischen Darstellung. Diese ist dem Zeichner frei überlassen, d.h. es spielt keine Rolle, ob sich die Linien (Kanten) überkreuzen oder ob sie gerade oder geschwungen gezeichnet werden. Die Abbildung 1 präsentiert einen Beispiel für ein kleines Netzwerk, das aus acht Knoten und sieben Kanten besteht. Knoten 0 Kanten 1 2 3 5 4 6 7 Abbildung 1: Ein Beispiel für kleines Netzwerk (eigene Darstellung). Es gibt zahlreiche Beispiele von Systemen, welche in Form von Netzwerken dargestellt werden können. Um einen Überblick zu verschaffen sowie Beweis für diese These zu liefern, werden einige von vielen Netzwerkbeispielen genannt: Facebook, Twitter, flickr, XING, Netzwerke von Geschäftsbeziehungen, Routen, welche Briefzustellungen abbilden, Netzwerke der Zitierungen zwischen wissenschaftlichen Artikeln, Internet und viele mehr. In der Abbildung 2 wird ein Netzwerk präsentiert, das eins von vielen Gegenständen der vorliegenden Arbeit ist. Dabei handelt es sich um Netzwerk „Highland tribes“. Dies ist das soziale Netzwerk der Bündnisstruktur von Stämmen des Gahuku-Gama der östlichen zentralen Hochland von Neuguinea, von Kenneth Read (1954). Das Netzwerk enthält sechzehn Stämme, die entweder durch Freundschaft (Rova") oder Feindschaft ("hina") verbunden sind. Dieses Beispiel macht es deutlich, dass praktisch 8 jede Situation aus dem Alltag, an der mehrere Akteure beteiligt sind und miteinander interagieren, als Netzwerk präsentiert werden kann [15]. Abbildung 2: Graphische Darstellung des Netzwerkes „Highland tribes“, von der KONECT-Webseite. Die Untersuchung der Netzwerken in Form von mathematischen Graphentheorie bildet eine Grundlage für diskrete Mathematik [9]. Neben Mathematik gibt es auch andere Wissenschaften, die sich mit Analyse von Netzwerken befassen. Dazu zählt unter anderem Soziologie, die sich mit diesem Thema ausführlich auseinandersetzt. Typisch für Analysen in diesem Wissenschaftsbereich ist, dass die Grundlagen mithilfe von Fragebögen herausgearbeitet werden. Die Teilnehmer dieser Umfragen werden häufig nach ihren Interaktionen mit anderen Individuen befragt. Im Nachhinein werden die Ergebnisse solcher Studien benutzt, um ein Netzwerk aufzubauen, in dem die Knoten die Teilnehmer und die Kanten die Interaktionen zwischen ihnen repräsentieren. Hauptthema solcher Studien ist oft die Zentralität, d.h. welche Individuen sind am besten mit anderen vernetzt bzw. verbunden oder welche Individuen haben den größten Einfluss in dem gesamten Netzwerk. Andererseits wird häufig die Konnektivität untersucht, um herauszufinden, ob und auf welche Art und Weise die Individuen über das Netzwerk miteinander verbunden sind [10]. In den letzten Jahren konnten einige Veränderungen in der Netzwerkforschung beobachtet werden. Die wichtigste Veränderung ist, dass nicht mehr nur einzelne und kleine Netzwerke und die Eigenschaften von einzelnen Knoten oder Kanten analysiert werden. Vielmehr konzentriert sich die aktuelle Forschung auf umfangreiche statistische Charakteristika von Graphen. Diese neue Ausrichtung wurde vor allem durch die allgemeine Zugänglichkeit zu Computern oder Kommunikationsnetzwerken vorangetrieben. Dadurch ist es möglich, die Daten in viel größeren Ausmaß zu analysieren als es früher möglich war. Früher wurden Netzwerke erfasst, die vielleicht maximal 100 Knoten hatten. Gegenwärtig ist es nicht selten, dass sich die Forscher mit Graphen beschäftigen, die Millionen von Knoten enthalten. Viele Fragen, die früher bei der Analyse von den kleinen Netzwerken gestellt wurden, erscheinen jetzt in den großen Netzwerken nicht mehr sinnvoll. Auch die Analysemethoden haben sich verändert bzw. mussten 9 an die neuen Herausforderung und Bedingungen angepasst werden, welche aus den großen und komplexen Netzwerken resultieren. Als Beispiel kann die womöglich älteste Methode der Netzwerkanalyse [9] aufgeführt werden, die darin besteht, dass der Graph mit seinen Elementen einfach gezeichnet wird und auf dieser Grundlage nachfolgend Fragen beantwortet werden (z.B. welcher Knoten in diesen Netzwerk wurde den größten Schaden für die Netzwerkkonnektivität anrichten, wenn er aus diesen Netzwerk entfernt würde?). Es wird aber schnell klar, dass bei einem Netzwerk, wie z.B. Twitter, diese Methode sich als nutzlos erweisen wird. Die neusten Entwicklungen auf diesen Wissenschaftsfeld zeigen, dass die Forscher die statistischen Methoden zu entwickeln versuchen, die solche Probleme umgehen. Die Netzwerkanalyse setzt sich mit drei Eigenschaftsaspekten, die in solche Analyse einbezogen werden können: • attributionale oder kategoriale Eigenschaften: Merkmale von Akteuren, Objekten, Organisationen; • relationale Eigenschaften: z.B. Stärke, Symmetrie/Asymmetrie, Transitivität; • Eigenschaften der Netzwerkstruktur: Dichte, Verbundenheit, Differenzierung Die Netzwerkanalyse kann z.B. so durchgeführt werden, dass zuerst statistische Eigenschaften identifiziert werden, z.B. Weglängen, Gradverteilung, welche die Struktur und das Verhalten des Netzwerks aufzeigen und Möglichkeiten präsentieren, wie solche Eigenschaften gemessen werden können. Außerdem wird es versucht, Netzwerkmodelle aufzubauen, welche die Bedeutung der Eigenschaften transparent machen. Zudem beschäftigt es sich mit Vorhersagen, welche das Verhalten von Netzwerksystemen betreffen. In der Praxis und Forschung existieren verschiedene Arten von Netzwerken. Die Unterschiede, die zwischen den Netzwerken bestehen lassen sich auf Art der Knoten oder Kanten zurückführen. Darüber hinaus können sie verschiedene Merkmale haben. Wenn ein soziales Netzwerk betrachtet wird, können die Knoten für Frauen oder Männer stehen oder für verschiedene Nationalitäten oder ähnliches. Die Kanten dagegen können für Freundschaft, Berufsbekanntschaften oder geographische Entfernung stehen. Das sind nur wenige von zahlreichen Möglichkeiten, die vorhanden sind. Die Graphen können gerichtet (Kanten verlaufen nur in eine Richtung) oder ungerichtet sein. Ein Beispiel für einen gerichteten Graph ist ein Graph, welches telefonische Verbindungen repräsentiert, da ein Anruf nur in eine Richtung gehen kann. Die graphische Darstellung spielt ebenfalls eine wichtige Rolle, wenn es um Stärke der Beziehungen geht. Wenn eine Kante, die Freundschaft repräsentiert, dick aufgezeichnet wird und eine andere dagegen dünn, kann davon ausgegangen werden, dass die dickere eine enge Freundschaft symbolisiert. Die Bezeichnung gerichtetes oder ungerichtetes Netzwerk bezieht sich also auf die Ausrichtung 10 der Kanten. Gerichtete Graphen können zyklisch oder azyklisch sein. In dem ersten Fall bedeutet dies, dass die Kanten zu sogenannten geschlossenen Schleifen werden und in dem zweiten Fall kommt es nicht zu solcher Situation [9]. In der Literatur werden auch Hypergraphen unterschieden, die dadurch gekennzeichnet sind, dass eine Kante (auch Hyperkante genannt) nicht nur zwei, sondern gleichzeitig mehrere Knoten verbindet. Solche Hypergraphen können verwendet werden, um z.B. Familienverbindungen in einem sozialen Netzwerk aufzuzeigen. Zudem unterscheidet man auch zwischen gewichteten und ungewichteten Graphen. Bei dem gewichteten Graphen werden die Kanten mit Gewichten bzw. mit Bewertungen versehen. Ein kantengewichteter Graph liegt vor, wenn jeder Kante eine reele Zahl als Kantengewicht zugeordnet ist. Darüber hinaus häufig anzutreffende Graphen sind sogenannte bipartite Graphen. Hierbei handelt es sich um Netzwerke die nicht nur aus einer Art von Knoten bestehen (z.B. Menschen und Bücher). In solchen Netzwerken verlaufen die Kanten nur zwischen den unterschiedlichen Arten von Knoten. In dem genannten Beispiel werden also nicht Menschen mit Menschen verbunden oder Bücher mit Büchern, sondern Menschen mit Büchern. Beispiele für solche bipartite Graphen, die aus dem täglichen Leben kommen sind: Nutzer Foto Nutzer Song/Band Abbildung 3: Beispiele für bipartite Graphen (eigene Darstellung). Die Netzwerke können sich im Laufe der Zeit verändern. Es kann zu Situationen kommen, in denen die Knoten aus dem Graphen ausscheiden oder dass immer mehr Knoten zu dem Netzwerk gehören möchten und an diesen auch teil nehmen, in dem sie sich mit anderen Knoten verbinden. Die Abbildung 4 präsentiert verschiedene Beispiele für Netzwerke [9]. Beispiel A zeigt ein ungerichtetes Netzwerk mit nur einen Knotentyp und nur einen Kantentyp. In dem Beispiel B werden verschiedene Knoten und Kantentypen abgebildet. In dem Beispiel C handelt es sich um Knoten und Kanten, die verschiedene Gewichtung haben. Es könnte sich z.B. um Städte handeln, die unterschiedlich groß sind und welche über unterschiedlich viele Straßenverbindungen verfügen. In dem Beispiel D wir ein gerichteter Netzwerk präsentiert, in dem jede Kante in eine bestimmte Richtung verläuft. Die Abbildung macht es deutlich, dass praktisch alle Situationen aus dem täglichen Leben in Form von Netzwerken dargestellt werden, weil es 11 eben so viele unterschiedliche Darstellungsvarianten vorhanden sind. Abbildung 4: Beispiele für verschiedene Netzwerktypen, adaptiert aus [9] Nachfolgend werden weitere Begriffe erläutert, die eine wichtige Rolle für die vorliegende Arbeit spielen. 2.2 Weg und Distanz Ein Weg kann als eine Folge von aufeinander folgenden Knoten und Kanten in einem Netzwerk verstanden werden [17]. Die Knoten müssen dabei durch eine Kante verbunden werden. An dieser Stelle muss ein Unterschied zwischen einem Weg und einer Kantenfolge erklärt werde. Eine Kantenfolge kann ein Weg sein, wenn jeder Knoten maximal einmal in dieser Folge anzutreffen ist. Somit lässt sich feststellen, dass die Knoten in einer Kantenfolge mehrmals vorkommen können und bei einem Weg nicht. Darüber hinaus darf in einem Weg eine Kante ebenfalls nur einmal auftreten. In einem Weg gibt es einem Anfangs-, Endund innere Knoten. In der Literatur wird der Begriff manchmal mit dem Wort „Pfad“ gleichgesetzt [10]. Eine Ausnahme von der vorhin bestehenden Regel bildet der Fall, wenn der Start- mit dem Endknoten identisch ist und dies somit der einzige wiederholte Knoten in der Kantenfolge ist. In solchem Fall spricht man von Zyklus oder Kreis. Distanz wird als die Länge des kürzesten Weges zwischen zwei Knoten in einem Graph verstanden. Häufig kommt es vor, dass mehrere kürzeste Pfade zwischen zwei Knoten vorhanden sind [9]. Dies ist vor allem der Fall in großen Netzwerken. Eine Abwandlung des Falls existiert, wenn keine solche Distanz vorhanden ist. In solchen Fall setzt man die Distanz auf Null. Die Distanz eines Knoten zu sich selbst beträgt null. Bei gerichteten Graphen, welche in diesem 12 Kapitel beschrieben sind, muss unbedingt beachtet werden, dass die Distanz von der Richtung des Pfades abhängig ist. Die Rolle, welche die Berechnung von Distanzen spielt, spiegelt sich z.B. in der Routenplanung wieder. Der Algorithmus von Dijkstra bietet sich hierbei als eine optimale Lösung. Wenn die Distanz in dem Graphen endlich ist, wird ein solcher Graph als verbunden genannt. 2.3 Durchmesser, Exzentrizität und Grad der größten Distanz zwischen allen Knotenpaaren wird als den Durchmesser bezeichnet. Die Exzentrizität von einem Knoten v ist die maximale Distanz zwischen v und alle anderen Knoten in einem Graph. Die Anzahl der Kanten, welche mit einem Knoten verbunden sind, werden als Grad genannt. Der Grad eines Knotens v ist nicht unbedingt gleich mit der Knotenanzahl, welche mit v benachbart sind. Das lässt sich darauf zurückführen, dass zwischen beliebigen zwei Knoten mehr als eine Kante bestehen kann. In der Literatur wird der Grad mit der Konnektivität eines Knotens zusammengebracht [9]. Das soll aber vermieden werden, denn die Konnektivität eine andere Bedeutung in der Graphentheorie hat. Darunter wird verstanden, dass z.B. ein gerichteter Graph dann stark verbunden ist, wenn für jeden Knotenpaar u und v ein Weg von u zu v und von v zu u vorhanden ist. Bei ungerichteten Graphen spricht man von Konnektivität, wenn für jeden Knotenpaar u und v ein Weg zwischen u und v vorhanden ist. Ein direkter Graph verfügt über zwei Sorten von Grad. Hiermit wird gemeint, dass die Knoten in solchen Graph Eingangs- und Ausgangskanten haben und deswegen über In- und Ausgangsgrad verfügen. 2.4 Größte Zusammenhangskomponente Für diese Arbeit wurde eine Methode angewendet, welche die größte Menge von verbundenen Knoten herausarbeitet, für einen Fall, dass nicht alle Knoten verbunden sind. Außerdem verarbeitet sie die einfachen, ungewichteten und ungerichteten Graphen. Diese Arbeit bezieht sich auf ungewichteten und gewichteten Graphen, wobei alle Knoten verbunden sind. Nachdem die begrifflichen Grundlagen präsentiert wurden, werden in den nächsten Kapiteln der Arbeit Inhalte präsentiert, die im Kapitel 1.4 beschrieben wurden. 3 Verfahren Nachfolgend werden die Verfahren präsentiert, die bei der Problemlösung angewendet wurden. Die Tabelle 1 gibt einen Überblick über die Anwendung der einzelnen Algorithmen: Für den exakten Algorithmus wurden der DijkstraAlgorithmus und iFub-Algorithmus benutzt, und für den approximativen Algorithmus wurden ein Sampling-Algorithmus und HyperANF-Algorithmus verwendet. 13 Durchmesser Hop Distribution Exakte Algorithmen Dijkstra, iFub Dijkstra Approximative Algorithmen HyperANF, Sampling Sampling Tabelle 1: Darstellung der implementierten Algorithmen. 3.1 Dijkstra-Algorithmus Ein einfaches Beispiel soll die Aufgaben bzw. den Schwerpunkt des DijkstraAlgorithmus wiedergeben. Man könnte sich vorstellen, dass eine Person A in einer großen Stadt wohnt und berufstätig ist. A möchte eine neue Wohnung suchen und unter den wichtigeren Kriterien befindet sich die Länge des Weges von der Wohnung zu der Arbeit. A möchte, dass der Weg so kurz, wie möglich ist, da er morgens gerne länger schläft. Um sein Problem zu lösen kann der DijkstraAlgorithmus angewendet werden. Sein Name verdankt der Algorithmus seinem Erfinder, Edsger W. Dijkstra. Der Algorithmus von Dijkstra basiert auf dem Greedy-Prinzip und stellt eine Lösungsmöglichkeit für das Problem dar, das sich mit der Bestimmung des kürzesten Pfade in einem kantengewichteten Graph von einem beliebigen Startknoten zu allen anderen beschäftigt [18]. Dabei ist es untersagt, dass die Kantengewichte des Graphen negativ sind. Greedy Algorithmen sind spezielle Algorithmen, die in der Informatik vorkommen. Ihre wohl bekannteste Eigenschaft basiert auf dem Überlegung, schrittweise den Folgezustand auszuwählen, der zu diesem Zeitpunkt mit dem größten Erfolg verbunden ist (z.B. Gradientenverfahren). Eine Bewertungsfunktion bildet die Grundlage für die Auswahl des besten Folgezustandes [3]. Im Gegensatz zu anderen Greedy Algorithmen berechnet Dijkstra-Algorithmus immer die optimale Lösung. Das Optimierungsproblem, das mit dem Finden des kürzesten Pfades von einem beliebigen Startknoten zu einem oder allen anderen Knoten in einem Graph zusammenhängt, kommt sehr häufig in der Forschung vor [19]. DijkstraAlgorithmus ist bis jetzt die beste sowie weit verbreitete Lösung für dieses Problem, da es auch als sehr stabil gilt. Die Laufzeit der Implementierung von diesem Algorithmus ist durch Kantenuntersuchung (jede Kante wird höchstens einmal überprüft) und durch Vorgänge gekennzeichnet, welche sich auf die Prioritätsschlange beziehen (z.B. insert, extract-min und decrease-key). Dijkstra-Algorithmus basiert auf folgenden Arbeitsschritten [20]: • Aufteilung der Knoten in drei Gruppen – Tree-Vertices: die kürzesten Pfade zu ihnen sind bekannt – Fringe-Vertices: benachbart mit Tree-Vertices; die kürzesten Pfade sind noch nicht bekannt – Distant-Vertices: nicht benachbart mit Tree-Vertices; werden nicht betrachtet 14 • Wiederholung n-Mal • Finden des Fringe-Vertex, das die kleinste Distanz von dem Startknoten aufweist • Bewegung von Fringe zu Tree • Aktualisierung aller Knoten, die zu Fringe-Vertices geworden sind Darüber hinaus wird es bei dem Vorgehen versucht nur derjenigen Kanten zu folgen, die den kürzesten Pfad aus der Sicht des Startknotens darstellen könnten. Alle anderen Kanten werden erst dann beachtet, wenn alle kürzeren Pfade bereits verfolgt wurden. Mithilfe eines solchen Vorgehens wird eine Art Garantie abgegeben, dass bei Erreichen eines Knotens kein kürzerer Pfad zu ihm vorhanden ist. Eine Distanz, die zwischen dem Startknoten und einem erreichten Knoten berechnet wurde, wird im späteren Verlauf nicht mehr geändert. Der vorher beschriebene Arbeitsschritt „Wiederholung n-Mal“ wird solange fortgesetzt, bis die Distanz des Zielknotens berechnet wurde (single-pair shortest path) oder die Distanzen aller Knoten zum Startknoten ermittelt worden sind (singlesource shortest path) [21]. Bei diesen Algorithmus kann die Verwandtschaft zur Breitensuche festgestellt werden. Mithilfe von Zeigerstrukturen oder Matrizen lassen sich die Knoten bzw. die Kanten abbilden, die zu dem betrachteten Graph gehören. Die Abstände der Knoten können in Feldern gespeichert werden. Um den Dijkstra-Algorithmus effizienter zu machen, wurde dieses mit eine Binary Heap-Struktur als Priority Queue implementiert, welche wie eine sortierte Liste arbeitet, d.h. dass die kleinste Distanz die erste in der Liste und die größte die Letzte ist. Der Aufwand vom Dijkstra-Algorithmus hängt von den Operationen der Warteschlange ab. Dabei handelt es sich um das Erzeugen einer leeren Prioritätschlange, das Einfügen von Elemente in die Schlange, das Aussuchen des minimalen Elementes und das Löschen von Elementen [3]. Für die Prioritätsschlange beträgt der Aufwand: O(n log n + m). Für die Berechnung der Distanzen zwischen allen Knotenpaaren wurde der Algorithmus von Dijkstra einmal pro Knoten benutzt. Jedes mal, wenn die Distanzen von einen Knoten zu allen anderen berechnet werden, werden diese Distanzen zu einem Vektor V hinzugefügt. Wenn die Distanzen zwischen allen Knotenpaaren berechnen sind, enthält der Vektor V die Hop Distribution des Graphen: V [n] für n ∈ {0, 1, 2, ..., δ}. (1) der für jede Position n die Anzahl von Knotenpaaren in Distanz n repräsentiert. In diesen Fall ist V [0] gleich der Anzahl von Distanzen, die gleich 0 sind, also ist V [0] gleich der Knotenanzahl. V [1] stellt die Anzahl von Distanzen dar, die gleich 1 sind, also ist V [1] gleich der Kantenanzahl usw. bis V[δ] die Distanzenanzahl repräsentiert, die gleich dem Durchmesser sind. Der Algorithmus von Dijkstra wurde für die Berechnung der Distanzen zwischen allen Knotenpaaren einmal pro jeden Knoten benutzt. Somit ergibt sich 15 Algorithm 1 Dijkstra-Algorithmus mit Prioritätschlange in Pseudocode Require: Ein Graph G und eine StartKnoten s Ensure: Die distanzen von s zu alle anderen Knoten 1: //Der Vektor abstand[] wird die Distanzenwerten speichern. 2: //Q ist eine leere Prioritätschlange. 3: for all u ∈ V [G] do 4: abstand[u] := ∞ 5: vorgänger[u] := null 6: end for 7: abstand[s] := 0 8: hinzufügen(Q, (s, abstand[s])) 9: while Q nicht leer ist do 10: u :=Extrahieren der Knoten mit kleinstem Distanz in Q 11: for all Nachbarn v von u do 12: if abstand[v] > (abstand[u] + 1) then 13: abstand[v] := (abstand[u] + 1) 14: vorgänger[v] := u 15: hinzufügen(Q, (v, abstand[v])) 16: end if 17: end for 18: end while Algorithm 2 Benutzung der Dijkstras-Algorithmus um die distanzen zwischen alle Knotenpaaren zu berechnen, in Pseudocode. 1: for all s ∈ V [G] do 2: abstand[] :=dijkstra(G, s) 3: hinzufügen(V [], abstand[]) 4: end for eine Laufzeit von: O(nm + n2 log n) [3]. Diese Methode ermöglicht Ermittlung von bestimmten Informationen über den Durchmesser und die Hop Distribution für viele Netzwerke von KONECT und es zeigt sich, dass die Laufzeit immer kleiner wird, als diejenige, die von den aktuellen KONECT-Tools benötigt wird. Obwohl mit diese Methode zur Berechnung bzw. Feststellung der Laufzeit schneller ist, es ist nicht möglich im Rahmen dieser Arbeit alle Netzwerke von KONECT zu bearbeiten, weil es sein kann, dass die Berechnung bzw. Feststellung Laufzeit mehrere Wochen oder sogar Monate dauern kann. Aus diesem Grund werden hier die 50% von allen Netzwerken von KONECT mithilfe des Dijkstra-Algorithmus berechnet, obwohl der Algorithmus mehrere Netzwerken bearbeiten könnte. 16 3.2 Sampling-Algorithmus Wie schon früher erwähnt ist das Ausführen des Dijkstra-Algorithmus nicht immer für alle Knoten möglich, da manchmal die Netzwerken zu groß und/oder zu komplex sind und es würde zu viel Zeit in Anspruch nehmen, um sie alle zu analysieren. Aus diesem Grund wird oft ein Sampling-Algorithmus implementiert, was auch in der vorliegenden Arbeit getan wird. Der Sampling-Algorithmus benutzt die Dijkstra-Algorithmus um die Exzentrizitäten für eine zufällige Menge von Knoten aus dem Graphen berechnen zu können. Die größte Exzentrizität ist dann eine untere Schranke für den Durchmesser. Diese Methode erhält nicht exakte Lösung sondern eine Approximativ Hop Distribution. Die Approximationsgenauigkeit ist abhängig von der Größe der Menge und von dem Netzwerketyp, wie später in den graphischen Darstellungen gezeigt wird. Außerdem kann der Sampling-Algorithmus auch eine obere Schranke für den Durchmesser berechnen, weil der Diameter immer gleich oder kleiner als zwei mal der Radius wird. Somit ist es manchmal möglich den genauen Durchmesser zu erhalten, ohne dass alle Distanzen von allen Knotenpaaren berechnet werden müssen. Das ist der Fall, wenn die untere Schranke genauso groß wie obere Schranke und somit gleich als der Durchmesser ist. In dieser Arbeit wurde der SamplingAlgorithmus für jeden Netzwerk mit dem Parameter s ausgeführt, welcher 75%, 50% 25%, 20%, 15%, 10%, 9%, 8%, 7%, 6%, 5%, 4%, 3%, 2% und 1% von der Knotenanzahl beträgt. 3.3 HyperANF-Algorithmus Der HyperANF-Algorithmus bietet eine effiziente Annäherung der Hop Distribution, und kann innerhalb von wenigen Stunden die Verteilung von paarweisen Distanzen in einem Netzwerk, welches sogar mehr als eine Milliarde Knoten enthält, mit einer kleinen Fehlerrate berechnen [5]. HyperANF stellt eine Verbesserung von ANF dar und ist mit HyperLogLog Counters implementiert [4]. Dadurch ist eine exponentielle Reduzierung des Speicherbedarfs und somit des Speicherzugriffs möglich. Jedes Counter enthält ein Anzahl von Register, und diese Anzahl hängt nur von der benötigten Präzision ab. Die Größe von jedem Register ist doppelt logarithmisch in der Knotenanzahl in dem Graph. Dadurch ist es möglich, dass HyperANF fast nur linear wächst.Zudem zählt ein HyperLogLog Counter die Anzahl von verschiedenen Elementen in einem Stream [5, 6]. Der HyperANF-Algorithmus benutzt für jeden Knoten i ∈ n ein Leere HyperLogLog Counter ci . Die Funktion union (−, −) maximiert zwei Counter register für register. Der Algorithmus berechnet in jeder Iteration, wie viele Distanzen gleich t sind und speichert diesen Wert in s[t]. Somit enthält der Vektor s[] am Ende eine Annäherung der Hop Distribution. In dieser Arbeit war es möglich, alle Netzwerke, die KONECT enthält, mit dem HyperANF-Algorithmus zu bearbeiten. 17 Algorithm 3 HyperANF-Algorithmus in Pseudocode. 1: for all i ∈ V do 2: c[i] := i 3: end for 4: t := 0 5: for t = 1...∞ do 6: for all i ∈ V do 7: m[i] := c[i] 8: for all Nachbarn j von i do 9: m[i] = union(m[i], c[j]) 10: end for 11: end for P 12: s[t] := i∈V size(m[i]) 13: if c = m then 14: break 15: end if 16: c := m 17: t := t + 1 18: end for 3.4 iFub-Algorithmus Der iterative Fringe Upper Bound oder kurz iFub-Algorithmus ist ein Algorithmus zur Bestimmung des Durchmessers in ungewichteten und ungerichteten Graphen. Er basiert auf der Breitensuche (BFS) und ist eine Generalisierung des iFub-Algorithmus [7]. Dieser Algorithmus benutzt die Methode 4-Sweep, um einen Startknoten u zu finden. Der Startknoten u ist dabei ein Mittelknoten von den Graph. Die Methode braucht vier Breitensuchen um diesen Mittelknoten zu finden. Um das zu erreichen, sucht zuerst der 4-Sweep-Algorithmus einen Knoten r1 von solchen Knoten aus, welche die maximale Anzahl von Nachbarn haben. Daraufhin wird der Knote a1 ausgesucht, welcher der am meisten entfernten Knoten von r1 ist und b1 , welcher einer von den am meisten entfernten Knoten von a1 ist. Als nächstes wird der Knote r2 gefunden, welcher der Mittelknoten auf dem Weg zwischen a1 und b1 ist. Anschließend wird der Knote a2 ausgesucht, welcher der am meisten entfernten Knoten von r2 ist und b2 , welcher einer von den am meisten entfernten Knoten von a2 ist. Somit ist der Startknoten u gefunden, welcher der Mittelknoten auf dem Weg zwischen a2 und b2 ist. Der Startknote ist ein Knote, dessen Exzentrizität nah an dem Radius (die Hälfte von die Exzentrizität) liegt. Der Maximalwert von der Exzentrizität von a1 und der Exzentrizität von b2 ist eine initiale untere Beschränkung für die Berechnung der Durchmesser. Nachdem die Startknoten ausgesucht wurden, fängt ein iterarives Verfahren an, welches eine untere Schranke lb (lower bound) und eine obere Schranke ub(upper bound) veredlet, so dass: lb ≤ δ ≤ ub. 18 Algorithm 4 4-Sweep in Pseudocode Require: Ein Graph G Ensure: Eine untere Beschrenkung für die Durchmesser und ein Knoten mit niedrige Exzentrizität 1: r1 := ein Knote, von denen die die maximale Anzahl von Nachbarn haben 2: a1 := argmaxv∈V d(r1 , v) 3: b1 := argmaxv∈V d(a1 , v) 4: r2 :=der Mittelknoten zwischen a1 und b1 5: a2 := argmaxv∈V d(r2 , v) 6: b2 := argmaxv∈V d(a2 , v) 7: u :=der Mittelknoten zwischen a2 und b2 8: lowerb := max{ecc(a1 ), ecc(a2 )} 9: return lowerb und u Unter Fi (u) wird die Menge von Knoten mit Distanzen i von u verstanden und unter Bi (u) = maxz∈Fi (u) ecc(z) die größte Exzentrizität von diesen Knoten. Diese Methode endet, wenn lb = ub oder ub – ul ≤ k, für einen bestimmten Schwellwert k beträgt. Im schlechtesten Fall ist die Komplexität des Algorithmus-iFub gleich O(nm), im allgemeinen Fall muss ifub aber nicht alle Breitensuchen durchführen [7]. Der iFub-Algorithmus berechnet den genauen Durchmesser, obwohl es nicht die Distanzen zwischen allen Knotenpaar berechnet. Algorithm 5 iFub-Algorithmus in Pseudocode Require: Ein Graph G, ein Knote u, ein untere Schranke l für die Durchmesser, und eine ganze Zahl k Ensure: Ein Wert M so dass δ - M ≤ k 1: i := ecc(u) 2: lb := max{ecc(u), l} 3: ub := 2ecc(u) 4: while ub - lb > k do 5: if max{lb, Bi (u)} > 2(i − 1) then 6: return max{lb, Bi (u)} 7: else 8: lb := max{lb, Bi (u)} 9: ub := 2(i − 1) 10: end if 11: i := i − 1 12: end while 13: return lb Mit dem Schwellwert k ist es möglich; eine Schätzung von dem Durchmesser in sehr großen Netzwerken vorzunehmen und somit die Laufzeit zu reduzieren, wobei die Berechnung von genauen Durchmesser zu viel (Lauf)Zeit in Anspruch nehmen würde. Es konnte für einige Netzwerke festgestellt werden, dass die 19 Laufzeit für den Wert k von mehreren Stunden bis auf einige Sekunden reduziert werden konnte, wenn der Wert k z.B. um eine Einheit erhöht würde. In dieser Arbeit wurde der iFub-Algorithmus für die 61% von allen Netzwerken, die KONECT enthält, ausgeführt. Dabei ergab sich, dass für jedes Netzwerk der Schwellenwert zwichen 0 und 4 variierte. 4 Experimente Anschließend werden die Laufzeiten analysiert, die für jeden Algorithmen verbraucht wurden. Die Algorithmen wurden in dem dritten Kapitel beschrieben. Es wird gezeigt, wie die Laufzeit und die Präzision des berechneten Ergebnisses in Abhängigkeit von dem Wert des Parameters k (in dem Fall von dem iFubAlgorithmus) und in Abhängigkeit von dem Parameter s (in dem Fall von dem Sampling-Algorithmus) variieren können. Darüber hinaus wird untersucht, ob ein Verhältnis zwischen der Laufzeit von den Algorithmen und den Merkmalen von den Graph, wie z.B. Size (Knotenanzahl), Volume (Kantenanzahl) oder die Art von den Netzwerken, existiert. 4.1 Die Laufzeit Um die Laufzeit zu reduzieren, welche zum Ausführen des Dijkstra-Algorithmus benötigt wird, und zwar einmal für jeden Knoten von einem Graph, wurde ein Sampling-Algorithmus implementiert. Dieser führt den Dijkstra-Algorithmus nur für eine Knotenmenge von dem Graph aus. Der Parameter s stellt den Prozentsatz von der Knotenanzahl von einem Netzwerk dar, für welchen der Dijkstra-Algorithmus ausgeführt ist. In der Abbildung 5 ist die Laufzeit von der Dijkstras Algoritmus für s ∈ {1, ..., 75} vorgestellt. Mit einer roten Linie ist die Laufzeit von der Dijkstra-Algorithmus gezeigt. Anders ausgedrückt, handelt es sich hierbei um die Laufzeit des Sampling-Algorithmus für den Parameter s = 100. Es kann auch beobachtet werden, wie sich die Laufzeit des SamplingAlgorithmus zu der Laufzeit von Dijkstra-Algorithmus annähert. Dies geschieht in der Abhängigkeit davon, wie sich der Parameter s erhöht. Zudem kann beobachtet werden, dass die blaue Linie, welche die Werte von s miteinander verbindet, nicht gänzlich eine gerade Linie ist, sondern eine eher irreguläre Form hat. Dies zeigt sich z.B. bei der Abbildung 5 (c), welche die Darstellung des Netzwerks „Eurorad“ präsentiert. Der Grund dafür ist, dass nicht alle Knoten den gleichen Grad haben. Daraus kann abgeleitet werden, dass die Laufzeit nicht nur von der Anzahl der Ausführungen des Dijkstra-Algorithmus abhängig ist, sondern auch von den Grad von jeden einzelnen Knoten. Wie die 5 zeigt, kann der Grad von jeden Knoten die Laufzeit beeinflussen, die für die Analyse des Netzwerks verwendet wird, jedoch nicht in solchen Ausmaß wie die Größe der Knotenanzahl. Mit dem Algorithmus von Dijkstra wurden 97 von den 187 Netzwerken berechnet, die das KONECT enthält. In der Abbildung 6 ist die verbrauchte Laufzeit für jedes verarbeitetes Netzwerk in Abhängigkeit von der Knotenanzahl 20 3 0 10 10 2 Runtime Runtime 10 −1 10 1 10 Dijkstra n times sampling for s −2 10 0 10 1 10 s for sampling Dijkstra n times sampling for s 0 10 0 10 2 10 (a) U. Rovira i Virgili 1 10 s for sampling 2 10 (b) arXiv astro-ph 0 2 10 10 1 Runtime Runtime 10 −1 10 0 10 Dijkstra n times sampling for s −2 10 0 10 1 10 s for sampling Dijkstra n times sampling for s −1 10 2 0 10 10 (c) Euroroad 1 10 s for sampling 2 10 (d) Prosper.com 5 5 10 10 4 4 Runtime 10 Runtime 10 3 3 10 10 Dijkstra n times sampling for s 2 10 0 10 1 10 s for sampling Dijkstra n times sampling for s 2 10 0 10 2 10 (e) WikiSigned 1 10 s for sampling 2 10 (f) Wikipedia, simple en (dynamic) 4 5 10 10 3 4 Runtime 10 Runtime 10 2 3 10 10 Dijkstra n times sampling for s 1 10 0 10 1 10 s for sampling Dijkstra n times sampling for s 2 2 10 (g) Facebook friendships 10 0 10 1 10 s for sampling 2 10 (h) WordNet Abbildung 5: Die Laufzeit von Dijkstra und Sampling-Algorithmus für verschiedene Netzwerke. 21 gezeigt. Es kann nochmals mit Deutlichkeit erkannt werden, dass die Laufzeit von dem Dijkstra-Algorithmus größer ist, wenn die Knotenanzahl von den Netzwerken auch größer ist. Die Laufzeit, die für Bearbeitung von jeden Netzwerk benötigt wurde, wurde in Abhängigkeit von der Kantenanzahl in der Abbildung 7 präsentiert. In dieser graphischen Darstellung befinden sich verschiedene zerstreute Werte. Es lässt sich erkennen, dass für die Netzwerke von der Art „Contact“ einen großen Unterschied zwischen Volume von diesen Netzwerken gibt. Dagegen gibt es keinen großen Unterschied in der Laufzeit. 6 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 5 10 4 10 Runtime 3 10 2 10 1 10 0 10 −1 10 −2 10 1 10 2 10 3 4 10 10 5 10 6 10 Size [vertices] Abbildung 6: Die Laufzeit von dem Dijkstras-Algorithmus in Abhängigkeit von Knoten anzahl. Wie schon im Absatz 3.4 erwähnt, wird ein iteratives Verfahren bei dem iFub-Algorithmus durch eine untere Schranke lb (lower bound) und eine obere Schranke ub (upper bound) veredelt, so dass: lb ≤ δ ≤ ub. Der iFub-Algorithmus endet, wenn ub – ul ≤ k ist. Aus diesen Grund berechnet der iFub-Algorithmus für k = 0 den genauen Durchmesser von einem Netzwerk. Um die Laufzeit zu analysieren, sind in der Abbildung 8 verschiedene graphische Darstellung präsentiert. Diese zeigen die Laufzeit, welche von dem iFub-Algorithmus abhängig von k ∈ {0, ..., 8} gebraucht wird. Allgemein kann festgestellt werden, dass die Laufzeit von iFub-Algorithmus größer ist, wenn eine größere Genauigkeit gefragt wird. Wie die Abbildung 8 zeigt, ist das nicht immer befriedigt. In vielen Fällen verändert sich die Laufzeit nicht, obwohl der Schwellwert k variieren. Darüber hinaus kann auch bei die Abbildung 8 (g) und (f) beobachtet werden, dass die Laufzeit des Algorithmus gleich für k = 0 und für k = 5 ist. Dies ist vor allem dann der Fall, wenn der Algorithmus einen Wert gleich oder sehr nah 22 6 10 5 10 4 10 Runtime 3 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 2 10 1 10 0 10 −1 10 −2 10 2 10 3 10 4 5 10 10 6 10 7 10 8 10 Volume [edges] Abbildung 7: Die Laufzeit von dem Dijkstras-Algorithmus in Abhängigkeit von Kanten anzahl. an dem Diameter findet. In solchen Fall ändert sich sie Laufzeit nicht, obwohl der Wert von k kleiner wird. Das liegt daran, dass die Bedingung ub – ul ≤ k erfüllt wurde und deswegen dieser Wert von dem iFub-Algorithmus gefunden werden konnte. Wenn der Schwellenwert k größer als der Diameter ist, beträgt die Laufzeit 0. Der iFub-Algorithmus wurde für 114 Netzwerke ausgeführt, die in KONECT enthalten sind. In der Abbildung 9 ist auf der y-Achse die für die Bearbeitung der Netzwerke benötigte Laufzeit abgebildet und auf der x-Achste kann die Knotenanzahl abgelesen werden. In der Abbildung 10 bildet die y-Achse, ebenfalls wie die Abbildung 9, die Laufzeit ab und die x-Achse stellt die Kantenanzahl dar. In beiden Abbildungen sind die Werte sehr zerstreut aber es hat sich herausgestellt, dass die Netzwerke von der Art „Physical“ und „Ratings“ eine höhere Laufzeit als die anderen Netzwerke mit einer größeren oder gleichen Knotenund Kantenanzahl benötigen. Mit Hilfe der HyperANF-Algorithmus wurden die Hop-Distribution Annäherungen und daher die Durchmesser Annäherungen für 158 Netzwerke aus KONECT berechnet. Die Laufzeit die der HyperANF-Algorithmus verbraucht ist sehr geringer vergleicht mit der Laufzeit die der Dijkstra-Algorithmus verbraucht hat. Wie in die Kapitel 3.3 beschrieben wurde, der HyperANF berechnet eine Annäherungen von die Hop-Distribution. In der Absatz 4.3 wird gezeigt wie die Genauigkeit von die Approximation ist. In der Abbildung 11 ist gezeigt die 23 4 4 10 10 Dijkstra iFub for k Dijkstra iFub for k Runtime Runtime 2 10 2 10 0 10 0 10 0 2 4 k for iFub 6 8 (a) Route views 0 2 4 k for iFub 6 8 (b) Edinburgh Associative Thesaurus 4 4 10 Dijkstra iFub for k Runtime Runtime 10 2 10 Dijkstra iFub for k 2 10 0 10 0 10 0 2 4 k for iFub 6 8 0 (c) arXiv cond-mat 4 k for iFub 6 8 (d) Slashdot Zoo 4 4 10 10 Dijkstra iFub for k Dijkstra iFub for k 2 2 Runtime Runtime 2 10 10 0 10 0 10 0 2 4 k for iFub 6 8 0 (e) Digg 2 4 k for iFub 6 8 (f) MovieLens user–tag 4 10 4 10 Dijkstra iFub for k Dijkstra iFub for k 2 Runtime Runtime 10 2 10 0 10 0 10 −2 10 0 2 4 k for iFub 6 8 (g) OpenFlights 0 2 4 k for iFub 6 8 (h) vi.sualize.us user–tag Abbildung 8: Die Laufzeit von dem iFub-Algorithmus für verschiedene Netzwerke. 24 5 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 4 10 3 Runtime 10 2 10 1 10 0 10 −1 10 −2 10 1 2 10 3 10 4 10 5 10 6 10 10 Size [vertices] Abbildung 9: Die Laufzeit von dem iFub-Algorithmus in Abhängigkeit von der Knoten anzahl. 5 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 4 10 3 Runtime 10 2 10 1 10 0 10 −1 10 −2 10 2 10 3 10 4 5 10 10 6 10 7 10 8 10 Volume [edges] Abbildung 10: Die Laufzeit von dem iFub-Algorithmus in Abhängigkeit von der Kanten anzahl. 25 Laufzeit von HyperANF gegen die Knotenanzahl für jede Netzwerke und bei die Abbildung 12 gegen die Kantenanzahl. Es kann auch beobachtet werden, dass, die Laufzeit von Knotenanzahl und Kantenanzahl abhängig ist, aber wie bei der Dijkstra-Algorithmus, die Große der Knotenanzahl hat mehr Einfluss. 5 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 4 10 3 Runtime 10 2 10 1 10 0 10 −1 10 −2 10 1 10 2 10 3 4 10 10 5 10 6 10 7 10 Size [vertices] Abbildung 11: Die Laufzeit von dem HyperANF-Algorithmus in Abhängigkeit von Knoten anzahl. 26 5 10 Authorship Communication Contact Co−occurrence Features Folksonomy Interaction Physical Ratings Reference Social Affiliation Text Lexical 4 10 3 Runtime 10 2 10 1 10 0 10 −1 10 −2 10 2 10 4 10 6 8 10 10 10 10 Volume [edges] Abbildung 12: Die Laufzeit von dem HyperANF-Algorithmus in Abhängigkeit von der Kantenanzahl. 4.2 Präzisition des Durchmessers Die Schätzungen von die Durchmesser, die mit der Sampling-Algorithmus, mit der iFub-Algorithmus und mit der HyperANF-Algorithmus berechnet wurden, werden anschließend analysieren. Bei die Abbildung 13 ist gezeigt die berechnete Werte mit der SamplingAlgorithmus, für die verschiedenen Netzwerken Arten. Der Sampling-Algorithmus wurde für s ∈ {1, ..., 75} ausgeführt, es ist auch gezeigt der Schätzungswert die der HyperANF berechnet hat, und die echte Durchmesser. Auf den Abbildung 13 für die Netzwerke (b) (c) (d) (f) (g) (h) es kann sich beobachten dass das Fehler was der Sampling-Algorithmus begehen ist immer gleich oder kleiner als das Fehler die HyperANF begeht, aber das ist nicht immer so. Der Sampling-Algorithmus such zufällig aus die Knoten die dafür Dijkstra bearbeiten wird, daher es kann sein das wenn der Algorithmus mehrmals ausgeführt für das selber Netzwerk und das selber Wert für s ist, der Algorithmus gibst unterschiedliche Lösungen zurück. Allgemein das Wert die der SamplingAlgorithmus berechnet sollte genauer wenn das Wert von s höher ist, mit andere Worte der Dijkstra-Algorithmus für mehrere Knoten berechnet. Aber das ist nur Wahrscheinlichkeit und der Algorithmus kann nicht garantiert dass das so funktioniert. Wie in 13(e) sich sehen kann, für k=1, d.h. Als der Algorithmus die 1% von die Knotenanzahl bearbeitet wurde, hat der die genau Durchmesser berechnet, wiederum für k=3 die Durchmesserwert ist geschätzt mit ein Feh- 27 ler höher als die Fehler das der HyperANF-Algorithmus begehen hat. Es ist hervorzuheben, dass das Fehler die der Sampling-Algorithmus beheben um das Durchmesserwert schätzen mit k=1, ist in den meisten Fällen kleiner oder gleich als die Fehler die der HyperANF begehet. Bei die Abbildung 14 sind die berechnete Werte von der Durchmesser gezeigt, für verschiedene Netzwerkern mit der iFub-Algorithmus, sowie das Durchmesserwert die der HyperANF berechnet hat, und die echte Durchmesser. Wenn der iFub-Algorithmus mit der Sampling-Algorithmus sich vergleichen, der iFubAlgorithmus hat eine die Vorteil dass mit der Parameter k, es ist möglich die Größe des Fehler kontrollieren. Wie auf die Abbildung 14 gezeigt ist, die nahe Durchmesser wird immer oder kleine als k sein. Außerdem in viele Fälle es ist möglich die genaue Durchmesser berechnet ohne alle Knoten von der Graph bearbeiten. Die Nachteil das der iFub-Algorithmus vergleicht mit der SamplingAlgorithmus hat, ist dass, der iFub-Algorithmus berechnet das Wert von die Durchmesser aber nicht die Hop Distribution, deshalb es kann sich nicht Information über die verschiedenen Distanzen erhalten. 4.3 Präzisition der Hop Distribution Wie in vorherige Absatz beschrieben wurde, mit der Sampling-Algorithmus y mit der HyperANF-Algorithmus es ist möglich eine Schätzung von die Hop Distribution berechnen. Anschließend wird die Ergebnisse gezeigt. In die Abbildungen 15 und 16 sind die berechnete Ergebnisse mit der SamplingAlgorithmus für verschiedene Netzwerken und verschiedene Werte für der Parameter s gezeigt. Es kann sich beobachten das die Schätzenswert ist genauer wenn das Wert von s sich erhöhe. Trotzdem für kleine Werte von s ist die Approximationsfehler sehr klein, wie in der Abbildung15(c) und 16(a) sich sehen kann. In Abbildung 17 wies die Genauigkeit von die Ergebnissen auf, die, der HyperANF-Algorithmus von die Hop Distribution berechnet hat. Obwohl der HyperANF macht in viele Fälle ein Größeres Fehler als der Sampling-Algorithmus um die Durchmesserwert berechnen, der HyperANF-Algorithmus ist fähig zu eine Gute Annäherung von die Durchmesser berechnen für Netzwerken die der iFub-Algorithmus und der Sampling-Algorithmus nicht berechnen konnten in der Zeit das die Arbeit gemacht wurde. 5 Zusammenfassung und Ausblick Viele tägliche Situationen können mithilfe von Netzwerken dargestellt werden. Oft kommt es dazu, ohne dass es den betroffenen Personen bewusst ist. Es konnte festgestellt werden, dass derzeitige Netzwerke immer komplexer und größer werden. Dies wird vor allem durch freien Internetzugang sowie Verbreitung und Weiterentwicklung von Informations- und Kommunikationstechnologien (IKT) möglich. Mithilfe von Netzwerkanalyse können viele wichtige Informationen aus den Netzwerken abgeleitet und verstanden werden. 28 10 6 5.5 Actual HyperANF Sampling for s 4.5 Actual HyperANF Sampling for s 4 Diameter Diameter 9 5 8 7 3.5 3 0 10 6 0 10 1 10 s for sampling (b) Advogato 25 15 24 14 23 Actual HyperANF Sampling for s 22 Diameter Diameter (a) David Copperfield 21 20 0 10 13 10 0 10 1 10 s for sampling (c) Pretty Good Privacy 1 10 s for sampling (d) arXiv hep-ph 17 16 59 Actual HyperANF Sampling for s 58 Diameter 60 Diameter Actual HyperANF Sampling for s 12 11 61 15 14 Actual HyperANF Sampling for s 13 57 56 0 10 1 10 s for sampling 12 11 0 10 1 10 s for sampling (e) Writers 1 10 s for sampling (f) Epinions trust 11 9 8.5 Diameter Diameter 10 9 8 7.5 7 8 7 0 10 Actual HyperANF Sampling for s Actual HyperANF Sampling for s 6.5 6 0 10 1 10 s for sampling (g) Prosper.com 1 10 s for sampling (h) U. Rovira i Virgili Abbildung 13: Präzision des Durchmessers von Sampling und HyperANFAlgorithmus 29 4 12 3.5 11 3 Diameter Diameter 13 10 9 2.5 2 Actual HyperANF iFub for k 8 7 0 2 4 k for iFub 1.5 6 1 0 8 (a) Wikinews (en) 2 4.5 2 4 k for iFub 6 7 0 8 (c) MovieLens 100k 4 4 k for iFub 6 8 (d) Gnutella 9 Diameter 3 Diameter 2 10 Actual HyperANF iFub for k 3.5 2.5 8 Actual HyperANF iFub for k 7 2 6 1.5 2 4 k for iFub 6 5 0 8 2 (e) Hypertext 2009 17 7 16 6 Actual HyperANF iFub for k 2 4 k for iFub (f) Flickr 8 Diameter Diameter 8 Actual HyperANF iFub for k 9 8 3.5 4 0 6 10 4 5 8 11 Diameter 5 1 0 6 12 Actual HyperANF iFub for k 5.5 3 0 4 k for iFub (b) Reality Mining 6 Diameter Actual HyperANF iFub for k Actual HyperANF iFub for k 15 14 13 4 k for iFub 6 8 (g) Wikipedia elections 12 0 2 4 k for iFub 6 8 (h) Gowalla Abbildung 14: Präzision des Durchmessers von iFub und HyperANFAlgorithmus 30 8 6 Φ−1(H(d)) 4 2 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 0 −2 −4 −6 0 1 2 3 4 5 Distance (d) [edges] (a) David Copperfield 20 15 Φ−1(H(d)) 10 5 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 0 −5 −10 −15 0 5 10 15 20 Distance (d) [edges] (b) CAIDA 10 Φ−1(H(d)) 5 0 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 −5 −10 −15 0 1 2 3 4 5 6 Distance (d) [edges] (c) Last.fm band Abbildung 15: Präzision der Hop Distribution von dem Sampling-Algorithmus 31 25 20 Φ−1(H(d)) 15 10 5 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 0 −5 −10 −15 0 2 4 6 8 10 12 14 16 Distance (d) [edges] (a) WordNet 8 6 Φ−1(H(d)) 4 2 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 0 −2 −4 −6 0 1 2 3 4 5 Distance (d) [edges] (b) Manufacturing emails 5 4 3 Φ−1(H(d)) 2 1 0 Actual Sampling for s=75 Sampling for s=50 Sampling for s=20 Sampling for s=15 Sampling for s=10 Sampling for s=5 Sampling for s=3 Sampling for s=1 −1 −2 −3 −4 −5 0 0.5 1 1.5 2 2.5 3 Distance (d) [edges] (c) Florida ecosystem wet Abbildung 16: Präzision der Hop Distribution von dem Sampling-Algorithmus 32 20 30 15 20 Φ−1(H(d)) Φ−1(H(d)) 10 5 0 10 0 −5 −10 −10 −15 0 Actual HyperANF 2 4 6 8 Distance (d) [edges] 10 −20 0 12 Actual HyperANF 10 15 20 10 10 0 −10 −20 0 0 −5 Actual HyperANF 10 20 30 40 Distance (d) [edges] 50 −10 0 60 (c) Writers Actual HyperANF 10 20 30 Distance (d) [edges] 40 50 (d) US power grid 20 10 15 10 5 Φ−1(H(d)) Φ−1(H(d)) 50 5 15 0 −5 5 0 −5 −10 −15 0 40 (b) Producers 30 Φ−1(H(d)) Φ−1(H(d)) (a) CiteULike user–tag 20 30 Distance (d) [edges] −10 Actual HyperANF 1 2 3 4 Distance (d) [edges] 5 Actual HyperANF −15 0 6 5 10 Distance (d) [edges] (e) Edinburgh Associative Thesaurus 15 (f) Enron 3 15 2 10 Φ−1(H(d)) Φ−1(H(d)) 1 0 −1 0 −5 −2 −3 −4 0 5 −10 Actual HyperANF 1 2 3 Distance (d) [edges] 4 (g) Southern women −15 0 Actual HyperANF 2 4 6 8 Distance (d) [edges] 10 12 (h) vi.sualize.us user–tag Abbildung 17: Präzision der Hop Distribution von dem HyperANF-Algorithmus 33 Durch die ständig zunehmende Komplexität der Netzwerke wird deutlich, dass herkömmliche Analysemethoden nicht ausreichen, um diese Netzwerke zu untersuchen. Unter dem Begriff der Netzwerkanalyse wird eine empirische Untersuchungsmethode verstanden, die dabei helfen soll, ein Netzwerk zu erfassen. Diese Methode ermöglicht eine Beschreibung von Strukturen und Interaktion von Individuen bzw. Akteuren. Unsere Gesellschaft hat sich verändert. Es besteht aus sozialen Netzwerken zwischen Akteuren. Individuen nutzen die Netzwerke vor allem, um miteinander kommunizieren zu können und neue Kontakte zu knüpfen. Früher, als es noch keine Telefone, Internet und andere Medien sowie IKT nicht gab, war solcher Vernetzungsgrad gar nicht möglich. Da sich die Technologie immer weiter und schneller entwickelt, werden auch die bereits existierenden und neuen Netzwerke immer größer und vielfältiger. Zudem werden ihre Strukturen und Dynamik immer komplexer. Dadurch entsteht eine große Herausforderung, die in der Untersuchung und Analyse solcher Netzwerke besteht. Die vorliegende Arbeit befasste sich mit Datensätzen von Netzwerken, welche KONECT ( The Koblenz Network Collection) enthält. Ein großer Teil von ihnen (49%) konnten bis vor kurzem noch nicht berechnet werden, da die Anzahl von Knoten und/oder Kanten zu groß war und die Software, die sich mit der Berechnung beschäftigte, keine dem Stand der Dinge entsprechenden Algorithmen verwendete. Dadurch hat sich ein großes Spielraum für die Implementierung von neuen Algorithmen (in der Programmiersprache C) ergeben, die es ermöglichen sollten, möglichst große Netzwerke, die in KONECT vorhanden sind, bearbeiten zu können. Ziel dieser Bachelorarbeit war es, eine Toolbox in C zu entwickeln mit der möglichst große Netzwerke bearbeitet werden können. Nachdem die Toolbox entwickelt und implementiert wurde, war es möglich, viele Netzwerke aus KONECT mit dessen Hilfe zu untersuchen. Um die Effektivität der implementierten Algorithmen zu messe, wurden folgende Experimente durchgeführt: • Für exakte Algorithmen wurde die Laufzeit anhand mehrerer Netzwerkdatensätze gemessen. Es wurde ermittelt, dass der HyperANF-Algorithmus am schnellsten ist, da er die meisten Netzwerke in der kürzesten Zeit berechnen konnte. • Für approximative Algorithmen wurde sowohl die Laufzeit als auch die Approximationsgenauigkeit evaluiert. Es konnte nicht eindeutig festgestellt werden, welcher-Algorithmus für eine gegebene Approximationsgenauigkeit der effzienteste ist., da z.B. der HyperANF-Algorithmus der schnellst war aber gleichzeitig nicht immer den Durchmesser gut geschätzt hat. • Es wurde ermittelt, inwiefern Eigenschaften eines Netzwerks die Laufzeit der einzelnen Algorithmen beeinflussen. Unter anderem konnte festgestellt werden, dass die Algorithmen nicht effizienter arbeiten, wenn der Durchmesser eines Netzwerks größer oder kleiner ist. Bis auf iFub-Algorithmus 34 waren alle Algorithmen schneller, wenn die Knotenanzahl klein war. Zudem konnte festgehalten werden, dass die Netzwerktypen die einzelnen Algorithmen nicht beeinflussen können. Nachfolgend werden die Ergebnisse präsentiert, die im Rahmen der vorliegenden Arbeit ausgearbeitet wurden. • Durch die Nutzung von Dijkstra-Algorithmus (einmal pro jeden Knoten), konnten genaue Informationen über die Hop Distribution und den Durchmesser von 97 Netzwerken aus KONECT gewonnen werden. Dank dem aktuellen KONECT-Tool waren die Ergebnisse für die Mehrheit von diesen Netzwerken bekannt. Jedoch durch die Implementierung von DijkstraAlgorithmus konnte die Laufzeit reduziert werden, die für die Gewinnung von diesen Ergebnissen benötigt wurde. Dadurch können in der Zukunft mehr Netzwerke mit diesem-Algorithmus bearbeitet werden. • Der implementierte Sampling-Algorithmus bietet eine Möglichkeit an, um die Laufzeit für die Netzwerke zu reduzieren, in welchen der DijkstraAlgorithmus hohe Laufzeiten ergeben hat. Der Algorithmus berechnet nicht immer den genauen Durchmesser aber in vielen Fällen sind die Werte sehr nah an der Hop Distribution. In dieser Arbeit wurde der Sampling Algoritmus in 88 Netzwerken ausgeführt. Mit dem Vorsatz die verschiedenen Schätzenswerte zu analysieren, wurde der Algorithmus nur für diese 88 Netzwerke mehrmals ausgeführt. In der Zeit, in der die Arbeit geschrieben wurde, war es nicht möglich mehr Netzwerke zu bearbeiten. • Der HyperANF-Algorithmus berechnet eine Schätzung von der Hop Distribution und daher auch den Wert von dem Durchmesser. Mit diesen Algorithmus wurden 158 Netzwerke aus KONECT bearbeitet und es konnten Informationen über viele Netzwerke gewonnen werden, die bis jetzt in KONECT noch nicht berechnet werden konnten. • Mithilfe des iFub-Algorithmus ist es möglich den genauen Wert von den Durchmesser zu berechnen oder ein Approximationswert zu schätzen. In dieser Arbeit wurden die Durchmesser für 114 Netzwerke aus KONECT berechnet. Genauso wie bei dem Sampling-Algorithmus wurde auch diesesAlgorithmus mehrmals für jeden Netzwerk mit verschiedenen Parameter ausgeführt. Dies hat die Analyse der Ergebnisse ermöglicht. Diese Arbeit hat viele neue Informationen über den Durchmesser von den betrachteten Netzwerken ergeben hat. In der Zukunft sollte auf Basis von diesen neuen Erkenntnissen weitere Forschung betrieben werden, um möglichst viele Netzwerke weiter zu bearbeiten. Mit dem Dijkstra-Algorithmus können noch mehrere Netzwerke bearbeitet werden und für die Netzwerke, bei denen eine hohe Laufzeit zu erwarten ist, kann womöglich die Laufzeit mit dem Sampling-Algorithmus reduziert werden. Für Netzwerke, die ungefähr mehr als 1.000.000 Knoten besitzen, kann der 35 HyperANF-Algorithmus eine Schätzung von der Hop Distribution berechnen. Dies kann durch den iFub-Algorithmus ergänzt werden, in dem mit seiner Hilfe die genauen Werte von dem Durchmesser berechnet werden können. Eine wichtige Begrenzung von der vorliegenden Arbeit war der begrenzter Zeithorizont (6 Monate). Innerhalb von einem längeren Zeitraum könnten sicherlich mehr Netzwerke bearbeitet werden und möglicherweise mehr Informationen erzielt werden. Die Algorithmen bearbeiten immer noch mehr Netzwerke, d.h. ihre Arbeit ist noch nicht vervollständigt. Aus diesem Grund konnte nicht festgestellt werden, wo sich die Grenze von den Algorithmen befindet. Bei der Netzwerkanalyse handelt es sich um ein relativ neues Wissenschaftsbereich und deswegen sollte ihre weitere Entwicklung verfolgt werden. Erst wenn sich die Netzwerkanalyse etablieren wird, wird sich herausstellen, welche Netzwerkeigenschaften eine Schlüsselrolle hierbei spielen und welche Methoden von Bedeutung sind. 36 Anhang Liste der Netzwerke und der dafür angewendeten Algorithmen Code Name n m HT SW ZA RM Highland tribes Southern women Zachary karate club Reality Mining 16 32 34 96 58 89 78 1,086,404 AN HY David Copperfield Hypertext 2009 112 113 425 20,818 FD FW RA HA Florida ecosystem dry Florida ecosystem wet Manufacturing emails Haggle 128 128 167 274 2,137 2,106 82,927 28,244 IF PM A@ ET UF Infectious Caenorhabditis elegans U. Rovira i Virgili Euroroad UC Irvine forum 410 453 1,133 1,174 1,421 17,298 4,596 5,451 1,417 33,72 AF UC M1 EF US airports UC Irvine messages MovieLens 100k Facebook (NIPS) 1,574 1,899 2,625 2,888 28,236 59,835 100 2,981 OF UG Dj DJ OpenFlights US power grid JUNG and javax dependency JDK dependency 2,939 4,941 6,12 6,434 30,501 6,594 138,706 150,985 AS AD PS EL M2 PG Mui Pi Route views Advogato Prosper.com Wikipedia elections MovieLens 1M Pretty Good Privacy MovieLens user–movie DBLP 6,474 6,551 7,595 8,297 9,746 10,68 11,61 12,591 13,895 51,332 21,017 107,071 1,000,209 24,34 95,58 49,793 SB GC SX AP Mut TH EA CC TL Spanish book Google.com internal Sexual escorts arXiv astro-ph MovieLens user–tag arXiv hep-th Edinburgh Associative Thesaurus Cora citation Twitter lists 12,643 15,763 16,73 18,771 20,537 22,908 23,132 23,166 23,37 57,772 171,206 50,632 198,05 95,58 2,673,133 312,342 91,5 33,101 Dijkstra Sampling HyperANF iFub GP PW Google+ Prosper.com 23,628 23,965 39,242 35,377 Mti IN nfr th THc PH DG bfr PHc TO AC MovieLens tag–movie CAIDA Wikinews, French arXiv hep-th (KDD Cup) arXiv hep-th arXiv hep-ph Digg Wikibooks, French arXiv hep-ph Internet topology arXiv cond-mat 24,129 26,475 26,546 27,77 27,77 28,093 30,398 30,997 34,546 34,761 38,741 95,58 53,381 193,618 352,807 352,807 4,596,803 87,627 201,727 421,578 171,403 58,595 Ff Ow J2 SD Filmtipset Facebook wall posts Jester 150 Slashdot threads 39,199 46,952 50,832 51,083 87,415 876,993 1,728,847 140,778 BK R2 GN Ol Brightkite Reuters-21578 Gnutella Facebook friendships 58,228 60,234 62,586 63,731 214,078 978,446 147,892 1,269,502 J1 Fc SZ M3 EN Jester 100 Filmtipset Slashdot Zoo MovieLens 10M Enron 73,521 75,36 79,12 80,555 87,273 4,136,360 1,266,753 515,581 10,000,054 1,148,072 Vut Us FI qen vi.sualize.us user–tag Wikipedia, Simple English (dynamic) Flickr Wikiquote, English 99,157 100,312 105,938 116,363 2,298,816 1,627,472 2,316,948 549,21 CO WR YG EP Wikipedia conflict Writers YouTube Epinions trust 118,1 123,781 124,325 131,828 2,917,785 132,965 293,36 841,372 W2 Fr ST WO mde ben nen Lb WikiSigned Filmtipset Movies WordNet Wiktionary, German Wikibooks, English Wikinews, English Last.fm band 138,592 144,671 144,73 146,005 151,982 167,525 173,772 175,069 740,397 19,554,219 256,719 656,999 1,229,501 1,164,576 901,416 19,150,868 PR Cut GH RL LO GW Producers CiteULike user–tag Github Record labels Location Gowalla 175,479 175,992 177,386 180,163 191,298 196,591 192,658 2,411,819 440,237 222,314 249,117 950,327 OC WU Occupation WebUni Magdeburg 201,304 206,35 223,599 3,312,112 But LI Ds GE Bx EU Dr EX SF ND TM BibSonomy user–tag Libimseti.cz Discogs label–style DBpedia genre BookCrossing (ratings) EU institution Discogs label–genre Wikipedia, English Stanford Notre Dame Teams 210,467 220,97 244,147 253,33 263,757 265,214 270,786 276,739 281,903 325,729 397,007 2,555,080 17,359,346 5,255,950 432,1 433,652 420,045 4,147,665 2,941,902 2,312,497 1,497,134 890,109 AM BAr BX Ws Amazon Baidu related pages BookCrossing (implicit) Twitter (ICWSM) 403,394 415,641 445,801 465,017 3,387,388 3,284,387 1,149,739 835,423 NX FG Vui CN Netflix Flickr vi.sualize.us user–picture Countries 497,959 499,61 512,524 550,522 100,480,507 8,545,307 2,298,816 596,614 Vti SO YD BS Wut vi.sualize.us tag–picture Stack Overflow Yahoo advertisers Berkeley/Stanford Twitter user–hashtag 577,437 641,876 653,26 685,23 705,632 2,298,816 1,302,439 2,931,708 7,600,595 4,664,605 CS Cui Bui Dui CiteSeer CiteULike user–publication BibSonomy user–publication Delicious user–URL 723,131 754,484 777,084 834,679 1,764,929 2,411,819 2,555,080 301,254,171 GO ER Cti Bti Google Epinions product ratings CiteULike tag–publication BibSonomy tag–publication 875,713 876,252 885,046 975,963 5,105,039 13,668,320 2,411,819 2,555,080 Up Ud RE Ls R2 Ui Pc R1 Wikipedia, Polish (dynamic) Wikipedia, Dutch (dynamic) Reuters Last.fm song Pennsylvania Wikipedia, Italian (dynamic) DBLP Texas 1,033,050 1,039,252 1,065,176 1,085,612 1,088,092 1,204,009 1,248,427 1,379,917 25,026,208 20,070,561 60,569,726 19,150,868 1,541,898 34,826,283 17,631,144 1,921,660 Wti WT Dt YS SK Wpl Twitter hashtag–URL TREC WT10g Discogs artist–style Yahoo songs Skitter Wikipedia links, PL 1,502,611 1,601,787 1,618,326 1,625,951 1,696,415 1,699,752 2,635,885 8,063,026 24,085,580 256,804,235 11,095,298 50,408,364 LF TR Flickr links TREC (disks 4–5) 1,715,255 1,729,302 15,555,042 83,629,405 Da WP mfr ZHi RO HUi Dl WC men BAi Ug Discogs artist–genre Wikipedia, English Wiktionary, French Chinese Wikipedia internal links California Hudong internal links Discogs Wikipedia, English Wiktionary, English Baidu internal links Wikipedia, German (dynamic) 1,754,838 1,870,709 1,912,264 1,930,275 1,965,206 1,984,484 2,025,594 2,036,440 2,133,892 2,141,300 2,166,669 19,033,891 39,953,145 7,399,298 9,359,108 2,766,607 14,869,484 14,414,659 3,795,796 8,998,641 17,794,839 86,337,879 Wja Uf FL it Wikipedia links, JA Wikipedia, French (dynamic) Flickr Wikipedia, Italian 2,179,542 2,212,682 2,302,925 2,393,568 66,276,972 59,008,831 33,140,017 26,241,217 WK HUr Wpt Wa Wikipedia, English Hudong related pages Wikipedia links, PT Twitter 2,394,385 2,452,715 2,910,050 2,919,613 5,021,410 18,855,235 55,102,696 12,887,063 Wit Wru DB OR YT Wikipedia links, IT Wikipedia links, RU DBpedia Orkut YouTube 2,936,413 2,938,422 3,026,246 3,072,441 3,223,589 104,673,033 72,029,142 11,324,343 117,185,083 12,223,774 es AR de PC Wikipedia, Spanish Amazon ratings Wikipedia, German US patents 3,288,398 3,376,972 3,620,990 3,774,768 27,011,506 5,838,041 57,323,775 16,522,438 Wde fr LJ Pa Wikipedia links, DE Wikipedia, French LiveJournal DBLP 3,930,109 4,310,551 4,847,571 4,957,679 75,126,809 46,168,355 68,475,391 7,779,975 Wfr Dut Wui LG OG DL en Wen Wikipedia links, FR Delicious user–tag Twitter user–URL LiveJournal Orkut Wikipedia, English Wikipedia, English Wikipedia links, EN 5,115,915 5,368,293 9,374,206 10,690,276 11,514,053 17,170,893 25,323,882 27,154,798 113,122,279 301,254,171 12,656,613 112,307,385 327,037,487 158,373,970 266,769,613 601,038,301 Dti TW TF FSG Delicious tag–URL Twitter (WWW) Twitter (MPI) Facebook social graph 33,792,611 41,652,230 52,579,682 59,216,214 301,254,171 1,468,365,182 1,963,263,821 92,522,012 Literatur [1] Jérôme Kunegis, KONECT - The Koblenz Network Collection., In Proc. Int. Web Observatory Workshop, 2013. [2] Johannes Weyer, Soziale Netzwerke. Konzecte und Methoden der sozialwissenschaftlichen Netzwerkforschung. München/Wien: Oldenburg Verlag, 2000. [3] Sven Oliver Krumke, Hartmut Noltemeier, Graphentheoretische Konzepte und Algorithmen Teubner, Wiesbaden 2005. [4] Lars backstrom, Paolo Boldi, Marcos Rosa, Johan Ugander, and Sebastiano Vigna, Four degrees of separation. In ACM Web Science 2012: Conference Proceedings, pages 45-54. ACM Press, 2012. [5] Paolo Boldi, Marcos Rosa, and Sebastiano Vigna, HyperANF: Approximating the neighbourhood function of very large graphs on a budget. In Proceedings of the 20th international conference on World Wide Web, pages 625-634. ACM, 2011. [6] Marianne Durand and Philippe Flajolet, LogLog counting of large cardinalities In Annual European Symposium on Algorithms, pages 605-617, 2003. [7] Pierluigi Crescenzi, Roberto grossi, Claudio Imbrenda, Leonardo Lanzi, Andrea Marino, Finding the diameter in real-world graphs: experimentally turning a lower bound into an upper bound In Proc. Annual European Symposium on Algorithms, pages 302-313, 2010. [8] A.-L. Barabási, R. Albert, Emergence of scaling in random networks Science Vol. 286, pages 509–512, 1999. [9] MEJ Newman, The structure and function of complex networks. Society for Industrial and Applied Mathematics (SIAM) Review 45, pages 167-256, 2003. [10] Christian Stegbauer, Netzwerkanalyse und Netzwerktheorie: Ein neues Paradigma in den Sozialwissenschaften VS Verlag für Sozialwissenschaften, Wiesbaden, 2010. [11] Roger Häusling, Ein netzwerkanalytisches Vierebenenkonzept zur struktur- und akteursbezogenen Deutung sozialer Interaktionen. In: Qualitative Netzwerkanalyse: Konzepte, Methoden, Anwendungen, VS Verlag für Sozialwissenschaften, Wiesbaden, 2005. [12] Betina Hollstein Quantitative Methoden und Netzwerkanalyse – ein Widerspruch? In: Qualitative Netzwerkanalyse: Konzepte, Methoden, Anwendungen, VS Verlag für Sozialwissenschaften, Wiesbaden, 2005. 41 [13] Keno Frank, Andreas Wald Möglichkeiten der Triangulation quantitativer und qualitativer Methoden in der Netzwerkanalyse. In: Qualitative Netzwerkanalyse: Konzepte, Methoden, Anwendungen, VS Verlag für Sozialwissenschaften, Wiesbaden, 2005. [14] Dorothea Jansen Einführung in die Netzwerkanalyse: Grundlagen, Methoden, Forschungsbeispiel VS Verlag für Sozialwissenschaften, Wiesbaden, 3. Auflage, 2003. [15] Rainer Diaz-Bone Eine kurze Einführung in die sozialwissenschaftliche Netzwerkanalyse. Mitteilungen aus dem Schwerpunktbereich Methodenlehre Nr. 57. Berlin: Institut für Soziologie, Freie Universität Berlin, 2006. [16] Reinhard Diestel Graphentheorie Springer-Verlag, Berlin/Heidelberg, 2006. [17] Peter Tittmann Graphentheorie. Mathematik-Studienhilfen. Hanserverlag, München und Wien, 2011. [18] Edsger W. Dijkstra A note on two problems in connexion with graphs. Numerische Mathematik, 1: 269-271, 1959. [19] A. V. Goldberg and R. E. Tarjan Expected Performance of Dijkstra’s Shortest Path. Algorithm Princeton University Technical Reports, 1996. [20] Steve S. Skiena The Algorithm Design Manual Springer-Verlag, London, 2008. [21] Robert Sedgewick Algorithms in C++ Addison-Wesley, 1992. 42