Научная статья на тему 'Синтез оптимальных структур данных для решения задач на графах'

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

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

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Пасечников Константин Алексеевич, Иванова Галина Сергеевна

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Пасечников Константин Алексеевич, Иванова Галина Сергеевна

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

Synthesis of Optimal Data Structures for Solving Problems on Graphs

The model is offered which allows one to adequately express characteristic features of the basic data structures used for representation of graph models. An operation of consolidating the basic data structures is formally defined, which makes it possible to automate the computation of time and capacity parameters of the obtained combined data structures. The formal statement is offered for the problem of synthesis of the single-level combined data structure, being optimal from view of minimal computing difficulties of execution of the specified operation set, on condition that the capacity difficulties of the structure are admissible. Refs.4. Figs.3.

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

4. Б а с к а к о в С. С. Алгоритм автоматического выбора опорных узлов в беспроводных сенсорных сетях // Тр. конф. "Информационные технологии и системы" (ИТиС-2007). - Звенигород: 2007. - С. 2-8.

Статья поступила в редакцию 21.01.2008

Сергей Сергеевич Баскаков родился в 1981 г., окончил МГТУ им. Н.Э. Баумана в 2006 г. Аспирант кафедры "Информационные системы и телекоммуникации" МГТУ им. Н.Э. Баумана. Автор 3 научных работ в области беспроводных сетей и систем связи.

S.S. Baskakov (b. 1981) graduated from the Bauman Moscow State Technical University in 2006. Post-graduate of "Information Systems and Telecommunications" department of the Bauman Moscow State Technical University. Author of 3 publications in the field of wireless networks and communication systems.

УДК 004.422.6

К. А. Пасечников, Г. С. Иванова

СИНТЕЗ ОПТИМАЛЬНЫХ СТРУКТУР ДАННЫХ ДЛЯ РЕШЕНИЯ ЗАДАЧ НА ГРАФАХ

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

При решении задач структурного анализа и синтеза на графах применяется большое число различных структур данных. Они используются для хранения не только основной (информации о графе), но и различной вспомогательной информации. Как было показано в работах [1-4], способ организации элементов структуры данных существенно влияет на вычислительную и емкостную сложности программ решения задач на графах. В работах [2, 3] показано, что применение лишь базовых структур данных для решения задач на графах неэффективно в силу отсутствия такой базовой структуры данных, которая обеспечила бы минимальную вычислительную сложность для любой операции. Следовательно, необходим синтез комбинированных структур данных и выбор из них оптимальной с точки зрения вычислительной сложности.

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

Любая структура данных представляет собой описание одного из возможных способов размещения конечного множества данных О в памяти. При этом каждому элементу множества данных ставится во взаимно-однозначное соответствие Р адрес из множества доступных адресов памяти А о О, Р с А х О.

Структура данных кроме полезной информации в виде элементов данных обычно хранит служебную информацию о связях элементов между собой. Элемент данных вместе со служебной информацией будем называть компонентом структуры данных. Таким образом, можно говорить о наличии множества С компонентов структуры данных и множества Z, определяющего взаимно-однозначное соответствие размещенных элементов данных компонентам структуры Р о С, Z с Р х С. Связи ^ между компонентами структуры данных отобразим, определив однозначное соответствие С ^ С, ^ с С х С.

Для построения моделей конкретных структур данных рассмотрим основные способы организации данных, лежащие в основе сложных структур данных — векторный и списковый, и определим основные компоненты этих структур, отношения компонентов, их характеристики и свойства.

Векторный способ организации предполагает последовательное размещение однотипных (одинаковых по размеру) элементов в непрерывной области памяти. Подобное размещение позволяет определить адрес любого элемента вектора по его номеру, адресу первого элемента и размеру. При этом адрес текущего элемента можно определить по адресу любого элемента, находящегося слева или справа от него. Элементом вектора может быть элемент данных, указатель на данные или структуру данных, ключ для получения данных (в этом случае они хранятся отдельно), признак или флаг (характеристические векторы). Компонентом вектора будет являться непосредственно элемент данных, а множество связей компонентов ^ будет представлять собой декартово произведение множества С самого на себя, т.е. ^ = С х С.

При переходе от объекта к модели поставим во взаимно-однозначное соответствие множеству О множество вершин графа Хр, а множеству адресов А — множество вершин графа ХА. Поскольку множество Р описывает взаимно-однозначное соответствие между множествами А и О, каждой паре элементов множества Р сопоставляем ребро

Рис. 1. Модель вектора:

О — вершина данных; О — вершина адреса; — — дуга, связывающая вершины адреса;--ребро, связывающее вершину адреса и вершину данных

