![]() |
|
|
![]()
|
|
| Reaver |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
Добрый день.
Разрабатываю небольшой редактор схем. Столкнулся со следующей проблемой. Есть 2 прямоугольных объекта, на гранях объектов находятся точки. Необходимо между этими точками провести ломаную кривую с наименьшим числом отрезков. Отрезки ломаной должны распологаться под прямым углом, а также не пересекать прямоугольники и не лежать на их гранях. Все это выглядит приблизительно так: Пробовал решить задачу с помошью графов, но выходит слишком громоздкое решение. Подскажите, в какую сторону лучше копать? |
|||
|
||||
| maxdiver |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 381 Регистрация: 29.1.2008 Где: Саратов Репутация: 16 Всего: 18 |
А точки по одной штуке на каждом объекте что ли?
Вообще, простое и надежное решение видится всё-таки через графы. Сначала найдём те точки-кандидаты, через которые может проходить путь. Достаточно взять, во-первых, от точки на объекте отступить на 1 от объекта, а во-вторых, провести вокруг каждого прямоугольника 4 прямых, отстоящих от него на расстоянии 1, и взять всевозможные пересечения всех таких прямых. В результате получим набор точек (их будет не очень много, ну прямых будет 4+4, соответственно точек пересечения 4*4), которых достаточно для проведения искомого пути. Нам нужен кратчайший путь, поэтому строим из этих точек граф (планарный), соединяя каждую найденную точку с <=4 соседями (вверх,вниз,вправо,влево), в полученном графе находим кратчайший путь. |
|||
|
||||
| Reaver |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
Спасибо большое, это то что надо.
|
|||
|
||||
| pompei |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
Если решить эту задачу по простому, то соединительные линии не будут "учитывать" другие объекты и возможны всяческие некрасивые пересечения, сливания дающие непонятность куда идет линия и пр. Поэтому кроме предварительной автоматической прокладки траектории, необходимо предусмотреть ручное редактирование траектории и сохранение пути в файле.
На данный момент задача прокладки соединительных проводов в электронных схемах и микросхемах общего и удовлетворительного решения НЕ ИМЕЕТ. Такие крутые компании как Intel, AMD, и пр. используют для решения этой задачи в своих процессорах и пр. микросхемах исскуственный интеллект (ИИ), который "работает" в суперкомпьютерах. (Даже есть патенты зарегистрированные на эти ИИ, до которых человек не смог додуматься, а ИИ смог). И даже в этих системах имеется ручная корректировка маршрутов, и она используется очень интенсивно. --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
| Reaver |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 28.12.2006 Репутация: нет Всего: нет |
Суть задачи как раз в том, чтобы изначально создать ломаную, не пересекающую эти 2 объекта. Остальное уже лежит на совести пользователя.
|
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |