- •Оглавление
- •Глава 1. Алгебраические системы 17
- •Глава 2. Элементы комбинаторики 88
- •Глава 3. Основы теории графов 101
- •Глава 4. Основы математической логики 169
- •4.1.1.4. Эквивалентные преобразования формул 179
- •4.1.4. Выполнить подстановку: 247
- •Глава 5. Основы теории алгоритмов 252
- •Глава 6. Конечные автоматы 289
- •Введение
- •Глава 1. Алгебраические системы
- •1.1 Множества
- •1.1.1. Четкие множества
- •1.1.2. Нечеткие множества
- •1.2. Соответствия, отображения и функции
- •1.2.1. Четкие отображения и функции
- •1.2.2. Нечеткие отображения
- •1.3. Отношение
- •1.3.1. Четкие отношения
- •1.3.2. Нечеткое отношение
- •1.4. Элементы общей алгебры
- •1.5. Булева алгебра
- •1.5.1. Булевы операции
- •1.5.2. Законы булевой алгебры
- •1.5.3. Формула булевой функции
- •1.5.4. Описание булевой функции
- •1.5.5. Суперпозиция булевых функций
- •1.5.6. Свойства булевых функций
- •1.5.6.1. Самодвойственные булевы функции
- •1.5.6.2. Монотонные булевы функции
- •1.5.6.3. Линейные булевы функции
- •1.5.6.4. Функции, сохраняющие “0”
- •1.5.6.5. Функции, сохраняющие “1”
- •1.5.6.6. Функционально полные системы
- •1.5.7. Разложение булевых функции
- •1.5.7.1. Днф булевой функции
- •1.5.7.2. Кнф булевой функции
- •Алгоритм преобразования формулы к скнф:
- •1.5.8. Минимизация булевых функций.
- •1.5.8.1.Минимизация днф булевой функции
- •1.5.8.2. Минимизация кнф булевой функции
- •1.6. Алгебра четких множеств
- •1.6.1. Операции над множествами
- •1.6.2. Законы алгебры множеств
- •1.6.3. Эквивалентные преобразования формул
- •1.6.4. Композиция отображений и отношений
- •1.6.5. Поиск неизвестного множества
- •1.7. Алгебра нечетких множеств
- •1.7.1. Операции над нечеткими множествами
- •1.7.2. Композиция нечетких отображений
- •1.7.3. Композиция нечетких отношений
- •1.7.4. Свойства нечетких отношений
- •Вопросы и задачи
- •Глава 2. Элементы комбинаторики
- •2.1. Размещение из n элементов по k
- •2.2. Перестановка элементов
- •2.3 Сочетание из n элементов по k
- •2.4. Разбиение множества
- •2. 5 Правила комбинаторики
- •Вопросы и задачи
- •Глава 3. Основы теории графов
- •3.1. Граф и его характеристики
- •3.2. Описание графа
- •3. 3. Числа графа
- •3.4. Операции над графами
- •3.4.1. Унарные операции
- •3.4.1.1 Поиск дополнительного графа
- •3.4.1.2. Введение и удаление вершин графа
- •3.4.1.3. Стягивание вершин графа
- •3.4.1.4. Введение и удаление ребер графа
- •3.4.1.5. Поиск плотности и неплотности графа
- •3.4.1.6. Поиск числа компонент связности графа
- •3.4.1.7. Поиск устойчивости графа
- •3.4.1.8. Поиск цикломатического числа графа
- •3.4.1.9. Поиск хроматического числа графа
- •3.4.2. Бинарные операции
- •3.4.2.1. Объединение графов
- •3.4.2.2. Пересечение графов
- •3.4.2.3. Композиция графов
- •3.4.2.4. Соединение графов
- •3.4.2.5. Прямое произведение графов
- •3.4.2.6. Изоморфизм графов
- •3.5. Некоторые алгоритмы на графах
- •3.5.1. Построение покрывающего остова
- •3.5.2. Построение остова минимального веса
- •3.5.3. Поиск кратчайших путей в сети.
- •3.5.4. Поиск максимального потока в сети
- •3.5.5. Метод критического пути в управлении
- •3.6. Нечеткие графы
- •Вопросы и задачи
- •Глава 4. Основы математической логики
- •4.1. Логика высказываний
- •4.1.1. Алгебра высказываний
- •4.1.1.1. Логические операции
- •4.1.1.2. Правила записи сложных формул.
- •4.1.1.3. Законы алгебры высказываний
- •4.1.1.4. Эквивалентные преобразования формул
- •4.1.1.5. Нормальные формы формул
- •4.1.2. Исчисление высказываний
- •4.1.2.1. Интерпретация формул
- •4.1.2.2. Аксиомы и правила введения и удаления логических связок
- •4.1.2.3. Метод дедуктивного вывода
- •4.1.2.4. Принцип резолюции
- •4. 2. Логика предикатов
- •4.2.1. Алгебра предикатов
- •4.2.1.1. Законы алгебры предикатов
- •4.2.1.2. Предваренная нормальная форма формулы
- •4.2.1.3 Сколемовская стандартная форма формулы
- •4. 2. 2. Исчисление предикатов
- •4.2.2.1. Правила подстановки
- •4.2.2.2. Правила введения и удаления кванторов
- •4.2.2.3. Правила заключения
- •4.2.2.4. Метод дедуктивного вывода
- •4.2.2.5. Принцип резолюции
- •4.2.2.6. Логическое программирование
- •4.3. Логика реляционная
- •4.3.1 Реляционная алгебра
- •4.3.1.1. Унарные операции
- •4.3.1.2. Бинарные операции
- •4.3.1.3. Правила реляционной алгебры
- •4.3.2. Реляционное исчисление
- •4.3.3. Языки реляционной логики
- •4.4. Нечеткая логика
- •4.4.1. Нечеткое исчисление
- •4.4.2. Экспертные системы
- •Вопросы и задачи
- •Глава 5. Основы теории алгоритмов
- •5.1. Рекурсивные функции
- •5.1.1. Базовые функции
- •5.1.2. Элементарные операции
- •5.2. Машина Тьюринга
- •5.2.1. Описание машины Тьюринга
- •5.2.2. Примеры машин Тьюринга
- •5.2.3. Композиция машин Тьюринга
- •5.3. Нормальные алгоритмы Маркова
- •5.4 Сложность вычислений
- •Вопросы и задачи
- •Глава 6. Конечные автоматы
- •6.1. Абстрактный автомат
- •6.1.1. Типы конечных автоматов
- •6.1.2. Описание автоматов
- •6.1.3. Автоматное моделирование алгоритмов
- •6.1.3.1. Автомат Мили - модель управляющего автомата
- •6.1.3.2. Автомат Мура - модель управляющего автомата
- •6.1.3.3. Микропрограммный автомат
- •6.1.4. Эквивалентность автоматов
- •6.1.5. Эквивалентность внутренних состояний автомата
- •6.1.5.1. Детерминированный автомат
- •6.1.5.2. Недетерминированный автомат
- •6.2. Структурный автомат
- •6.2.1. Произведение автоматов
- •6.2.1.1. Последовательное соединение автоматов
- •6.2.1.2. Параллельное соединение автоматов
- •Обратная связь автоматов
- •6.2.3. Сумма автоматов
- •6.2.4. Структурный автомат и кодирование
- •6.3. Логическое проектирование автоматов
- •6.3.1. Кодирование алфавитов автомата
- •6.3.2. Автоматы без “памяти”.
- •6.3.2.1. Формирование оператора
- •6.3.2.2. Формирование системы операторов
- •Логическая схема комбинационного автомата
- •6.3.3. Автоматы с “памятью”
- •6.3.3.1. Формирование оператора
- •6.3.3.2. Формирование оператора
- •.3.3.3. Логическая схема автомата с “памятью”
- •Вопросы и задачи
- •Литература
- •Предметный указатель
3.5.5. Метод критического пути в управлении
Проектом может быть названа разработка документации на автоматизированное рабочее место и ее внедрение в систему менеджмента на предприятии или подготовка архитектурной и проектно-сметной документации на строительство и выполнение строительно–монтажных работ при большом числе соисполнителей. Каждый проект имеет большой перечень работ с указанием их продолжительности и стоимости, последовательности и согласованности исполнения.
Тогда управление проектом в заданные сроки и при заданных ресурсах позволит:
координировать исполнение работ всеми соисполнителями;
предвидеть возможные задержки каждой работы и проекта в целом;
устанавливать последовательность и сроки использования ограниченных ресурсов;
анализировать компромиссные решения по затратам и срокам исполнения.
Для управления такими проектами были разработаны метод сетевого планирования и управления (СПУ) и метод критического пути (МКП).
Ориентированный граф является единственным средством для анализа проектов, требующих выполнения большого числа взаимосвязанных операций (работ). Такой граф имеет одну вершину-исток, которая представляет начало работ по всему проекту, и одну вершину-сток, которая представляет окончание всего проекта.
Между вершинами истоком и стоком есть множество вершин-событий, фиксирующих начало и/или окончание работы или комплекса работ t(i), а множество дуг, связывающих вершины-события, есть работы. Длина дуги-работы характеризует затраты временных или иных ресурсов (i, j).Комплекс работ отображается на графе несколькими заходящими или исходящими дугами для одной вершины-события. Но это не мультиграф, т. к. каждая дуга имеет независимую вершину-исток или вершину-сток. В графе не должно быть петель и контуров. Если две или несколько работ должны начинаться одновременно, но привязаны к различным вершинам-истокам, то между этими вершинами должно быть отмечено ожидание. Чаще всего эти вершины соединяют пунктирной линией, отмечая как бы фиктивную работу.
Метод критического пути позволяет найти такую последователоьность работ от вершины-истока до вершины-стока, которая является минимальной среди всех максимальных по продолжительности или стоимости всех работ.
Рассмотрим фрагмент сети (см. рис. 3.32), включающий в себя пять вершин-событий и шесть дуг-работ: вершина-исток – x0 – есть начало работ по проекту в момент времени t0, вершина-сток - хk – есть окончание работ по проекту в момент времени tk, дуги-работы - 01 и 02 – имеют начало в момент t0. Вершина-событие х1 есть окончание одной работы 01 в момент времени t1=t0+01 и формирует начало комплекса работ 12 и 13. Вершина-событие х2 есть окончание работ 02 и 12 в моменты времени t2’=t0+02 и t2”=t1+12. Работа - 2k не может начаться пока не будут окончены работы 02 и 12. Поэтому начало работы 2k можно определить по значению t2=max{t2’, t2”}.
При наличии нескольких дуг-работ, заходящих в вершину-событие следует определять для каждого события сети ранний момент его наступления tp(xi), как наиболее позднее окончание предшествующих работ, т. е. tp(xi)=max{(tp(xj)+i,j)}.
Вершина-событие х3 есть окончание работы 13 в момент времени t3=t1+13 и определяет возможность начать работы 3k. Так как работы 2k и 3k должна начаться одновременно (см. пунктирную линию), то следует найти максимальное значение времени ожидания tожид.=max{t2, t3}.
Работы 2k и 3k обеспечивают завершение проекта к моменту времени tk=max{tожид.+2k, tожид.+3k}.
Следовательно, наибольшая продолжительность работ по проекту есть максимальное значение tk.
Расчет ранних моментов наступления каждого события следует начинать с x0,
При наличии нескольких дуг-работ, исходящих из вершины-события следует определять для каждого события сети поздний момент его наступления tп(xi), как наименьшее раннее окончание последующих работ, т. е. tп(xi)=min{(tп(xj)-i,j)}.
Расчет поздних моментов наступления каждого события следует начинать с xk.
Для событий, связанных с ожиданием ранний и поздний моменты времени расчитываются по формулам:
tpожид.(хi;хj)=max{tp(хi); tp(хj)}, tnожид.(хi;хj)=min{tn(хi); tn(хj)}.
Максимально время, на которое можно задержать наступление некоторого события без задержки срока завершения всего проекта, называют резервом времени события, т. е. t0(хi)=(tn(хi)-tp(хi)).
Максимально время, на которое можно продлить исполнение работы без задержки срока завершения всего проекта, называют резервом времени на работу, т. е. 0i,j=(tn(хj)- tp(хi)-i,j).
Критический путь сетевой модели представляет последовательность работ и событий, имеющих нулевой резерв времени на события и работы, т. е.
t0(xi)=0,
0i,j=(tn(хj)-tp(хi)-i,j)=0.
Для компактного графического изображения всех показателей каждого события каждую вершину-событие представим в виде круга, разбитого на четыре сектора. В каждом секторе указаны четыре показателя: индекс вершины (i), ранний момент события tp(xi), поздний момент события tn(xi) и резерв времени на событие t0(xi). Дуги графа изображают работы, а пунктирная линия – фиктивную работу - ожидание.
Для иллюстрации возможностей сетевого управления работами по проекту рассмотрим сетевую модель (см. рис. 3.33).
Алгоритм расчета раннего момента наступления событий:
шаг 1: принять для начальной вершины графа tp(0)=0 и p=0, где p-шаг итерации;
pi |
i |
j=hi |
tp(j)={(tp(i)+(i, j))} |
tp(j)=maxi{(tp(i)+(i, j))} |
0 |
0 |
1 |
tp(1)=tp(0)+(0, 1)=3 |
tp(1)=3 |
|
|
2 |
tp(2)=tp(0)+(0, 2)=2 |
|
1 |
1 |
2 |
tp(2)=tp(1)+(0, 2)=8 |
tp(2)=8 |
|
|
3 |
tp(3)=tp(1)+(1, 3)=5 |
tp(3)=5 |
|
|
5 |
tp(5)=tp(1)+(1, 5)=10 |
|
2 |
2 |
4 |
tp(4)=tp(2)+(2, 4)=18 |
|
3 |
3 |
5 |
tp(5)=tp(3)+(3, 5)=13 |
tp(4)=tp(5)=18 |
4 |
4 |
6 |
tp(6)=tp(4)+(4, 6)=20 |
|
|
|
7 |
tp(7)=tp(4)+(4, 7)=22 |
tp(7)=22 |
5 |
5 |
6 |
tp(6)=tp(5)+(4, 6)=22 |
tp(6)=22 |
|
|
k |
tp(k)=tp(5)+(5, k)=24 |
|
6 |
6 |
k |
tp(k)=tp(6)+(6, k)=27 |
|
7 |
7 |
k |
tp(k)=tp(7)+(7, k)=23 |
tp(k)=27 |
а) если к вершине j подходит одна дуга (i, j), то принять tp(j)=(tp(i)+(j, i)),
б) если к вершине j подходит несколько дуг {(i, j)}, то сравнить и найти максимальное значение раннего момента наступления события j по формуле: tp(j)=maxi{(tp(i)+(i, j))}.
шаг 3: если p=(n-1), то конец, иначе принять p=(p+1) и перейти к шагу 2 алгоритма.
Результаты вычислений представлены таблицей.
Алгоритм расчета позднего момента наступления события:
шаг 1: принять для конечной вершины графа tn(k)=tp(k) и р=0, где р-шаг итерации;
шаг 2: определить на шаге итерации р поздний момент наступления события j по формуле: tn(j)=(tn(i)-(j, i)), где tn(i)-событие i с известным поздним моментом наступления; (j, i) –продолжитель- ность работы (i, j) от события, имеющего tn(i);
а) если от вершины j отходит одна дуга (i, j), то принять tn(j)=(tn(i)-(j, i);
б) если от вершины j отходит несколько дуг (i, j), то сравнить и найти минимальное значение позднего момента наступления события j по формуле: tn(j)=mini{(tn(i)-(j, i))};
шаг 3: если р=(n-1), то конец, иначе принять р=(р+1) и перейти к шагу 2 алгоритма.
Результаты вычисления представлены таблицей.
pi |
i |
j=hi-1 |
tn(j)=(tn(i)-(j, i)) |
tn(j)=mini{(tn(i)-(j, i))} |
0 |
k |
7 |
tn(7)=(tn(k)-(k, 7))=26 |
tn(7)=26 |
|
|
6 |
tn(6)=(tn(k)-(k, 6))=22 |
tn(6)=22 |
|
|
5 |
tn(5)=(tn(k)-(k, 5))=21 |
|
1 |
7 |
4 |
tn(4)=(tn(7)-(4, 7))=22 |
|
2 |
6 |
5 |
tn(5)=(tn(6)-(5, 6))=18 |
|
|
|
4 |
tn(4)=(tn(6)-(4, 6))=20 |
tn(5)=tn(4)=18 |
3 |
5 |
3 |
tn(3)=(tn(5)-(3, 5))=10 |
tn(3)=10 |
|
|
1 |
tn(1)=(tn(5)-(1, 5))=11 |
|
4 |
4 |
2 |
tn(2)=(tn(4)-(2, 4))=8 |
tn(2)=8 |
5 |
3 |
1 |
tn(1)=(tn(3)-(1, 3))=8 |
|
6 |
2 |
1 |
tn(1)=(tn(2)-(1, 2))=3 |
tn(1)=3 |
|
|
0 |
tn(0)=(tn(2)-(0, 2))=6 |
|
7 |
1 |
0 |
tn(0)=(tn(1)-(0, 1))=0 |
tn(0)=0 |
шаг 1: принять р=0, где р-шаг итерации;
шаг 2: определить на шаге итерации р индекс события i и резерв его ожидания по формуле: t0(i)=(tn(i)-tp(i));
шаг 3: если р=(n-1), то конец, иначе принять р=(р+1) и перейти к шагу 2.
pi |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
i |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
k |
t0(i) |
0 |
0 |
0 |
5 |
0 |
0 |
0 |
4 |
0 |
Алгоритм расчета резерва времени на работу:
шаг 1: принять р=0 и выделить любую дугу (i,j);
шаг 2: определить резерв времени для работы (i,j) по формуле i,j0.=(tn(j)- tp(i)-j,i);
шаг 3: если р=m, где m-число дуг, то конец, иначе р=(р+1), выделить новую дугу (i,j) и перейти к шагу 2 алгоритма.
Результаты расчетов приведены в таблице.
-
pi
(i,j)
i,j0
pi
(i,j)
i,j0
1
(0, 1)
0
7
(3, 5)
5
2
(0, 2)
6
8
(4, 6)
2
3
(1, 2)
0
9
(4, 7)
4
4
(1, 3)
5
10
(5, 6)
0
5
(1, 5)
8
11
(5, k)
3
6
(2, 4)
0
12
(6, k)
0
13
(7, k)
4
Произведенный анализ показывает, что
события 1, 2, 4, 5, 6, имеют резерв времени равный нулю; cледовательно, они принадлежат критическому пути;
работы (0, 1); (1, 2); (2, 4); (5, 6); (6, k) имеют резерв времени равный нулю; cледовательно, они также принадлежат критическому пути;
события 3 и 7 имеют резерв времени, что позволяет ослабить внимание на исполнение работ 13, 35, 47, 7k или уменьшить затраты на исполнение этих работ, но не более указанных резервов;
работы (0;2); (1;5); (4;6); (5;k) имеют резерв времени, что позволяет продлить исполнение этих работ или уменьшить затраты ресурсов, но не более указанных резервов.
Выполненные расчеты представлены на рис. 3.33. Там же показан полужирной линией критический путь, соединяющий события, имеющие нулевой резерв времени, дугами-работами, также имеющими нулевой резерв времени.