Алгоритм построения дерева-цепочки. Ребро максимальной длины в маршруте. Алгоритм построения матрицы контуров и сечений

Страницы работы

Содержание работы

1.2.2Алгоритм  построения  дерева-цепочки.

В  ряде  практических  задач  ограничения  на  степени  вершин  дерева  p=2 . В этом  случае  более  эффективным , чем  модифицированный  алгоритм  Прима , является  эвристический  алгоритм , в  котором  строится  замкнутый

маршрут  минимальной  длины , проходящий  через  все  вершины . Затем  из  него  удаляется  ребро  максимальной  длины ; получается  КСД  с    q(x j)£" jÎx .

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

 Пусть  полный  граф  G(X,V) , имеющий  n  вершин , задан  матрицей  смежности  D .

M - множество ребер , вошедших  в  маршрут

Шаг1. Выбрать ребро (x i* ,x j*)  такое ,что d(x i* ,x j*)=min d(x i ,x j);

                                                                                           i ,jÎ x

            M={(x i* , x j *),(x j* ,x i*)}- начальный  замкнутый  маршрут .

            T={x i* ,x j*} ; L=2d(x i* ,x j*)- длина  начального  маршрута .

Шаг2. Выбрать  вершину  x rÎ x \ T такую , что 

DL= d(x i* ,x r)+ d(x r  ,x j*)- d(x i* ,x j*)=min  min  [d(x i ,x r)+ d(x r ,x j)- d(x i ,x j)]

                                                    (x i ,x j)ÎM; x rÎx\T

            Включить  xr  в  дерево : Т=ТÈXr

            Включить   в  M  вместо  ребра  (xj* ,xi*) два  ребра  (xi* ,xr),(xr ,xj*),

            т. M=M\(xi* ,xj*) ; M=MÈ(xi* ,xr)È(xr ,xj*) ;

                                   L=L+DL .

            Если  êT ç=n , то  перейти  к  шагу  3 , иначе  повторить  шаг  2 .

Шаг3. Среди  ребер  (x,xj)ÎM  выбрать  такое  (xi* ,xj*) , что 

d(xi* ,xj*) = max d(xi ,xj) .              

                            (xi ,xj)ÎM

             Удалить  ребро  (xi* ,xj*)  из  маршрута :

                  M=M\(xi* ,xj*) ;

                                    L=L-d(xi* ,xj*) .

             Полученное  дерево , описываемое  множеством  вершин  Т  и               

             множеством  ребер  М=А , есть  дерево , достаточно  близкое  к                                                     

             КСД .

Пример1.5.  Построение   дерева   для   того   же   графа,  что   и   в 

примере 1.3.  (описываемого  матрицей  D ).

Шаг1.  Выбираем  ребро  минимальной  длины  d(x2 ,x4)=d(x4 ,x2)=1 .

T={x2 ,x4} ;

        M={(x2 ,x4) , (x4 ,x2)} ;

        T \ x={x4 ,x3 ,x5 ,x6} .

Шаг2. Итер.1 Удалить  можно  ребро  (x2 ,x4).

D L(x1)=d(x2 ,x1)+d(x1 ,x4)-d(x2 ,x4)=5+2-1=6 ;

D L(x3)=d(x2 ,x3)+d(x3 ,x4)-d(x2 ,x4)=3+3-1=5 ;

D L(x5)=d(x2 ,x5)+d(x5 ,x4)-d(x2 ,x4)=8+3-1=10 ;

D L(x6)=d(x2 ,x6)+d(x6 ,x4)-d(x2 ,x4)=6+4-1=9 ;    

           xr=x3 ;T={x2 ,x3 ,x4 } ;M={(x2 ,x3) , (x3 ,x4) , (x4 ,x2)} ; T \ x={x1 ,x5 ,x6} ;

            Итер.2 Удалить  можно  ребра  (x2 ,x3)  или  (x3 ,x4)  или  (x4 ,x2) .

a)   ребро  маршрута  (x2 ,x4):

D L(x1)=d(x2,x1)+d(x1,x3)-d(x2,x3)=5+4-3=6;

D L(x5)=d(x2,x5)+d(x5,x3)-d(x2,x3)=8+7-3=12;

D L(x6)=d(x2,x6)+d(x6,x3)-d(x2,x3)=6+9-3=12;

b)   ребро  маршрута  (x3,x4):

DL(x1)=d(x3,x1)+d(x1,x4)-d(x3,x4)=4+2-3=3;

DL(x5)=d(x3,x5)+d(x5,x4)-d(x3,x4)=7+3-3=7;

DL(x6)=d(x3,x6)+d(x6,x4)-d(x3,x4)=9+4-3=10;

c)   ребро  маршрута  (x4,x2):

DL(x)=2+5-1=6;

DL(x)=3+8-1=10;

DL(x)=4+6-1=9;

       min    min   DL=3;  xr=x1;  (xi*,xj*)=(x3,x4);

  (xi,xj)ÎM  rÎx\T

       T={x1,x2,x3,x4};  M={(x2,x3),(x3,x1),(x1,x4),(x4,x2)};  x\T={x5,x6}.

 Итер 3. Удалить  можно  ребра  маршрута  (x2,x3)  или  (x3,x1)  или            (x1,x4) или  (x4,x2); 

 ребро  (x2,x3):  DL(x5)=8+7-3=12;

DL(x6)=6+9-3=12;

Похожие материалы

Информация о работе