Как подойти к задачам, связанным с динамическим графом


15

Я задал этот вопрос в общем стеке потока, и я был направлен сюда.

Было бы хорошо, если бы кто-нибудь мог объяснить, как подходить к частичным или полностью динамическим задачам с графами в целом.

Например:

  • Найти кратчайший путь между двумя вершинами в неориентированном взвешенном графе для экземпляров, когда ребро удалено в каждом экземпляре.N(U,v)N
  • Найти количество связанных компонентов в неориентированном графе для n случаев, когда ребро удаляется в каждом случае, и т. Д.

Я недавно столкнулся с этим жанром проблем в конкурсе программирования. Я искал в Интернете, и я нашел много научных работ, касающихся динамических графов [1,2]. Я прочитал несколько из них, и я не мог найти что-нибудь прямо (кластеризация, спарсификация и т. Д.). Извините за расплывчатость.

Я действительно ценю, если кто-то может предоставить указатели, чтобы лучше понять эти концепции.


  1. Алгоритмы динамического графа Д. Эппштейна, З. Галила, Г. Ф. Итальяно (1999)
  2. Кратчайшие пути на динамических графах Г. Наннинини, Л. Либерти (2008)

Ответы:


12

Трудно дать вам конкретные методы, потому что «динамический» может означать самые разные вещи, а алгоритмы / результаты зависят от вашей модели. Ниже приведен обзор проблем. Вот документ, который дает обзор некоторых различных проблем и моделей (связанных с тем, что Питер цитировал в другом ответе).


Для динамических проблем в целом, ключевыми являются:

  • Вы хотите точное решение во всех случаях, или приближенное допускается?
  • Знаете ли вы что-нибудь о том, какие изменения произойдут (например, распределение вероятностей), или они все одинаково вероятны?
  • как алгоритм узнает об изменениях?

Типичная динамическая модель выглядит примерно так:

  1. Учитывая график, вы хотите вычислить некоторые свойства. Вам разрешено вычислить решение для начального графа.

  2. Вам тогда говорят одну модификацию: край удален. Вычислить свойство на новом графике, используя ограниченные ресурсы .(е,е)

  3. Повторите 2 для раз.N

И вот 3 возможных модификации:

  • Вы не можете рассчитать полное решение в начале из-за ограничений информации / времени / пространства (один из примеров - онлайн-алгоритмы )

  • На шаге 2 алгоритм не «сообщает» модификацию, но должен найти модификацию в графе путем запроса структуры данных или чего-то еще.

  • Распределенная модель (как Питер обсуждает в другом ответе), где информация обнаруживается локально, а вычисления / изменения производятся локально.

Динамические модели обычно интересны из-за ограниченности ресурсов (например, времени / пространства). На шаге 2, если мне было разрешено вычислить полный ответ (как я это делал на шаге 1), тогда проблема проста, поскольку это просто повторяющаяся проблема статического графа. Нас больше интересует наименьшее количество ресурсов, необходимое для вычисления изменений.


Большое спасибо за ответ. Я пытался понять сложности и способы решения простой частично динамической задачи о графе.
Пракаш

Большое спасибо за ответ. Я пойду через бумаги. Я пытался понять сложности и способы решения простой частично динамической задачи о графе. Например, дан набор городов, соединенных дорогами, неориентированных и взвешенных по расстоянию. Найдите кратчайший путь между двумя городами, в n случаях, когда дорога заблокирована в каждом случае по разным причинам. Запуск Dijkstra для n экземпляров нецелесообразен, есть ли способ адаптировать существующие алгоритмы, такие как A *, для решения этих проблем с лучшими временными рамками, или подходы, обсуждаемые в статьях, - единственный путь.
Пракаш

A * является обобщением эвристики Дейкстры +; производительность похожа в худшем случае. Для меня важный вопрос для вашей проблемы: «Какую информацию вы можете хранить между экземплярами, что сделает следующий экземпляр быстрее?» Например, если я сохраню предыдущий кратчайший путь, я смогу быстро выяснить, «провалился» ли он, но нет очевидного способа вычислить следующий кратчайший путь. (Даже если вы храните k кратчайших путей из предыдущего экземпляра, я подозреваю, что это справедливо для любого k.)
Лукас Кук,

(Мой предыдущий комментарий говорит в основном о решениях наихудшего случая. Может быть, вы заботитесь о среднем случае? Тогда может быть эвристика, которая делает хорошее решение типа А *.)
Лукас Кук,

