Всем ку! Есть ли в природе удобный и бесплатный инструмент для рисования State Machine, который умеет автоматически "перераспределять" блоки?
Много чего перепробовал, в итоге пришёл к использованию UMLet для этих целей. Он удобен всем, кроме неумения автоматически "перераспределять" диаграмму, чтобы уменьшить пересечение линий. В итоге получается, если состояний 10 и более, и кол-во переходов большое, начинается ад из пересечений этих линий.
Re: Удобный инструмент с "авто-распределением" для рисования State Machine
Здравствуйте, gyraboo, Вы писали:
G>Много чего перепробовал, в итоге пришёл к использованию UMLet для этих целей.
Как по мне, так Dia лучше UMLet.
G>Он удобен всем, кроме неумения автоматически "перераспределять" диаграмму, чтобы уменьшить пересечение линий. В итоге получается, если состояний 10 и более, и кол-во переходов большое, начинается ад из пересечений этих линий.
Не помню чтобы какая-то гуишная программа такое умела. Зато это умеют различные генераторы диаграмм, типа такого — диаграммы состояний plantuml.
Re: Удобный инструмент с "авто-распределением" для рисования State Machine
G>Всем ку! Есть ли в природе удобный и бесплатный инструмент для рисования State Machine, который умеет автоматически "перераспределять" блоки? G>Много чего перепробовал, в итоге пришёл к использованию UMLet для этих целей. Он удобен всем, кроме неумения автоматически "перераспределять" диаграмму, чтобы уменьшить пересечение линий. В итоге получается, если состояний 10 и более, и кол-во переходов большое, начинается ад из пересечений этих линий.
я когда-то заходил с другой стороны, и искал алгоритм уменьшения пересечений
всё что я нашел, было либо плохо, либо очено плохо
я не слышал про подвижки в этой области с тех пор
Re[2]: Удобный инструмент с "авто-распределением" для рисования State Machine
Здравствуйте, Je suis Mamut, Вы писали:
G>>Всем ку! Есть ли в природе удобный и бесплатный инструмент для рисования State Machine, который умеет автоматически "перераспределять" блоки? G>>Много чего перепробовал, в итоге пришёл к использованию UMLet для этих целей. Он удобен всем, кроме неумения автоматически "перераспределять" диаграмму, чтобы уменьшить пересечение линий. В итоге получается, если состояний 10 и более, и кол-во переходов большое, начинается ад из пересечений этих линий.
JSM>я когда-то заходил с другой стороны, и искал алгоритм уменьшения пересечений JSM>всё что я нашел, было либо плохо, либо очено плохо JSM>я не слышал про подвижки в этой области с тех пор
А в чём проблема с алгоритмом? Слишком большое количество комбинаторных вариантов? Или невозможность формализовать "красивое" расположение?
Re[3]: Удобный инструмент с "авто-распределением" для рисования State Machine
G>А в чём проблема с алгоритмом? Слишком большое количество комбинаторных вариантов? Или невозможность формализовать "красивое" расположение?
если втупую перебирать — да, слишком большое
с красивостью — ну, наверное в качестве простого критерия можно принять количество пересечений — чем меньше, тем лучше
я не видел таких, которые решают задачу строго, а для того чтобы самому наваять — мне мозгов не хватает
видел энное количество алгоритмов, которые берут какое-то начальное состояние и пытаются итеративно его улучшить (начальное состояние задается более-менее случайно, за неимением лучших вариантов)
такие улучшатели легко сваливаются в локальный максимум, и глобальный находят только при определенном везении
это было сильно давно, все могло поменяться и я очень надеюсь что кто-нибудь придет сюда и ткнет меня носом в хороший алгоритм
Re[4]: Удобный инструмент с "авто-распределением" для рисования State Machine
Здравствуйте, Je suis Mamut, Вы писали:
G>>А в чём проблема с алгоритмом? Слишком большое количество комбинаторных вариантов? Или невозможность формализовать "красивое" расположение?
JSM>если втупую перебирать — да, слишком большое
JSM>с красивостью — ну, наверное в качестве простого критерия можно принять количество пересечений — чем меньше, тем лучше
JSM>я не видел таких, которые решают задачу строго, а для того чтобы самому наваять — мне мозгов не хватает
JSM>видел энное количество алгоритмов, которые берут какое-то начальное состояние и пытаются итеративно его улучшить (начальное состояние задается более-менее случайно, за неимением лучших вариантов)
JSM>такие улучшатели легко сваливаются в локальный максимум, и глобальный находят только при определенном везении
JSM>это было сильно давно, все могло поменяться и я очень надеюсь что кто-нибудь придет сюда и ткнет меня носом в хороший алгоритм
Интересно, возможно еще одна задачка для квантового компьютинга))
Re[5]: Удобный инструмент с "авто-распределением" для рисования State Machine
JSM>>это было сильно давно, все могло поменяться и я очень надеюсь что кто-нибудь придет сюда и ткнет меня носом в хороший алгоритм
G>Интересно, возможно еще одна задачка для квантового компьютинга))
надеюсь что нет, там просто кто-то со светлой головой должен подумать
ну, там, не знаю, взять какой-нибудь алгоритм для планаризации планарных графов и удачно расширить его на непланарные
Re[4]: Удобный инструмент с "авто-распределением" для рисования State Machine
Здравствуйте, Je suis Mamut, Вы писали:
G>>А в чём проблема с алгоритмом? Слишком большое количество комбинаторных вариантов? Или невозможность формализовать "красивое" расположение?
JSM>если втупую перебирать — да, слишком большое
JSM>с красивостью — ну, наверное в качестве простого критерия можно принять количество пересечений — чем меньше, тем лучше
нельзя , как только диаграмма становится хоть сколько-нибудь сложной, начинает получаться фигня — например вся диаграмма растянется в одну линию
я комбинировал минимум пересечений + условие кучности расположения (мин площадь рисунка\соотношение высоты ширины) + число поворотов в связях\длину связей
и еще кучу всего и подбирал коэффициенты, но сильно хвастаться все равно нечем
JSM>такие улучшатели легко сваливаются в локальный максимум, и глобальный находят только при определенном везении
ну это не такая большая проблема, если не нужна скорость на уровне рилтайм
алгоритм устойчивый к локальным минимумам (типа генетического) + лучший вариант из множества прогонов (и лучше, когда пользователь в конце выбирает из 10-ка лучших)
JSM>это было сильно давно, все могло поменяться и я очень надеюсь что кто-нибудь придет сюда и ткнет меня носом в хороший алгоритм
Здравствуйте, gyraboo, Вы писали:
G>Всем ку! Есть ли в природе удобный и бесплатный инструмент для рисования State Machine,
Попробуйте yEd Graph Editor. Я правда не использовал его именно для State Machine, но судя по этому вопросу и ответу, он должен подойти. G>который умеет автоматически "перераспределять" блоки?
умеет
Re[3]: Удобный инструмент с "авто-распределением" для рисования State Machine
Здравствуйте, gyraboo, Вы писали:
G>А в чём проблема с алгоритмом?
Нет единого алгоритма. В одних случаях нужна, например, иерархическая укладка, в других — ортогональная. Зависит от прикладной области.
G>Слишком большое количество комбинаторных вариантов?
Не только.
G>Или невозможность формализовать "красивое" расположение?
"Красивость" формализовать можно, например, посредством ограничений. Проблема в том, что они конфликтуют между собой. Если минимизируете количество пересечений ребер, то растет площадь диаграммы. Есть и другие конфликты, сейчас просто их уже не помню.
Re: Удобный инструмент с "авто-распределением" для рисования State Machine
Sybase Power Designer 16
Умеет всё, от слова абсолютно всё! Даже код генерить, и отчеты генерить.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Re[2]: Удобный инструмент с "авто-распределением" для рисования State Machine