русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Декомпозиция графов.


Дата добавления: 2013-12-24; просмотров: 2391; Нарушение авторских прав


Задача декомпозиции формулируется так:задан граф, для которого необходимо определить, является ли он произведением двух графов. В случае положительного ответа нужно найти графы - сомножители.

Семантика задачи. Описана система, функционирующая во времени. Необходимо определить, нельзя ли её представить в виде системы из двух независимых блоков, как описано выше. В этом случае систему можно описать гораздо проще. Так, если система имеет 100 состояний, то при положительном решении она будет описываться как два блока, каждый из которых имеет только десять состояний.

В предыдущем разделе было показано, что если граф представим произведением, то его матрица будет иметь вид правильной клеточной матрицы.

Рассмотрим ещё раз пример, приведённый в предыдущем разделе в табл. 3.10. Предположим, что в системе состояния пронумерованы следующим образом: 1=(1aa), 2=(1bb), 3=(3bb), 4=(2bb), 5=(3aa), 6=(2aa), то естьт.е. 3-ю
и 6-ю вершины поменяем местами. Тогда таблица примет видПолучим табл. 3.11.

Таблица 3.11
 
         
       
       
       
         
         

 

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

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

  Табл. 3.11
 
         
       
       
       
         
         
                       

Есть ещё один простой критерий того, что граф не является произведением. Если Q=<C,T>, G=<A,R>, H=<B,S>, и Q=GxH, то имеет место условие:



|C|=|A|×|B|. Значит, если число вершин n графа есть простое число, то он не может быть представлен произведением графов.

Если n не простое и может быть выражено как n=kr , где k и r больше 1, то можно ставить задачу проверки этого графа на возможность представить его в виде произведения. Если граф содержит n вершин, то для проверки его необходимо в общем случае провести n! переименований. Уже для n=6 это число составит 720, для n=8 уже более 40000. Поэтому возникает необходимость сокращения объёма вычислений.

Возможность сокращения основана на следующем утверждении. Если граф представлен в виде правильной клеточной матрицы, то при переименовании вершин, связанных с переименованием вершин в одном графе-сомножителе, матрица останется правильной клеточной матрицей. Точно так же, если матрица не является правильной клеточной, то перестановка имен, связанная с изменением имён в одном графе-сомножителе, её правильной не сделает. Это значит, что если n=k×r, то необходимый перебор вариантов можно сократить в kr! раз. Например, перебор для n=6 сократится до 60 (6=2×3, сокращение в 2!×3!=12 раз).

Алгоритм декомпозиции

Рассмотрим еще раз операцию произведения. Если вершина а в первом графе-сомножителе имеет степень захода daa, а вершина b во втором графе имеет степень захода dbb, в результирующем графе вершина (a,b) будет иметь степень захода (daadbb). То же самое можно сказать и о степени исхода результирующего графа.

Алгоритм основан на том, что для каждой i –той вершины графа определяются все возможные разложения её степеней захода si=ri×ti, т.е. предполагается, что если задача решается и этой вершине сопоставлена пара (х,у), то эти вершины имеют степени захода ri и ti соответственно. То же самое относится к степени исхода вершины i: ti=pi×qi.

Проведём разложения для всех степеней вершин. Построим два разбиения вершин: разбиение на к классов по l элементов p=(p1,p2,…,pк) и разбиение на l классов по к элементов r=(r1, r2, …, rl), n=k×l, чтобы произведением этих разбиений было разбиение на одноэлементные множества.

В один класс p попадут вершины а и b, если для них в разложении raa=rbb и paa=pbb.

В один класс r попадут вершины а и b, если в разложениях taa=tb и qa=qb.

Если такие разбиения построить можно, то ему сопоставляется перестановка элементов по следующему правилу. Зафиксируем порядок блоков в разбиениях p и r. Сопоставим этому порядку перестановку: вначале старшинство определяется по разбиению p, затем внутри этих блоков - по разбиению r.

Рассмотрим метод на примере. Пусть граф описывается матрицей табл. 3/.12, разложения разложения s и t приведены в этой таблице. Значение степени, равное 0, представляется произведением 0 на произвольное число, обозначаемое как х. Первой задачей является задача выбора среди разложений тех, которые приведут к разбиениям вершин по степеням исхода и захода.

При выборе разложений будем учитывать следующее.

Для вершины 4 выбираем разбиение 2×2, так как вершиныу с сомножителем 4 в пару не найти. В разложения p вершины 4 и 5 должны быть в разных блоках, так как у них обе компоненты по s разные. То же самое по отношению t для вершин 3 и 4. Значит, 3 и 5 будут в одном блоке. Вершины 3 и 6 должны быть в одном блоке по t и в разных блоках по s, 1 и 5 – в разных блоках по t, чтобы по первой компоненте их можно было объединить в разложении r. Курсивом выделены разбиения. В итоге получаем разложение p={{1,4,6}, {2,3,5}}.

              Таблица 3.12
  S
        2=1×2=2×1
        2=1×2=2×1
            0=х×0=0×х
    4=2×2=1×4=4×1
          1=1×1
            0=х×0=0×х
t 0=0×х =х×0 2=1×2 =2×1 1=1×1 4=2×2 1×4=4×1 0=х×0 =0×х 2=1×2 =2×1  

После этого однозначно получаем r={{1,5},{3,6},{2,4}}.

Зафиксируем порядок в этих разбиениях. Тем самым мы предполагаем, что если решение существует, то граф можно представить произведением двух графов, один из которых содержит 2 вершины (пусть, например, вершины а и b), второй содержит три вершины (пусть, например, 1, 2 и 3). Тогда вершинам первого блока разбиения p сопоставлены элементы декартова произведения с вершиной а в качестве первого слагаемого, для вершин второго блока первым слагаемым будет b.

              Табл. 3.12
  s
        2=1×2=2×1
        2=1×2=2×1
            0=х×0=0×х
    4=2×2=1×4=4×1
          1=1×1
            0=х×0=0×х
t 0=0×х =х×0 2=1×2 =2×1 1=1×1 4=2×2 1×4=4×1 0=х×0 =0×х 2=1×2 =2×1  

 

Аналогично в соответствующем декартовом произведении вторым сомножителем для вершин первого блока разбиения r будет вершина 1, второго блока – вершина 2, третьего блока – вершина 3. Составим разбиениям p и r упорядочение <1,4,6,5,2,3>, которое «испортило» матрицу, исправим её, используя обратное упорядочение

1 2 3 4 5 6

1 5 6 2 4 3.

 

Применим эту перестановку к матрице, получим табл.3.13. Как видно из таблицы, она является правильной клеточной матрицей, что приводит к решению: граф представим произведением двух графов, матрицы смежности которых легко получаются из табл. 3.13 Матрицы графов-сомножителей представлены в табл. 3.14 и 3.15.

Таблица 3.13
 
         
       
       
   
           
           
Табл. 3.13  
 
         
       
       
   
           
           
               
Таблица. 3.14   Табл.ица 3.15
  а b    
aa        
b    
             
       

 



<== предыдущая лекция | следующая лекция ==>
Операции над графами. | Сетевые графики


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.689 сек.