иАи € иао . Таким образом, каждому компоненту с € С вектора будет взаимно-однозначно соответствовать двухвершинный подграф с одним ребром д(< жА, жи >, иАи) € С, где С — граф, описывающий организацию элементов структуры данных. Каждой связи компонентов из множества ^ сопоставим дугу из множества Цр (рис. 1).

Рассмотрим способ определения емкостной сложности вектора по модели. Поскольку вектор предназначен для хранения данных фиксированной длины, обозначим размер одного элемента через 1У. Количество данных, хранимых вектором, определяется мощностью множества |ХА| = п. Сопоставим каждому элементу из этого множества значение веса, равное 1У, т.е. (Уж € ХА) 1У (ж) = 1У. Каждому элементу множества Хи сопоставим значение веса, равное нулю, т.е. (Уж € Хи) 1У(ж) = 0. В результате объем памяти (в байтах), требуемый для хранения вектора, составит

Е (п) = ^ 1У (ж) = 1У |Хл| = 1У п.

Ухех

При сравнении нескольких структур данных между собой необходимо знать объем памяти Ь(п), занимаемый вспомогательными элементами каждой структуры данных в зависимости от числа хранимых элементов данных. Далее функцию £(п) будем называть дополнительной емкостной сложностью. Очевидно, что функция Ь(п) будет связана с емкостной сложностью Е(п) следующим соотношением:

Е(п) = Ь(п) + 1У п,

соответственно для вектора Ь(п) = 0.

Можно показать, что вычислительная сложность операций, посчитанная по модели, совпадает с вычислительной сложностью операций над вектором, приведенной в работах [1, 4], что обусловлено адекватностью полученной модели. Для дополнения модели информацией о вычислительной сложности операций определим также множество

функций Я как

Я = Ыи): зг ^ N,1 = ТТ|Б|};

где Б = — множество допустимых операций над структурой данных; (¡г(и) — функция оценки вычислительной сложности г-й операции.

Таким образом, модель вектора будет выглядеть следующим образом:

Иу = {ву, Я, Ь(и)),

где ву ({Х0, {ХА,1у)}, {иАв, }) — смешанный граф, описывающий организацию элементов; Я — множество функций, определяющих вычислительную сложность операций; Ь(и) = 0 — дополнительная емкостная сложность структуры данных.

Списковая организация данных подразумевает размещение элементов списка в произвольных свободных участках памяти. При построении списковых структур с каждым компонентом списка связывается набор вспомогательных полей, обеспечивающий связь отдельных компонентов списка между собой. Так, для линейного односвязного списка компоненты связаны между собой отношением "предыдущий-следующий" за счет хранения в компоненте адреса следующего компонента. Наличие вспомогательных полей требует рассмотрения дополнительных множеств — множества О' вспомогательных элементов данных (указателей) и множества А' — адресов вспомогательных элементов данных. При этом связи между элементами указанных дополнительных множеств представим множеством Р', каждый элемент которого определяет соответствие адресов памяти вспомогательным элементам данных, т.е. А' о О', Р' С А' х О'. Взаимно-однозначное соответствие Р' о С вспомогательных элементов компонентам данных определим как множество Z', такое, что Z' С Р' х С. Неявные связи между полями в компонентах списка представим как множество ^'.

Основными структурами со списковой организацией данных, применяемыми для представления графовых моделей и вспомогательных данных, являются линейные односвязные, линейные двусвязные, и-связные и древовидные списки [3]. Рассмотрим модель простейшего односвязного списка, когда с каждым элементом списка связан всего один элемент данных. Каждый компонент списка представляет собой запись, а сам список является множеством записей, соединенных между собой.

При переходе от объекта к модели поставим во взаимно-однозначное соответствие множествам А, О, А', О' соответствующие множества вершин графа Ха, Хд, Х&, Хд/. Элементы множеств Р, Р'

Рис. 2. Модель односвязного списка:

О — вершина данных; 'Ш — вспомогательная вершина; О — вершина адреса;

— дуга, связывающая вершины адреса;--ребро, связывающее вершину

адреса и вершину данных; — — дуга, связывающая компоненты списка между собой

взаимно-однозначно сопоставим с ребрами из множеств Цли, Цар'. Связи между полями записей, задаваемые множеством отобразим на множество дуг Ца- Связи компонентов между собой, задаваемые множеством ^, отобразим на множество дуг Цр. Таким образом, множеству компонентов односвязного списка С взаимно-однозначно соответствует множество подграфов {д((жА,жи, жА', жи), (йА,иАи, иАО))€ € С} (рис. 2).

