Алгоритм построения фундаментальной системы циклов

1. Построить любое остовное дерево Алгоритм построения фундаментальной системы циклов - student2.ru исходного графа Алгоритм построения фундаментальной системы циклов - student2.ru .

2. Добавить к Алгоритм построения фундаментальной системы циклов - student2.ru некоторое ребро Алгоритм построения фундаментальной системы циклов - student2.ru , которое является ребром графа, но не принадлежит остову.

3. После такого добавления образуется цикл Алгоритм построения фундаментальной системы циклов - student2.ru .

4. Все циклы Алгоритм построения фундаментальной системы циклов - student2.ru (соответствующие всем ребрам, взятым не из остова) образуют фундаментальную систему циклов.

55. Задача комівояжера. Приклади практичних задач, що зводяться до задачі комівояжера.

Задача коммивояжера(Traveling salesman problem)

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

Данная задача является NP-полной; для ее решения не существует эффективного алгоритма. Важность этой задачи связана с тем, что к ней сводятся многие другие задачи; в связи с чем она играет роль эталонной задачи.

56. Дерева. Визначення дерева, властивості дерев, ліс.

Связный граф, не содержащий циклов, называется деревом.

Несвязный граф, не содержащий циклов, называется лесом.

Свойтва дсеревьев

Теорема 21.1. Всякое дерево содержит Алгоритм построения фундаментальной системы циклов - student2.ru ребер, где Алгоритм построения фундаментальной системы циклов - student2.ru – число вершин.

Теорема 21.2. Всякий лес содержит Алгоритм построения фундаментальной системы циклов - student2.ru ребер, где Алгоритм построения фундаментальной системы циклов - student2.ru – число компонент связности.

Теорема 21.3. Любые две вершины дерева соединены точно одной простой цепью.

Теорема 21.4. Если в дереве любые две вершины соединить ребром, то в графе появится один цикл.

57. Перелічення графів і дерев. Остови графа.

Количество Алгоритм построения фундаментальной системы циклов - student2.ru (неориентированных) помеченных Алгоритм построения фундаментальной системы циклов - student2.ru графов (простых с Алгоритм построения фундаментальной системы циклов - student2.ru вершинами и Алгоритм построения фундаментальной системы циклов - student2.ru ребрами) равно числу сочетаний из множества различных неориентированных пар вершин Алгоритм построения фундаментальной системы циклов - student2.ru по числу ребер Алгоритм построения фундаментальной системы циклов - student2.ru .

Алгоритм построения фундаментальной системы циклов - student2.ru , Алгоритм построения фундаментальной системы циклов - student2.ru

Суммируя числа Алгоритм построения фундаментальной системы циклов - student2.ru по всем возможным количествам ребер Алгоритм построения фундаментальной системы циклов - student2.ru от случая безреберного графа до случая полного графа с Алгоритм построения фундаментальной системы циклов - student2.ru вершинами, получаем число Алгоритм построения фундаментальной системы циклов - student2.ru всех помеченных графов с Алгоритм построения фундаментальной системы циклов - student2.ru вершинами:

Алгоритм построения фундаментальной системы циклов - student2.ru

Формула А. Кэли. Число Алгоритм построения фундаментальной системы циклов - student2.ru помеченных деревьев с Алгоритм построения фундаментальной системы циклов - student2.ru вершинами равно Алгоритм построения фундаментальной системы циклов - student2.ru , т.е. Алгоритм построения фундаментальной системы циклов - student2.ru .

Остовом называется связный частичный граф данного связного графа Алгоритм построения фундаментальной системы циклов - student2.ru , содержащий все вершины графа Алгоритм построения фундаментальной системы циклов - student2.ru , но не содержащий циклов.

Теорема Кирхгофа. Число остовных деревьев в простом связном графе Алгоритм построения фундаментальной системы циклов - student2.ru с Алгоритм построения фундаментальной системы циклов - student2.ru вершинами равно алгебраическому дополнению любого элемента матрицы Кирхгофа Алгоритм построения фундаментальной системы циклов - student2.ru .

58. Орієнтовані і бінарні дерева. Правила обходу бінарних дерев. Еквівалентні бінарні дерева.

Ориентированное дерево (корневое ориентированное дерево) (рис. 21.12) – это ориентированный граф без циклов со свойствами:

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

Бинарное (двоичное) дерево Алгоритм построения фундаментальной системы циклов - student2.ru – это упорядоченное дерево, из каждой вершины которого может исходить не более двух дуг. Ориентированное дерево называют бинарным, если полустепень исхода любой его вершины не больше 2.

Над бинарным деревом есть операция – его прохождение, т.е. нужно обойти все дерево, отметив каждый узел один раз.

Существует 3 способа обхода бинарного дерева:

1. В прямом порядке.

2. В симметричном порядке.

3. В обратном порядке.

В прямом порядке (обход в прямом порядке, прямой обход, упорядоченный обход, обход сверху, обход в ширину, preorder):

1. Попасть в корень.

2. Пройти в прямом порядке левое поддерево.

3. Пройти в прямом порядке правое поддерево.

