Алгоритм построения простого графа
Я хочу знать, есть ли какой-нибудь алгоритм, который превращает граф в планарный граф? Я искал в Google, я не нашел то, что может мне помочь
2 ответа
Это слишком долго для комментария. Извините, предоставляя ответ.
Ваш вопрос мне неясен. Является ли график плоским, зависит от самого графика, а не от того, как он нарисован. "В теории графов плоский граф - это граф, который может быть встроен в плоскость, т. Е. Его можно нарисовать на плоскости таким образом, чтобы его ребра пересекались только в своих конечных точках". с http://en.wikipedia.org/wiki/Planar_graph).
Нужно ли работать / проверять, является ли график плоским?
Вы должны нарисовать это в плоской форме?
В приведенном вами примере почему второй рисунок почему-то более правильный, чем первый рисунок? Только потому, что у них нет пересекающихся ребер?
Предполагая, что вам нужно сделать это с другими графиками, какое правило используется для определения, является ли какое-то представление лучше, чем другое, как ваша диаграмма обобщается на другие графики?
Почему вы это делаете? Какой смысл? Если это домашнее задание, в чем конкретно заключается проблема? Если это реально, возможно, поможет объяснение того, что вы действительно пытаетесь сделать.
Существует теорема Эйлера, которая применима к любому плоскому графу.
Определение. Планарный график - это график, который можно нарисовать на плоскости так, чтобы края не пересекались. Любой плоский граф разбивает плоскость на несколько непересекающихся областей, называемых гранями графа.
Теорема Эйлера: V-E+F=2, где:
- - V - количество вершин,
- - E - количество ребер,
- - F - количество граней
Тем не менее, я не могу предоставить решение в Java, так как неясно, как вы хотите реализовать это. Например, если вы хотите преобразовать график в планарный график; визуально вам может потребоваться перестановка холста и элементов, что будет довольно сложно реализовать. В общем, мыслите алгоритмически, создавая решение сначала в псевдокоде.
Например, поскольку у нас есть теорема Эйлера, которая применяется к каждому плоскому графу, вам нужно найти способ применить эту теорему к существующему непланарному графу, а затем проверить ее.
Шаги: (возможно, для некоторых из них потребуются координаты)
- Определите, каковы вершины
- Определите, какие края
- Определите, какие лица
- Найдите способ подсчета вершин
- Найдите способ подсчитать края
- Найдите способ подсчитать лица
- Переставь все эти в холсте
- Проверьте теорему, если она применима, тогда ваш график плоский, в противном случае переставьте заново.
- Обратите внимание, что, используя координаты, вы можете определить с самого начала, можно ли построить график плоско, однако, когда вы рисуете его, вы не должны допускать пересечения краев линий.