Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка заоч ДМ_25вар.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
80.9 Кб
Скачать

8

Вар

Фамилия

Вар

Фамилия

1

1

2

2

3

3

4

4

5

5

6

6

7

7

8

8

9

9

10

10

11

11

12

12

13

13

14

14

15

15

16

16

17

17

18

18

19

19

20

20

21

21

22

22

23

23

24

24

25

25

Методические указания по дискретной математике

ПРЕДИСЛОВИЕ

Курс дискретной математики в БГТУ, который первоначально преподавался только на дневном отделении, теперь изучают также студенты заочной формы обучения. Естественно, сразу же возникла потребность в методических указаниях, содержащих не только контрольные задания для студентов, но и краткие теоретические сведения к ним, а также примеры решения наиболее сложных задач, что облегчило бы заочникам выполнение контрольных работ.

Эту задачу и призвана решить данная работа. Отметим, что параллельно выходят отдельные методические указания по математической логике и теории алгоритмов. Оба пособия вместе должны полностью обеспечить студентов-заочников материалами для выполнения контрольных работ по двум тесно связанным предметам «Дискретная математика» и «Математическая логика и теория алгоритмов».

Структура данных указаний такова: для каждого из заданий контрольных работ № 1 и № 2 сначала формулируется постановка задачи, затем даются краткие теоретические сведения, затем пример решения типовой задачи. После этого приводятся все варианты контрольных заданий (номера вариантов между студентами распределяет лично преподаватель)

Задание 1. Нахождение кратчайшего пути во взвешенном графе.

ОПРЕДЕЛЕНИЕ. Если каждой дуге ( ребру) графа поставить в соответствие некоторое число λk ≥ 0 ( вес дуги), то граф называется взвешенным ( или нагруженным).

Задача о кратчайшем пути состоит в том, чтобы найти кратчайший путь из данной вершины А в данную вершину В в смысле суммы весов ( то есть ∑ λк должна быть минимальной).

Разработан эффективный алгоритм решения этой задачи.

Будем постепенно приписывать всем вершинам графа числовые индексы μ к :

Шаг 1. Вершине А припишем индекс 0, всем остальным вершинам индекс +∞.

ЗАМЕЧАНИЕ. В реальных задачах в роли «числа» + ∞ выступает либо максимальное число из памяти компьютера, либо любое выбранное пользователем число, превосходящее сумму всех весов графа.

Шаг 2. Перебираем последовательно все пары смежных вершин x и y (то есть все дуги графа):

μ x λ xy μ y

• •

x y

Каждый раз проверяем неравенство μ y > μ x + λ xy .

Если оно выполнено, то уменьшаем индекс μ y , заменив его на число μ x + λ x y.

Шаг 3. Этот процесс останавливаем, когда ни один индекс вершины уже нельзя уменьшить. В этот момент вершина В имеет некоторый индекс μВ - это и есть наименьшая сумма весов некоторого пути.

Построим путь с такой суммой весов.

Шаг 4. Среди вершин, смежных с В, обязательно найдется вершина С, для которой выполняется точное равенство μВ = μС + λСВ .

Возвращаемся в вершину С и повторяем этот процесс.

Так как при этом индексы все время уменьшаются, то рано или поздно придем в вершину индекса 0 , то есть в вершину А. Один или несколько путей построены.

ПРИМЕР. Найти кратчайший путь из вершины А в вершину F в данном графе.

B 6 C

5 3 F

А 7 3 4 5 2

D 8 E

Решение. Действуем по вышеприведенному алгоритму.

Припишем вершине A индекс 0, а остальным вершинам индекс +. Затем для каждой пары вершин будем проверять неравенство

μ y > μ x + λ xy и при его выполнении уменьшать индекс. Например,

так как B >A + AB, то примем B=A+AB=0+5=5. Действуя таким образом, мы последовательно получаем:

D=A+AD = 0+7=7,

C=B+BC = 5+6=11,

E=D+DE = 7+8=15,

F=E+EF = 15+2=17,

F=C+CF = 11+3=14.

Ясно, что теперь ни один индекс уже нельзя уменьшить. Итак, вершина F получила окончательный индекс 14. Осталось найти сам кратчайший путь из A в F (длины 14). Для этого пойдем от вершины F обратно к А, каждый раз выбирая ребро, для которого выполняется не неравенство, а точное равенство. Видим, что равенство F=C+CF выполняется для вершины С (но не для Е!), поэтому возвращаемся из F в C. Далее, из С возвращаемся или в В, или в D (в обоих случаях выполняется равенство), после чего осталось вернуться в А.

Итак, существуют два кратчайших пути: ABCF или ADCF.