Задача 1. Найти СДНФ, СКНФ, а также сокращенную ядровую и все минимальныедизъюнктивные нормальные формы булевой функции f(x1,x2,x3). Функция задана указанием номеров наборов значений переменных, на которых она равна нулю. Наборы нумеруются числами от 0 (набор 0,0,0) до 7 (набор 1,1,1). f (1,2,6) f (10011101) N f {( 000)(011)(100)(101)(111)} 000 : x10 x20 x30 x1 x2 x3 011 : x10 x12 x31 x1 x2 x3 100 : x11 x20 x30 x1 x2 x3 101 : x11 x20 x31 x1 x2 x3 111 : x11 x12 x31 x1 x2 x3 f ñäíô ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) N f {( 001)(010)(110)} 001 : x11 x12 x30 x1 x2 x3 010 : x11 x20 x31 x1 x2 x3 110 : x10 x20 x31 x1 x2 x3 f ñêíô ( x1 x2 x3 )( x1 x2 x3 )( x1 x2 x3 ) x3 011 111 101 Dc x2 x3 x1 x2 x1 x3 x2 x3 x2 000 001 {000} только интервалу x1 {x2 0; x3 0} Ядровые интервалы {011} только интервалу {x2 1; x3 1} Dÿ ( x2 x3 ) ( x2 x3 ) Найдём Dìèí функции f Вершина (101) N f и ядровым интервалом Данную вершину можно покрыть интервалами: {x1 x2 1}èëè {x1 x3 1} Таким образом f ( x2 x3 ) ( x2 x3 ) ( x1 x2 ) или f ( x 2 x3 ) ( x 2 x3 ) ( x1 x3 ) Dmin 1 x 2 x3 x 2 x3 x1 x 2 Dmin 2 x 2 x3 x 2 x3 x1 x3 Задача 2. Двумя способами: с помощью карты Карно и методом Квайна найти сокращенную, ядровую и все минимальные дизъюнктивные нормальные формы булевой функции f , заданной векторами значений. Построить минимальную функциональную (над системой {¬,&,V}) и минимальную контактную схемы для функции f . f (0001110110101010) 0 0 1 1 x3 x1 0 x2 x4 0 0 0 1 0 1 1* 0 0 0 1 1 1 1 0 1 1 1* 1 0 0 1 0 0 0 *1 *1 1) x1x3 x4 2) x1x2 x4 3) x1x2 x3 4) x2 x3 x4 5) x1x4 Dc x1 x3 x4 x1 x2 x4 x1 x2 x3 x2 x3 x4 x1 x4 Ядровые интервалы 1, и 5 Dÿ x1 x3 x4 x1 x4 Ядровые интервалы не покрывают вершины (0100)(0101) Обе вершины покрываются одним одномерным интервалом 3 Dmin ( x1 x3 x4 ) ( x1 x4 ) ( x1 x2 x3 ) N f {( 0011)(0100)(0101)(0111)(1000)(1010)(1100)(1110)} (010)( 100)(0 11)(01 1)(1 0) 1 0100* 1000* 2 0011* 0101* 1010* 1100* 3 0111* 1110* x1 x2 x1 x1 x1 x2 x3 x3 x2 x4 010-100 10-0* 1-00* 0-11 01-1 1-10* 11-0* x1 x2 x3 x4 x3 x4 x4 x4 1- -0 Dc x1 x3 x4 x1 x2 x4 x1 x2 x3 x2 x3 x4 x1 x4 0 1 0 0 0 1 0 1 V V V V Dÿ x1 x3 x4 x1 x4 x1 x2 x1 x1 x2 x3 x4 x3 x4 x4 x2 x3 x2 0 1 0 0 0 1 0 1 V V V Dmin x1 x3 x4 x1 x4 x1 x2 x3 V Dmin x1 ( x3 x4 x2 x3 ) x1 x4 x1 x1 x3 x4 x2 x3 x4 Минимальная контактная схема x4 0 & 0 0 0 & 0 0 x3 0 & 0 x2 0 0 & 0 x1 Минимальная функциональная схема 0 x1 x3 x4 x1 x4 x1 x2 x3 Задача 3. Проверить полноту системы функций f , g, h . Представить формулами и функциональными схемами над функции 0, 1, , &, . f 01100110 , g 11000011 , h 00010111 . Для того чтобы система функций была полна, необходимо и достаточно, чтобы она содержалась целиком в одном из 5 основных замкнутых классов S , M , L, T0 , T1 g (000) 1 g T0 f (111) 0 f T1 f (000) f (111) 0 f S f (001) f (111) f M h( x1 x2 x3 ) a0 a1 x1 a2 x2 a3 x3 a12 x1 x2 a23 x2 x3 a13 x1 x3 a123x1 x2 x3 h (00010111) h(000) 0 a0 h(100) 0 a0 a1 a1 0 h(010) 0 a0 a2 a2 0 h(001) 0 a0 a3 a3 0 h(110) 1 a0 a1 a2 a12 a12 1 h(011) 1 a0 a2 a3 a23 a23 1 h(101) 1 a0 a1 a3 a13 a13 1 h(111) 1 a0 a1 a2 a3 a12 a23 a13 a123 a123 0 h( x1 x2 x3 ) x1 x2 x2 x3 x1 x3 h L T0 f g h T1 - S - M L - - Каждый столбец содержит хотя бы один минус, следовательно система функций f , g , h полная по теореме Поста. Задача 4. Найти кратчайший путь, соединяющий вершины X и Y в орграфе, изображенном на рисунке. Элементы aij матрицы A задают длины ребер графа. 3 2 A 4 4 5 1 5 4 1 3 5 2 2 1 4 3 1 . 3 2 5 3 4 1 2 3 Решение. Воспользуемся алгоритмом Дейкстры. Постоянные пометки будем обозначать знаком «+», а остальные рассматривать как временные. 1. Начальная вершина X , значит, пометка l X 0 , l x1 l x2 l x12 l Y . Первая итерация. 2. Для соседних с X вершин найдем l xi min l xi , l X c X , xi : l x1 min ,0 3 3 , l x2 min ,0 5 5 , l x3 min ,0 1 1 . 3. Найдем минимальную пометку из всех временных: min 3, 5, 1 1 , т.е. возьмем x3 . 4. x3 получает пометку l x3 1 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x3 . Вторая итерация. 2. Для соседних с x3 вершин найдем l xi min l xi , l x3 cx3 , xi : l x1 min 3, 1 1 2 , l x7 min , 1 2 3 , l x6 min , 1 2 3 , l x2 min 5, 1 2 3 . 3. Найдем минимальную пометку из всех временных: min 2, 3, 3, 3 2 , т.е. возьмем x1 . 4. x1 получает пометку l x1 2 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x1 . Третья итерация. 2. Для соседних с x1 вершин найдем l xi min l xi , l x1 cx1 , xi : l x4 min , 2 4 6 . 3. Найдем минимальную пометку из всех временных: min 3, 3, 3, 6 3 , возьмем x2 . 4. x2 получает пометку l x2 3 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x2 . Четвертая итерация. 2. Для соседних с x2 вершин найдем l xi min l xi , l x2 cx2 , xi : l x5 min , 3 3 6 . 3. Найдем минимальную пометку из всех временных: min 3, 3, 6, 6 3 , возьмем x7 . 4. x7 получает пометку l x7 3 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x7 . Пятая итерация. 2. Для соседних с x7 вершин найдем l xi min l xi , l x7 cx7 , xi : l x4 min 6, 3 5 6 , l x8 min , 3 1 4 , l x9 min , 3 4 7 , l x6 min 3, 3 4 3 . 3. Найдем минимальную пометку из всех временных: min 6, 4, 7, 3, 6 3 , т.е. возьмем x6 . 4. x6 получает пометку l x6 3 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x6 . Шестая итерация. 2. Для соседних с x6 вершин найдем l xi min l xi , l x6 cx6 , xi : l x10 min , 3 2 5 , l x5 min 6, 3 4 6 , l x9 min 7, 3 3 6 . 3. Найдем минимальную пометку из всех временных: min 6, 5, 6, 6, 4 4 , возьмем x8 . 4. x8 получает пометку l x8 4 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x8 . Седьмая итерация. 2. Для соседних с x8 вершин найдем l xi min l xi , l x8 cx8 , xi : l x4 min 6, 4 1 5 , l x12 min , 4 5 9 . 3. Найдем минимальную пометку из всех временных: min 6, 5, 6, 5, 9 5 , возьмем x4 . 4. x4 получает пометку l x4 5 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x4 . Восьмая итерация. 2. У вершины x4 нет соседних вершин с временными пометками. 3. Найдем минимальную пометку из всех временных: min 6, 5, 6, 9 5 , т.е. возьмем x10 . 4. x10 получает пометку l x10 5 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x10 . Девятая итерация. 2. Для соседних с x10 вершин найдем l xi min l xi , l x10 cx10 , xi : l x11 min , 5 4 9 , l x5 min 6, 5 3 6 . 3. Найдем минимальную пометку из всех временных: min 6, 9, 6, 9 5 , возьмем x5 . 4. x5 получает пометку l x5 6 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x5 . Десятая итерация. 2. У вершины x5 нет соседних вершин с временными пометками. 3. Найдем минимальную пометку из всех временных: min 9, 6, 9 6 , т.е. возьмем x9 . 4. x9 получает пометку l x9 6 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для x9 . Одиннадцатая итерация. 2. Для соседних с x9 вершин найдем l xi min l xi , l x9 cx9 , xi : l Y min , 6 2 8 , l x12 min 9, 6 3 9 , l x11 min 9, 6 5 9 . 3. Найдем минимальную пометку из всех временных: min 9, 8, 9 8 , т.е. возьмем Y . 4. Y получает пометку l Y 8 . 5. Т.к. не все вершины графа имеют постоянные пометки, то повторяем алгоритм для Y . Двенадцатая итерация. 2. Для соседних с Y вершин найдем l xi min l xi , l Y cY , xi : l x12 min 9, 8 1 9 , l x11 min 9, 8 3 9 . 3. Найдем минимальную пометку из всех временных: min 9, 9 9 . Таким образом, получим: Значит, кратчайший пути из X в Y : X x3 x6 x9 Y , длина которого равна 8. Задача 5. Найти максимальный поток в транспортной сети, задаваемой графом на рисунке. В этой задаче aij – пропускные способности ребер. Вначале положим для всех ребер f x, y 0 . Двигаясь от вершины X , будем расставлять пометки по следующим правилам: 1) Источнику X присваиваем метку , . 2) Если предыдущая вершина xi уже помечена, а последующая xi 1 еще нет, то помечаем вершину xi 1 в следующих случаях: а) если есть ребро из xi в xi 1 и f xi , xi1 cxi , xi1 ; вершина xi 1 получает метку x , x , где x min x , cx , x f x , x . i i 1 i 1 i i i 1 i i 1 б) если есть ребро из xi 1 в xi и f xi1 , xi 0 ; вершина xi 1 получает метку xi , xi1 , где ki1 min xi , f xi1 , xi . После расстановки получим: Вершина Y оказалась помеченной, значит, увеличиваем величину потока на Y 1. Снова расставляем метки, получаем: Вершина Y оказалась помеченной, значит, увеличиваем величину потока на Y 2 . Снова расставляем метки, получаем: Вершина Y оказалась помеченной, значит, увеличиваем величину потока на Y 3 . Теперь при расстановке меток вершина Y не будет помечена. Значит, поток является максимальным. Его величина 1 2 3 6 . Задача 6. Решить задачу об оптимальном назначении с матрицей эффективностей A . 3 2 A 4 4 5 1 5 4 1 3 5 2 2 1 4 3 1 3 2 5 3 4 1 2 3 Решим эквивалентную транспортную задачу с матрицей C A . Найдем исходный допустимый опорный план по методу наименьших тарифов. Из всех тарифов выбираем наименьший. Возьмем c23 5 . Поэтому третьему потребителю вывозим 1 единицу продукции из второго пункта производства (см. таблицу). Из оставшихся тарифов вновь выбираем наименьший. Возьмем c51 5 . Первому потребителю вывозим 1 единицу продукции из пятого пункта производства. И т.д. 3 1 5 4 1 1 1 2 3 5 2 2 1 1 4 1 4 5 1 1 4 3 1 1 3 2 5 3 1 4 1 2 3 1 1 1 1 1 1 1 (В левом верхнем углу стоимость перевозки) В итоге получили: 0 0 0 0 1 0 0 1 0 0 X 0 1 0 0 0 . 0 0 0 1 0 1 0 0 0 0 Найдем оптимальный план по методу потенциалов зная опорный план, найденный выше. Составим таблицу. В левом верхнем углу стоимость перевозки. В правом верхнем углу псевдостоимость перевозки. В базисных клетках (в заполненных) псевдостоимость равна стоимости. Для остальных клеток псевдостоимость равна сумме i j . Полагаем, что 1 0 . Последовательно находим оставшиеся i и j так, чтобы для базисных клеток выполнялось равенство: сij i j . B2 B1 B4 B3 A1 3 5 1 2 5 A2 A3 2 5 3 2 5 1 1 1 4 A4 A5 4 3 3 2 6 5 4 2 1 5 2 bj j 4 5 4 0 6 1 5 1 1 0 1 0 i 1 1 1 0 1 0 1 1 1 -1 1 0 4 5 2 4 2 1 3 3 1 0 3 2 3 1 4 1 -5 -2 -5 ~ Обозначим псевдостоимость сij . 1 5 4 1 ai 5 0 4 B5 1 1 -4 -1 Ищем свободные клетки, для которых сij с~ij , и для них строим циклы. ~ , 4 2 . Обозначим цикл синей линиНашли свободную клетку A B , для которой ñ ñ 5 2 52 52 ей. В найденной свободной клетке ставим знак «+», а в остальных клетках цикла, где линия цикла меняет направление, знаки чередуются по порядку. Переносим по циклу наименьшее число, найденное из клеток цикла, где линия цикла меняет направление и где стоит знак «–». В данном случае, это 1. B5 B3 ai i B2 B4 B1 A1 3 5 1 2 5 A2 A3 2 5 3 2 5 4 1 A4 1 3 4 4 4 6 A5 5 bj 0 1 5 1 3 4 1 2 5 4 1 5 2 4 2 1 3 3 1 0 3 2 3 1 0 0 4 2 6 5 1 5 2 1 0 4 5 1 4 1 1 1 1 1 1 0 1 0 1 1 1 -1 1 0 1 j -5 -2 -5 -4 -1 После переноса получаем новую таблицу. Для нее вновь надо находить i и j . Весь процесс повторяется заново до тех пор, пока во всех свободных клетках будет выполняться неравенство сij с~ij . B3 B2 B1 A1 3 5 1 4 5 A2 2 5 3 4 5 A3 4 1 3 4 A4 4 3 5 2 A5 5 1 1 4 6 5 0 4 1 4 B4 1 0 1 0 1 1 1 -1 1 0 ai i 1 0 1 0 1 0 1 -1 1 -1 1 1 2 2 1 3 3 1 0 6 5 3 5 2 5 4 2 1 0 5 i 1 1 4 ai 4 4 0 5 B5 4 0 1 3 bj 1 1 1 1 1 j -5 -4 -5 -4 -1 B1 B2 B3 B4 B5 5 4 1 4 1 2 5 2 4 2 2 5 3 4 1 2 2 6 5 1 6 2 A1 3 4 1 3 5 A2 2 4 3 3 5 A3 4 1 3 4 A4 4 3 4 A5 5 1 4 5 0 5 4 1 4 0 1 0 5 5 3 3 3 1 0 3 bj 1 1 1 1 1 j -4 -3 -5 -4 -2 Эта таблица соответствует оптимальному плану, т.к. для всех свободных клеток выполняется неравенство сij с~ij . 0 0 Таким образом, X 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 . 0 0 0 1 1 0 0 0