Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2013-02-16 14:33:48 ЛС | профиль | цитата
tom-it писал(а):
Если я правильно понимаю(в чем я уже сомневаюсь) то в матрице нужно учитывать все возможные комбинации

Вроде правильно.
У меня есть 4 бита, для характеристики "лабиринта": Body, Pin, Hwire, Vwire
Прочитал координаты элемента - заполнил некий прямоугольничек битом Body
Прочитал пин - установил соответствующий бит. Тут правда есть маленькое рукосуйство: для красного пина я типа сбрасываю бит Body...
Но все одно: 2 бита => 4 комбинации: пусто, элемент, красный пин, черный пин.
Прочитал координаты проводника - поставил один из битов (Hwire или Vwire) вдоль всей его длины.
Прочитал координаты второго проводника - то же самое. И совершенно при этом не интересуюсь, какие биты уже стоят или не стоят.

Все, диалог со средой закончен, необходимая информация (4-х битная по всему полю) типа собрана.

Теперь прокладываю трассу: вдоль нее собираю все штрафы из первых 4-х столбцов таблицы. Информация о "лабиринте" при этом не трогается, ставятся только "стенки". Чтобы не ходить там (с учетом не только координаты, но и направления), где УЖЕ был -- но это совсем другие биты.
И, ПЛЮС к этим штрафам, добавляю штрафы из 5-го столбца. Коли прокладываемая трасса петляет как заяц. Т.е., в точках изменения направления.

Вот и вся наука.

------------ Дoбавленo в 14.33:
37.45.27.68 писал(а):
Да ладно вам мучать этот "умный обход", все равно не выжать из него больше чем уже есть

Мучать - не есть самое плохое
Результаты рукосойства порой имеют положительные побочные эффекты: тонкий баг какой ни то вскроется
Главное, чтобы этот процесс был ограничен во времени. Не стал перманентным...

Потом уже все: лучшее - враг хорошего. Но это -- ПОТОМ.

карма: 9

0