double arrow

Алгоритм Прима - алгоритм трассировки проводного монтажа

Это наиболее эффективный метод решения задачи трассировки с точки зрения реализации на ЭВМ. В основе метода лежат два следующих принципа:

· всякая изолированная вершина соединяется с ближайшей вершиной;

· всякий изолированный фрагмент соединяется с ближайшей вершиной кратчайшим ребром.

Расстояние от вершины до фрагмента – расстояние между этой вершиной до ближайшей к ней вершины фрагмента.

Алгоритм построения минимального дерева:

1. Для произвольного вывода цепи найти ближайший вывод

и провести соединение.

2. На каждом последующем шаге из множества свободных

выводов (не подсоединенных, изолированных вершин) выбрать тот,

который находится ближе остальных к группе уже связанных выводов,

и подсоединить его к этой группе по кратчайшему пути. Рис.7.2.1

Это способ наращивания фрагментов или последовательный способ.

Полученное дерево будет иметь минимальную суммарную длину соединений. Алгоритм наиболее эффективен при числе вершин (выводов), входящих в цепь не более 15.

Минимальное дерево, построенное по алгоритму Прима, обладает тем свойством, что степень любой вершины (число инцидентных ребер) не превышает шести.

Если при разработке монтажной схемы требуется, чтобы максимальное число проводников, подходящих к одному выводу, было больше шести, то используют алгоритм Прима с модифицированными принципами:

1. всякая изолированная вершина соединяется с ближайшей вершиной имеющей степень меньше δ;

2. всякий изолированный фрагмент соединяется с ближайшей вершиной, имеющей степень меньше δ, кратчайшим ребром.

Возможен параллельный способ наращивания фрагментов минимального дерева, т.е. одновременно строится два фрагмента и проверяется, достигла ли степень хотя бы одной вершины предельного числа δ. Если не достигла, то фрагменты соединяются. Процесс продолжается до построения дерева, связывающего все заданные вершины.

Пример параллельного алгоритма трассировки.

Дано:

· число вершин n =6, которые принадлежат одной цепи и которые надо соединить;

· максимально допустимая степень вершин δ =2;

· массивы координат всех вершин X и Y.

Необходимо построить минимальное связывающее дерево соединений.

Х            
У            

Введем пять вспомогательных массивов Д, А, В, Л и М.

В массив Д заносим расстояния между каждой парой вершин, номера которых записываются в массивы А и В. Расстояние между парой вершин:

—————————

Д = √(хij)2 + (уij)2

Массив Л показывает степень вершин. В массив М заносят метки по номеру вершин (все вершины одного фрагмента имеют один номер, что бы не было цикличности).

 
 
с6


с1
I
II
с5
с3
с2
с4
IV
III
V

Рис.7.2.2

Рассчитываем расстояния между каждой парой вершин и заполняем массивы Д, А, В.

Д √10   √13   √17   √17   √41 √2 √10     √10 √2
А                              
В                              

Располагаем элементы массива Д. в порядке возрастания.

Д √2 √2     √10 √10 √10 √13   √17 √17       √41
А                              
В                              

В процессе построения дерева заполняем массивы Л и М, которые первоначально имеют вид:

Л            
М            

1шаг. Соединяем вершины 3 и 4, номера которых находятся в первой позиции массивов А и В; присваиваем им одинаковые метки (№3), степени этих вершин равны единице;

Л            
М            

На каждом последующем шаге выбираем очередную пару вершин, проверяем возможность их соединения и при положительном исходе проверки соединяем.

2шаг. Соединяем вершины 5 и 6:

Л            
М            

3шаг. Соединяем вершины 4 и 5:

Л            
М            

4шаг. Соединяем вершины 1 и 2:

Л            
М            

Получили два фрагмента.

5шаг. Соединяем вершины 1 и 6 (не с 5, т.к. будет δ>2):

Л            
М            

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: