- •Дискретная математика
- •6.050102 “Компьютерная инженерия” содержание
- •1 Теория множеств 7
- •2 Математическая логика 15
- •3 Формальные теории 35
- •4 Теория графов 47
- •5 Элементы теории чисел 80
- •6 Теория алгоритмов 121
- •Введение
- •1 Теория множеств
- •1.1 Множества и подмножества
- •1.1.1 Элементы множества
- •1.2 Аксиомы теории множеств
- •1.3 Способы задания множеств
- •1.4 Операции над множествами
- •1.5 Элементы алгебры множеств
- •1.5.1 Определение алгебры множеств
- •1.5.2 Основные законы алгебры множеств
- •1.5.3 Принцип двойственности
- •2 Математическая логика
- •2.1 Функции алгебры логики (булевые функции)
- •2.1.1 Способы задания булевых функций
- •2.1.2 Логические функции одной переменной
- •2.1.3 Логические функции двух переменных
- •2.2.6 Функционально полные системы булевых функций
- •2.3 Алгебра буля
- •2.3.1 Определение алгебры. Теорема Стоуна
- •2.3.2 Законы алгебры логики
- •2.3.3 Разложения функций по переменным
- •2.3.4 Приведение логических функций
- •2.3.5 Импликанты и имплициенты булевых функций
- •2.3.6 Методы минимизации логических функций
- •2.4 Алгебра жегалкина
- •2.4.1 Преобразование функций в алгебре Жегалкина
- •2.4.2 Переход от булевой алгебры к алгебре Жегалкина
- •3 Формальные теории
- •3.1 Основные принципы построения формальных теорий исчисления
- •3.2 Определение исчисления высказываний
- •3.2.1 Метатеоремы исчисления высказываний
- •3.2.2 Схемы исчисления высказываний
- •3.3 Исчисление предикатов
- •3.3.1 Определение формальной теории pl
- •3.3.2 Принцип резолюции в исчислении предикатов
- •3.3.3 Схемы доказательств в исчислении предикатов
- •4 Теория графов
- •4.1 История теории графов
- •4.2 Основные определения
- •4.3 Способы представления графов
- •4.3.1 Матрицей смежности
- •4.3.2 Матрицей инцидентности
- •4.4 Пути в графах
- •4.4.1 Задача о кратчайшем пути
- •4.4.2 Алгоритм Дейкстры нахождения кратчайшего пути в графе
- •4.5 Транспортные сети
- •4.5.1 Потоки в транспортных сетях
- •4.5.2 Задача нахождения наибольшего потока в транспортной сети
- •4.5.3 Алгоритм Форда и Фалкерсона нахождения максимального потока транспортной сети
- •4.5.4 Транспортная задача
- •4.6 Обходы в графах
- •4.6.1 Эйлеровы графы
- •4.6.2 Алгоритм Флёри нахождения эйлерова цикла
- •4. Если получился цикл, но не ейлеров, то отбрасываем данную последнюю вершину и повторяем пункт 2.
- •4.6.3 Гамильтоновы циклы
- •4.6.4 Метод ветвей и границ.
- •4.6.5 Метод ветвей и границ в задаче о коммивояжёре
- •4.7 Деревья
- •4.7.1 Построение экономического дерева
- •4.7.2 Алгоритм Краскала
- •5 Элементы теории чисел
- •5.1 Модулярная арифметика
- •5.1.1 Алгоритм Евклида для нахождения наибольшего общего делителя
- •5.1.2 Вычисление обратных величин
- •5.1.3 Основные способы нахождения обратных величин
- •5.1.4 Китайская теорема об остатках
- •5.2 Кодирование
- •5.2.1 Оптимальное кодирование
- •5.3 Обнаружение и исправление ошибок
- •5.3.1 Общие понятия
- •5.3.2 Линейные групповые коды
- •5.3.2 Код Хэмминга
- •5.3.3 Циклические коды
- •5.3.4 Построение и декодирование конкретных циклических кодов
- •5.4 Сжатие информации
- •5.4.1 Исключение повторения строк в последующих строках
- •5.4.2 Алгоритм lzw
- •6 Теория алгоритмов
- •6.1. Основные понятия
- •6.1.1 Основные требования к алгоритмам
- •6.1.2 Блок–схемы алгоритмов
- •6.1.3 Представление данных
- •6.1.4 Виды алгоритмов
- •6.1.5 Правильность программ
- •6.1.6 Эффективность алгоритмов
- •6.1.7 Сходимость, сложность, надежность
- •6.2 Универсальные алгоритмы
- •6.2.1 Основные понятия
- •6.2.2 Машины Тьюринга
- •6.2.3 Рекурсивные функции
- •6.2.5 Тезис Черча-Тьюринга
- •6.2.6 Проблема самоприменимости
- •6.3 Языки и грамматики
- •6.3.1 Общие понятия
- •6.3.2 Формальные грамматики
- •6.3.3 Иерархия языков
- •6.4 Параллельные вычисления
- •Рекомендованная литература
4.5.4 Транспортная задача
Транспортная задача – задача наиболее рационального распределения потока по дугам транспортной сети.
В зависимости от того, какой смысл придаётся весу дуги: либо стоимость провоза единицы груза, либо времени доставки груза, различают два типа транспортных задач:
1 задача - транспортная задача по критерию стоимости;
2 задача - транспортная задача по критерию времени.
Часто транспортная задача трактуется как задача по организации перевозки некоторого груза.
Считают, что есть пунктов отправки груза, пунктов потребления груза: , .
В пунктах отправки имеется груз в количестве , а в пунктах приёма необходимо получить груз .
Необходимо выполнение условия баланса:
Транспортная задача по критерию стоимости
Известно, что стоимость перевозки по дуге единицы груза .
Требуется определить - количество груза, который нужно перевести из в , чтобы обеспечить общую минимальную стоимость перевозки.
Задача решается исходя из теории потоков.
Введём обозначения:
- пропускная способность дуги из в ;
- стоимость прохождения единицы потока по дуге ;
- поток, проходящий по дуге .
Стоимость всего пути по дуге : .
Считают, что задана транспортная сеть с наибольшим потоком . Требуется пропустить по данной сети поток, не превышающий таким образом, чтобы общая стоимость прохождения потока была наименьшей, т.е. обеспечивался минимум:
где , поток по дуге не должен превышать пропускную способность.
Считаем, что - длина пути, тогда стоимость прохождения некоторого потока по пути из в равна: .
Существует два варианта решения транспортной задачи:
1 вариант. На пропускную способность дуг не накладывается никаких ограничений. Тогда задача решается простым нахождением кратчайшего пути.
2 вариант. На пропускную способность дуг накладываются ограничения. В этом случае задача решается методом частичных потоков.
Алгоритм метода частичных потоков
В простейшем графе ищем кратчайший путь из в , .
Пусть в результате пункта 1 определили путь , имеющий пропускную способность , т.е. .
Пропускаем по данному пути поток , так что
Производим замену пропускной способности дуг по правилу:
Поток, который необходимо пропустить по транспортной сети, уменьшаем на , .
Исключаем из дальнейшего рассмотрения дуги, у которых .
Рассматриваем новый граф , как частичный граф исходного и переходим к пункту 1 для пропуска по транспортной сети потока .
Данные потоки и т.д., полученные на определённых шагах итерации называются частичными потоками.
Алгоритм останавливается, когда , .
Общая стоимость перевозки определяется по формуле (1).
Решение данной задачи основано на определении кратчайшего пути в графе, который определяется для каждого частичного графа, в частности по алгоритму Дейкстры.
Пример решения транспортной задачи по критерию стоимости
Имеется однородный груз в трёх пунктах отправления. Требуется доставить груз в четыре пункта назначения при соблюдении условия баланса. Стоимость перевозки . Т.е. сколько груза вести из каждого пункта отправления в пункт назначения, чтобы стоимость перевозки была минимальной.
Таблица 4.11 – Таблица стоимости и количества перевозимого груза
-
5
10
20
15
10
8
3
5
2
15
4
1
6
7
25
1
9
4
3
1.Проверяем условие баланса: .
2.Строим транспортную сеть. Выбираем начальную вершину и соединяем её с вершинами дугами с пропускной способностью равной аi. Вершины соединяют с выходом сети с пропускной способностью равной . Считаем, что стоимость перевозки из в и из в равна нулю.
3. Находим кратчайший путь из в . Присваиваем всем вершинам метку 0. Начиная с вершины присваиваем всем вершинам метку, которая равна стоимости перевозки груза по соединяющей их дуге. Рядом с меткой ставим вершину, из которой была присвоена метка. Проводя следующую индексацию из , заменяем метки вершин , если стоимость дуги меньше, чем метка, которую имеет вершина. Метку делаем постоянной. Заканчиваем индексацию, когда пройдены все вершины . Из меток вершин выбираем минимальную и присваиваем метку выходу сети . По вершинам возле постоянных меток возвращаемся назад и отмечаем кратчайший путь.
4. Применяем алгоритм метода частичных потоков.
x1 8 y1
10 3 5
4
1
6
7 y3 20
25 1 9 15
x3 4 y4
3
Рисунок 4.12 – Транспортная сеть для таблицы 4.11
1-ый этап. Кратчайший путь: .
Стоимость по дуге: .
Частичный поток: . Стоимость груза: .
Осталось груза: .
x1 y1
10 5
y2 10
x0 15 x2 z
y3 20
25 15
x3 y4
Рисунок 4.13 – Первый путь перевозки груза по ТС
x1 y1
10
y2 10
x0 15 x2 z
y3 20
20 5 15
x3 y4
Рисунок 4.14 – Второй путь перевозки груза по ТС
x1 y1
10
y2
x0 5 x2 10 ыыz
y3 20
20 5 15
x3 y4
Рисунок 4.15 – Третий путь перевозки груза по ТС
x1 y1
10
y2
x0 5 x2 10 z
y3 20
20 5 5
x3 y4
Рисунок 4.16 – Четвёртый путь перевозки груза по ТС
x1 y1
10
y2
x0 5 x2 10 z
y3 20
15 5
x3 y4
5
Рисунок 4.17 – Пятый путь перевозки груза по ТС
x1 y1
10
y2
x0 5 x2 10 z
y3 5
5 15
x3 y4
5
Рисунок 4.18 – Шестой путь перевозки груза по ТС
Таблица 4.12 – Решение транспортной задачи в виде таблицы
|
1 |
2 |
3 |
4 |
5 |
5 |
|
|
|
|
|
|
|
|
1 |
10 |
10 |
5 |
15 |
5 |
|
1 |
1 |
2 |
3 |
4 |
6 |
|
5 |
10 |
20 |
15 |
60 |
30 |
|
45 |
35 |
25 |
20 |
5 |
0 |
Стоимость перевозки всего груза:
.
Транспортная задача по критерию времени
Дана транспортная сеть с некоторым распределением потока φz (см. транспортную сеть, полученную в результате решения транспортной задачи по критерию стоимости).
Задача:
Найти такое распределение потока, которое бы обеспечивало минимальное время его распределения Tmin.
Здесь веса дуг трактуются как время, необходимое для доставки груза по данной дуге: dij = tij .
Решение заключается в следующем:
1) Находится некоторое распределение потока φz по дугам транспортной сети. Т.е. получаем некоторый частичный граф G1’, в который включаются дуги, участвующие в передаче потока. Каждая из этих дуг входит в состав пути из x0 в z и определяет время прохождения данного потока tμ . Таких путей x0 в z может быть конечное множество:
G1’ = { μ1, μ2, … , μn }, которым соответствует время прохождения по пути
Т = { tμ1, tμ2, … , tμn }.
Общее время прохождения потока:
Т = max tμ. μ G1’
Для нашего случая, когда Т = max {1, 1, 2, 3, 6, 4} = 6.
Т.о. Тmin = min T = min max tμ – минимакс.
2) Находим частичное решение. Выведем из графа G1’ наиболее продолжительный путь и введем ранее неиспользованные дуги, у которых вес меньше, чем у выведенной дуги. Во вновь образованном графе G2’ перераспределим исходный поток φz, используя алгоритм нахождения максимального потока в графе (Форда и Фалкерсона). Этот пункт повторяем до тех пор, пока выведенные пути наибольшей продолжительности будут возмещаться новым распределением потока φz.
Для обеспечения сквозной нумерации при индексации вершин перенумеруем вершины yj таким образом:
yj : = xn + j.
Для нашего примера: yj : = x3 + j.
x1 y1 = x4
10 3 5
4
1
x0 15 x2 z
x6 20
25 1 4 15
x3 3 x7
Рисунок 4.19 – Преобразованная транспортная сеть
После исключения дуги (х2, х6) со временем прохождения по ней
t = 6 результирующий поток транспортной сети уменьшается на 5 единиц:
φz’ = φz – 5 = 50 – 5 = 45.
К полученному графу добавляем дуги, которые не участвовали в исходном распределении потока, но с длиной меньше 6:
(х2, х4), (х1, х5), (х1, х6) – Т = {3, 5, 4}.
Перераспределим 5 единиц потока, используя данные дуги, пропустив его по пути = (х0, х2, х4, х3, х6, z), применив алгоритм Форда и Фалкерсона нахождения максимального потока в транспортной сети.
Получаем φz’’ = φz’ + 5 = 45 + 5 = 50 = φz.
При этом Т2 = max {t14, t21, t22, t33, t34} = {2, 4, 1, 4, 3} = 4.
Таким образом граф G2 будет иметь следующий вид:
x1 y1 = x4
10 5
4
1
x0 15 x2 z
(10) x6 20
25 4 (20) 15
x3 3 (5) x7
Рисунок4.20 – Граф G2 после перераспределения 5 единиц потока
Примечание: Если суммарный поток по дуге (хi yj) и (yj хi) равен 0, то данная дуга отбрасывается. В нашем примере это дуга (х3 х4).
Таблица 4.13 – Решение транспортной задачи по критерию стоимости
|
1 |
2 |
3 |
4 |
5 |
6 |
|
|
|
|
|
|
|
|
10 |
0 |
10 |
5 |
20 |
5 |
|
1 |
1 |
2 |
3 |
4 |
4 |
|
10 |
0 |
20 |
15 |
60 |
20 |
t μ |
1 |
1 |
2 |
3 |
4 |
0 |
Таким образом, алгоритм решения данной задачи следующий:
1. Найти начальное распределение потока в транспортной сети, решив, например, транспортную задачу по критерию стоимости. Найти время прохождения потока в данном распределении t.
2. Построить новый граф, исключив из начального дугу, обеспечивающую максимальное время прохождения потока, и добавив ранее неиспользуемые дуги, у которых tij < t.. При этом поток, проходящий по новому пути, будет меньше на величину потока, проходившего по вычеркнутой дуге.
3. Решить задачу нахождения максимального потока в транспортной сети по алгоритму Форда и Фалкерсона. Если удастся пропустить весь заданный поток, то перейти к пункту 2. Иначе алгоритм останавливается. Минимальное время прохождения потока будет определяться последним временем прохождения исходного потока.