Ha habido algunas preguntas ( 1 , 2 , 3 ) sobre la terminación transitiva aquí que me hicieron pensar si algo como esto es posible:
Supongamos que obtenemos un gráfico entrada dirigido y nos gustaría responder consultas del tipo " ?", Es decir, preguntar si existe un borde entre dos vértices en la terminación transitiva de un gráfico ? (equivalentemente, "¿hay una ruta de a en ?").
Suponga que después de dar se le permite ejecutar el preprocesamiento en el tiempo y luego debe responder consultas en el tiempo .
Obviamente, si (es decir, no se permite el procesamiento previo), lo mejor que puede hacer es responder una consulta en el tiempo . (ejecute DFS de a y devuelva verdadero si existe una ruta).
Otro resultado trivial es que si , puede calcular el cierre transitivo y luego responder consultas en .
¿Qué hay de algo en el medio? Si está permitido, diga tiempo de preprocesamiento, ¿puede responder consultas más rápido que ? Tal vez mejorarlo a ?
Otra variación es: suponga que tiene un tiempo de preprocesamiento , pero solo espacio , ¿puede usar el preprocesamiento para responder consultas más eficientes que ?
¿Podemos decir algo en general sobre la compensación que permita responder a tales consultas?
Se considera una estructura de compensación algo similar en los sistemas GPS, donde no es factible mantener una tabla de enrutamiento completa de todas las distancias por pares entre ubicaciones, por lo que está utilizando la idea de oráculos de distancia que almacena una tabla parcial pero permite una aceleración de consulta significativa al calcular la distancia del conjunto gráfico (generalmente solo produce una distancia aproximada entre puntos).