Есть пакет для моделирования сложных процессов собственной разработки, кратко говоря, пользователю предлогаеться: 1) формально неограниченая по размерам рабочая область 2) набор елементов (графически: круги, треугольники, прямоугольники) с определенным количеством входов/выходов 3) линия соединения елементов в звенья (траектория линии соединения задаеться вручную, отмечая ее точки изгиба) Необходимо добавить опцию автоматического построения линий соединений отмечая выход одного елемента и вход другого. Необходимо строить пересечения ортогонально, с минимальным числом изгибов линии соединения. Есть аналогичные опции построения минимальных соединение в PCAD, Circuit Maker и еще нескольких подобных пактах. Задача немного сходна с трассировкой печатных плат. Один из вариантов рещения: построение рабочей области в памяти как матрицы, где значения(0 - не закрашена, 1 - область елемента, 2 - соедниение и т.п.) каждой ее ячейки будет аналогом пикселя в графическом пространтсве. Таким образом задача сводиться к: поиску минимального пути в лабиринте(0 - коридор). Но у этого метода есть ряд недостатков.
В частности тебе придётся хранить всю матрицу для "формально неограниченной по размерам рабочей области" в памяти.
00zic Типичная задача по графам. Матрица - это одно из 3х представлений графа. А ничего что пути будут пересекаться?
пересекаться конечно возможно, есть возможность организовать обратную связь. нашел материал кое-какой: http://forum.sources.ru/index.php?s=f694f18c59d4c455da29d2a1d25aec18&showtopic=164426