Выполним оценку емкостной сложности связного списка по модели. Количество данных, хранимых списком, определяется числом элементов множества ХА, поэтому сопоставим каждому элементу из этого множества значение веса, равное /У, т.е. (Уж € ХА) /У (ж) = /У. Число дополнительных указателей, которые содержит список, определяется числом элементов множества Ха' , поэтому сопоставим каждому элементу из этого множества значение веса, равное /А, т.е. (Уж € Ха') /У (ж) = /А Каждому элементу множеств Хи, Хи' сопоставим значение веса, равное нулю, т.е. (Уж € Хи) /У (ж) = 0, (Уж € Хи) /У (ж) = 0. Тогда объем памяти (в байтах), требуемый для хранения списка, составит

Е(п) = ^ /У(ж) = /У|Хл| + /А|ХА| = п/У + п/А

Ухех

По аналогии с вектором модель списка будет выглядеть следующим образом:

Мз = (Ся ,д,ь(п)),

где Ся({Хи,Хи', (Хл,1У), (Хл',/А)}, {Цли,Цао', Й, —}) — смешанный граф, описывающий организацию элементов в структуре данных; Ц — множество функций, определяющих вычислительную сложность операций; Ь(п) = п/А — дополнительная емкостная сложность списка.

Полученные модели базовых структур данных являются более простыми, чем модели, предложенные в работе [2], так как они не содержат избыточной с точки зрения поставленной задачи информации.

Операция объединения моделей структур данных. В результате объединения двух и более базовых структур данных получается новая комбинированная структура. Очевидно, что результирующая и исходные структуры должны описывать размещение одних и тех же элементов данных в памяти, т.е. набор данных и для исходных структур, и для структуры-результата должен быть один и тот же.

В качестве примера рассмотрим объединение древовидного списка M1 и вектора И2, которые описываются следующим образом:

И = {^^(и)),

С1 = С(ХьиО =

= С({Хд,Хд1, {ха,/у), {хА1,/а)}, {иао^АВЪ Цр!,Ц}),

И2 = ^^^Н),

С2 = С(Х2,^2) = С({Хо, {хА,/У)}, {иАО, Цр2}),

где в1, в2 — графы организации элементов древовидного списка и вектора; Я1, Я2 — множества функций, определяющих вычислительную сложность операций над структурой данных; Ь1(и), Ь2(и) — дополнительные объемы памяти для организации древовидного списка и вектора; Хо, ха — множество вершин, соответствующих элементам данных и их адресам; цао — множество дуг, отражающих взаимнооднозначное соответствие между элементами данных и их адресами; Хд1, хаъ ца01 — множества вершин и дуг, описывающие дополнительные поля в компонентах древовидного списка; Цр 1, Цр2 — множества дуг, отражающих связи компонентов структуры данных между собой; и1' — множество дуг, отражающие связи между полями внутри компонента.

Графы и в2 имеют общие вершины ХА, Хо и ребра цао, что позволяет выполнить операцию их объединения. Результат объединения представлен на рис. 3.

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

Ь(и) = ¿1(и) + ¿2 (и).

При подсчете вычислительной сложности необходимо учитывать, что операции доступа можно выполнять над любой структурой данных, входящих в комбинированную структуру (так как все они описывают расположение одних и тех же данных в памяти). Однако опера-

UF2

Рис. 3. Результат объединения моделей древовидного списка и вектора

ции преобразования необходимо выполнять над всеми составляющими комбинированной структуры данных. С учетом этого представим множество всех возможных операций над структурами данных Б как объединение двух подмножеств — подмножества операций доступа Б1 и подмножества операций преобразования Б2: Б = Б1 и Б2. Тогда вычислительная сложность комбинированной структуры данных имеет вид:

Я* = и Я^;

= Ып) = тт[д1г (п),д2г(п)]}

= Ып) = (п) + (п)}.

Таким образом, комбинированной структурой данных, полученной в результате объединения двух структур данных, задаваемых моделями М1, М2, будет структура данных, описываемая моделью

М = (С*,Я*,Ь*(п));

где

с* = С1 и С2 =

= С({Хи, (Хл,1У),Хи1, (Хл1,/А)}, {Цли,Цли1, ¿Й, ¿Й}), Ь(п) = ^(п) + ^(п);

Я* = и Яя2;

= Ып) = т1П[^1г (п),?2г(п)]};

= Ып) = (п) + (п)}.

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

дает возможность автоматически определять их вычислительные и емкостные параметры.