10

Динамические графовые модели интенсивно изучались в распределенных вычислениях. Для распределенных алгоритмов вычисления структурированы в раунды, и топология графов (= сеть) может претерпеть некоторые изменения от раунда к раунду, которые находятся под контролем противника. Более того, каждый узел графа запускает алгоритм, который может отправить сообщение своим (текущим!) Соседям. (Это сообщение является входом алгоритма соседей в следующем раунде.) Интересно то, что узел «не видит» весь граф, а только его локальную окрестность.

Проблемы, которые рассматриваются в этих настройках, это, например, распространение информации, когда каждый узел в графе изначально содержит токен, и в конечном итоге вы хотите, чтобы каждый узел видел каждый токен. Цель состоит в том, чтобы разработать алгоритмы, которые достигают этого за наименьшее количество раундов, используя наименьшее количество сообщений. См. [2] для недавнего опроса.

Для нераспределенной настройки вы можете взглянуть на [1], который является расширением упомянутой вами статьи.


[1] Арис Анагностопулос, Рави Кумар, Мохаммад Махдиан, Эли Упфал, Фабио Вандин: Алгоритмы на развивающихся графах . ITCS 2012: 149-160

[2] Фабиан Кун, Ротем Ошман: Динамические сети: модели и алгоритмы . SIGACT News 42 (1): 82-96 (2011)


У этих алгоритмов передачи сообщений нет проблем с (отсутствием) сходимости?
Рафаэль

Не уверен, что понимаю, что вы имеете в виду под "конвергенцией". Пока граф остается подключенным в каждом раунде, число узлов, которые видели определенный токен t, будет увеличиваться как минимум на 1. Таким образом, после n раундов каждый будет видеть t, независимо от того, как злоумышленник изменит топологию.
Питер

Я думал о проблеме подсчета до бесконечности, вызванной изменением топологии.
Рафаэль

@Raphael В распределенной динамике исследователи обычно исследуют, какие свойства могут быть гарантированы в худшем случае в течение определенного периода времени. Таким образом, «сходимость» не может быть гарантирована для вектора расстояния / Беллмана-Форда из-за фундаментальных проблем с техникой в ​​динамической среде. Существуют и другие конвергентные протоколы маршрутизации, в которых нет проблемы подсчета до бесконечности.
Лукас Кук

3

Опираясь на ответы @Peter (это очень длинный комментарий, поэтому я просто включил в качестве ответа, что кто-то от этого выиграет).

Я хотел бы предложить следующую ссылку:

Арно Кастейгтс, Паола Флоккини, Вальтер Кватрочиокки, Никола Санторо: изменяющиеся во времени графики и динамические сети. IJPEDS 27 (5): 387-408 (2012)

Δ

Что действительно важно в этой классификации, так это наличие взаимосвязей между различными классами. Поэтому, если вы решаете проблему в определенном классе, вы решаете ее в любом другом классе, в который она включена.

Те же авторы представили алгоритмы вещания на некоторых из упомянутых графиков. Они дали разные показатели производительности, связанные со временем (то есть разное определение кратчайшего времени). В вещании идея состоит в том, что каждый узел создает представление сети во временной области. Это делается путем многократного прослушивания соседей и отправки информации соседям. Если предположить периодичность, то узел может определить кратчайший путь к другому узлу. Он использует эту информацию в маршрутизации. Более подробную информацию можно найти в:

Арно Кастейгтс, Паола Флоккини, Бернард Манс, Никола Санторо: детерминированные вычисления в изменяющихся во времени графах: трансляция в условиях неструктурированной мобильности. IFIP TCS 2010: 111-124

Uv{(U,Икс1),(Икс1,Икс2),,,,,,(ИксК,v)}UvvU

Я присутствовал на лекции предыдущих авторов. Насколько я понимаю, они утверждают, что мы далеки от возможности иметь дело с алгоритмами динамических графов (следуя определениям, которым они следуют). Это мы все еще в случае простых классов. На самом деле, они утверждают, что большинство мобильных вычислительных алгоритмов просто предполагают, что их алгоритмы слишком быстры, чтобы выполняться во время перехода сети! (что, я полагаю, я много слышал) - Или просто предположим периодичность появления ребер (см. сети, допускающие задержку и т. д.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.