2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Визуализация графа. Как расположить точки на плоскости?
Сообщение19.01.2013, 09:52 


19/01/13
2
Помогите пожалуйста подобрать правильный алгоритм для слудующей задачи.

Имеем набор из N точек. Для каждой пары точек А и В известно некоторое "оптимальное" или "желаемое" расстояние между ними. По смыслу - точки с расстояниями - это некий социальный граф. Необходимо визуализировать граф и расположить точки на плоскости таким образом, чтобы итоговые геометрические расстояния между точкам на плоскости были максимально приближенны к желаемым.

Очевидно, что полного совпадения с желаемыми растояниями может не получится. Даже три точки могут иметь противоречивые взаимные расстояния. Так что ищем некий оптимум. Критерий оптимальности реальных и желаемых расстояний - сумма квадратов их разниц для каждой точки должна быть минимальной. Впрочем, подойдет и другой, похожий критерий. Например имеет смысл ориентироваться на отношение реального и желаемого расстояния, а не их разницу.

Так же возможно что математически наилучший ответ найти трудно, а вот некоторое приближенное решение - гораздо проще.Например применив итеративный подход. Тогда подойдет приближенное.

// Уже сформулировав условие этой задачи я понял что не знаю как решить даже более простую. Предположим что у нас уже размещено на плоскости N точек. И надо добавить еще одну, чтобы максимально точно подобрать желаемые расстояния от новой точки до каждой из N существующиих. Как это сделать?

 Профиль  
                  
 
 Re: Визуализация графа. Как расположить точки на плоскости?
Сообщение20.01.2013, 21:23 
Аватара пользователя


29/05/11
227
Красноармейск, Донецкая обл.
У Вас есть $N$ точек и $N(N-1)/2$ положительных чисел $\left[0,+\infty\right]$ (бесконечность как или маркер несвязности, или неоднозначности в трактовке, или ещё чего-нибудь), выражающих [желаемое] расстояние между любыми двумя точками, и Вам необходимо их красиво изобразить, чтоб геометрическое расстояние было максимально приближено к желаемому. Я правильно понял?

Из того, что я слышал, мне запомнился такой алгоритм. Его суть заключается в следующем: каждую вершину графа мыслим как материальную точку, а каждое ребро — как пружину, а затем моделируем поведение физической системы до того момента, как она придёт в своё положение равновесия, которое мы и отображаем на экране. Здесь можно подобрать удобные аналогии. Так, пружина может подчинятся разным законам (пропорциональному, линейному или логорифмическому по смещению), что даёт желаемый Вами выбор в том, что именно минимизируется. С другой стороны, можно ввести достаточно ощутимую диссипацию (а алгоритм сам по себе имеет проблему локального минимума, то есть часто выдаёт не абсолютный минимум, а локальный) и тогда при добавлении новой точки к уже отрисованному графу положение уже отрисованных точек особо не изменится (что, как мне кажется, должно часто случаться при полной минимизации, когда мы попадаем не в ближайший существенно-глубокий локальный минимум). Детальнее смотрите википедию. Такой метод подходит?

 Профиль  
                  
 
 Re: Визуализация графа. Как расположить точки на плоскости?
Сообщение21.01.2013, 17:18 


19/01/13
2
Супер! Это в точности то что мне было нужно!!!

Огромное спасибо! ИзображениеИзображениеИзображение

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group