Ci sono state alcune domande ( 1 , 2 , 3 ) sul completamento transitivo qui che mi hanno fatto pensare se qualcosa di simile è possibile:
Supponiamo di ottenere un grafico diretto di input e vorremmo rispondere a query di tipo " ?", Ovvero chiedendo se esiste un margine tra due vertici nel completamento transitivo di un grafico ? (equivalentemente, "esiste un percorso da a in ?").
Supponiamo che dopo aver dato ti sia permesso di eseguire la preelaborazione nel tempo e quindi di rispondere alle domande nel tempo .
Ovviamente, se (cioè non è consentita la preelaborazione), il meglio che puoi fare è rispondere a una query nel tempo . (eseguire DFS da a e restituire true se esiste un percorso).
Un altro risultato banale è che se , puoi calcolare la chiusura transitiva e quindi rispondere alle domande in .
Che dire di qualcosa nel mezzo? Se hai il permesso, dì tempo di preelaborazione, puoi rispondere alle domande più velocemente di ? Forse migliorarlo a ?
Un'altra variante è: si supponga di avere tempo pre-elaborazione, ma solo lo spazio, si può utilizzare la pre-elaborazione per le query di risposta più efficiente di ?
Possiamo dire qualcosa in generale sul compromesso che consente di rispondere a tali domande?
Una struttura di compromesso un po 'simile è considerata nei sistemi GPS, dove è impossibile tenere una tabella di instradamento completa di tutte le distanze a coppie tra le posizioni, quindi utilizza l'idea di oracoli di distanza che memorizza una tabella parziale ma consente una significativa accelerazione della query sul calcolo della distanza del tutto grafico (di solito fornisce solo la distanza approssimativa tra i punti).