В симметричном порядке (обход симметричным способом, симметричный обход, inorder):

1. Пройти в симметричном порядке левое поддерево.

2. Попасть в корень.

3. Пройти в симметричном порядке правое поддерево.

В обратном порядке (обход в обратном порядке, обход в глубину, обратный обход, обход снизу, postorder):

1. Пройти в обратном порядке левое поддерево.

2. Пройти в обратном порядке правое поддерево.

3. Попасть в корень.

59. Розфарбування графів. Фарбування вершин та ребер. Хроматичне число, теорема про біхроматичний граф. Хроматичний клас. Теорема Брукса.

Раскраской вершин графа называется назначение цветов его вершинам. Обычно цвета – это числа Алгоритм построения фундаментальной системы циклов - student2.ru . Раскраска называется правильной, если каждый цветной класс является независимым множеством. Иначе говоря, в правильной раскраске любые две смежные вершины должны иметь разные цвета. Задача о раскраске состоит в нахождении правильной раскраски данного графа в наименьшее число цветов. Это число называется хроматическим числом графа и обозначается Алгоритм построения фундаментальной системы циклов - student2.ru .

Наименьшее число цветов для правильной раскраски называется хроматическим классом Алгоритм построения фундаментальной системы циклов - student2.ruграфа или индексом.

Если граф имеет хроматическое число Алгоритм построения фундаментальной системы циклов - student2.ru , то его называют бихроматическим графом. Любое раскрашивание Алгоритм построения фундаментальной системы циклов - student2.ru 2 красками разбивает вершины на 2 множества Алгоритм построения фундаментальной системы циклов - student2.ru , посередине каждого множества вершины попарно несмежные (или независимы).

Теорема (Брукса). Пусть Алгоритм построения фундаментальной системы циклов - student2.ru – простой связный граф, не являющийся полным; если наибольшая из степеней его вершин равна Алгоритм построения фундаментальной системы циклов - student2.ru , то он Алгоритм построения фундаментальной системы циклов - student2.ru -раскрашиваем.

Теорема Кенига.Граф Алгоритм построения фундаментальной системы циклов - student2.ru называется бихроматическим тогда и только тогда, когда все его циклы имеют четную длину.

60. Гіпотеза чотирьох фарб. Теорема про п'ять фарб. Прикладні задачі, що зв’язані з розфарбуванням графів

Гипотеза четырех красок для карт: всякая карта 4-раскрашиваема.(удалось обосновать с использованием ЭВМ).

Хівуд(1890р) – проблема 4 фарб, довів що достатньо 5.

Задачи: Определение раскрашиваемости карт/графов(k-раскрашиваемый).

61. Двудольні та k-дольні графи.

Неориентированный граф Алгоритм построения фундаментальной системы циклов - student2.ru называют двудольным, если множество его вершин Алгоритм построения фундаментальной системы циклов - student2.ru может быть разбито на такие два подмножества Алгоритм построения фундаментальной системы циклов - student2.ru и Алгоритм построения фундаментальной системы циклов - student2.ru , что каждое ребро имеет один конец в Алгоритм построения фундаментальной системы циклов - student2.ru , а другой в Алгоритм построения фундаментальной системы циклов - student2.ru .

Ориентированный граф Алгоритм построения фундаментальной системы циклов - student2.ru называется двудольным, если его неориентированный двойник – двудольный граф.

Теорема о двудольности.Граф Алгоритм построения фундаментальной системы циклов - student2.ru является двудольным тогда и только тогда, когда он не содержит циклов нечетной длины.

62. Найкоротші відстані та шляхи у мережах. Алгоритм визначення відстані між вершинами на графі з одиничними довжинами ребер. Алгоритм Дейкстри (Форда) визначення відстані між вершинами на графі з довільними довжинами ребер.

Маршрут, циклический маршрут, цепь, путь(ориентированная цепь).

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

Каждой вершине из Алгоритм построения фундаментальной системы циклов - student2.ru сопоставим метку — минимальное известное расстояние от этой вершины до Алгоритм построения фундаментальной системы циклов - student2.ru . Алгоритм работает пошагово — на каждом шаге он «посещает» одну вершину и пытается уменьшать метки. Работа алгоритма завершается, когда все вершины посещены.

63. Алгоритми Флойда і Данцига пошуку найкоротших шляхів між всіма парами вершин графа.

Алгоритм Флойда

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

Алгоритм

Инициализация структур данных.

Строится матрица Алгоритм построения фундаментальной системы циклов - student2.ru размерности Алгоритм построения фундаментальной системы циклов - student2.ru , элементы которой определяются по правилу: Алгоритм построения фундаментальной системы циклов - student2.ru ;

Алгоритм построения фундаментальной системы циклов - student2.ru если в графе существует ребро (дуга) Алгоритм построения фундаментальной системы циклов - student2.ru ;

Алгоритм построения фундаментальной системы циклов - student2.ru , если нет ребра (дуги) Алгоритм построения фундаментальной системы циклов - student2.ru .

Основная часть алгоритма:

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

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

