Программа вычисления

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

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 31.05.2016
Размер файла 298,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Определения, обозначения, сокращения

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

Введение

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

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

Следовательно, эта работа лежит на пересечении таких областей как теория графов и теория вероятностей. Но при этом основная цель этой работы заключается в создании программного продукта, позволяющего пользователю сконструировать надежный неориентированный граф в качестве модели сетевой системы или проверить степень связности уже существующей. Основными целями являются: предложить и внедрить методику, описывающую класс графов, для реализации генерации графов на основе заданного описания и разработать эффективный по времени алгоритм динамической проверки связности графа на каждом этапе удаления ребер, основанный на изучении достоинств и недостатков существующих алгоритмов поиска пути. Кроме того, есть несколько несущественных задач, таких как: анализ и определение нужного размера выборки графов, относящихся к общему описанию, и экспериментов для каждого графа для получения надежных результатов; добавить демонстрационный режим для визуального ознакомления со стохастическими процессами потери связности в неориентированных графах.

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

1. Обзор решения задач в выбранной области

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

Самые первые задачи теории графов восходят еще к Эйлеру (XVIII в.), хотя впервые термин «граф» появился в книге выдающегося венгерского математика Д. Кёнига в 1936 г. [4]. С тех пор появилось множество новых задач, терминов, понятий, решений, связанных с этим разделом дискетной математики. Теория графов содержит довольно большое количество проблем, нерешённых и по сей день, и пока не доказанных гипотез.

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

Существует множество способов проверки связности графов, в том числе основанных на алгоритмах поиска пути в графах [5]. Самый распространенный - алгоритм маркировки вершин. Эти алгоритмы просты в исполнении, и некоторым достаточно один раз посетить каждый узел. Однако в проблеме вычисления стохастической степени связности неориентированных графов не все так просто и эти алгоритмы будут недостаточно продуктивными.

Рассматриваемая задача по вычислению стохастической степени связности неориентированных графов содержит в себе набор подзадач, относящиеся не только к теории графов. Чтобы разобраться более детально, приведем следующий пример. Возьмем пример с железнодорожным сообщением в городах какого-либо региона (уже упомянутый пример из теории сетей тоже может быть наглядным). Если по каким-либо причинам (причина не существенна в данном изучении) были нарушены железнодорожные пути между городами A и B. При этом каждый из них связан с другими городами C, D, E и т. д. В данной ситуации есть вероятность, что город A или B (и возможно некоторые другие города, имевшие возможность попасть в дальний город только через один из этих двух) оказались изолированными от общей системы железнодорожной сети. Значит, связанность оказалась нарушенной. Так же и в компьютерных сетях при разрыве, например, кабеля один или несколько узлов могут оказаться изолированными. Однако в обоих случаях разрыв имел непредсказуемый характер. Невозможно было предугадать, какая связь будет выведена из строя. Это значит, что процесс имеет случайный характер. В данном ключе можно рассматривать граф, описывающий модель железнодорожного сообщения и компьютерной сети, как стохастическую систему. Ведь стохастическая система - это система, изменения в которой носят случайный характер. При случайных воздействиях, данных о состоянии системы недостаточно для предсказания событий в последующий момент времени. В данной работе граф рассматривается как стохастическая система со случайными воздействиями, приводящими к потере ребер и, в конечном счете, связности.

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

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

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

2. Используемые методы и алгоритмы

Условия и ограничения

Прежде всего, следует уточнить условия и ограничения в поставленной задаче, что позволит найти направление для дальнейшей работы.

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

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

· В-третьих, графы в основном будут задаваться в виде некоторого описания: , где порядковый номер параметров равен номеру узла, - количество узлов, с которыми i-тый узел имеет связи причем . К тому же каждое значение в описание указывает не уникальное количество связей, а общее. Это значит, что значения в описании полностью соответствуют узлам и их связям. Это значит, что каждая связь в описании указывается дважды. А значит, сумма всех значения должна быть четной, чтобы граф можно было построить, следуя инструкции S. Эти условия необходимо учесть при разработке проверок формата описания, введенного пользователем.

· В-четвертых, по описанию S можно построить большое количество разных графов и с каждым из них нужно провести определенное количество экспериментов. Объемы этих выборок нельзя выбирать случайно, по желанию. Для этого необходимо прибегнуть к методам теории вероятностей по поиску оптимального объема выборок графов для описания S и оптимального количество необходимых прогонов каждого графа по алгоритму удаления ребер. Это предоставляет нам возможность выдавать достоверные статистические данные с точностью, которую пожелает указать сам пользователь.

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

Первая подзадача

Первая подзадача заключается в нахождении оптимального объема выборки графов для описания S. Выборочная совокупность (или выборка) -- это отобранное по особому строго заданному правилу определенное число элементов генеральной совокупности. Это число обеспечивает некоторую достоверность и надёжность результатов того явления, которое мы рассматриваем. Объем выборки может быть вычислен по формуле [6], где N -- объем выборки; д -- найденное среднее квадратичное отклонение; д2 -- дисперсия; t -- t-критерий, зависящий от числа планируемых опытов (определяется по стандартной таблице значений t-критерия Стьюдента); Д -- ожидаемое значение предельной ошибки выборки. Такой параметр как относительная погрешность в программе будет указываться пользователем в настройках для регулировки подходящей точности, которая будет необходима пользователю. Однако необходимо понимать, что уменьшение значения погрешности приведет к дополнительным временным затратам. В то же время, в этом случае статистические данные будут более точными. В дальнейшем, используя эту же методологию, необходимо найти оптимальное количество проводимых экспериментов для каждого сгенерированного графа. Тогда можно будет гарантировать точность результата.

Проблема представления графов

Чтобы работать с графами их необходимо как-то представлять в программе. «Есть два стандартных способа представить граф G = (V, E): как набор списков смежности или как матрицу смежности. Оба способа применимы как к ориентированным, так и к неориентированным графам» [7] (стр. 527-531). Однако только с матрицей смежности можно быстро сказать, что существует связь, соединяющая две вершины. К тому же возможно использовать треугольную матрицу смежности по причине отсутствия ориентации в связях графов. В этом случае матрица будет симметричной относительно главной диагонали. Это позволит ускорить работу алгоритмов, работающих непосредственно с графами.

Вторая подзадача

Следующий этап - случайное удаление ребер и проверка связности графов при каждой итерации. Необходимость случайного удаления была пояснена выше в начале главы (Глава 2) и в главе «Определения, обозначения, сокращения». После того, как связь между двумя любыми узлами, которые имели эту связь ранее, была потеряна, необходимо проверить граф на критерий связности, чтобы узнать, не распался ли он на две части. В связи с тем, что оба звена графа, потерявшие связь, известны, проверка связности сводится к поиску пути в графе от первого узла ко второму. Это значит, что алгоритм освобождается от необходимости искать путь к каждому узлу и проверять все пути. Можно отказаться от тяжелых алгоритмов, таких как поиски в глубину и в ширину. Теперь можно обратить внимание на такие алгоритмы как: алгоритмы Дейкстры, Флойда, поиска А*. Это значительно увеличивает общую эффективность и скорость работы модуля по поиску стохастической связности в группе графов, описываемых через S.

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

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

Дополнительные задачи

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

При всем при этом в локальную базу данных будут записываться несколько последних (объем пользователь сможет указать в настройках) созданных описаний графов S и самих графов для демонстрационного модуля. Сообщение с БД производится с помощью библиотек SQLite на языке SQL-запросов.

3. Реализация алгоритма и анализ результатов

Использованные средства и технологии

Для реализации был выбран язык программирования С++, т.к. он является одним из самых лучших, востребованных языков. К тому же С++ является кроссплатформенным языком программирования. В качестве среды разработки использовалась Microsoft Visual Studio 2013 Professional.

Помимо этого в приложении использована структура хранения данных в виде локальной базы данных для получения более удобной и организованной формы хранения информации. БД создана с помощью SQLite, а в программе сообщение с БД выполняется посредством языка SQL-запросов.

Для графического оформления демонстрационного режима были задействованы графические библиотеки OpenGL.

Измерения

Основные функции

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

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

На рисунке 3 представлены данные проведения экспериментов с одним графом. Точно так же по горизонтали указано количество узлов в графе, по вертикали - время в тиках. В данном случае в расчеты вошло время вычисления объема выборки, случайное удаление ребер в графе и проверка связности графа на каждом этапе удаления. Не трудно заметить, что уже при (зеленая линия на графике) на вычисления времени уходит гораздо больше. Это связано с тем, что для большей точности данных требуется больший объем выборки.

Для наглядности рассмотрим пример графа с описанием (Рисунок 4).

граф стохастический связность библиотека

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

Второстепенные функции

Одной из второстепенных функций программы является предоставление демонстрационного режима для наглядного ознакомления или отслеживания процесса потери связности в графе. Было решено реализовать это с использованием графической библиотеки OpenGL (#include <GL/gl.h> и #include <GL/glu.h>). В этом режиме можно пошагово удалять случайные ребра до тех пор, пока граф не распадется на две несвязанные части.

Заключение

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

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

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

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

Список использованных источников

1. Diestel, R. (2005). Graph Theory, Electronic Edition

2. Nagamochi, H., Ibaraki, T. (2008). Algorithmic Aspects of Graph Connectivity. Cambridge University Press.

3. Блог iZerO.Ru: http://www.izero.ru/windows/kompyuternye-seti/kompyuternye-seti-kak-oni-ustroeny-topologii-setej.html - Компьютерные сети. Как они устроены. Топологии сетей

4. М.Э. Рояк, С.Х. Рояк. «Теория графов. Методические указания к практическим занятиям и выполнению РГР по курсу «Дискретная математика»» Новосибирский Государственный Технический Университет

5. Bryan, S. (1997). Looking Before You Leap. Smart Moves: Intelligent Pathfinding, Game Developer Magazine, July.

6. Шведов А. С. «Теория вероятностей и математическая статистика» Изд. дом ГУ-ВШЭ, 2005 г.

7. Cormen, Thomas, H. Leiserson, Charles, E. Rivest, Ronald, L. Stein, Clifford. (2001). "Section 22.1: Representations of graphs". Introduction to Algorithms (Second edition), MIT Press and McGraw-Hill.

8. Антонова Анастасия Анатольевна. «Исследование сложных нестационарных телекоммуникационных систем и разработка метода управления потоками данных» Автореферат диссертации на соискание ученой степени кандидата технических наук. ФГБОУ ВПО НИУ Московский энергетический институт.

Размещено на Allbest.ru

...

Подобные документы

  • Программный код OpenGL. Синтаксис команд OpenGL. OpenGL как конечный автомат. Конвейер визуализации OpenGL. Библиотеки, относящиеся к OpenGL. Библиотека OpenGL. Подключаемые файлы. GLUT, инструментарий утилит библиотеки OpenGL.

    курсовая работа [304,9 K], добавлен 01.06.2004

  • Работа с цветом с помощью графической библиотеки OpenGL. Программа, отображающая квадрат, с меняющимся цветом, в зависимости от изменения градиентов (R,G,B), треугольник, вершины которого имеют различные цвета, прямоугольную полосу в виде спектра.

    контрольная работа [228,6 K], добавлен 21.01.2011

  • Детерминированный и вероятностный подходы к оценке живучести сетей. Анализ моделей гибели и вероятности связности сетей. Табличное представление результатов вычислений и построение графических зависимостей в программе, написанной на языке Object Pascal.

    дипломная работа [2,9 M], добавлен 03.09.2013

  • Построение динамической трехмерной сцены, включающей заданные тело и поверхность определенного вида средствами графической библиотеки. Наложение текстур на тела, поверхности с помощью функции SetupTextures. Графическое представление тела с текстурой.

    курсовая работа [582,9 K], добавлен 24.12.2010

  • Создание программы, с помощью библиотеки OpenGL рисующей проволочный чайник с поворотом рисунка вокруг осей X, Y, Z. Построение отрографической проекции. Установка области отображения. Функция обработки сообщений с клавиатуры. Главный цикл приложения.

    контрольная работа [151,2 K], добавлен 21.01.2011

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

    лабораторная работа [77,2 K], добавлен 06.07.2009

  • Назначение и стандарты реализации OpenGL для Windows, порядок подключения графической библиотеки. Основные функции и синтаксис команд. Рисование примитивов, видовые и аффинные преобразования. Моделирование двумерных графических объектов и анимации.

    лабораторная работа [35,0 K], добавлен 04.07.2009

  • Определение области значений функции y=sin(x) и построение графика по точкам с помощью основных конструкций библиотеки OpenGL. Функции вырисовки на экране, обработки сообщений с клавиатуры. Установка размеров области отображения. Главный цикл приложения.

    контрольная работа [87,2 K], добавлен 21.01.2011

  • Основы работы на языке высокого уровня Turbo Pascal. Основное оборудование и программное обеспечение. Операторы, необходимы для работы в графической среде Turbo Pascal. Запуск графического режима. Текст программы в графической среде Turbo Pascal.

    лабораторная работа [12,7 K], добавлен 14.05.2011

  • Основы работы с графиков средствами OpenGL в C#. Ее спецификации, принципы и возможности. Direct3D как самостоятельная часть библиотеки Microsoft DirectX, которая отвечает за графику и вывод графической информации. Независимость от языка программирования.

    курсовая работа [2,1 M], добавлен 17.02.2013

  • Ознакомление с интерфейсом, основными возможностями и преимуществами использования программы OpenGL - популярной библиотекой для работы с 2D и 3D графикой. Рассмотрение назначения, базовых компонент и правил инициализации программного движка DirectX.

    презентация [19,4 K], добавлен 14.08.2013

  • Разработка различных программ для вычисления X и Y по формуле, для вычисления интеграла, для вычисления таблицы значений функции и для вычисления элементов вектора. Составление блок-схемы программы. Ввод значений, описание переменных и условия расчета.

    контрольная работа [148,1 K], добавлен 08.11.2013

  • Суть программирования с использованием библиотеки OpenGL, его назначение, архитектура, преимущества и базовые возможности. Разработка приложения для построения динамического изображения трехмерной модели объекта "Компьютер", руководство пользователя.

    курсовая работа [866,8 K], добавлен 22.06.2011

  • Алгоритмы, использующие решение дополнительных подзадач. Основные определения теории графов. Поиск пути между парой вершин невзвешенного графа. Пути минимальной длины во взвешенном графе. Понятие кратчайшего пути для графов с помощью алгоритма Флойда.

    реферат [39,6 K], добавлен 06.03.2010

  • Методы и алгоритмы вычисления определенных интегралов: метод трапеций и метод Симпсона (метод парабол). Оформление функции вычисления заданного определённого интеграла на Visual Basic 6.0. Программный код функции. Создание приложения для вычисления.

    курсовая работа [483,6 K], добавлен 25.06.2014

  • Требования к серверной части программы. Blowfish c обратной связью по шифр-тексту. Процедура расширения ключа. Взаимодействия агентов в трёхмерном пространстве. Обоснование выбора среды программирования. Проверка выполнения функциональных требований.

    дипломная работа [3,6 M], добавлен 18.10.2015

  • Программирование приложения с использованием библиотеки OpenGL и функции для рисования геометрических объектов. Разработка процедуры визуализации трехмерной сцены и интерфейса пользователя. Логическая структура и функциональная декомпозиция проекта.

    курсовая работа [1,1 M], добавлен 23.06.2011

  • История возникновения, основные понятия и теоремы теории графов. Способы предоставления графов в компьютере. Матрица смежности, инциденций, списки смежности и массив дуг. Программа определения кратчайшего пути в графах. Язык программирования Delphi.

    курсовая работа [823,5 K], добавлен 24.11.2010

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

    курсовая работа [436,1 K], добавлен 25.10.2012

  • Основные особенности функционирования программируемых логических контроллеров (ПЛК). Инструментальные средства построения методического процесса изучения ПЛК. Создание учебно-демонстрационного стенда на базе контроллеров Fatek и лабораторного практикума.

    дипломная работа [4,0 M], добавлен 26.06.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.