![]() |
|
|
![]()
|
|
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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 сек. максимум) -------------------- С уважением, г-н Посол. |
|||
|
||||
| Тиньков |
|
|||
|
Unregistered |
1) Расположи граф в виде правильного многоугольника, тогда ни одна вершина никогда не будет лежать на чужой дуге.
2) Что касается числа пересечений дуг, то ИМХО оно в общем случае не зависит от расположения вершин, если матрица смежности задаётся случайным образом. 3) Для 10 вершин ЛЮБОЙ алгоритм уложится в 2-3 секунды. |
|||
|
||||
| Zaman |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 219 Регистрация: 28.6.2004 Репутация: нет Всего: 2 |
Так же хочу добавить, что есть 2 типа графов - орграф и неограф.
Для неографа достаточно заполнить половину матрицы. Береться матрица, приводиться условная линия с левого верхнего угла в правый нижний. Дальше заполняется верхняя половина и делается зеркальное отображение для нижней половины. Для орграфа так же надо выяснить будит ли он сильносвязный или несильносвязный. Сильносвязанные графы если для любой пары вершины Хi и Xj сущ пути из Хi в Xj, и из Xj в Хi. Несильносвязанные - если для пары вершины Хi и Xj имеется пути из Хi в Xj либо из Xj в Хi. Попробуй при написании программы учесть это. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: нет Всего: 112 |
Была идея разбить на независимые подграфы (раскраска вершин), но потом попровал расположить по кругу, как сказал Тиньков, в итоге вышло не так уж и плохо, как я думал...
Так что всем спасибо за отзывы! Это сообщение отредактировал(а) p0s0l - 9.7.2004, 21:51 -------------------- С уважением, г-н Посол. |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |