Что такое алгоритм для минимизации некоторого расстояния D между N элементами? - PullRequest
4 голосов
/ 14 апреля 2010

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

Так что я подумал о способе перемещения столов, чтобы минимизировать общее расстояние между линиями, и я не мог придумать способ сделать это, кроме как просто переместить их друг на друга. Итак, в основном: учитывая N элементов в некотором 2-мерном координатном пространстве и некоторое количество связей между парами этих элементов, как вы перемещаете элементы таким образом, чтобы общее расстояние между парами было минимальным, но чтобы расстояние не было меньше S? (чтобы таблицы не были слишком близко друг к другу) Есть ли какой-нибудь алгоритм для этого?

(я понимаю, что наименьшее общее расстояние не обязательно сделает расклад менее уродливым; линии все равно могут пересекаться. Но расклад таблицы - это то, что заставило меня задуматься)

1 Ответ

3 голосов
/ 14 апреля 2010

Некоторые подсказки:

http://en.wikipedia.org/wiki/Graph_drawing

http://en.wikipedia.org/wiki/Force-based_algorithms

Диаграмма схемы базы данных представляет собой случай графа (или может быть деревом в зависимости от вашей схемы).

Приветствия

...