Научная статья на тему 'Об одном алгоритме преобразования формы представления графа'

Об одном алгоритме преобразования формы представления графа Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
46
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Об одном алгоритме преобразования формы представления графа»

ИЗВЕСТИЯ

ТОМСКОГО ОРДЕНА ОКТЯБРЬСКОЙ РЕВОЛЮЦИИ И ОРДЕНА ТРУДОВОГО КРАСНОГО ЗНАМЕНИ ПОЛИТЕХНИЧЕСКОГО ИНСТИТУТА имени С. М. КИРОВА

Том 243 1972

ОБ ОДНОМ АЛГОРИТМЕ ПРЕОБРАЗОВАНИЯ ФОРМЫ ПРЕДСТАВЛЕНИЯ ГРАФА

Ю. Н. ЕФИМОВ, П. А. СЕДЕЛЬНИКОВ (Представлена научным семинаром ОВТ НИИ АЭМ)

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

1. б—(/, Г) —перечень вершин и их прямых отображений.

2. б=(/, Г-1) —перечень вершин и их обратных отображений.

3. в — (/, и) —перечень вершин и дуг.

Обычно алгоритмы анализа сетевых моделей требуют определенной формы задания топологии, которая часто может не совпадать с исходной формой представления, определяемой сложившимися формами документов, традициями или просто удобством формирования. Например, в АСУП-Томск [2] при расчете планов запуска сетевая модель должна быть представлена в форме 1, а при формировании ведомости комплектации — в форме 2. Причем исходная топология в свою очередь может быть представлена в форме 1 или 2 в зависимости от используемых для ее составления форм конструкторской документации (сводные или угловые спецификации изделия).

В связи с этим возникает задача алгоритмического преобразования формы представления графа. Переход от 1 и 2 форм задания к 3 и от 3 к 1 и 2 тривиален и в дальнейшем рассматриваться не будет. Более сложным случаем является преобразование формы 1 в форму 2 и наоборот.

Опишем вторую задачу преобразования формы представления графа, возникающую в АСУП, использующих сетевые модели, составленные на основе конструкторской документации на изделия [2]. Для упрощения и ускорения вычислений при формировании планов запуска желательно иметь только сводную сетевую модель на несколько товарных изделий, имеющих много общих продуктов (приборов, узлов, деталей и т. д.). Однако трудности составления сводных сетевых моделей в силу существующих на предприятии форм конструкторской документации вызывает необходимость разработки алгоритма для машинного «сшивания» (объединения) частных сетей товарных изделий в сводную сеть заказа. Наличие такого алгоритма обеспечивает возможность формирования отдельных массивов топологии разными исполнителями независимо друг от друга, что повышает достоверность входной информации. Поскольку описываемая задача является более общей и включает в себя первую задачу как частный случай, дадим более подробное описание ее решения.

В терминах теории графов [1] задачу «сшивания» сетевых моделей можно сформулировать следующим образом:

