Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по дискретной математике.doc
Скачиваний:
295
Добавлен:
02.05.2014
Размер:
3.74 Mб
Скачать

3.3 Задачи по минимизации и доопределению булевых функций

1. Из заданного множестваАэлементарных конъюнкций выделить простые импликанты функцииf:

1) A = ,= (00101111);

2) A = ,= (01111110);

3) A = ,= (1010111001011110);

4) A = ,= (1011);

5) A = ,= (00111011);

6) A = ,= (00101111).

2. По заданной ДНФ с помощью метода Блейка построить сокращенную ДНФ:

1)

2)

3)

4)

5)

6)

7)

8)

3.Построить сокращенную ДНФ по заданной КНФ:

1)

2)

3)

4)

5)

6)

7)

8)

4. Изобразив множествоNfфункциивEn, найдйте коды максимальных интервалов и построитьйте сокращенную ДНФ:

1) = (11110100); 2)= (01010011);

3) = (11010011); 4)= (11100111);

5) = (1111100001001100); 6)= (0001011111101111);

7) = (1110011000000111); 8)= (1111111111111000).

5.С помощью алгоритма Квайна построить сокращенную ДНФ для функцииf, заданной вектором своих значений:

1) = (01110110); 2) = (10111101);

3) = (00101111); 4)= (11100100);

5) = (0001101111011011); 6)= (0000111111110110);

7) = (1111111101111110); 8)= (0000111101111111).

6.Найти сокращенную ДНФ функцииfс помощью минимизирующей карты:

1) = (01010111); 2)= (11011011);

3) = (10110000); 4)= (11101111);

5) = (0001101111011111); 6)= (0011110111111101);

7) = (0011110111011110); 8)= (0010101111011111).

7.С помощью минимизирующих карт построить сокращенную ДНФ для частично определенной функцииf, заданной векторно (прочерки соответсвуют неопределенным значениям):

1) = (01--01-1);

2) = (1-01--10);

3) = (1---0-10);

4) = (0--10-1-);

5) = (10-1-011-0--1-01);

6) = (0--1---0--1-1-01);

7) = (--01-1-00----1-0);

8) = (-10-1-11-01-0---).

8.Найти длину сокращенной ДНФ функцииf:

1)

2)

3)

4)

5)

6)

7)

8)

9)

9.Выяснить, является ли ДНФDа) тупиковой, б) кратчайшей, в)минимальной:

1)

2)

3)

4)

5)

6)

7)

8)

10.Применить алгоритм упрощения к ДНФ:

1)

2)

3)

4)

5)

6)

7)

8)

11.По заданной сокращенной ДНФDпостроить минимальные ДНФ:

1)

2)

3)

4)

5)

6)

7)

8)

12.С помощью таблицы Квайна построить все тупиковые ДНФ функцииf, заданной вектором своих значений:

1) = (01111100); 2) = (01111110);

3) = (00011111); 4) = (1111100001001100);

5) = (1110100001101000); 6) = (1110011000010101);

7) = (0001011110101110); 8) = (0001101111100111).

4. Логика высказываний

4.1. Введение в логику высказываний

Определение.Высказыванием называется повествовательное предложение, о котором имеет смысл говорить, что оно истинно или ложно.

Примеры высказываний: «2х2=4», «Волга впадает в Черное море», «Москва – столица России». Первое и третье высказывания истинны, второе – ложно. Предложение «х +y = 4» не является высказыванием, т.к. оно может быть истинным при некоторых значенияххиyи ложным при других значениях. Из простых, атомарных высказываний можно сооружать сложные высказывания. Например, из двух высказываний: «Москва стоит на берегу Невы» и «Санкт-Петербург стоит на берегу Невы», из которых первое ложно, второе истинно, можно соорудить более сложные высказывания: «Москва стоит на берегу Невы или Санкт-Петербург стоит на берегу Невы» (истинное) или «Москва стоит на берегу Невы и Санкт-Петербург стоит на берегу Невы» (ложное).

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

