Научная статья на тему 'Автоматизация комбинаторного кодирования и декодирования корневых деревьев'

Автоматизация комбинаторного кодирования и декодирования корневых деревьев Текст научной статьи по специальности «Математика»

CC BY
93
18
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГРАФ / ДЕРЕВО / МАТРИЦА СМЕЖНОСТИ / ADJACENCY MATRIX / АЛГОРИТМ / ALGORITHM / GRAPHS / TREES

Аннотация научной статьи по математике, автор научной работы — Кузьмин Олег Викторович, Чернигова Анна Геннадьевна

Теория графов находит применение в решении задач не только в математике и традиционных приложениях в химии и электротехнике, но и в социологии, лингвистике, экономике, генетике: транспортные задачи, в которых вершинами графа являются пункты, а ребрами дороги и/или другие транспортные маршруты; сети снабжения, в которых вершинами являются пункты производства и потребления, а ребрами возможные маршруты перемещения; социологические задачи, в которых модели коллективов и групп основываются на представлении людей или их групп в виде вершин, а отношений между ними в виде ребер или дуг. Поскольку графы встречаются в сотнях разных задач, в том числе прикладного характера, очень важны алгоритмы их обработки. Еще в период становления теории графов в ней возникало немало таких задач, решение которых предполагало построение некоторых алгоритмов (достаточно вспомнить, например, задачу Э. Эйлера о Кёнигсбергских мостах или задачу У. Гамильтона об обходе вершин додекаэдра). На сегодняшний день существует множество алгоритмов решения задач из самых разных областей человеческой деятельности. В данной работе представлены разработанные авторами алгоритмы перевода матричного представления деревьев, в комбинаторные слова и обратно. Предложенные авторами алгоритмы позволяют сократить объем данных для дальнейшего анализа графов, проводить операции объединения, сложения или вложения графов. Подобные операции проще описывать комбинаторными словами, чем, например, матричным представлением.

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

AUTOMATION OF COMBINATORIAL ENCODING AND DECODING OF ROOTED TREES

