- •Тема 7. Алгоритмы трассировки соединений
- •7.1 Общая характеристика методов трассировки
- •7.2 Алгоритмы построения минимальных деревьев соединений
- •7.2.1 Алгоритм Прима - алгоритм трассировки проводного монтажа
- •7.2.2 Построение деревьев печатных соединений. Дерево Штейнера.
- •7.3 Распределение соединений по слоям.
- •7.4 Очередность прокладки соединений
- •7.5 Волновой алгоритм трассировки печатных проводников (алгоритм Ли)
- •7.5.1 Основные положения волнового алгоритма
- •7.5.2 Трассировка при минимизации длины соединений.
7.2 Алгоритмы построения минимальных деревьев соединений
Задача трассировки проводного монтажа – для множества выводов, соответствующих эквипотенциальным точкам некоторой схемы, требуется разработать монтажную схему соединения этих выводов в единую цепь с минимальной суммарной длиной проводников.
Математической моделью монтажной схемы является граф, вершины которого соответствуют выводам рассматриваемой цепи, ребра – монтажным проводникам. С точки зрения теории графов монтажное соединение должно представлять собой дерево, то есть граф без циклов.
Фрагмент графа – группа соединенных ребрами вершин.
Изолированная вершина – вершина, не соединенная ни с одной другой вершиной.
Степень вершины графа – число соединенных с ней ребер.
Таким образом, задача трассировки проводного монтажа сводится к задаче теории графов. А именно: для заданного множества вершин требуется построить дерево, включающее в себя все эти вершины и имеющее минимальную суммарную длину ребер.
7.2.1 Алгоритм Прима - алгоритм трассировки проводного монтажа
Это наиболее эффективный метод решения задачи трассировки с точки зрения реализации на ЭВМ. В основе метода лежат два следующих принципа:
всякая изолированная вершина соединяется с ближайшей вершиной;
всякий изолированный фрагмент соединяется с ближайшей вершиной кратчайшим ребром.
Расстояние от вершины до фрагмента – расстояние между этой вершиной до ближайшей к ней вершины фрагмента.
А
лгоритм
построения минимального дерева:
1. Для произвольного вывода цепи найти ближайший вывод
и
провести соединение.
2 . На каждом последующем шаге из множества свободных
в
ыводов
(не подсоединенных, изолированных
вершин) выбрать тот,
который находится ближе остальных к группе уже связанных выводов,
и подсоединить его к этой группе по кратчайшему пути. Рис.7.2.1
Это способ наращивания фрагментов или последовательный способ.
Полученное дерево будет иметь минимальную суммарную длину соединений. Алгоритм наиболее эффективен при числе вершин (выводов), входящих в цепь не более 15.
Минимальное дерево, построенное по алгоритму Прима, обладает тем свойством, что степень любой вершины (число инцидентных ребер) не превышает шести.
Если при разработке монтажной схемы требуется, чтобы максимальное число проводников, подходящих к одному выводу, было больше шести, то используют алгоритм Прима с модифицированными принципами:
всякая изолированная вершина соединяется с ближайшей вершиной имеющей степень меньше δ;
всякий изолированный фрагмент соединяется с ближайшей вершиной, имеющей степень меньше δ, кратчайшим ребром.
Возможен параллельный способ наращивания фрагментов минимального дерева, т.е. одновременно строится два фрагмента и проверяется, достигла ли степень хотя бы одной вершины предельного числа δ. Если не достигла, то фрагменты соединяются. Процесс продолжается до построения дерева, связывающего все заданные вершины.
Пример параллельного алгоритма трассировки.
Дано:
число вершин n =6, которые принадлежат одной цепи и которые надо соединить;
максимально допустимая степень вершин δ =2;
массивы координат всех вершин X и Y.
Необходимо построить минимальное связывающее дерево соединений.
-
Х
5
6
1
2
2
1
У
5
2
2
3
5
6
Введем пять вспомогательных массивов Д, А, В, Л и М.
В массив Д заносим расстояния между каждой парой вершин, номера которых записываются в массивы А и В. Расстояние между парой вершин:
—————————
Д = √(хi-хj)2 + (уi-уj)2
Массив Л показывает степень вершин. В массив М заносят метки по номеру вершин (все вершины одного фрагмента имеют один номер, что бы не было цикличности).
с6
с1
с3
с5
с2
с4
I
III
II
V
IV
Рис.7.2.2
Рассчитываем расстояния между каждой парой вершин и заполняем массивы Д, А, В.
Д |
√10 |
5 |
√13 |
3 |
√17 |
5 |
√17 |
5 |
√41 |
√2 |
√10 |
4 |
2 |
√10 |
√2 |
А |
1 |
1 |
1 |
1 |
1 |
2 |
2 |
2 |
2 |
3 |
3 |
3 |
4 |
4 |
5 |
В |
2 |
3 |
4 |
5 |
6 |
3 |
4 |
5 |
6 |
4 |
5 |
6 |
5 |
6 |
6 |
Располагаем элементы массива Д. в порядке возрастания.
Д |
√2 |
√2 |
2 |
3 |
√10 |
√10 |
√10 |
√13 |
4 |
√17 |
√17 |
5 |
5 |
5 |
√41 |
А |
3 |
5 |
4 |
1 |
1 |
3 |
4 |
1 |
3 |
1 |
2 |
1 |
2 |
2 |
2 |
В |
4 |
6 |
5 |
5 |
2 |
5 |
6 |
4 |
6 |
6 |
4 |
3 |
3 |
5 |
6 |
В процессе построения дерева заполняем массивы Л и М, которые первоначально имеют вид:
-
Л
0
0
0
0
0
0
М
1
2
3
4
5
6
1шаг.Соединяем вершины 3 и 4, номера которых находятся в первой позиции массивов А и В; присваиваем им одинаковые метки (№3), степени этих вершин равны единице;
-
Л
0
0
1
1
0
0
М
1
2
3
3
5
6
На каждом последующем шаге выбираем очередную пару вершин, проверяем возможность их соединения и при положительном исходе проверки соединяем.
2шаг. Соединяем вершины 5 и 6:
-
Л
0
0
1
1
1
1
М
1
2
3
3
5
5
3шаг. Соединяем вершины 4 и 5:
-
Л
0
0
1
2
2
1
М
1
2
3
3
3
3
4шаг. Соединяем вершины 1 и 2:
-
Л
1
1
1
2
2
1
М
1
1
3
3
3
3
Получили два фрагмента.
5шаг. Соединяем вершины 1 и 6 (не с 5, т.к. будет δ>2):
-
Л
2
1
1
2
2
2
М
1
1
1
1
1
1
