Das ist eine sehr interessante Frage. Auf hoher Ebene fragen Sie sich, ob Sie ein Diagramm so vorverarbeiten können, dass kürzeste Pfadabfragen unabhängig von der Dichte des Diagramms werden, ohne viel zusätzlichen Platz zu benötigen - interessant, aber wie Sie sagen, ungelöst.
Wenn Sie mit ungefähren Entfernungen zufrieden sind, finden Sie hier eine Möglichkeit, eine Annäherung zu erhalten . Sei ein gewichteter ungerichteter Graph mit Knoten und Kanten. In der folgenden Abhandlung wird gezeigt, dass das Entwerfen von Datenstrukturen für Graphen mit Kanten für Abstandsabfragen nicht schwieriger ist als für Graphen, bei denen jeder Knoten einen durch begrenzten Grad aufweist :G n m m m / n2Gnmmm/n
R. Agarwal, PB Godfrey, S. Har-Peled, Ungefähre Entfernungsabfragen und kompaktes Routing in spärlichen Diagrammen, INFOCOM 2011
Nehmen wir also an, dass ein Grad-begrenzter Graph ist. Stichprobe Knoten gleichmäßig zufällig; Nennen Sie diese Orientierungspunkte. Speichern Sie während der Vorverarbeitungsphase die Entfernung von jedem Orientierungspunktknoten zu jedem anderen Knoten im Diagramm. dies erfordert Raum. Speichern Sie für jeden Knoten den nächsten Orientierungspunktknoten . Speichern Sie das Diagramm auch in der Datenstruktur, beispielsweise als Adjazenzliste.m / n α = O ( m / n ) O ( m ) u ℓ ( u )Gm/nα=O(m/n)O(m)uℓ(u)
Wenn der Abstand zwischen und abgefragt wird , wachsen Kugeln um beide Knoten - Kugel des Knotens ist definiert als die Menge von Knoten, die strikt näher an als an seinem nächsten Orientierungspunktknoten, z. B. . Es kann gezeigt werden, dass die Größe jeder Kugel erwartungsgemäß ist. Sei , wobei die Kugel des Knotens und die Menge der Nachbarn der Knoten in . Es kann gezeigt werden , dass die Größe ist , in der Erwartung.v w w ℓ ( w ) O ( n 2 / m ) Γ ( u ) = B ( u ) ∪ N ( B ( u ) ) B ( u ) u N ( B ( u ) ) B ( u ) Γ ( u ) O ( n )uvwwℓ(w)O(n2/m)Γ(u)=B(u)∪N(B(u))B(u)uN(B(u))B(u)Γ(u)O(n)
Beantworten der Abfrage: Wenn , geben Sie ; sonst, wenn , gib ; sonst gib . Es ist leicht zu zeigen, dass dies eine Annäherung ist.Γ(u)∩Γ(v)≠∅minx∈Γ(u)∩Γ(v){d(u,x)+d(v,x)}d(u,ℓ(u))≤d(v,ℓ(v))d(u,ℓ(u))+d(ℓ(u),v)d(v,ℓ(v))+d(ℓ(v),u)2
In Bezug auf die Abfragezeit ist zu beachten, dass das Wachsen von Bällen -Zeit für einen Graph mit Grad-Grenze benötigt. Das Konstruieren von und gegebenen jeweiligen Bällen benötigt Zeit (da Nachbarn in der Datenstruktur gespeichert sind); und die Überprüfung, ob leer ist oder nicht, dauert ebenfalls .O(n)m/nΓ(u)Γ(v)O(n)Γ(u)∩Γ(v)O(n)
Die obigen Grenzen sind in Erwartung; Ich denke, es ist einfach, die Konstruktion zu derandomisieren. Leider scheint diese Technik keine bessere Annäherung als . Es ist allerdings eine sehr interessante Frage ...2