Welche Grenzen können für die Zählung erreichbarer Knoten in einem Tag gesetzt werden?


23

Gegeben ist ein Tag. Sie möchten jeden Knoten so kennzeichnen, wie viele Knoten von ihm aus erreichbar sind. ist eine unbedeutende Obergrenze; ist eine Untergrenze (glaube ich). Gibt es einen besseren Algorithmus? Gibt es Grund zu der Annahme, dass die Untergrenze verbessert werden kann (verwandt: Was genau ist über Untergrenzen für den transitiven Verschluss bekannt)?O(V(V+E))Ω(V+E)

Motivation: Ich musste dies einige Male tun, während ich fol Formeln als Dags darstellte.

Bearbeiten: Bitte beachten Sie, dass nur Pfade zählt , nicht erreichbare Knoten . (Ich habe dies hinzugefügt, weil anscheinend viele Leute dachten, diese einfache Lösung würde durch die Stimmen funktionieren, die ich bei einer jetzt gelöschten Antwort gesehen habe.) Tatsächlich tritt dieses Problem genau dann auf, wenn Sie etwas Interessantes mit "gemeinsam genutzten" Teilen tun möchten, Knoten, die von erreichbar sind mehr als ein Pfad. Außerdem sage ich dag, denn wenn sie gelöst sind, ist das Lösen von Digraphen einfach.cx=1+xycy


Dies scheint ein Sonderfall zu sein (alle Gewichte auf eins setzen) von cstheory.stackexchange.com/questions/736/…
Suresh Venkat

@ Suresh: Ob willkürliche Gewichte das Problem erschweren, scheint mir eine weitere interessante Frage zu sein.
Radu GRIGore

Antworten:


10

Das transitive Schließen eines gerichteten Graphen mit Kanten und Ecken kann etwas schneller als die berechnet werden, jedoch nicht viel. Ein -Zeitalgorithmus wird in einer Fußnote von Chans WADS-Papier über APSP aus dem Jahr 2005 (Journalversion in Algorithmica 2008) erwähnt. Eine leichte Verbesserung von findet sich in der ICALP'08-Veröffentlichung "A New Combinatorial Approach for Sparse Graph Problems" von Blelloch, Vassilevska und Williams. Trotzdem weiß ich nicht, ob es einfacher ist, Nachkommen zu zählen, als sie tatsächlich zu findenmnO(mn)O(n2+mn/Logn)O(n2+mnLog(n2/m)/Log2n)


4
Schauen Sie sich auch Edith Cohens Arbeit "Size-Estimation Framework with Applications to Transitive Closure and Reachability" an. Es gibt einen randomisierten Algorithmus, der die Anzahl der Nachkommen effizient schätzt.
Virgi

Beachten Sie, dass diese Ergebnisse für alle gerichteten Diagramme gelten, nicht nur für DAGs.
Tonfa

Ja. Das Ergebnis gilt auch für die in cstheory.stackexchange.com/questions/736/…
virgi

7

Ich denke, Sie können die Matrixmultiplikation verwenden, um den transitiven Abschluss der DAG zu berechnen, und dann die Anzahl der Nachbarn als gewünschte Anzahl verwenden. Ich bin kein Experte für Literatur, aber ich denke, Sie können den transitiven Abschluss gleichzeitig mit der Matrixmultiplikation berechnen, dh Zeit: http://www.computer.org/portal/web/csdl/ doi / 10.1109 / ACSSC.1995.540810 .nω


Danke, das ist interessant! Ich sollte hinzufügen, dass Dags, die symbolische Formeln darstellen, eher spärlich sind, daher interessiert mich dieser Fall etwas mehr.
Radu GRIGore

1

In Ihrem Kontext vielleicht nicht nützlich, aber Sie können eine Annäherung mithilfe von Synopsis Diffusion (http://www.cs.cmu.edu/~sknath/sd.htm) erhalten. Ich denke, das macht es zu O (V + E). Die Simulation der Synopsenverteilung auf einem Uniprozessor ist für mich O (V + E) (Sie müssen zuerst eine topologische Sortierung durchführen, die auch O (V + E) ist).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.