Рассмотрим более подробно последнюю функцию , гдеPиQ– высказывания, т.е. утверждение типа: «влечет» или «изследует», например, «Если 2х2=5, то Москва – столица». Не математик найдет это выражение ложным, ибо ему кажется, что в выражении «влечет»должно по смыслу вытекать из, только в этом случае утверждение истинно. Но тогда получается, что логическая связка «» зависит от смысла высказываний. Математики импликацию определяют стандартной таблицей истинности, которая не противоречит «здравому смыслу»: «лл» и «ли» – эти утверждения истинны, так как из ложной посылки можно получить как ложное, так и истинное утверждение. «ии» – истинное утверждение, так как из верной посылки с помощью верных рассуждений можно получить только истинное утверждение. «ил» – ложное утверждение, ибо из истинного утверждения с помощью верных рассуждений мы не сможем прийти к ложному результату.

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

Формула называетсятавтологией, если она принимает значение 1 для любого набора значений входящих в нее переменных, т.е. если она реализует функцию константа 1.

Формула называетсяпротиворечием, если она принимает значение 0 на всех наборах значений переменных(реализует функцию константа 0).

Формула называетсяопровержимой,если существует наборзначений, такой что

Формула называетсявыполнимой, если существует наборзначений, такой что

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

  1. т.е.Эта тавтология называетсязаконом исключенного третьего или tertium nondatur.

  2. цепное рассуждение.

  3. закон Пирса.

Любую из этих тавтологий можно обосновать, составив таблицу истинности и показав, что соответствующая функция есть константа. К этому же результату можно прийти с помощью эквивалентных преобразований.

Докажем, что – тавтология.

При доказательстве различных утверждений мы пользуемся «рассуждениями».

Рассуждениеназывается правильным, если из конъюнкции посылокследует заключениеD, это записывается:, т.е. всякий раз, когда все посылки истинны, то заключение тоже истинно. Таким образом, чтобы установить правильность рассуждений, надо показать, что формулаявляется тавтологией. Действительно, если какая-то из посылок ложна, тои импликация принимает значение 1. Если все посылки истинны и рассуждения верны, то заключение тоже должно быть верно и импликация вновь принимает значение 1.

Пример 1.Рассмотрим следующее «рассуждение»: «Если число 5 – простое, то оно нечетное. Число 5 – нечетное, следовательно, оно простое». Число 5 действительно простое, но сами рассуждения неверны. Введем обозначения для высказываний:х– «5 – число простое»,y– «5 – число нечетное». Тогда посылками будутзаключением будет х. Рассуждения шли по схемеСтроим формулу для определения правильности рассуждения:Проверим,

На наборе х = 0,y= 1 формула принимает значение 0, следовательно, она не является тавтологией. Эта формула будет тавтологией, еслих=y, т.е. простое число и нечетное число – эквивалентные понятия. «Здравый смысл подсказывает», что в этом случае, действительно, рассуждения верны.

Пример 2.Если Петр занимается спортом, то Петр никогда не болеет. Петр занимается спортом, следовательно, он не болеет.

Введем обозначения для высказываний: x– «Петр занимается спортом»,y– «Петр не болеет».

Схема рассуждений Проверим правильность этой схемы рассуждений:

Распространенные схемы правильных рассуждений:и. Правильность первой схемы доказана в примере 2. Докажем правильность второй схемы:

Рассмотрим высказывание вида гдеА – конъюнкция посылок,В– заключение. Если формулаА – тавтология и рассуждения логически правильны, то заключениеВпринимает значение «истина», что следует из таблицы истинности для импликации. Такиеметоды доказательстваистинности заключения называютсяпрямыми. Иногда удобнее доказать истинность другого высказывания, эквивалентного данному. Такие формы доказательства называютсякосвенными. Одним из них является методдоказательства от противного.

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

2. Существуют и другие схемы доказательства от противного. Предполагаем, что из следуети приходим к тому, что истинными оказываютсяиилии. Эти схемы основаны на эквивалентностиили.

Действительно, и

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

Рассмотрим на конкретных задачах применение исчисления высказываний.

Пример 3.Записать составное высказывание в виде формулы, употребляя булевы переменные для обозначения простых высказываний.

а) если идет дождь, то дует ветер и становится холодно;

б) если дует ветер, идет дождь;

в) ветер дует тогда и только тогда, когда идет дождь;

г) неверно, что ветер дует тогда и только тогда, когда нет дождя.

Решение. Введем обозначения:х– «идет дождь»,у– «дует ветер»,z–«становится холодно».

Тогда приведенные высказывания можно записать в виде следующих формул: а) б)в)г).

Пример 4. Выяснить, являются ли следующие рассуждения логически верными.