Алгоритм построения фундаментальной системы циклов - student2.ru , где Алгоритм построения фундаментальной системы циклов - student2.ru . (*)

Если Алгоритм построения фундаментальной системы циклов - student2.ru для какого-то Алгоритм построения фундаментальной системы циклов - student2.ru , то в графе существует цикл (контур) отрицательной длины, проходящий через вершину Алгоритм построения фундаментальной системы циклов - student2.ru .

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

Поиск путей

Если требует найти сами пути, то перед началом работы алгоритма построим матрицу P с начальными значениями элементов Алгоритм построения фундаментальной системы циклов - student2.ru . Каждый раз, когда на шаге (1) значение Алгоритм построения фундаментальной системы циклов - student2.ru будет уменьшаться в соответствии с (*) (т.е. когда Алгоритм построения фундаментальной системы циклов - student2.ru ), выполним присваивание Алгоритм построения фундаментальной системы циклов - student2.ru . В конце работы алгоритма матрица P будет определять кратчайшие пути между всеми парами вершин: значение pij будет равно номеру предпоследней вершины в пути между Алгоритм построения фундаментальной системы циклов - student2.ru и Алгоритм построения фундаментальной системы циклов - student2.ru (либо Алгоритм построения фундаментальной системы циклов - student2.ru , если путь не существует).

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

Алгоритм Данцига

Перенумеровать вершины графа, определить матрицу Алгоритм построения фундаментальной системы циклов - student2.ru размером Алгоритм построения фундаментальной системы циклов - student2.ru где Алгоритм построения фундаментальной системы циклов - student2.ru число вершин графа. Каждый элемент этой матрицы есть длина кратчайшей дуги от одной вершины до другой.

Для каждого m принимающего значения 1,2,3…N определить матрицу Алгоритм построения фундаментальной системы циклов - student2.ru по формулам (2) – для строки Алгоритм построения фундаментальной системы циклов - student2.ru , (3) – для столбца Алгоритм построения фундаментальной системы циклов - student2.ru , (1) – для всех остальных элементов, кроме диагонального Алгоритм построения фундаментальной системы циклов - student2.ru .

64. Течії у мережах. Задача про максимальну течію у мережі. Розріз мережі. Теорема про максимальну течію і мінімальний розріз. Алгоритм Форда-Фалкерсона.

Транспортной сетью называется пара Алгоритм построения фундаментальной системы циклов - student2.ru , где Алгоритм построения фундаментальной системы циклов - student2.ru – взвешенный орграф, удовлетворяющий следующим условиям:

а) нет петель;

б) существует только одна вершина, не имеющая ни одного прообраза – это исток;

в) существует только одна вершина, не имеющая ни одного образа – это сток;

Потоком в транспортной сети Алгоритм построения фундаментальной системы циклов - student2.ru называется неотрицательная вещественная функция, определенная на множестве дуг, удовлетворяющая условиям:

ограниченности: поток по любой дуге сети не превосходит пропускной способности этой дуги;

сохранения: суммарный поток, заходящий в любую вершину сети (кроме истока и стока) равен суммарному потоку, выходящему из этой вершины.

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

Разрезом сети называется множество, которому принадлежит исток, и не принадлежит сток. Т.е. разрез – это минимальное (в смысле отношения включения) множество дуг, удаление которых “разрывает” все пути, соединяющие исток и сток.

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

65. Елементи теорії формальних граматик. Задачі формалізації мов та перекладу. Задання мов за допомогою граматик. Типи граматик.

Задача формализации языка и перевода заключается в переводе с алгоритмического языка на машинный с одновременной оптимизацией программы, определение корректности записи, которая переводится.Формальный алфавит– это множество символов. Обозначается большой латинской буквой, символ – маленькой с индексом или без. Строка – это конечная последовательность букв алфавита, это элемент декартова произведения. Язык – это множество строк конечной длинны в заданном конечном алфавите. Грамматика – это система, которая позволяет описать язык. Грамматика, которая распознает – это грамматика, которая может определить является ли данная строка правильной, или нет. Грамматика, которая порождает – может построить правильную строку.

Типы грамматик:

- Общего вида,

- Контекстно-зависимая

- Контекстно-свободная

- Праволинейная

66. Елементи теорії скінчених автоматів. Загальна характеристика автоматів. Розпізнавачі.

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

Распознаватели –это автоматы, которые используются для распознавания языка.

67. Скінченні автомати. Способи задання автоматів. Автомати Мили і Мура. Автомати з магазинною пам’яттю. Машина Тьюринга.

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

Конечный автомат можно задать с помощью:

- таблицы (для каждого состояния и входного символа указывается следующее состояние и выходной символ)

- диаграммы состояний (ориентированный граф) (вершины – состояний, дуги – переход из одного состояния в другой)

Автомат Мили – это конечный автомат, у которого входная информация поставлена в соответствие с переходами.

Автомат Мура – это конечный автомат, у которого выходная информация поставлена в соответствие с состоянием.

Автомат с магазинной памятью – это конечный автомат, который имеет прибор памяти – стек.

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

Наши рекомендации