Правило де Моргана[11]. Одновременно лета
!(
!
Эти правила позволяют преобразовывать логические модели, раскрывать их свойства и упрощать выражения. Давайте решим задачу.
Перегрев сервера
Моделируя эту задачу в логических переменных, можно в одном выражении сформулировать условия, когда сервер выходит из строя:
(
Используя правило дистрибутивности, выведем за скобки
Сервер работает, когда!
!
Применим правило де Моргана и раскроем скобки:
!
Воспользуемся правилом де Моргана еще раз:
!
Данное выражение нам говорит, что когда сервер работает, мы имеем либо!
Таблицы истинности
Еще один способ анализа логических моделей состоит в сверке данных со всевозможными сочетаниями ее переменных. Каждой переменной в
Рис. 1.5. Таблицы со всеми возможными сочетаниями от одной до пяти логических переменных
Одна переменная требует двух строк: в одной она имеет значение True, в другой — False. Чтобы добавить переменную, нужно удвоить число строк. Новой переменной задается True в исходных строках и False — в добавленных (рис. 1.5). Размер таблицы истинности увеличивается вдвое с каждым добавлением переменной, поэтому такую таблицу оправданно использовать лишь в случаях, когда переменных немного[12].
Давайте посмотрим, как можно использовать таблицу истинности для анализа задачи.
Хрупкая система
1) если база данных заблокирована, то мы можем сохранить данные;
2) база данных не должна блокироваться при заполненной очереди запросов на запись;
3) либо очередь запросов на запись полна, либо полон кэш;
4) если кэш полон, то база данных не может быть заблокирована.
Возможно ли это? При каких условиях станет работать такая система?
Сначала преобразуем каждое техническое требование в логическое выражение. Такую систему управления базами данных можно смоделировать при помощи четырех переменных.
1: | |
2:!( | |
3: | |
4: |
Далее создадим таблицу истинности со всеми возможными сочетаниями переменных (табл. 1.2). Дополнительные столбцы добавлены для проверки соблюдения технических требований.
Все технические требования удовлетворяются в состояниях с 9-го по 11-е и с 13-го по 15-е. В этих состояниях
Чтобы проверить, чему вы научились, попробуйте разгадать загадку «Кто держит зебру?»[13]. Это известная логическая задача, ошибочно приписываемая Альберту Эйнштейну. Говорят, что только 2 % людей могут ее решить, но я сильно сомневаюсь. Используя большую таблицу истинности и правильно упрощая и объединяя логические высказывания, вы ее разгадаете, я уверен в этом.
Всегда, имея дело с ситуациями, допускающими один из двух вариантов, помните: их можно смоделировать с помощью логических переменных. Благодаря этому очень легко получать выражения, упрощать их и делать выводы.
А теперь давайте взглянем на самое впечатляющее применение логики: проектирование электронно-вычислительных машин.
Логика в вычислениях