Если Джонс не встречал ночью Смита, то Смит был убийцей или Джонс лжет. Если Смит не был убийцей, то Джонс не встречал Смита этой ночью, и убийство имело место после полуночи. Если убийство имело место после полуночи, то Смит был убийцей или Джонс не лжет. Следовательно, Смит был убийцей.

Решение. Введем логические переменные:х– «Джонс не встречал ночью Смита»,у– «Смит убийца»,z– «Джонс лжет»,t– «убийство состоялось после полуночи». Прежде чем записать формулу, надо уточнить по условию задачи в каком контексте употребляется союз «или». Когда мы говорим «А или В», мы можем подразумевать две разные ситуации: а)или б)Во втором случае высказыванияАиВне могут быть одновременно истинными. Чтобы подчеркнуть этот момент, обычно говорят «либоА, либоВ». В нашей задаче нет такой оговорки, поэтому мы можем для записи высказывания: «Смит был убийцей или Джонс не лжет» использовать формулу. Итак, мы имеем посылки:,,заключение:у. Надо составить формулу:

и посмотреть, будет ли она тавтологией:

Следовательно, рассуждения логически правильны.

Пример 5.Проверить совместность утверждений.

Либо свидетель не был запуган, либо, если Генри покончил жизнь самоубийством, то записка была найдена. Если свидетель был запуган, то Генри не покончил жизнь самоубийством. Если записка была найдена, то Генри покончил жизнь самоубийством.

Решение.Введем булевы переменные: х – «свидетель не запуган», у – «Генри покончил самоубийством»,z– «записка найдена». Составим конъюнкцию посылок и посмотрим, не является ли она противоречием.

Здесь употреблено выражение «либо..., либо...», поэтому первое составное высказывание следует записать в виде что эквивалентноКонъюнкция посылок имеет вид:

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

Пример 6.Четыре ученицы: Маша (М), Нина (Н), Ольга (О) и Поля (П) участвовали в соревнованиях и заняли первые 4 места. На вопрос, кто какое место занял, было дано 3 ответа:

  1. О – второе, П – третье;

  2. О – первое, Н – второе;

  3. М – второе, П – четвертое.

В каждом из этих ответов одна часть верна, а другая нет. Какое место заняла каждая девушка?

Решение.Введем булевы переменные:х– «О – второе»,у– «П – третье»,z– «О – первое»,t– «Н – второе»,u– «М – второе»,– «П – четвертое». Получим систему уравнений:так как еслиxистинно, тогдаyложно, а– истинно илибоАналогично,Удобнее записать эту систему следующим образом:

Отсюда илиокончательно,

Кроме того, так как одна ученица не может занять 2 места и одно место не может быть занято двумя ученицами. В результате в последнем уравнении останется единственный ненулевой членОтсюдаили О – первая, М – вторая, П – третья, Н – четвертая.

Пример 7. Во время перемены в классе были Аня, Борис, Ваня и Майя. Один из них разбил окно. На вопрос:”Кто разбил окно?”, были даны ответы:

Аня: 1) Я не разбивала. 2) Я сидела и читала. 3) Майя знает, кто разбил.

Борис: 1) Я этого не делал. 2) С Майей я давно не разговариваю. 3) Это сделал Ваня.

Ваня: 1) Я не виновен. 2) Разбила Майя. 3) Борис лжёт, говоря, что разбил я.

Майя: 1) Я не разбивала. 2) Это вина Ани. 3) Борис знает, что я не виновна, т.е. мы с ним беседовали во время перемены.

Затем каждый признался, что из трёх ответов каждого, два – истинны, а один ложный. Кто разбил окно?

Решение.Введем булевы переменные. Высказывания, принадлежащие Ане, обозначим буквамис индексами; высказывания, принадлежащие Борису –соответственно, принадлежащие Ване –и принадлежащие Майе –.

Запишем все формулы, которые являются тавтологиями, получим уравнения:

;

;

;

.

Выпишем все противоречия:

Чтобы иметь возможность воспользоваться этими противоречиями, возьмём конъюнкцию двух тавтологий:

и

что тоже будет тавтологией. Получим

Вэтой формуле слева останется всего три ненулевых члена:

илиПоследнее уравнение даётТак какитои следовательно,аСледовательно, окно разбила Аня.

Рассмотрим еще одну задачу, для решения которой не требуется аппарат логики высказываний, но тем не менее эта задача относится к логическим задачам.

