Ich habe diese Frage bei generic stackoverflow gestellt und war hier gerichtet.
Es ist großartig, wenn jemand erklären kann, wie man partielle oder vollständig dynamische Graphprobleme im Allgemeinen angeht.
Beispielsweise:
- Finden Sie den kürzesten Pfad zwischen zwei Scheitelpunkten in einem ungerichteten gewichteten Diagramm für Instanzen, wenn bei jeder Instanz eine Kante entfernt wird.n
- Finden Sie die Anzahl der verbundenen Komponenten in einem ungerichteten Diagramm für n Instanzen, wenn bei jeder Instanz eine Kante entfernt wird usw.
Ich bin kürzlich in einem Programmierwettbewerb auf dieses Problemgenre gestoßen. Ich habe im Internet gesucht und zahlreiche Forschungsarbeiten zu dynamischen Graphen gefunden [1,2]. Ich habe ein paar von ihnen gelesen und konnte nichts direktes finden (Clustering, Sparsification usw.). Tut mir leid, dass ich vage bin.
Ich weiß es wirklich zu schätzen, wenn einige Hinweise geben können, um diese Konzepte besser zu verstehen.
- Dynamische Graph-Algorithmen von D. Eppstein, Z. Galil, GF Italiano (1999)
- Kürzeste Wege auf dynamischen Graphen von G. Nannicini, L. Liberti (2008)
quelle
Dynamische Graphenmodelle wurden im Distributed Computing intensiv untersucht. Für verteilte Algorithmen ist die Berechnung in Runden strukturiert, und die Topologie von Graphen (= Netzwerk) kann sich von Runde zu Runde ändern, die von einem Gegner gesteuert werden. Darüber hinaus führt jeder Knoten des Graphen einen Algorithmus aus, der eine Nachricht an seine (aktuellen!) Nachbarn senden kann. (Diese Nachricht ist die Eingabe des Algorithmus des Nachbarn in der nächsten Runde.) Interessant ist, dass ein Knoten nicht den gesamten Graphen "sieht", sondern nur seine lokale Umgebung.
Probleme, die in diesen Einstellungen berücksichtigt werden, sind beispielsweise Informationen, bei denen jeder Knoten im Diagramm anfänglich ein Token enthält, und schließlich möchten Sie, dass jeder Knoten jedes Token gesehen hat. Das Ziel besteht darin, Algorithmen zu entwerfen, die dies in der geringsten Anzahl von Runden unter Verwendung der geringsten Anzahl von Nachrichten erreichen. Siehe [2] für eine aktuelle Umfrage.
Für die nicht verteilte Einstellung sollten Sie sich [1] ansehen, eine Erweiterung des Papiers, das Sie erwähnt haben.
[1] Aris Anagnostopoulos, Ravi Kumar, Mohammad Mahdian, Eli Upfal und Fabio Vandin: Algorithmen zur Entwicklung von Graphen . ITCS 2012: 149-160
[2] Fabian Kuhn, Rotem Oshman: Dynamische Netzwerke: Modelle und Algorithmen . SIGACT News 42 (1): 82-96 (2011)
quelle
Aufbauend auf @ Peter-Antworten (es ist ein sehr langer Kommentar, daher habe ich ihn nur als Antwort eingefügt, damit jemand davon profitiert).
Ich würde den folgenden Verweis vorschlagen:
Arnaud Casteigts, Paola Flocchini, Walter Quattrociocchi, Nicola Santoro: Zeitvariable Graphen und dynamische Netzwerke. IJPEDS 27 (5): 387-408 (2012)
Was bei dieser Klassifizierung wirklich wichtig ist, ist, dass es Einschlussbeziehungen zwischen den verschiedenen Klassen gibt. Wenn Sie also ein Problem in einer bestimmten Klasse lösen, lösen Sie es in jeder anderen Klasse, in der es enthalten ist.
Dieselben Autoren stellten Rundfunkalgorithmen für einige der genannten Diagramme vor. Sie gaben verschiedene Leistungsmetriken in Bezug auf die Zeit an (dh unterschiedliche Definition der kürzesten Zeit). Beim Broadcasting besteht die Idee darin, dass jeder Knoten eine Ansicht des Netzwerks in der Zeitdomäne erstellt. Dies geschieht durch wiederholtes Abhören von Nachbarn und Senden von Informationen an Nachbarn. Wenn Periodizität angenommen wird, kann ein Knoten den kürzesten Zeitpfad zu einem anderen Knoten angeben. Diese Informationen werden beim Routing verwendet. Weitere Details finden Sie in:
Arnaud Casteigts, Bernard Mans, Nicola Santoro, Paola Flocchini: Deterministische Berechnungen in zeitveränderlichen Graphen: Rundfunk unter unstrukturierter Mobilität. IFIP TCS 2010: 111-124
Ich habe einen Vortrag der Vorgänger besucht. Nach meinem Verständnis behaupten sie, dass wir nicht in der Lage sind, mit dynamischen Graph-Algorithmen umzugehen (gemäß den Definitionen, die sie befolgen). Das sind wir noch bei einfachen Klassen. Tatsächlich behaupten sie, dass die meisten Algorithmen für mobile Computer einfach davon ausgehen, dass ihre Algorithmen zu schnell sind, um ausgeführt zu werden, während sich das Netzwerk im Übergang befindet! (was ich glaube, dass ich viel gehört habe) - Oder nehmen Sie einfach die Periodizität der Kantenerscheinung an (siehe verzögerungstolerante Netzwerke usw.)
quelle