Скажімо, у мене є непрямий обмежений графік, і мені потрібно мати можливість ефективно виконувати такі запити:
- - повертає якщо є шлях між і , інакше
- - повертає набір вузлів, до яких можна дістатися з
Це легко зробити за допомогою попереднього обчислення підключених компонентів графіка. Обидва запити можуть запускатися в час.
Якщо мені також потрібно мати змогу додавати краї довільно - - я можу зберігати компоненти в структурі даних, що перебувають у розрізненні . Щоразу, коли додається край, якщо він з'єднує два вузли в різних компонентах, я б об'єднав ці компоненти. Це додає витрати на а на і (що також може бути ).
Якщо мені також потрібно мати змогу видалити краї довільно, яка найкраща структура даних для вирішення цієї ситуації? Це один відомий? Підводячи підсумок, він повинен ефективно підтримувати такі операції:
- - повертає , якщо існує шлях між і , в іншому випадку .
- - повертає набір вузлів , які доступні з .
- - додає край між двома вузлами. Зауважте, що , або обидва, можливо, раніше не існували.
- - видаляє наявний край між двома вузлами.
(Мене це цікавить з точки зору розвитку ігор - ця проблема, здається, виникає в досить багатьох ситуаціях. Можливо, гравець може побудувати лінії електропередач, і ми повинні знати, чи підключений генератор до будівлі. Можливо, гравець може заблокувати і розблокуємо двері, і нам потрібно знати, чи може ворог дістатись до гравця. Але це дуже загальна проблема, тому я це сформулював як такий)