Формальная постановка задачи синтеза оптимальных комбинированных структур данных. Исходными данными [2] для синтеза оптимальной с точки зрения вычислительной сложности заданного алгоритма структуры данных являются:

1) описание множества и размер элемента его данных;

2) совокупность базовых структур данных B = {Ь = = (Gi,Qi,Lj(n))};

3) совокупность операций, выполняемых над множеством, что позволит определить набор операций над данными структуры;

4) число повторений каждой операции над множеством в алгоритме (множество функций R = {r(n) : S ^ N});

5) допустимый объем памяти Едоп(п), который может занять синтезируемая структура.

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

На основе данных, приведенных в п. 1 и 2, можно сформировать множество вариантов моделей структур данных, которые получаются посредством объединения тех или иных базовых структур, и определить их характеристики. Из полученного множества необходимо выбрать такую структуру данных, которая для заданного набора операций обеспечивает минимальную вычислительную сложность и емкостная сложность которой не превышает допустимого значения. Отсюда получаем формальную постановку задачи синтеза оптимальной структуры данных в следующем виде:

Mopt = (G*,Q*,L*(n)) G M;

G* = y Gv : Qs = rs(n) * Qs(n) ^ min;

i' e i' ses (1)

L*(n) < Ьдоп(п).

Ьдоп(п) = Едоп(п) - ;

здесь G* G G; G — множество вариантов структуры, которые реализуют основные отношения, заданные на множестве элементов графа, и, возможно, дополнительные отношения, вытекающие из выполняемых над этими данными операций; Gi' — базовая одноуровневая структура данных (см. п. 2); I' = {yi * i} — множество индексов структур, включенных в результирующую структуру; i G I — множество индексов структур данных — кандидатов на вхождение в комбинированную

структуру; y — признак вхождения i-й структуры в комбинированную структуру; rs(n) — функция, определяющая число повторений операции типа s G S в зависимости от размера входа задачи, rs(n) G R; Qs(n) — оценка вычислительной сложности операции типа s над результирующей структурой данных, Qs(n) G Q*.

В этом случае задача определения оптимальной структуры данных заключается в нахождении такого множества индексов /', при котором Qs ^ min при сохранении истинности отношения L* (n) ^ Ьдоп (n).

Таким образом, в соответствии с формальной постановкой основными этапами синтеза оптимальных структур данных являются: отображение описания схемы алгоритма в базис операций над структурами данных; определение числа выполнений каждой операции для каждой структуры данных (задание множества R); определение такого множества индексов /', для которого значение приведенной целевой функции минимально, т.е. определение такого набора структур данных, объединение которых дает оптимальный результат с точки зрения указанного критерия; реализация объединения базовых структур данных для получения комбинированной структуры данных.

СПИСОК ЛИТЕРАТУРЫ

1. А х о А., Ульман Д., ХопкрофтД. Структуры данных и алгоритмы. -М.: Вильямс, 2003. - 384 с.

2. И в а н о в а Г. С. Математические модели структур // Информационные технологии. - 2006. - № 9. - С. 44-52.

З.Овчинников В. А. Алгоритмизация комбинаторно-оптимизационных задач при проектировании ЭВМ и систем. - М.: Изд-во МГТУ им. Н.Э. Баумана, 2001.-288 с.

4. Кормен Т., ЛейзерсонЧ., РивестР. Алгоритмы: построение и анализ. - М.: МЦНМО, 2004. - 960 с.

Статья поступила в редакцию 28.02.2008 Константин Алексеевич Пасечников родился в 1982 г., окончил МГТУ им. Н.Э. Баумана в 2005 г. Руководитель департамента технических проектов в ООО "Protection Technology" (StarForce). Автор 6 научных работ в области вычислительной техники. Специализируется в области автоматизации проектирования компьютерных систем.

K.A. Pasetchnikov (b. 1982) graduated from Bauman Moscow State Technical University in 2005. Head of Technical Projects Department at limited-liability company Protection Technology (StarForce). Author of 6 publications in field of computer science. Primary specialization is design of program systems.

Галина Сергеевна Иванова родилась в 1954 г., окончила МВТУ им. Н.Э. Баумана в 1978 г. Канд. техн. наук, доцент кафедры "Компьютерные системы и сети" МГТУ им. Н.Э. Баумана. Автор 50 научных работ в области вычислительной техники. Специализируется в области проектирования программных систем.

G.S. Ivanova (b. 1954) graduated from Bauman Moscow Higher Technical School in 1978, PhD (Eng), assoc. professor of "Computers Systems and Networks" Department of Bauman Moscow State Technical University. Author of 50 publications in field of computer science. Specializes in the field of designing program systems.

* Jk *

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