2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Алгоритмы разбиения графа
Сообщение23.04.2010, 10:09 
Аватара пользователя
Есть большой граф средней степени связности. Он не статичен - в него постоянно добавляются новые вершины, рёбра; что-то удаляется, перестраивается. Нужен алгоритм, динамически поддерживающий разбиение такого графа на минимально связные куски. То есть - позволяющий определить, в какой из существующих разделов следует поместить вновь добавляемую вершину, пересчитать принадлежность соседних вершин при добавлении или удалении рёбер или вершин. Алгоритм должен работать быстро, пусть не совсем точно.

Универсальных решений здесь нет, но эвристические - возможны. Может кто знает хорошие работы в этом направлении? Я нашёл ряд работ (пока не знаю - насколько хороших), но может что-то упустил, на что стоит обратить внимание?

Примеры:
Graph Partitioning Models for Parallel Computing
Graph partitioning for high performance scientific simulations
Исследование методов организации данных в задачах разбиения графов больших размерностей

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение01.05.2010, 21:31 
Аватара пользователя
 i  Переношу в корневой раздел.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение05.05.2010, 11:18 
Аватара пользователя
А не является ли этот граф деревом/лесом деревьев? Если можно обойтись деревом, наподобие дерева директорий компьютерных дисков - задача сильно упростится. Т.е. нельзя ли свести ее к задаче балансировки деревьев?

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение05.05.2010, 12:38 
Аватара пользователя
Нет, так упростить не получится. Если только уточнить... Граф представляет некоторые отношения предметной области, есть ряд распределённых узлов его обработки. Каждый узел стремится в основном работать со своими данными, хотя пересечения неизбежны.

Можно ввести веса по степени использования вершин и рёбер и перемещать куски графа между узлами, основываясь этой информации. Перемещение вершины влечёт дублирование всех инцидентных рёбер, разрезаемых при перемещении, поэтому желательно разбивать граф не абы как, а с учётом связности. В то же время требование по скорости не позволяет использовать подходы, требующие каких-либо обширных обсчётов графа. Нужно найти здесь какой-то баланс, возможно, существуют какие-то перспективные подходы?

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение05.05.2010, 14:05 
В программировании в ограничениях существует подобная проблема. Пробовал писать нашим мэтрам по теории графов – результат нулевой. На данный момент задача не решена.

Возможно, поможет поиск по ключевой фразе Dynamic Graphs.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение05.05.2010, 14:23 
Аватара пользователя
А алгоритм Kernighan-Lin насколько плох? Там товарищ вроде обещает то, что нужно: "Generalization of the Kernighan-Lin/Fiduccia-Mattheyses algorithm to handle weighted graphs, arbitrary number of sets and lazy initiation". Я просто думал, что может есть что-нибудь поинтересней.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 11:33 
Аватара пользователя
Правильнее говорить не об алгоритме разбиения графа, а об структуре данных для хранения графа.
Четко сформулируйте перечень операций над графом (изменяющих граф, получающих необходимую информацию). После этого можно будет подумать и об оптимальнай структуре данных.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 11:59 
Аватара пользователя
Не понял Вашу мысль - каким образом структура хранения может повлиять на принципы разбиения? Операции я привёл: добавление отдельных вершин, рёбер, их изменение, удаление; чтение - уж как-нибудь приделаю.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 15:35 
to AlexDem
Чтобы сказать, хороша эвристика или плоха, нужен набор адекватных реальной жизни тестовых данных. Для данной задачи, видимо, это симулятор с параметрами. "Прогоняя" на нем алгоритм, можно оценить качество эвристики. Если нет набора тестовых данных – то получаем разговор ни о чем, так как всегда можно подобрать «хорошие» для конкретной эвристики «данные» (симуляции изменений графа), и данные, на которых алгоритм будет работать «неадекватно».

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 16:03 
Аватара пользователя
Тогда поставим вопрос так: вот попробую я этот "Kernighan-Lin", и окажется он для моей задачи неважным... Какой алгоритм мне можно попробовать ещё? Есть ли такие?

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 16:42 
Ответ очевиден - если бы знали, то просто дали бы ссылки. А так - только соображения, как можно выйти на эти работы. Если у данной темы есть коммерческие приложения, то часто такие приложения содержат описания и библиографию. С точки зрения банальной эрудиции, подобные системы должны содержать множества эвристик и параметров настроек - как раз то, что Вы ищете.

 
 
 
 Re: Алгоритмы разбиения графа
Сообщение06.05.2010, 17:37 
Аватара пользователя
Хорошо, спасибо! Я просто боялся пройти мимо какого-нибудь удачного решения.

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group