Дано п графов ах={1и и{)9 Ок=(1к, С/к), Оп=(/ш £/п),

где:

/к — множество вершин графа

£/к — множество дуг графа 6К, П£/к=^0.

Каждой дуге (/к, ]'к)^и к поставлена в соответствие некоторая совокупность параметров М\к> Требуется найти граф б = (/, £/), где

п п

= и 1ю ^ = ^^к»пРичем каждая дуга должна сохранить со-

= 1 к=-1

-ответствующие параметры МЬу

Для решения поставленной задачи можно применить операцию объединения множеств дуг £/К(£ = 1, я). Для этого, рассматривая дуги всех исходных графов как числа, составленные из кодов начальной и конечной вершин каждой дуги, необходимо их упорядочить по возрастанию (или убыванию), после чего из полного множества дуг исключить повторяющиеся. Однако реализация такого алгоритма на ЭВМ приведет к большим затратам машинного времени в силу значительных объемов исходной информации и неэффективности существующих [3] алгоритмов внешней сортировки.

Учитывая вышеизложенное, а также представление исходных графов в виде множества вершин /к и их прямых отображений Гш (форма П, нами предлагается следующий алгоритм сшивания, состоящий из 4 основных этапов.

На первом этапе просматривается информация о топологиях всех

и

«сшиваемых» сетей и формируется множество / = £/ /к которому ставит-

к = 1 '

ся в соответствие множество Ш. Каждый элемент определяет ло-

кальную степень [4] р\к вершины некоторого графа 0* = (/, Г), где

п

Процедура построения множеств I н XV выполняется за один просмотр исходной информации.

На втором этапе производится упорядочение множества I по возрастанию величин его элементов, что позволяет ускорить процесс исключения повторяющихся шифров вершин в исходном множестве. При сортировке / необходимы преобразования ив? с тем, чтобы не нарушилось однозначное соответствие между этими двумя множествами. Поскольку величина [/] много меньше по сравнению с объемом исходных данных, то сортируемая информация обычно вмещается в оперативную память машины и можно применить эффективные алгоритмы внутренней сортировки (например, алгоритм поразрядной сортировки). После сортировки / произведем перекодировку вершин в исходной информации. Перекодировка заключается в замене десятичных шифров в первых строках записей (г'ю) на некоторые их восьмеричные эквиваленты (г8). За восьмеричный шифр /8 вершины /ю^/ удобно принять ее порядковый номер в отсортированном массиве /. В результате получим сквозную нумерацию вершин (от единицы подряд) в восьмеричной системе счисления. Перекодировка осуществляется также за один просмотр исходной информации.

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

Разобьем упорядоченное множество / на подмножества.

V = [ги «2, —> -М' ^ = {*«+ь— Ч } 1К = Ц, —, 1Ш = ¿п}

ш

такие, что и 1К = I, 1кП11 = 0 при кф1. к = 1

п

а

Мг.

и/

Рис. 1. Распределение оперативной памяти да третьем этапе работы алгоритма «сшивания». П — рабочая программа; А — массив относительных адресов (переменный); Мс — массив для размещения информации о подграфах; 0*к I — поле для считывания

информации с МЛ; О — программа-диспетчер.

Пусть на каждом шаге работы алгоритма (3-го этапа) объем Мо оперативной памяти (рис. 1) позволяет разместить все записи для вершин то есть сформировать подграф Тогда процесс формиро-

вания подграфа 6'*к можно осуществить за один просмотр исходной информации следующим образом.

Каждой вершине поставим в соответствие элемент а^А, являющийся относительным адресом размещения в оперативной памяти записи для этой вершины. Элементы а-х нетрудно вычислить, используя рекуррентное соотношение:

а- = а- + ю- , 1

«1д.+к + 1 '[а + к "Г 1 •

Для первого по порядку элемента имеем а — 0.

Теперь, просматривая исходную информацию, для вершин записи переписываем в поле в соответствии с адресами а^А. В результате за один просмотр исходной информации подграф 0*к будет сформирован и, отсортировав элементы внутри каждой записи, его можно переписать на МЛ. Очевидно, что после выполнения подобной процедуры с каждым из подмножеств /к(&=1, ..., т) будет сформирован граф б*.

Так как после перекодировки мы получаем сквозную нумерацию вершин, то при формировании подмножеств достаточно запоминать только их начальные гкн и конечные ¿кк элементы.

В целом работа третьего этапа алгоритма сводится к следующему. Принимается Л = 0, ТИо^сопэ^ Формируется /н1==1 для А Для каждого элемента ¿, вводимого в Л, должно выполняться условие:

Если для некоторого элемента 1\ это условие не выполняется, то ¿к1 = ¿1—1, а /н2 = *1. При выполнении условия элемент относится к в А заносится соответствующий относительный адрес и изменяется значение Мо.

После получения Р формируется соответствующий подграф, затем подмножество /2, для которого начальный элемент уже получен, и т. д. до формирования последнего подграфа 0*т. Нетрудно видеть, что при выполнении третьего этапа требуется т просмотров исходной информации. Отметим также, что количество элементов в /к может быть различным. Однако если все записи имеют постоянную длину, то за счет переменных по величине полей А и Л1С предлагаемый алгоритм обеспечивает что повышает быстродействие.

На четвертом этапе просматривается б* и из него исключаются повторяющиеся дуги. Причем исключаются только те дуги, у которых равны и соответствующие параметры М^. В противном случае необходимо отпечатать информацию о допущенной ошибке в одной из «сшиваемых» топологий. Предлагаемый алгоритм инвариантен к 1 и 2 формам представления топологии.

Для решения первой задачи (преобразования 1-й формы во вторую, и наоборот) предлагается алгоритм, использующий идеи общей задачи и состоящий из двух этапов. Пусть исходная топология задана в форме 1, тогда на первом этапе формируется множество каждый элемент которого хю^ИР равен количеству дуг, входящих в вершину /е/ (т. е. количеству элементов /еГ]-1). Формирование множества № заключается в просмотре всех записей исходной информации и выполнении для каждого /, входящего в /-ю запись. На втором этапе формируется граф (/, Г-1). Для этого множество / также разбивается на пересекающиеся подмножества /к(&=1, т). За каждый просмотр исходной информации формируется подграф <3К=(/К, Г~1к), включающий записи только для вершин где к — порядковый номер просмотра.

Следует отметить, что предлагаемый алгоритм также инвариантен к первым двум формам представления топологии графа.

Вышеизложенные алгоритмы были реализованы на ЭВМ «Урал-11 Б» и показали достаточно высокую эффективность. Предложенная методика может быть также применена для внешней сортировки записей переменной длины.

ЛИТЕРАТУРА

1. К. Берж. Теория графов и ее применения. M.f изд-во ИЛ, 1962.

2. Ю. Н. Ефимов, В. И. К и зев, В. И. Невраев, Ф. И. Перегудов, П. А. Седельников. Основные принципы построения и функционирования АСУП-Томск. (Настоящий сборник).

3. С. Б. Погреб и некий, Л. С. Л оз и hcik ий. К вопросу о сортировке информации с помощью магнитных лент. «Кибернетика», № 2, 1965.

4. О. Ope. Теория графов. М., «Наука», 1968.

i Надоели баннеры? Вы всегда можете отключить рекламу.