Пример 8. В кафе встретились три друга: скульптор Белов, скрипач Чернов и художник Рыжов. «Замечательно, что один из нас имеет белые, один черные, а один рыжие волосы, но ни у кого цвет волос не совпадает с фамилией», – заметил черноволосый. «Ты прав», – сказал Белов. Какой цвет волос у художника?

Решение. Составим таблицу.

Фамилия

Цвет волос

Б

Ч

Р

б

0

ч

0

р

0

Н

Фамилия

Цвет волос

Б

Ч

Р

б

0

1

0

ч

0

0

1

р

1

0

0

евозможное сочетание фамилии и цвета волос будем обозначать 0, возможное 1. Очевидно, что в каждой строке и в каждом столбце должна быть только одна 1. Получим два варианта.

Фамилия

Цвет волос

Б

Ч

Р

б

0

0

1

ч

1

0

0

р

0

1

0

Из условия задачи ясно, что черноволосый не Белов, поэтому первый вариант не подходит. Следовательно, Белов – рыжий, Чернов – белый, Рыжов – черный.

Пример 9.На склад, имеющий два помещения для хранения больших количеств двух видов топлива – угля и кокса, каждого отдельно, поступают грузовики, каждый всякий раз с одним из этих видов топлива. К механизму, открывающему шахты, предъявляется требование, чтобы он открыл шахту в помещении для угля, если прибывает грузовик с этим топливом, и шахту в помещении для кокса, если прибывает грузовик с коксом. Для обеспечения хорошей сортировки топлива было предъявлено дополнительное требование: всякий раз в помещение склада впускается только один грузовик и открывается лишь одна шахта.

Спрашивается, имеет ли этот механизм также следующее свойство: если не въехал в помещение склада грузовик с углем, то шахта для угля не откроется, а если не въехал грузовик с коксом, то не откроется шахта для кокса.

Решение.Введем булевы переменные: высказывание « прибыл грузовик с углем» обозначим черезx, « прибыл грузовик с коксом» –y, «открыта шахта для угля» –z, «открыта шахта для кокса» –t. Тогда посылками будут: заключениеЗадача сводится к тому, чтобы выяснить, правильны ли рассуждения, т. е. вытекает ли это заключение из конъюнкции посылок. Кроме того, имеются два дополнительных условия, что может въехать только одна машина и открывается лишь одна дверь. Эти условия можно задать равенствами:и.аналогично,(представление в виде СДНФ или СКНФ). Построим формулу:

Так как , тоаналогично,, следовательно,Мы получили тавтологию, следовательно, рассуждения верны.

Пример 10.На предприятии есть три цеха:A,B,C, договорившиеся о порядке утверждения проектов, а именно:

1. Если цех Bне участвует в утверждении проекта, то в этом утверждении не участвует и цехA.

2. Если цех Bпринимает участие в утверждении проекта, то в нем принимают участие цехаAиC.

Спрашивается, обязан ли при этих условиях цех Cпринимать участие в утверждении проекта, когда в нем принимает участие цехA?

Решение.Логические переменные: «Аучаствует в утверждении проекта» обозначим черезА, «Вучаствует в утверждении проекта» –В, «Сучаствует в утверждении проекта» –С. Посылки:. УтверждениеНадо выяснить, верны ли рассуждения, т.е. выяснить будет ли тавтологией формула:

следовательно, рассуждения верны.

Пример 11.Перед судом стоят три человека, из которых каждый может быть либо туземцем, либо колониалистом. Судья знает, что туземцы всегда отвечают на вопросы правдиво, между тем как колониалисты всегда лгут. Однако судья не знает, кто из них туземец, а кто колониалист. Он спрашивает первого, но не понимает его ответа. Поэтому он спрашивает сначала второго, а потом третьего о том, что ответил первый. Второй говорит, что первый назвал себя туземцем. Третий говорит, что первый назвал себя колониалистом. Кем были второй и третий подсудимые?

Решение.Во-первых, если первый человек туземец, то он назовет себя туземцем, если он колониалист, то тоже назовет себя туземцем. Высказывание «первый сказал, что он туземец» обозначим черезx, «второй туземец» –y, «третий туземец» –z, и заметим, чтоx 1.

Имеем следовательно, второй – туземец.следовательно, третий – колониалист.