Es gab einige Fragen ( 1 , 2 , 3 ) zur transitiven Vervollständigung, die mich zum Nachdenken gebracht haben, ob so etwas möglich ist:
Angenommen, wir erhalten einen eingabegerichteten Graphen und möchten Fragen vom Typ " ?" Beantworten , dh fragen, ob bei der transitiven Vervollständigung eines Graphen eine Kante zwischen zwei Eckpunkten existiert . (äquivalent: " in einen Pfad von nach ?").
Angenommen, nach gegebenem Sie die Vorverarbeitung in der Zeit ausführen und müssen dann die Anfragen in der Zeit beantworten .
Wenn (dh keine Vorverarbeitung zulässig ist), können Sie eine Anfrage natürlich am besten in der Zeit beantworten . (Führen Sie DFS von nach und geben Sie true zurück, wenn ein Pfad vorhanden ist.)
Ein weiteres triviales Ergebnis ist, dass Sie, wenn , den transitiven Abschluss berechnen und dann Fragen in beantworten können .
Was ist mit etwas in der Mitte? Wenn Sie z. B. Vorverarbeitungszeit zulassen, können Sie Anfragen schneller als beantworten ? Vielleicht auf verbessern ?
Eine andere Variante ist: Angenommen, Sie haben eine Vorverarbeitungszeit von , aber nur Speicherplatz. Können Sie die Vorverarbeitung verwenden, um Anfragen zu beantworten, die effizienter sind als ?
Können wir generell etwas über den Kompromiss sagen , der die Beantwortung solcher Fragen ermöglicht?
Eine etwas ähnliche Kompromissstruktur wird bei GPS-Systemen in Betracht gezogen, bei denen das Halten einer vollständigen Routing-Tabelle aller paarweisen Entfernungen zwischen Standorten nicht möglich ist. Daher wird die Idee von Entfernungsorakeln verwendet, die eine Teiltabelle speichern, aber eine erhebliche Abfragebeschleunigung über die Berechnung der Entfernung des Ganzen ermöglichen Grafik (ergibt normalerweise nur einen ungefähren Abstand zwischen Punkten).