Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение графа по матрице 
:(
    Опции темы
p0s0l
Дата 4.7.2004, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: нет
Всего: 112



Привет!
Дано:
N = число вершин в графе (max = 10)
M[NxN] = матрица смежности (или может не так называется ? не помню, но смысл в том, что Mij = 1, если между i и j есть дуга), генерится рэндомом
Надо теперь построить граф (в графическом представлении)...
Как бы если просто так их распихать, то будет ненаглядно, и много пересечений дуг...

Есть ли какие мысли по поводу того, как можно из матрицы M нарисовать граф (вершины графа - окружности (радиус R), дуги графа - линии) ?
Так, чтобы ниодна вершина не лежала на чужой дуге, пример - если расположить вершины по порядку:
1 2 3 4 5
и есть связь 1-3, то вершина 2 получится лежит на дуге 1-3...
Это первое обязательное условие.
Второе - минимальное (или примерно минимальное) число пересечений дуг...
Третье - время выполнения, не должно быть слишком тормозным (2-3 сек. максимум)


--------------------
С уважением, г-н Посол.
PM   Вверх
Тиньков
Дата 6.7.2004, 08:26 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











1) Расположи граф в виде правильного многоугольника, тогда ни одна вершина никогда не будет лежать на чужой дуге.
2) Что касается числа пересечений дуг, то ИМХО оно в общем случае не зависит от расположения вершин, если матрица смежности задаётся случайным образом.
3) Для 10 вершин ЛЮБОЙ алгоритм уложится в 2-3 секунды.
  Вверх
Zaman
Дата 6.7.2004, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 219
Регистрация: 28.6.2004

Репутация: нет
Всего: 2



Так же хочу добавить, что есть 2 типа графов - орграф и неограф.
Для неографа достаточно заполнить половину матрицы. Береться матрица, приводиться условная линия с левого верхнего угла в правый нижний. Дальше заполняется верхняя половина и делается зеркальное отображение для нижней половины.
Для орграфа так же надо выяснить будит ли он сильносвязный или несильносвязный.
Сильносвязанные графы если для любой пары вершины Хi и Xj сущ пути из Хi в Xj, и из Xj в Хi.
Несильносвязанные - если для пары вершины Хi и Xj имеется пути из Хi в Xj либо из Xj в Хi.

Попробуй при написании программы учесть это.
PM MAIL   Вверх
p0s0l
Дата 9.7.2004, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: нет
Всего: 112



Была идея разбить на независимые подграфы (раскраска вершин), но потом попровал расположить по кругу, как сказал Тиньков, в итоге вышло не так уж и плохо, как я думал...

Так что всем спасибо за отзывы!

Это сообщение отредактировал(а) p0s0l - 9.7.2004, 21:51


--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.