_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №6/2016 ISSN 2410-700Х_
УДК 004.021
Л.В. Поддубная
студентка 1 курса магистратуры Донской Государственный Технический Университет Научный руководитель: В.В. Галушка к.э.н., доцент кафедры «Вычислительные системы и информационная безопасность» Донской Государственный Технический Университет Г. Ростов-на-Дону, Российская Федерация
РЕАЛИЗАЦИЯ АЛГОРИТМОВ НА ГРАФАХ СРЕДСТВАМИ РЕЛЯЦИОННОЙ АЛГЕБРЫ
Аннотация
В статье ставится задача разработки алгоритма поиска кратчайшего пути по средствам реляционной алгебры. При исследовании данной области, были получены необходимые данные для разработки алгоритма. В статье также реализован пример работы полученного алгоритма.
Ключевые слова Графовые модели, реляционная алгебра, Transact-SQL.
1. Введение
Современные информационные системы обрабатывают большие и постоянно увеличивающиеся объёмы данных. Как правило для их хранения используются базы данных (БД). Однако, конечным пользователям системы, зачастую, не требуются эти данные в их исходном виде, вместо этого им необходимо получать результаты обработки, которые, во-первых требуют выполнения над исходными данными каких-либо действий (вычислений, анализа и т.д.), а во-вторых гораздо меньше по объёму и, следовательно, проще для восприятия.
2. Архитектура клиент-сервер
Большинство информационных систем создаются с использованием какой-либо формальной модели, описывающей разделение функций между отдельными модулями системы. Если информационная система состоит из базы данных и приложения, предоставляющего доступ к ней, то такая информационная система имеет как минимум 2 уровня. В зависимости от способа реализации связей между уровнями такая система может относиться либо к файл-серверным, если БД хранится на том же компьютере, где запускается приложение и связь осуществляется средствами операционной системы, либо к клиент-серверным, если доступ к БД осуществляется с использованием сетевых протоколов.
Для последнего типа характерна довольно низкая скорость обмена данными между базой данных и приложением, однако такие достоинства как расширяемость, лёгкость администрирования и безопасность определили широкое распространение клиент-серверных систем и их модификаций.
3. Графовые модели
Другой формальной математической моделью, применяемой для составления алгоритмов при реализации информационных систем, являются графы. Граф — совокупность множества вершин и связей между ними [Оре О. Теория графов. - М.: Наука, 1980]. Графы нашли применение практически во всех отраслях научных знаний: физике, биологии, химии, математике, истории, лингвистике, социальных науках, технике и т.п. Наибольшей популярностью теоретико-графовые модели используются при исследовании коммуникационных сетей, информационных систем, химических и генетических структур, электрических цепей и других систем сетевой структуры.
Граф-модели применяются для эффективного использования ресурсов вычислительной системы (оптимизация использования памяти, регистров, уменьшение обменов между оперативной и внешней
_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №6/2016 ISSN 2410-700Х_
памятью и т.д.), организации больших массивов информации (графы данных для повышения эффективности информационного поиска), увеличения степени параллелизма программы, повышения эффективности работы микропроцессорных и многомашинных систем (распределение процессоров, обмен сообщениями между процессорами, синхронизация). Решение этих и подобных задач привело к появлению множества граф-моделей, связанных как с программами и структурными данными, так и с вычислительными системами.
4. Особенности реализации языка SQL в СУБД Microsoft SQL Server
Так как все сложные вычисления выполняются на сервере данного приложения, то сервером была выбрана среда Microsoft SQL Server. Она более сложная нежели, допустим, Microsoft Access, но, благодаря использованному в ней языку Transact-SQL, могут быть реализованы запросы, близкие по своей функциональности к программам [Уинкуп, С. Microsoft SQL Server 6.5; СПб: БХВ - Москва, 2011. - 896 с].
5. Алгоритм поиска кратчайшего пути
Независимо от реализации, теоретической основой языка SQL является реляционная алгебра, а операторы SQL соответствуют реляционным операциям. Основным понятием реляционной теории является отношение [Пушников А.Ю. Введение в системы управления базами данных. Часть 1. Реляционная модель данных: Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999. - 108 с. - ISBN 57477-0350-1]. Для представления графа можно использовать отношение R со схемой SR={in, out, length}, где in — начальная вершина ребра;
out — конечная вершина ребра; length — длина ребра.
Тогда ri — i-ое ребро. Для ненаправленного графа в отношении R должны существовать кортежи с взаимно обратными значениями in и out, то есть:
V ri G R 3 rj е R: ini=outj и inJ=outi.
Исходными данными для работы алгоритма служит таблица, построенная на основе отношения R и заполненная имеющимися рёбрами графа, а также их длинами. Для невзвешенного графа legth=1. По сути данная таблица уже хранит элементарные пути — то есть пути длиной в одно ребро.
Для получения путей длиной в 2 ребра можно объединить эту таблицу саму с собой, соединяя конечные точки рёбер с начальными, а начальные с конечными. В терминах реляционной алгебры это записывается следующим образом:
Q=R X ß R*, где X ß — реляционная операция ^-соединения по предикату ß, R* — псевдоним отношения R.
Предикат ß имеет вид:
R.in=R*.out V R.out=R*.in, где V — логическое ИЛИ.
При этом Q.lenght=R.length+R*. length.
Важным шагом является приведение схемы отношения Q в соответствие со схемой отношения R. Для этого можно использовать операцию проекции:
Q*=Пin,out,legth{Q).
В результате становится возможным повторное использование результатов объединения в качестве исходных данных для дальнейшего вычисления маршрутов на единицу большей длины и алгоритм вычисления путей можно в общем виде записать с помощью итеративной процедуры:
R = ПR*.in,R.out,R.in,R.length+R*.length (R ^^ R.in=R*.out V R.out=R*.in R *)
id in out length
Данный этап выполняется только один раз, а его результаты должны быть сохранены в некоторую промежуточную таблицу, структура которой соответствует схеме отношения Q*.
_МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №6/2016 ISSN 2410-700Х
Составление итогового маршрута выполняется по формуле: pi=rk.prev, k=noulaoui=rkprev(R)), где Pi — i-ая точка маршрута,
R — полная таблица путей, rk — k-ая строка таблицы R.
6. Пример работы алгоритма
Для детального разбора метода, сконструируем простой граф (рисунок 1).
Рисунок 1 - Простой граф
Граф имеет двенадцать вершин, семнадцать ребер. Для реализации метода, необходимо учитывать все пути, то есть вершины, соединенные ребрами. Внесем эти данные в таблицу (рисунок 2).
Таблица 1
Единичные пути для вершин графа
1 1 2 1
id 2 Iii 1 и ut 3 cherez 1 ength
777 3 -3г 1 7 4 -8- 1 3
778 4 -3~ 2 -8г 5 -7- 1 3
5 4 5 1
6 4 7 1
7 5 6 1
8 6 7 1
9 3 8 1
Таблица пути вершин графа состоит из четырех столбцов:
• Id - это уникальный номер пути;
• In - это вершина графа, являющаяся началом пути;
• Out - это вершина графа, являющаяся концом пути;
• Length - длина пути.
При выполнении sql-запроса, заполняется таблица «routes». В данной таблице указаны пути от каждой вершины в оставшиеся одиннадцать. Приведем фрагмент таблицы с некоторыми из вершин.
МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №6/2016 ISSN 2410-700Х_
Таблица 2
Все пути между вершинами графа
779 1 9 8 3
780 1 10 8 3
781 2 1 3 3
782 2 1 4 3
783 2 5 4 3
784 2 5 6 3
785 2 7 4 3
Таблица всех путей для вершин графа состоит из пяти столбцов:
• Id - это уникальный номер пути;
• In - это вершина графа, являющаяся началом пути;
• Out - это вершина графа, являющаяся концом пути;
• Prev - это предпоследняя вершина в пути;
• Length - длина пути.
Далее выберем вершины графа, необходимые посетить в пути. Занесем их в таблицу.
Таблица 3
Вершины графа, которые необходимо посетить
id point
1 12
3 4
4 10
6 7
8 11
9 1
Вершины в таблице расположены хаотично. При помощи sql-запроса, составим оптимальный путь по графу, включающий все вершины.
Таблица 4
Оптимальный путь по выбранным вершинам графа
visited
1 1
2 4
3 7
4 10
5 11
6 12
Вывод
Представленный метод поиска кратчайшего пути в графе позволяет переложить основную вычислительную нагрузку с клиентских компьютеров на значительно более мощные сервера, предназначенные для хранения данных, чья вычислительная мощность используется минимально. Практическая реализация метода с использованием языка Transact-SQL показывает возможность для дальнейшей реализации других графовых алгоритмов аналогичным образом и построении обобщённой методики реализации алгоритмов на графах средствами реляционной алгебры. Список использованных источников
1. Александр Прохоров. Системы автоматического распознавания форм// КомпьютерПресс. - 2000. - №11.
2. Асеев, Г.Г. Электронный документооборот. Учебник / Г.Г. Асеев. — К.: Кондор, 2007. — 500 с.
3. Боэм Б.У. "Инженерное проектирование программного обеспечения". - М.: "Радио и связь", 1985.
4. Никольский Н. Технология обработки стандартных форм документов // Рынок Ценных Бумаг - 2008. -№16.
МЕЖДУНАРОДНЫЙ НАУЧНЫЙ ЖУРНАЛ «СИМВОЛ НАУКИ» №6/2016 ISSN 2410-700Х
5. Ожегов, С. И. Толковый словарь русского языка / С. И. Ожегов, Н. Ю. Шведова. - М.: Азбуковник, 2000. - 940 с.
6. Пушников А.Ю. Введение в системы управления базами данных. Часть 1. Реляционная модель данных: Учебное пособие/Изд-е Башкирского ун-та. - Уфа, 1999. - 108 с. - ISBN 5-7477-0350-1
© Поддубная Л.В., 2016
УДК 004.9:519.688
Смольянов Андрей Григорьевич
к.ф.-м.н., зав. кафедрой фундаментальной информатики ФГБОУ ВО «МГУ им. Н.П. Огарёва»,
г. Саранск, РФ E-mail: [email protected] Ивановичев Вячеслав Валерьевич студент 4 курса факультета математики и информационных технологий ФГБОУ ВО «МГУ им. Н.П. Огарёва»,
г. Саранск, РФ E-mail: [email protected]
МАНИПУЛЯЦИЯ ДАННЫМИ В МОБИЛЬНОЙ СУБД REALM ДЛЯ GOOGLE ANDROID
Аннотация
В статье описываются возможности манипулирования данными, организованными системой управления базами данных (СУБД), предназначенной для поддержки информационной части мобильных приложений. В статье кратко описываются разновидности операций, связанной с доступом к исходным данным и их обработкой.
Ключевые слова
Система управления базами данных, класс, объект, запрос, асинхронная транзакция.
В статье [1] были изложены вводные сведения о системе управления базами данных Realm. Настоящий материал является продолжением указанной статьи, в котором продолжено краткое обсуждение возможностей Realm, связанных с манипулированием данными в базе.
Для обзора основных возможностей по манипулированию данными кратко обсудим сам механизм запросов. Синтаксис запросов Realm использует так называемый Fluent Interface (пер. Текучий интерфейс), суть которого состоит в повышении читабельности исходного кода программы. Благодаря этому код запросов становится лаконичным и интуитивно понятным. Структура запросов выглядит следующим образом:
(экземпляр Realm).(критерий where).
(условия выборки).(fmdFirstO или findAll()).
Метод findFirst() дает возможность обнаружить в процессе запроса первое совпадение, метод findAll() позволяет получить полную выборку. Если по нужным условиям не удалось найти данные, то findFirst() вернет null, а findAll() - пустую коллекцию RealmResults.
Например, для того выбрать из Realm пользователя (класс User), чье имя совпадает с именем "Александр", достаточно написать код: