Автор работы: Пользователь скрыл имя, 01 Марта 2014 в 02:19, курсовая работа
Начало теории графов как математической дисциплины было положено Эйлером в его знаменитом рассуждении о Кенигсбергских мостах. Однако эта статья Эйлера 1736 года была единственной в течение почти ста лет. Интерес к проблемам теории графов возродился около середины прошлого столетия и был сосредоточен главным образом в Англии. Имелось много причин для такого оживления изучения графов. Естественные науки оказали свое влияние на это благодаря исследованиям электрических цепей, моделей кристаллов и структур молекул. Развитие формальной логики привело к изучению бинарных отношений в форме графов. Большое число популярных головоломок подавалось формулировкам непосредственно в терминах графов, и это приводило к пониманию, что многие задачи такого рода содержат некоторое математическое ядро, важность которого выходит за рамки конкретного вопроса.
Введение…………………………………………………………………………3
Теоретическая часть……………………………………………........……....4
История возникновения теории графов…………………………….….4
Основные понятия теории графов……………………………………...6
Основные теоремы теории графов……………………………………..9
Способы предоставления графов в компьютере…………………......13
Требования к предоставлению графов………………….......…..13
Матрица смежности……………………………………………...13
Матрица инциденций…………………………………………….14
Списки смежности………………………………………………..14
Массив дуг……………………………………………………......14
1.5. Обзор задач теории графов……………………………………………15
1.6. Программа определения кратчайшего пути в графах…………….…17
1.6.1. Язык программирования Delphi……………………………....…17
1.6.2. Программа «Определения кратчайшего пути в графе»……......19
Заключение……………………………………………………………………..24
Практическая часть………………………………………………………....27
Общая характеристика задачи………………………………………....
Описание алгоритма решения задачи………………………………....
Доказательство этой теоремы очень интересно и характерно для теории графов. Его также следует считать конструктивным (обратите внимание на то, как использована при этом теорема 3.6). Для доказательства к исходному графу присоединяем ребро (А, В); после этого все вершины графа станут четными. Этот новый граф удовлетворяет всем условиям теоремы 3.6, и поэтому в нем можно проложить эйлеров цикл Ψ. И если теперь в этом цикле удалить ребро (А, В), то останется искомая цепь АВ.
На этом любопытном приеме основано доказательство следующей теоремы, которую следует считать обобщением теоремы 7.
Теорема 8. Если данный граф является связным и имеет 2k вершин нечетной степени, то в нем можно провести k различных цепей, содержащих все его ребра в совокупности ровно по одному разу.
Теорема 9. Различных деревьев с n перенумерованными вершинами можно построить nn-2.
По поводу доказательства этой теоремы сделаем одно замечание. Эта теорема известна, в основном, как вывод английского математика А. Кэли (1821—1895). Графы-деревья издавна привлекали внимание ученых. Сегодня двоичные деревья используются не только математиками, а и биологами, химиками, физиками и инженерами (подробнее об этом – в параграфе 6).
Теорема 10. Полный граф с пятью вершинами не является плоским.
Доказательство. Воспользуемся формулой Эйлера: В-Р+Г=2, где В — число вершин плоского графа, Р — число его ребер, Г — число граней. Формула Эйлера справедлива для плоских связных графов, в которых ни один из многоугольников не лежит внутри другого.
Эту формулу можно доказать методом математической индукции. Это доказательство мы опускаем. Заметим только, что формула справедлива и для пространственных многогранников. Пусть все пять вершин графа соединены друг с другом. Замечаем, что на графе нет ни одной грани, ограниченной только двумя ребрами. Если через φ1 обозначить число таких граней, то φ2=0. Далее рассуждаем от противного, а именно: предположим, что исследуемый граф плоский. Это значит, что для него верна формула Эйлера. Число вершин в данном графе В=5, число ребер Р=10, тогда число граней Г=2-В+Р=2-5+10=7.
Это число можно представить в виде суммы: Г=φ1+φ2+φ3+…, где φ3 – число граней, ограниченных тремя ребрами, φ4 — число граней, ограниченных четырьмя ребрами и т. д.
С другой стороны, каждое ребро является границей двух граней, а поэтому число граней равно 2Р, в то же время 2Р=20=3φ3+4φ4+... . Умножив равенство Г=7=φ3+ φ4 + φ5 + … на три, получим ЗГ=21=3( φ3 + φ4 + φ5 + …).
Ясно, что (3φ3+3φ4+3φ5+…) < (3φ3+4φ4+ 5φ5+…) или 3Г<2Р, но по условию, 2Р=20, а ЗГ=21; поэтому вывод, полученный при введенном нами предположении (граф плоский), противоречит условию. Отсюда заключаем, что полный граф с пятью вершинами не является плоским.
Теорема 11. (Теорема Понтрягина-Куратовского) Граф является плоским тогда и только тогда, когда он не имеет в качестве подграфа полного графа с пятью вершинами.
Конструирование структур данных для представления в программе объектов математической модели – это основа искусства практического программирования. Далее приводится четыре различных базовых представления графов. Выбор наилучшего представления определяется требованиями конкретной задачи. Более того, при решении конкретных задач используются, как правило, некоторые комбинации или модификации указанных представлений, общее число которых необозримо. Но все они так или иначе основаны на тех базовых идеях, которые описаны в этом разделе.
Известны различные способы представления графов в памяти компьютера, которые различаются объемом занимаемой памяти и скоростью выполнения операций над графами. Представление выбирается, исходя из потребностей конкретной задачи. Далее приведены четыре наиболее часто используемых представления с указанием характеристики n(p,q) – объема памяти для каждого представления. Здесь p – число вершин, а q – число ребер.
Представление графа с помощью квадратной булевой матрицы M, отражающей смежность вершин, называется матрицей смежности, где
Для матрицы смежности n(p,q) = O(p2).
Замечание
Матрица смежности неориентированного графа симметрична относительно главной диагонали, поэтому достаточно хранить только верхнюю (или нижнюю) треугольную матрицу.
Представление графа с помощью матрицы H, отражающей инцидентность вершин и ребер, называется матрицей инциденций, где для неориентированного графа
а для орграфа
Для матрицы инциденций n(p,q) = O(pq).
Представление графа с помощью списочной структуры, отражающей смежность вершин и состоящей из массива указателей на списки смежных вершин, где элемент списка представлен структурой
N : record v : 1..p; n :↑ N end record,
называется списком смежности. В случае представления неориентированных графов списками смежности n(p,q) = O(p+2q), а в случае ориентированных графов n(p,q) = O(p+q).
Представление графа с помощью массива структур
E : array [1..q] of record b,e : 1..p end record,
отражающего список пар смежных вершин, называется массивом ребер (или, для орграфов, массивом дуг). Для массива ребер (или дуг) n(p,q) = O(2q).
Развитие теории графов в основном обязано большому числу всевозможных приложений. По-видимому, из всех математических объектов графы занимают одно из первых мест в качестве формальных моделей реальных систем.[4, стр. 12-15]
Графы нашли применение практически во всех отраслях научных знаний: физике, биологии, химии, математике, истории, лингвистике, социальных науках, технике и т.п. Наибольшей популярностью теоретико-графовые модели используются при исследовании коммуникационных сетей, систем информатики, химических и генетических структур, электрических цепей и других систем сетевой структуры.
Далее перечислим некоторые типовые задачи теории графов и их приложения:
- Задача о кратчайшей цепи
· замена оборудования
· составление расписания движения транспортных средств
· размещение пунктов скорой помощи
· размещение телефонных станций
- Задача о максимальном потоке
· анализ пропускной способности коммуникационной сети
· организация движения в динамической сети
· оптимальный подбор интенсивностей выполнения работ
· синтез двухполюсной сети с заданной структурной надежностью
· задача о распределении работ
- Задача об упаковках и
· оптимизация структуры ПЗУ
· размещение диспетчерских пунктов городской транспортной сети
- Раскраска в графах
· распределение памяти в ЭВМ
· проектирование сетей телевизионного вещания
- Связность графов и сетей
· проектирование кратчайшей коммуникационной сети
· синтез структурно-надежной сети циркуляционной связи
· анализ надежности стохастических сетей связи
- Изоморфизм графов и сетей
· структурный синтез линейных избирательных цепей
· автоматизация контроля при проектировании БИС
- Изоморфное вхождение и
· локализация неисправности с помощью алгоритмов поиска МИПГ
· покрытие схемы заданным набором типовых подсхем
- Автоморфизм графов
· конструктивное перечисление структурных изомеров для производных органических соединений
· синтез тестов цифровых устройств
Рис. 6. Интерфейс программы
Верхняя панель кнопок предназначена для редактирования графа.
Кнопка «Загрузить» предназначена для загрузки ранее сохраненного графа из файла.
Рис. 7. Кнопка «Загрузить»
Кнопка «Сохранить» предназначена для сохранения графа в файл.
Рис. 8. Кнопка «Сохранить»
Кнопка «Переместить» предназначена для перемещения вершин графа.
Рис. 9. Кнопка «Переместить»
Кнопка «Удалить» предназначена для удаления вершин графа.
Рис. 10. Кнопка «Удалить»
При нажатии на кнопку «Новый» рабочее поле программы будет очищено и появится возможность ввода нового графа.
Рис. 11. Кнопка «Новый»
Кнопка «Помощь» вызывает помощь программы.
Рис. 12. Кнопка «Помощь»
Для очистки результатов работы алгоритма определения кратчайшего пути в графе необходимо нажать кнопку «Обновить».
Рис. 13. Кнопка «Обновить»
При нажатии на кнопку «Настройки» на экране появится окно, в котором можно настроить параметры сетки рабочего поля программы и цвета вводимого графа.
Рис. 14. Кнопка «Настройка»
Окно настроек выглядит следующим образом:
Рис. 15. Окно настроек
Нижняя панель кнопок предназначена для установки параметров ввода и запуска алгоритма определения кратчайшего пути в графе. Данная панель состоит из четырех кнопок:
При включенной кнопке «Показывать сетку» отображается сетка для удобства ввода вершин.
Рис. 16. Кнопка «Показывать сетку»
Для автоматического ввода длины ребра графа необходимо нажать кнопку.
Рис. 17. Кнопка «Автоматический ввод длинны ребра»
При включенной кнопке «Выравнивать по сетке» новые вершины будут автоматически выравниваться по координатной сетке.
Рис. 18. Кнопка «Выравнивать по сетке»
Если выбрать две различные вершины (щелчком левой кнопки мыши) нажать на кнопку, то программа найдет кратчайший путь между вершинами.
Рис. 19. Кнопка «Нахождение кратчайшего пути между вершинами»
В работе были рассмотрены задачи из теории графов, которые уже стали классическими. Особенно часто в практическом программировании возникают вопросы о построении кратчайшего остова графа и нахождении максимального паросочетания. Известно также, что задача о нахождении гамильтонова цикла принадлежит к числу NP-полных, т.е. эффективный алгоритм для ее решения не найден. Таким образом, задачи теории графов актуальны, так как могут принести экономию времени и средств на производстве и в быту. Теория графов находит широкое применение в различных областях науки и техники:
Графы и информация
Двоичные деревья играют весьма важную роль в теории информации. Предположим, что определенное число сообщений требуется закодировать в виде конечных последовательностей различной длины, состоящих из нулей и единиц. Если вероятности кодовых слов заданы, то наилучшим считается код, в котором средняя длина слов минимальна по сравнению с прочими распределениями вероятности. Задачу о построении такого оптимального кода позволяет решить алгоритм Хаффмана.