Я рассматриваю следующую проблему (очень грубое описание):
Предположим, что мы имеем график, где ребрам присваиваются некоторые неотрицательные затраты, начальный node s
и некоторая константа затрат C
. Узнайте:
- Набор узлов
N
, достижимый отs
, где стоимость кратчайшего пути от начального nodes
до любого node вN
не большеC
. - Для каждого
e
в наборе выше - стоимость кратчайшего пути.
В основном Dijkstra с ценовым ограничением.
Мой основной вопрос: какова правильная терминология в теории графов для этой проблемы?
Я смотрел "доступность" или "достижимость" , но это, по-видимому, неправильные ключевые слова.
В конечном счете я ищу алгоритм, который мог бы эффективно ответить на многие такие запросы на одном (немодифицируемом), но довольно большом (потенциально ~ 100 млн. ребер) графике параллельно. Я бы хотел проверить литературу, но вам нужны подсказки по правильным ключевым словам.
Обновление: Моя практическая проблема заключается в следующем.
Предположим, нам предоставлена дорожная сеть континентального размера (смоделированная как ориентированный граф, с некоторыми свойствами на краях и узлах, например, если это пешеходный путь или шоссе). Стоимость края - это время в пути.
Я бы хотел ответить на запросы пользователя, такие как: начиная с определенной позиции (график node), какие узлы достижимы в течение 1 часа?
Я также хотел бы ответить на эти запросы очень быстро (< 200-300 мс, если возможно) для многих пользователей ( > 10000, если возможно) параллельно.
Я думаю, что должно быть возможно как минимум две оптимизации:
- Некоторые предварительные вычисления разумного размера, например, предварительно вычисленные матрицы расстояний для выбранных "центральных" узлов.
- Если поиски проводятся параллельно, они могут получать прибыль от "временных результатов" друг друга.
У меня есть несколько идей, но я сначала хотел бы проверить литературу, чтобы не изобретать колесо.