Graph theory finds an application for problem solving not only in mathematics and traditional applications in chemistry and electrical engineering but also in sociology, linguistics, economics, and genetics: transport problems where destination stations are points of graph, roads and/or other flow lanes are its ribs; supply chains where production and consumption points are regarded as points of graph and possible relocation routs are considered as ribs; sociological problems where models of teams and groups are based on the representation of people and groups of them in the form of points and relations between them by way of ribs and arcs. Taking into account that graphs are encountered in hundreds of different problems including applied ones, their treatment algorithms are crucial. Even during infancy of graph theory many such problems which can be solved by development of several algorithms (it's enough to recall, for instance, Euler's Koenigsberg bridges problem or Hamilton's problem of dodecahedron point traversal) were being arisen in it. As of today there are various types of algorithms of task solving from various fields of human endeavors available. Matrix representation of trees algorithms of conversion in combinatorial words and vice-versa are developed in the paper. Algorithms proposed by authors enable to reduce data level for further analysis of graphs, conduct operations of integration, addition or embedding of graphs. Such operations are described simpler with combinatorial words than, for example, with matrix representation.

Текст научной работы на тему «Автоматизация комбинаторного кодирования и декодирования корневых деревьев»

Т а б л и ц а 1 Результаты тестирования АВСКМ по данным USDRUR D

f L M PS PL PM PPS

2 72 28 0 72,0 28,0 0,0

3 74 26 0 74,0 26,0 0,0

4 71 29 0 71,0 29,0 0,0

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

2. Наилучшие результаты интервального прогнозирования для выбранных исходных данных получаются при числе элементов в кластере 2 или 3.

В табл. 2 приведены результаты тестирования АВСКМ по данным ЕиКЯиЯ_Б.

Из этой таблицы видно, что наилучшая точность интервального прогнозирования обеспечивается при числе элементов в кластере f = 2.

Т а б л и ц а 2 Результаты тестирования АВСКМ по данным

EURRUR D

f L M PS PL PM PPS

2 74 26 0 74,0 26,0 0,0

3 71 29 0 71,0 29,0 0,0

4 62 38 0 62,0 38,0 0,0

Во всех экспериментальных случаях АВСКМ продемонстрировала свою адекватность (значение показателя PL > 50) и хорошую точность интервального прогнозирования (минимальное значение PL = 62 ), при этом процент случаев, прогноз по которым не делался, был равен 0 .

Заключение

1. Предложенный алгоритм интервального прогнозирования НДП на основе АВСКМ под-

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Краковский Ю.М., Лузгин А.Н. Прогнозирование стохастических нестационарных динамических показателей на основе математических моделей // Вопросы естествознания. 2014. № 2 (3). С. 42-50.

2. Корреляция [Электронный ресурс] // Википедия -свободная энциклопедия : сайт. URL: http://wikipedia.org. (Дата обращения: 20.05.2014).

3. Чучуева И.А. Модель экстраполяции по максимуму подобия (ЭМП) для временных рядов цен и объемов на рынке на сутки вперед ОРЭМ (Оптовом рынке электроэнергии и мощности) [Электронный ресурс] // Наука и образование. 2010. № 1. URL: http://technomag.edu.ru /doc/135870.html (Дата обращения: 26.05.2014).

4. Лукашин Ю.П. Адаптивные методы краткосрочного прогнозирования временных рядов. М. : Финансы и статистика, 2003. 416 с.

5. Язык программирования для статистической обработки данных «R» [Электронный ресурс] // R Foundation : сайт. URL: http://www.r-project.org (Дата обращения: 17.02.2013).

6. Финам : официальный сайт инвестиционного холдинга «ФИНАМ» [Электронный ресурс]. URL: http://www.finam.ru. (Дата обращения: 25.05.2014).

УДК 519.1 + 681.5 Кузьмин Олег Викторович,

д. ф.-м. н., профессор, заведующий кафедрой теории вероятностей и дискретной математики ИМЭИ, Иркутский государственный университет,

тел. (3952)242226, e-mail: [email protected] Чернигова Анна Геннадьевна, магистрант ИМЭИ, Иркутский государственный университет, e-mail: [email protected]

АВТОМАТИЗАЦИЯ КОМБИНАТОРНОГО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ

КОРНЕВЫХ ДЕРЕВЬЕВ

O. V. Kuzmin, A. G. Chernigova AUTOMATION OF COMBINATORIAL ENCODING AND DECODING OF ROOTED TREES

Аннотация. Теория графов находит применение в решении задач не только в математике и традиционных приложениях в химии и электротехнике, но и в социологии, лингвистике, экономике, генетике: транспортные задачи, в которых вершинами графа являются пункты, а ребрами - дороги и/или другие транспортные маршруты; сети снабжения, в которых вершинами являются пункты производства и потребления, а ребрами - возможные маршруты перемещения; социологические задачи, в которых модели коллективов и групп основываются на представлении людей или их групп в виде вершин, а отношений между ними - в виде ребер или дуг.

Поскольку графы встречаются в сотнях разных задач, в том числе прикладного характера, очень важны алгоритмы их обработки. Еще в период становления теории графов в ней возникало немало таких задач, решение которых предполагало построение некоторых алгоритмов (достаточно вспомнить, например, задачу Э. Эйлера о Кёнигсбергских мостах или задачу У. Гамильтона об обходе вершин додекаэдра). На сегодняшний день существует множество алгоритмов решения задач из самых разных областей человеческой деятельности.

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

Информатика, вычислительная техника и управление

ш

анализа графов, проводить операции объединения, сложения или вложения графов. Подобные операции проще описывать комбинаторными словами, чем, например, матричным представлением.

Ключевые слова: граф, дерево, матрица смежности, алгоритм.

Abstract. Graph theory finds an application for problem solving not only in mathematics and traditional applications in chemistry and electrical engineering but also in sociology, linguistics, economics, and genetics: transport problems where destination stations are points of graph, roads and/or other flow lanes are its ribs; supply chains where production and consumption points are regarded as points of graph and possible relocation routs are considered as ribs; sociological problems where models of teams and groups are based on the representation of people and groups of them in the form of points and relations between them by way of ribs and arcs.

Taking into account that graphs are encountered in hundreds of different problems including applied ones, their treatment algorithms are crucial. Even during infancy of graph theory many such problems which can be solved by development of several algorithms (it's enough to recall, for instance, Euler's Koenigsberg bridges problem or Hamilton's problem of dodecahedron point traversal) were being arisen in it. As of today there are various types of algorithms of task solving from various fields of human endeavors available.

Matrix representation of trees algorithms of conversion in combinatorial words and vice-versa are developed in the paper. Algorithms proposed by authors enable to reduce data level for further analysis of graphs, conduct operations of integration, addition or embedding of graphs. Such operations are described simpler with combinatorial words than, for example, with matrix representation.

Keywords: graphs, trees, adjacency matrix, algorithm.

Введение

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

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

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

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

Социологические задачи, в которых модели коллективов и групп основываются на представлении людей или их групп в виде вершин, а отно-

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

Поскольку графы встречаются в сотнях разных задач, в том числе прикладного характера, очень важны алгоритмы их обработки. В работах [1-4] рассматриваются базовые алгоритмы обработки графов.

Графы задаются различными представлениями. Например, визуальное представление -изображение графа с помощью схем или рисунков. Такое представление понятно человеку, но по нему невозможно проводить анализ с помощью компьютерной обработки. Можно, следуя определению, задать граф как пару множеств, однако этот способ довольно громоздкий и представляет в большей мере теоретический интерес.

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

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

В данной работе представлены разработанные авторами алгоритмы перевода матричного представления деревьев в комбинаторные слова и обратно.

1. Основные определения

Деревом называем связный ациклический граф. Корневым деревом (или деревом с корнем) называем дерево, в котором выделена одна вер-

шина, называемая корневой вершиной или просто корнем [5].

Через О обозначаем множество корневых деревьев. Дерево представимо в виде матрицы смежности.

Алфавитом £ называем конечное непустое множество. Буквами (символами) называем элементы алфавита £. Словом над алфавитом £ называем конечную цепочку, состоящую из нуля или более букв из £, причем одна и та же буква может входить в слово несколько раз [6].

Через I обозначаем множество слов над алфавитом {0,1} со следующими свойствами:

1) слово всегда начинается с буквы «1»,

2) слово всегда заканчивается на букву «0».

