powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм вывода циклического графа
28 сообщений из 28, показаны все 2 страниц
Алгоритм вывода циклического графа
    #37365365
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всех, приветствую!

Сейчас стоит задача вывести циклический ориентированный граф на экран.
Кто-нибудь сталкивался с подобной задачей и каким образом её решали?
Посоветуйте может ссылку, где можно в теории почитать про возможный вариант решения.
Сложность заключается именно в том, что он циклический. С ациклическим сложностей нет))
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365372
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

При такой формулировке, вывод вершин по окружности решает задачу.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365401
авторh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай как в graphviz'е сделано http://www.graphviz.org/Theory.php
В его man'ах есть тоже ссылки на источники. Там вообще по барабану циклический или нет граф.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365402
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я имел ввиду, что это не просто граф, где один замкнутый цикл, а только часть графа замкнута, а часть не замкнута.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365408
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirstЯ имел ввиду, что это не просто граф, где один замкнутый цикл, а только часть графа замкнута, а часть не замкнута.А какая разница? Если расположить вершины по окружности, а дуги рисовать хордами, вывести на экран (так, чтобы дуги не сливались и не пересекали вершины) можно любой граф.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365438
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

Может быть несколько замкнутых циклов с произвольными связями между ними.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365498
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

Да. Понимаю. Чем не устраивает предложенное решение? Оно позволяет отрисовать даже полносвязный граф, вообще-то.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365499
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

таки граф планарный?
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365611
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропил,

Граф не планарный
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365749
BaurzhanS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,
Если граф не планарен, то его невозможно нарисовать без самопересечений - по сути, это и есть определение планарности=) Получается, выше Вам правильно советуют - рисовать по окружности, вернее, расположить вершины как правильный n-угольник,а потом внутренности соединять хордами. Просто я думал, что граф планарен, тогда есть довольно сложные алгоритмы укладки графа на плоскости, надо гуглить=) А Вашем случае этот алгоритм все равно не спасет, поэтому зачем платить больше и иписать что-то сложное? =) Я когда-то граф выводил на экран, я делал через полярные координаты. Пусть n - кол-во вершин. Тогда step = 360/n - это величина угла одной "створки", то есть угла, опирающегося на грань. Радиус R выберете сами, пусть будет Screen.Width/2. Тогда координаты всех вершин
for(int i=1;i<=n;i++){
I-th_point_X = R*cos( step*(i-1) );
I-th_point_Y = R*sin( step*(i-1) );
}
Потом, если какие-то соединены, рисуем методом drawLine класса Graphics хорду.
Естественно, для рисование на экране надо с помощью банальной пропорции перевести посчитанные координаты из декартовых в экранные - в компе-то ведь начало координат - это центр экрана(не обязательно, но самый удобный вариант) и ось У обычно вниз направлена). Тогда перевдим декартовы в компьютерные так
R - width/2
some_coord_you_need_to_convert - и дальше находим x по пропорции=)Находим его, что рисовать фактически, то есть дл я функции draw_line. которая есть и в C# и в Java. Насчет перевода я мог немного ошибиться, сейчас думать лень, я по памяти пишу, я как-то так делал, все работало, думаю Вы разберетесь, так несложно=)
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365852
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BaurzhanS,

Да у меня и не стоит задача нарисовать этот граф именно как не пересекающийся. Достаточно просто его вывести.
Среди пожеланий к построению - это наглядность представления. Так как граф описывает некий процесс, то более наглядно было бы расположить узлы графа последовательно. В связи с этим не подходим расположение узлов графа по окружности.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365876
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

Ну, есть вариант расположить узлы графа на прямой, в последовательности, определяемой процессом; рёбра, не соединяющие два последовательных узла, рисовать П-образными перемычками (кибернетическое изображение). Если таких рёбер не слишком много, смотреться будет нормально и читабельно.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365887
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересен алгорит выводящий граф в наиболее презентабельном виде. Желательно снизить число пересечений и длину связей.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365888
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Было элегантное итерационное решение в виде Java-applet которое "распланаривало"
граф на уровне минимизации внутренних напряжений в рёбрах и вершинах.
Отсутствие пересечений там не гарантировалось но было более-менее
преемлемо для просмотра человеком на экране.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365894
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Abstraction,

Вот когда появляются циклические графы, становится не понятно как располагать узлы, чтобы всё это нормально нарисовать.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365902
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

Тогда определитесь - Вам "наглядно", "с минимальной длиной связей" или "с минимальным количеством пересечений"?
Я предлагаю вариант, который при небольшом числе "скачущих" через течение процесса рёбер будет нормально читаться, причём нотация имеет шанс оказаться уже знакомой читающему.
Если нужно минимизировать длину связей и количество пересечений, можно пытаться выделять компоненты высокой связности и изображать их вершины рядом. "Порядок процесса" при этом будет изображён непредсказуемыми зигзагами.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не забывайте про полно-связные графы.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365940
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

А можно посмотреть вариант реализации или на словах описать его?
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37365974
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Описание и исходники найти не могу. На словах - элементы графа
рёбра и вершины наделяются "отрицательной гравитацией". Тоесть
задаётся уравнение движения вершин и рёбер и запускается
процесс симуляции этой системы до тех пор пока не проёдет некоторое
количество эпох либо пока система не войдет в какое-то стационарное
состояние.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366549
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

если это ПРОЦЕСС, то скорее всего нет там никаких циклов
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366882
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Сталкнулся с тем, что циклы есть. Отражают что-то типа обратной связи.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366908
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

опиши ка :)
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366910
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процессы происходят во времени
в прошлое связей нет пока что
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366931
SergeyFirst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ViPRos,

Графф описывает процесс некоторого расчёта. Каждый узел функцию расчёта и результат расчёта. Для проведения расчёта необходимы результаты расчёта других узлов. Соответственно появляются циклические связи.
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366945
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeyFirst,

нет там никаких циклов
ты неправильно трактуешь цикл
у процесса есть вход и выход
при запуске процесса входы уже готовы (или по тесении хода процесса будут готовы)
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37366946
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
твой граф - обычный гантт
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37367178
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ViPRosПроцессы происходят во времени
в прошлое связей нет пока что
А обратные связи, тем не менее, бывают ;)
...
Рейтинг: 0 / 0
Алгоритм вывода циклического графа
    #37367185
ViPRos
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,

в процессах - нет
в модели процесса - может быть
...
Рейтинг: 0 / 0
28 сообщений из 28, показаны все 2 страниц
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм вывода циклического графа
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]