На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Алгоритм оптимальной отрисовки графа
    Добрейшего времени суток, уважаемые!

    Под термином "оптимальная" будем понимать, например min(X*((N*N)!)+sum(Li)), где X - количество пересечений ребер графа на рисунке, N - количество вершин графа, Li - длину i-того ребра (в чем угодно, сантиметрах, пикселях, не важно).

    Ну а теперь, собственно, описание проблемы. Не секрет, что один и тот же граф, при достаточном количестве вершин, можно так отрисовать, что получится "клубок" в котором, ориентироваться будет сложно. С другой стороны, если "развернуть" и пререразместить расположения вершин - можем получить более простое и наглядное представление одного и того же графа. В котором более очевидно будет наличие возможных суб-структур (типа петель, петель-петель).

    Какие есть мысли по сабжу? Может есть уже какие-то готовые решения?

    PS. Поинмаю, формула "оптимальности" от балды. Хотелось просто показать, что наиболее важный критерий - уменьшение количества пересечений ребер.
      Не имея никаких сведений об особенностях графа (даже не сказано, направленный он или нет), вряд ли можно вести речь об оптимизации...
        Одна из самых известных библиотек:
        http://www.graphviz.org/

        Еще что-то тут:
        http://alenacpp.blogspot.ru/2006/02/blog-post_10.html
        https://en.wikipedia.org/wiki/Graph_drawing
          Цитата Akina @
          даже не сказано, направленный он или нет

          Направленность значения не имеет. Речь идет о размещении вершин на плоскости. Пусть "знакоместо" вершины для направленного графа включает возможность прорисовки в нем "стрелки", если граф направленный".

          Добавлено
          MBo, спасибо! И за материалы, и за оперативность! Буду разбираться, благо там и исходники в наличии.
            Цитата MBo @
            Еще что-то тут:

            user posted image
            Точно!!! Де жа вю ... :lol:
              Самое простое - разместить вершины на окружности.
                Цитата foreach @
                Самое простое - разместить вершины на окружности.
                Но не всегда даёт нужный результат.
                Полный граф с четырьмя вершинами является плоским, а размещая вершины на окружности, его без пересечения рёбер нарисовать нельзя.
                  Цитата amk @
                  Но не всегда даёт нужный результат.
                  Я бы даже так сказал: если планарный граф перерисовать, расположив его вершины на окружности, то с вероятностью 1, будут пересечения рёбер. (см. замечание ниже).
                  Цитата amk @
                  размещая вершины на окружности, его без пересечения рёбер нарисовать нельзя.
                  Подразумевая под рёбрами прямые отрезки. :blush:
                    Если произвольными кривыми рисовать, то вершины можно размещать как угодно - плоский граф можно будет нарисовать без пересечений.
                      Цитата amk @
                      плоский граф можно будет нарисовать без пересечений.

                      Даже если, к примеру, 10 вершин соединены все-ко-всем?
                        Цитата JoeUser @
                        Даже если, к примеру, 10 вершин соединены все-ко-всем?
                        Он не планарен будет! ;)

                        Добавлено
                        П.С. полный граф на K вершинах становится непланарным уже при K>4. ;)
                          Цитата Славян @
                          П.С. полный граф на K вершинах становится непланарным уже при K>4.

                          Вот поэтому и я засумневался :-? А откуда инфа про K>4?
                            Цитата JoeUser @
                            Вот поэтому и я засумневался
                            В чём? :blink:
                            Цитата JoeUser @
                            А откуда инфа про K>4?
                            Широко известное утверждение. :blush:

                            Добавлено
                            Цитата вики
                            Графы с K1 по K4 являются планарными. Полные графы с большим количеством вершин не являются планарными, так как содержат подграф K5 и, следовательно, не удовлетворяют критерию Понтрягина-Куратовского.
                              Цитата Славян @
                              В чём?

                              В сообщении №9 (о непересечении).
                                Цитата Славян @
                                Широко известное утверждение.

                                И ты умудрился его "обрезать" ... а оно в вики звучит так:
                                Цитата
                                Необходимое условие — если граф непланарный, то он должен содержать больше 4 вершин, степень которых больше 3, или больше 5 вершин степени больше 2.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0399 ]   [ 15 queries used ]   [ Generated: 2.04.25, 23:01 GMT ]