Тут було кілька запитань ( 1 , 2 , 3 ) про транзитивне завершення, які змусили мене задуматися, чи можливо щось подібне:
Припустимо, ми отримуємо графік, спрямований на введення і хотів би відповісти на запити типу "? ", тобто запитувати, чи існує край між двома вершинами при перехідному завершенні графа ? (рівнозначно, "чи існує шлях від до в ? ").
Припустимо після даного вам дозволяється вчасно запустити попередню обробку а потім потрібно вчасно відповідати на запити .
Очевидно, якщо (тобто попередня обробка не дозволена), найкраще вчасно відповісти на запит . (запустити DFS з до і повернути істину, якщо існує шлях).
Ще один банальний результат - це якщо , ви можете обчислити перехідне закриття, а потім відповісти на запити в .
А що з серединою? Якщо вам дозволено, скажіть час попередньої обробки, чи можете ви відповідати на запити швидше, ніж ? Можливо, покращити його?
Інший варіант: припустимо, що у вас є час попередньої обробки, але тільки простір, чи можете ви використовувати попередню обробку для відповіді на запити ефективніше, ніж ?
Чи можемо ми сказати що-небудь про це компроміс, що дозволяє відповідати на такі запити?
Дещо схожа структура компромісу розглядається в системах GPS, де проведення повної таблиці маршрутів усіх парних відстаней між локаціями нездійсненно, тому використовується ідея про оракули відстані, що зберігає часткову таблицю, але дозволяють значно скоротити запити над обчисленням відстані в цілому. графік (зазвичай дається лише приблизна відстань між точками).