2. Операции

Введем следующие операции над матрицей смежности:

Положим 8 = «1», х Рг ew = 0, у Рг ew = 0.

ф1 (7) - посещение _)-й строки матрицы. ф2 (7; Ь) - вычисление Ь , где х и у - текущее положение «1» в _)-й строке матрицы.

b —

0, если x Pr ew - x < 0;

1, если x Pr ew - x — 0; y - y2, если z — 1;

y - y2 - a, если z Ф 1,

(1)

где z — 1, если в строке у +1 после позиции x +1 есть символ «1» или у - последняя строка матрицы, в противном случае z — 0;

y2 - положение первого символа «1» в столбце x выше строки у ;

f x Pr ew - x, если x Pr ew - x > 1; a — \ (2)

[0, если x Pr ew - x < 0.

фф (j; b, S) - в строку S дописываем

b символов «0» и один символ «1».

Определим ф как преобразование матрицы

смежности дерева в строку с действиями ф (j), ф 2(j;b) и ФэО'; b, S) •

ф — ь)фз(/'; ь, s ), j — 1, n, (3)

j

где n - количество строк матрицы смежности дерева.

Введем следующие операции над словом. Положим m — 1 • W\ (j) - берем j-й символ «1». у2 (j; Pos) - вычисляем Pos :

\ш -1, если ё = 1; Раз = \ (4)

[х, если а = 2,

где а равно единице, если за символом «1» идет символ «1» в исходной строке;

а равно двойке, если за символом «0» идет символ «1» в исходной строке;

х - положение единицы в строке с номером а уже сформированной матрицы;

a —

[e - f,

e - h - b,

если

если

e- f < 2; e- f > 2,

(5)

здесь e равно количеству символов «1» до текущей позиции в исходной строке;

f - количеству символов «0» до текущей позиции в исходной строке;

h - количеству символов «0» между текущим и предыдущим символом «1» в исходной строке;

b — b + h •

у3(j; Pos, m) - пишем в строку m на позицию Pos символ «1», остальные в этой строке символы «0», m — m +1 •

Определим у как преобразование строки в матрицу смежности дерева с действиями у (j), У 2(j; Pos) и у з('; Pos, m) •

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

У — £У1(/)У2(j;Pos)yз(';Pos,m), j — 1,n , (6)

j

где n - количество символов «1» в исходной строке.

Замечание. Преобразования ф и у взаимно обратные.

Все вышесказанное доказывает следующее утверждение.

Лемма 1. Для любого d е D и i е I верны следующие соотношения:

i — ф^), (7)

d — y(i) • (8)

3. Алгоритмы перевода

На основании леммы 1 и операций ф и у

построены следующие алгоритмы перевода d в i и обратный ему.

Алгоритм 1 перевода d в i: Шаг 1. В строку s пишем «1», x Pr ew — 0, y Pr ew — 0.

Шаг 2. Цикл по матрице. Шаг 3. Выполняем операцию ф (j) • Шаг 4. Выполняем операцию ф3 (j; b) • Шаг 5. Выполняем операцию ф3 (j; b, S) • Шаг 6. Конец цикла.

Информатика, вычислительная техника и управление

ш

Шаг 7. В строку S дописываем e символов «0», где e = m — d — 1, m равно количеству символов «1» в строке s , d - количеству символов «0» в строке s .

Алгоритм 2 перевода i в d :

Шаг 1. a = 0, m = 1, b = 0.

Шаг 2. Цикл по строке со второго символа.

Шаг 3. Выполняем операцию ^ (j).

Шаг 4. Выполняем операцию (j; Pos) .

Шаг 5. Выполняем операцию VзО'; Pos, m).

Шаг 6. Конец цикла.

4. Оценка сложности алгоритмов

Оценим сложность представленных авторами алгоритмов в данной статье. Для этого подсчитаем время работы алгоритмов по методу, описанному в источнике [8]. Общее время работы обоих алгоритмов выражается линейной функцией T(n) = an + b, где n - количество вершин дерева,

a и b - константы, зависящие от c¡ - времени работы одной итерации. Сложность обоих алгоритмов составляет O(n).

Приведем оценки сложности базовых алгоритмов обработки графов.

Сложность алгоритма поиска кратчайшего

пути в графе составляет O(n2), где n - количество вершин графа.

Сложность алгоритма поиска в глубину на графе составляет O(n), где n - количество вершин и ребер графа.

Сложность алгоритма поиска в ширину на графе составляет O(n), где n - количество вершин и ребер графа.

5. Пример

При помощи разработанных алгоритмов в данной статье преобразуем матрицу смежности графа (см. рис. 1) в строку и обратно.

Транспонированная матрица смежности данного графа имеет вид:

0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0. 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 Преобразуем матрицу в строку с помощью Алгоритма 1:

1. £ = 1, -х Рг вы = 0 .

2. Работаем со второй строкой матрицы: х = 1,

х Рг вы - х = 0 -1 = -1 < 0, значит Ь = 0 ^ £ = 11, х Рг вы = 1. Работаем с третьей строкой матрицы: х = 2,

х Рг вы - х = 1 - 2 = —1 < 0, значит Ь = 0 ^ £ = 111, х Рг вы = 2 . Работаем с четвертой строкой матрицы: х = 2,

х Рг вы - х = 2 - 2 = 0, значит Ь = 1 ^ £ = 11101, х Рг вы = 2 . Работаем с пятой строкой матрицы: х = 4,

х Рг вы - х = 2 - 4 = -2 < 0,

3.

4.

5.

Рис. 1. Пример корневого дерева

значит Ь = 0 ^ £ = 111011, х Рг вы = 4.

6. Работаем с шестой строкой матрицы: х = 2,

х Рг вы - х = 4 - 2 = 2 > 0, значит по формуле (1) Ь = У - У 2 = 6 - 4 = 2 ^ £ = 111011001, х Рг вы = 2 . Конец матрицы.

7. Согласно последнему шагу алгоритма 1. Получаем £ =11101100100.

Теперь преобразуем строку обратно в матрицу с помощью Алгоритма 2:

1. т = 1, берем первый и второй символы строки: за «1» идет «1» ^ в первую строку на нулевую позицию ставим «1», остальные нули: 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

2.

ш = 2, берем второй и третий символы строки: за «1» идет «1» ^ вторую строку на первую позицию ставим «1», остальные нули:

0 0 0 0 0 0

1 0 0 0 0 0

0 1 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

3.

ш = 3 , берем третий и четвертый символы строки: за «1» идет «0» ^ идем дальше. Берем четвертый и пятый символы строки: за «0» идет «1» ^ по формуле (8) а = 3 — 1 = 2, во второй строке «1» стоит на первой позиции ^ в третью строку на первую позицию ставим «1», остальные нули:

0 0 0 0 0 0

1 0 0 0 0 0

0 1 0 0 0 0

0 1 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

4. ш = 4, берем пятый и шестой символы строки: за «1» идет «1» ^ в четвертую строку на третью позицию ставим «1», остальные нули:

0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0. 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0

5. ш = 5, берем шестой и седьмой символы строки: за «1» идет «0» ^ идем дальше. Берем седьмой и восьмой символы строки: за «0» идет «0» ^ идем дальше. Берем восьмой и девятый символы строки: за «0» идет «1» ^ по формуле (8) а = 5 — 3 = 2 , во второй строке «1» стоит на первой позиции ^ в пятую строку на первую позицию ставим «1», остальные нули:

0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0. 0 1 0 0 0 0

0 0 0 1 0 0 0 1 0 0 0 0 6. ш = 6, берем девятый и десятый символы строки: за «1» идет «0» ^ идем дальше. Берем десятый и одиннадцатый символы строки: за «0» идет «0» ^ идем дальше.

Выводы

В данной работе представлены разработанные авторами алгоритмы перевода матричного представления деревьев в комбинаторные слова и обратно.

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

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Кристофидес Н. Теория графов. Алгоритмический подход. М. : Мир, 1978. 432 с.

2. Липский В. Комбинаторика для программистов. М. : Мир, 1988. 214 с.

3. Рейнтгольд Э., Нивергельт В., Део Н. Комбинаторные алгоритмы. Теория и практика. М. : Мир, 1980.

4. Кнут Д. Искусство программирования. Т. 4, А. Комбинаторные алгоритмы. Ч. 1. М. : И.Д. Вильямс, 2013 963 с.

5. Кузьмин О.В. Обобщенные пирамиды Паскаля и их приложения. Новосибирск : Наука. Сиб. изд. фирма РАН, 2000. 294 с.

6. Шур А.М. Комбинаторика слов. Екатеринбург : Изд-во Урал. гос. ун-та, 2003. 94 с.

7. Абрасимов М.Б. Минимальные расширения дополнений графов // Теоретические проблемы информатики и ее приложений. Вып. 4. Саратов : Изд-во СГУ, 2001. С. 11-19.

8. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы. Построение и анализ. М : Вильямс, 2013. 1328 с.

9. Евсевлеева Л.Г., Кузьмин О.В. Комбинаторная теория графов и молекулярные структуры // Обозрение прикладной и промышленной математики. 2010. Т. 17. № 6. С. 871-873.

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