У меня есть коллекция комнат, каждая из которых соединена с одной или несколькими другими комнатами через главные направления (север, юг, восток, запад). Номера были соединены таким образом, что если A находится к западу от B, то B находится к востоку от A; таким образом, неориентированный граф. Теперь мне нужно взять эту коллекцию комнат и нарисовать их на координатной плоскости. Все ребра должны быть параллельны оси X или Y.Проект непрямой циклический график на плоскости координат
Я пробовал несколько различных подходов, но я думаю, что наиболее эффективным до сих пор выглядит следующим образом:
- Найти «центр» и назначить его (0,0) (номер, для которого сумма длина кратчайших путей к каждой другой комнате наименьшая). Я не знаю, действительно ли это необходимо, но облегчает центрирование вывода.
- Выйдите из центра C и найдите для каждой комнаты R координату (X, Y), где P - путь, соединяющий C => R, что приводит к наибольшему смещению на координатной плоскости, X - чистый горизонтальный движение по Р и Y представляет собой чистое вертикальное перемещение вдоль P.
Предположат следующие векторы для направлений: Севера = [0,1] Юга = [0, -1] Восток = [1, 0] West = [-1,0]
Во-первых, спасибо за ваш вклад. Раньше я занимался топологической сортировкой в своих исследованиях и думал, что это относится только к группам DAG. Вы просто говорите, что «притворяетесь», что граф является DAG для целей алгоритма? – Taylor
@ Тейлор да, говоря, что ссылка Север-Юг является направленной ссылкой, указывающей на Север, и говорит, что ссылка Восток-Запад является направленной ссылкой, указывающей на Запад. – mcdowella