Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
2.2. Процедура порождения всех деревьев графаПоскольку, как уже упоминалось в начале этого раздела, число остовных деревьев графа очень быстро растет с ростом числа его дуг, то, очевидно, нужен эффективный метод порождения исчерпывающего, но без повторений, списка остовных деревьев. Один из таких способов состоит в использовании элементарных преобразований деревьев, описанных в предыдущем разделе, для последовательного порождения остовов, начиная с некоторого начального остова (кликните для просмотра скана) Маеды [42], Пауля [471, Чена [8] и других [20]. Однако процедурам, опирающимся на элементарные преобразования деревьев, присущ следующий недостаток: для порождения нового дерева необходимо привлекать все найденные ранее деревья. Число деревьев становится столь большим, что для хранения их необходимо (с вычислительной точки зрения) использовать вспомогательные устройства памяти, так как быстродействующая оперативная память для этой цели мала. Поскольку при обращении к вспомогательным устройствам памяти значительно возрастает время вычисления, то любой метод, базирующийся на элементарных преобразованиях деревьев, оказывается неэффективным, если не будут применяться такие преобразования, в которых используется только последнее из полученных остовных деревьев. (См. раздел 2.4.) Очевидно, что наилучшим будет такой алгоритм порождения всех остовов графа, когда список остовов строится без повторений и построенные остовы записываются во вспомогательную память, но в процессе работы алгоритма из этой памяти ничего не берется. В следующем разделе будет описан один такой алгоритм, основанный на поиске, использующем дерево решений. В работах [10, 9, 43] даются другие алгоритмы, базирующиеся на порождении всех главных квадратных подматриц приведенной матрицы инциденций 2.2.1. Основной метод. Мы приводим описание алгоритма для случая неориентированного графа, но его распространение на ориентированные графы — для порождения всех остовных древовидностей ориентированного графа — совершенно очевидно. Первый шаг метода состоит в приписывании номеров ребрам графа Для облегчения манипуляций с поддеревьями в каждом поддереве выделяют произвольным образом корень (некоторую вершину поддерева) и затем рассматривают поддерево уже как Рис. 7.6. (см. скан) Замена корня древовидность. Для организации проверки на возможность образования цикла (при добавлении ребра) каждую вершину «сменить» свои корневые пометки на Вторая пометка A. Замена корня дерева Если корнем дерева Изменение пометок «предшествования» 1. Пусть 2. Положить 3. Шаг обновления: 4. Если 5. Положить Изменение корневых пометок 1. У всех вершин, имеющих корневую пометку Б. Сращивание двух поддеревьев Если осуществлено сращивание двух поддеревьев (i) У вершин с корневой пометкой (ii) Заменить в дереве Расщепление дерева на две части Поскольку метод порождения деревьев, рассматриваемый ниже, является поиском, использующим дерево решений, то возникает необходимость удаления некоторых ребер (на шагах возвращения), чтобы испытать затем другие ребра. В такой ситуации удаление ребра приводит к расщеплению некоторого дерева на две части, например на
1. Положить 2. Найти все вершины 3. Шаг обновления: Следует отметить, что ни у одной вершины, кроме нового корня 2.2.2. Описание алгоритма. Возьмем произвольную вершину х графа Шаг 1. Приписать вершинам пометки: Шаг 2. Выбрать для исследования некоторое ребро. Например, (i) Если (ii) Если Шаг 3. Срастить два поддерева, у которых вершины имеют корневые пометки Шаг 4. Отобрав Шаг 5. (Возвращение.) Удалить ребро, добавленное последним. Предположим, что таким ребром является
Рис. 7.7. Граф из примера 2.3. единственное оставшееся для добавления ребро, В противном случае надо обновить пометки, действуя так, как указано в пункте В, положить
|
1 |
Оглавление
|