Смекни!
smekni.com

Применение теории графов в информатике 2 (стр. 1 из 4)

ВСЕРОССИЙСКИЙ ЗАОЧНЫЙ ФИНАНСОВО-ЭКОНОМИЧЕСКИЙ ИНСТИТУТ

КАФЕДРА АВТОМАТИЗИРОВАННОЙ ОБРАБОТКИ ЭКОНОМИЧЕСКОЙ ИНФОРМАЦИИ

КУРСОВАЯ РАБОТА

по дисциплине «Информатика»

на тему «Применение теории графов в информатике»

Исполнитель:

специальность

группа

№ зачетной книжки

Руководитель:

Туймазы – 2007

Содержание

Введение. 3

1. Теоретическая часть. 4

1.1 История возникновения теории графов. 4

1.2 Основные понятия теории графов. 6

1.3 Основные теоремы теории графов. 9

1.4 Способы представления графов в компьютере. 14

1.4.1 Требования к представлению графов. 14

1.4.2 Матрица смежности. 14

1.4.3 Матрица инциденций. 15

1.4.4 Списки смежности. 15

1.4.5 Массив дуг. 15

1.5 Обзор задач теории графов. 16

Заключение. 17

2. Практическая часть. 18

2.1. Общая характеристика задачи. 18

2.2. Описание алгоритма решения задачи. 19

Список использованной литературы.. 24

Введение

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


1. Теоретическая часть

1.1 История возникновения теории графов

Родоначальником теории графов принято считать математика Леонарда Эйлера (1707-1783) [3, стр. 36]. Однако теория графов многократно переоткрывалась разными авторами при решении различных прикладных задач.

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

Рисунок 1

2. Задача о трех домах и трех колодцах. Имеется три дома и три колодца, каким-то образом расположенные на плоскости. Провести от каждого дома к каждому колодцу тропинку так, чтобы тропинки не пересекались (рис. 2). Эта задача была решена (показано, что решение не существует) Куратовским в 1930 году [2, стр. 51].

Рисунок 2

3. Задача о четырех красках. Разбиение на плоскости на непересекающиеся области называется картой. Области на карте называются соседними, если они имеют общую границу. Задача состоит в раскрашивании карты таким образом, чтобы никакие две соседние области не были закрашены одним цветом (рис. 3). С конца позапрошлого века известна гипотеза, что для этого достаточно четырех красок. В 1976 году Аппель и Хейкен опубликовали решение задачи о четырех красках, которое базировалось на переборе вариантов с помощью компьютера. Решение этой задачи «программным путем» явилось прецедентом, породившим бурную дискуссию, которая отнюдь не закончена. Суть опубликованного решения состоит в том, чтобы перебрать большое, но конечное число (около 2000) типов потенциальных контрпримеров к теореме о четырех красках и показать, что ни один случай контрпримером не является. Этот перебор был выполнен программой примерно за тысячу часов работы суперкомпьютера. Проверить «вручную» полученное решение невозможно – объем перебора выходит далеко за рамки человеческих возможностей. Многие математики ставят вопрос: можно ли считать такое «программное доказательство» действительным доказательством? Ведь в программе могут быть ошибки… Методы формального доказательства правильности программ не применимы к программам такой сложности, как обсуждаемая. Тестирование не может гарантировать отсутствие ошибок и в данном случае вообще невозможно. Таким образом, остается уповать на программистскую квалификацию авторов и верить, что они сделали все правильно.

Рисунок 3

1.2 Основные понятия теории графов

1) ГрафомG(V,E) называется совокупность двух множеств – непустого множества V(множества вершин) и множества E двухэлементных подмножеств множества V(E – множество ребер).

2) Ориентированным называется граф, в котором

- множество упорядоченных пар вершин вида (x,y), где x называется началом, а y – концом дуги. Дугу (x, y) часто записывают как
. Говорят также, что дуга
ведет от вершины x к вершине y, а вершина yсмежная с вершиной x.

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

4) Если E является не множеством, а набором, содержащим несколько одинаковых элементов, то эти элементы называются кратными ребрами, а граф называется мультиграфом.

5) Если элементами множества E являются не обязательно двухэлементные, алюбые подмножества множества V, то такие элементы множества E называются гипердугами, а граф называется гиперграфом.

6) Если задана функция F : VM и/или F : EM, то множество Mназывается множеством пометок, а граф называется помеченным (или нагруженным). В качестве множества пометок обычно используются буквы или целые числа. Если функция F инъективна, то есть разные вершины (ребра)имеют разные пометки, то граф называют нумерованным.

7) Подграфом называется граф G′(V′,E′), где

и/или
.

a) Если V′ = V, то G′ называется остовным подграфом G.

b) Если

, то граф G′ называется собственным подграфом графа G.

c) Подграф G′(V′,E′) называется правильным подграфом графа G(V,E), если G′ содержит все возможные рёбра G.

8) Степень (валентность) вершины – это количество ребер, инцидентных этой вершине (количество смежных с ней вершин).

9) Маршрутом в графе называется чередующаяся последовательность вершин и ребер

, в которой любые два соседних элемента инциденты.

a) Если

, то маршрут замкнут, иначе открыт.

b) Если все ребра различны, то маршрут называется цепью.

c) Если все вершины (а значит, и ребра) различны, то маршрут называется простой цепью.

d) Замкнутая цепь называется циклом.

e) Замкнутая простая цепь называется простым циклом.

f) Граф без циклов называется ациклическим.

g) Для орграфов цепь называется путем, а цикл – контуром.

рис. 4. Маршруты, цепи, циклы

Пример

В графе, диаграмма которого приведена на рис.4:

1. v1, v3, v1, v4 – маршрут, но не цепь;

2. v1, v3, v5, v2, v3, v4 – цепь, но не простая цепь;

3. v1, v4, v3, v2, v5 – простая цепь;

4. v1, v3, v5, v2, v3, v4, v1 – цикл, но не простой цикл;

5. v1, v3, v4, v1 – простой цикл.

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

11) Если граф имеет простой цикл, содержащий все вершины графа (по одному разу), то такой цикл называется гамильтоновым циклом.

12) Деревом называется связный граф без циклов.

13) Остовом называется дерево, содержащее все вершины графа.

14) Паросочетанием называется множество ребер, в котором никакие два не смежны.

15) Паросочетание называется максимальным, если никакое его надмножество не является независимым.

16) Две вершины в графе связаны, если существует соединяющая их простая цепь.

17) Граф, в котором все вершины связаны, называется связным.

18) Граф, состоящий только из изолированных вершин, называется вполне несвязным.