Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3512

.pdf
Скачиваний:
16
Добавлен:
08.01.2021
Размер:
575.58 Кб
Скачать

11

Рис. 2.2. Таблица истинности для решения логической задачи

На рис. 2.3 показаны формулы, введенные в ячейки С2, D2 и E2. Значения в ячейках С3:Е5 можно получить раскопировкой формул в ячейках С2, D2 и E2.

Рис. 2.3. Вычисление значений логических функций

Чтобы увидеть список формул, можно воспользоваться опцией Показать окно контрольного значения (рис. 2.4).

Рис. 2.4. Вывод списка формул

12

Для реализации сложных выражений можно использовать функцию "ЕСЛИ".

Например, для реализации операции АВ можно создать формулу (рис.

2.5):

Рис. 2.5. Создание сложных логических выражений с помощью функции ЕСЛИ

Таблица истинности для биусловия показана на рис. 2.6.

Рис. 2.6. Таблица истинности для биусловия

Однако гораздо удобнее в аналогичных случаях использовать возможность создания функций пользователя с помощью VBA

В качестве примера создадим функцию пользователя с именем ЕСЛИ_ТО для выполнения соответствующей логической операции (связи условием или импликации). Аргументы функции: l1 и l2.

Переходим в редактор VBA (СервисМакросРедактор Visual Basic или нажав "горячие клавиши" <Alt> + <F11>). В открывшемся приложении

13

вставляем модуль (InsertModule) и набираем код:

Public Function Eсли_То(l1, l2)

If (l1 = True) And (l2 = False) Then

Eсли_То = False

Else

Eсли_То = True

End If

End Function

Созданную функцию можно найти в Мастере функций (категория

Полный алфавитный перечень или Определенные пользователем).

Результат действия данной функции показан на рис. 2.7.

Рис. 2.7. Таблица истинности для импликации

Упражнение 1. Создать функции пользователя для импликации, связи биусловием и штриха Шеффера (a|b, высказывание, которое ложно тогда и только тогда, когда оба составляющих его высказывания истинны).

Упражнение 2. Пользуясь созданными функциями, составить таблицу истинности высказываний:

14

Упражнение 3. Определить, являются ли выражения тавтологией (т.е. истинным при любых истинностных значениях составляющих его высказываний), противоречием (т.е. ложным при любых истинностных значениях составляющих его высказываний) или ни тем и ни другим.

Упражнение 4. Доказать логическую эквивалентность высказываний (два составных высказывания называются эквивалентными, если они принимают одинаковые истинностные значения для каждого набора истинностных значений своих компонент):

Упражнение 5. Составив таблицы истинности следующих формул, докажите, что они являются тавтологиями:

а. P ¬P (закон исключенного третьего);

б. ¬(P ¬P) (закон отрицания противоречия); в. ¬¬P P (закон двойного отрицания);

г. P P (закон тождества);

д. (P Q) (¬Q →¬P) (закон контрапозиции);

е. ((P Q) (Q R)) (P R) (правило цепного заключения); ж. (P Q) (¬P ↔¬Q) (закон противоположности);

з. (P Q) (Q P) (коммутативность конъюнкции);

и. (P Q) (Q P) (коммутативность дизъюнкции);

к. ((P Q) R) (P (Q R)) (ассоциативность конъюнкции); л. ((P Q) R) (P (Q R)) (ассоциативность дизъюнкции);

м. (P (Q R)) ((P Q) (P R)) (дистрибутивность конъюнкции относительно дизъюнкции);

15

н. (P (Q R)) ((P Q) (P R)) (дистрибутивность дизъюнкции относительно конъюнкции);

о. (P P) P (идемпотентность конъюнкции);

п. (P P) P (идемпотентность конъюнкции);

р. (P Q) (¬P Q) ;

с. (P Q) ((P Q) (Q P)) ;

т. (P (Q P)) P (первый закон поглощения);

у. (P (Q P)) P (второй закон поглощения);

ф. ¬(P Q) (¬P ¬Q) (первый закон де Моргана); х. ¬(P Q) (¬P ¬Q) (второй закон де Моргана);

ц. (P Q) (¬P Q)

Упражнение 6. Решим следующую логическую задачу.

Четверо школьников, наблюдая за движущимся на большой высоте объектом, высказали свои предположения.

1-й сказал: «Высота объекта больше 10000 м или это перехватчик ПВО со скоростью выше скорости звука».

2-й предположил: «Если высота объекта больше 10 км, то это не перехватчик ПВО и скорость объекта ниже скорости звука».

3-й заявил: «Это НЛО или скорость объекта больше скорости звука». 4-й поддержал 3-его: «Если скорость объекта больше скорости звука, то

это наверняка НЛО».

Если высказывания всех четырех истинны, то, что это был за объект и на какой высоте и с какой скоростью он летел ?

Решение.

Обозначим Н = {высота полета больше 10 км},

V = {скорость объекта превышает скорость звука}, Р = {перехватчик ПВО},

N = {объект НЛО}

Запишем логические формулы, соответствующие высказываниям школьников, и преобразуем их с учетом (X Y ) (¬X Y )

16

H (P V )

(2.1)

H (¬P ¬V ) равносильно ¬H (¬P ¬V )

(2.2)

N V

(2.3)

V N равносильно ¬V N

(2.4)

Очевидно, объект не может быть одновременно НЛО и перехватчиком

ПВО, тогда

 

¬(P N )

(2.5)

На листе книги создать таблицу со следующим заголовком (рис. 2.8):

Рис. 2.8. Задача Упражнения 6.

Для 4-х логических переменных H,V,P,N ввести все возможные значения (в диапазон ячеек A2:D17).

Всоответствующих ячейках вычисляем формулы (1-5). Для (2.1)

=ИЛИ(A2;И(C2;B2).

Вячейке F2 вычисляем по формуле (2.2)

=ИЛИ(НЕ(A2);И(НЕ(C2);НЕ(B2)))

Вячейке G2 вычисляем по формуле (3) =ИЛИ(D2;B2)

Вячейке H2 вычисляем по формуле (4) =ИЛИ(НЕ(B2);D2)

Вячейке I2 вычисляем по формуле (5) =НЕ(И(C2;D2))

Так как должны одновременно выполняться все высказывания, в ячейку

J2 вводим =И(E2;F2;G2;H2;I2)

Рассмотрим столбец «ответов» J. Указанные выражения принимают значение ИСТИНА только в одной строке. Она и есть искомое решение.

Задачи и упражнения для самостоятельного решения

Задача 1. Трое друзей, болельщиков автогонок "Формула-1", спорили о результатах предстоящего этапа гонок.

17

Вот увидишь, Шумахер не придет первым, — сказал Джон. Первым будет Хилл.

Да нет же, победителем будет, как всегда, Шумахер, — воскликнул Ник. — А об Алези и говорить нечего, ему не быть первым.

Питер, к которому обратился Ник, возмутился:

Хиллу не видать первого места, а вот Алези пилотирует самую мощную машину.

По завершении этапа гонок оказалось, что каждое из двух предположений двоих друзей подтвердилось, а оба предположения третьего из друзей оказались неверны. Кто выиграл этап гонки?

Задача 2. Вадим, Сергей и Михаил изучают различные иностранные языки: китайский, японский и арабский. На вопрос, какой язык изучает каждый из них, один ответил: "Вадим изучает китайский, Сергей не изучает китайский, а Михаил не изучает арабский". Впоследствии выяснилось, что в этом ответе только одно утверждение верно, а два других ложны. Какой язык изучает каждый из молодых людей?

Задача 3. Три одноклассника — Влад, Тимур и Юра, встретились спустя 10 лет после окончания школы. Выяснилось, что один из них стал врачом, другой физиком, а третий юристом. Один полюбил туризм, другой бег, страсть третьего — регби.

Юра сказал, что на туризм ему не хватает времени, хотя его сестра — единственный врач в семье, заядлый турист. Врач сказал, что он разделяет увлечение коллеги.

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

Определите, кто чем любит заниматься в свободное время и у кого какая профессия.

Задача 4. Некий любитель приключений отправился в кругосветное путешествие на яхте, оснащённой бортовым компьютером. Его предупредили, что чаще всего выходят из строя три узла компьютера — a, b, c, и дали необходимые детали для замены. Выяснить, какой именно узел надо заменить,

18

он может по сигнальным лампочкам на контрольной панели. Лампочек тоже ровно три: x, y и z.

Инструкция по выявлению неисправных узлов такова:

1.если неисправен хотя бы один из узлов компьютера, то горит по крайней мере одна из лампочек x, y, z;

2.если неисправен узел a, но исправен узел с, то загорается лампочка y;

3.если неисправен узел с, но исправен узел b, загорается лампочка y, но не загорается лампочка x;

4.если неисправен узел b, но исправен узел c, то загораются лампочки x и y или не загорается лампочка x;

5.если горит лампочка х и при этом либо неисправен узел а, либо все три узла a, b, c исправны, то горит и лампочка y.

Впути компьютер сломался. На контрольной панели загорелась лампочка x. Тщательно изучив инструкцию, путешественник починил компьютер. Но с этого момента и до конца плавания его не оставляла тревога. Он понял, что инструкция несовершенна, и есть случаи, когда она ему не поможет.

Какие узлы заменил путешественник? Какие изъяны он обнаружил в инструкции?

Лабораторная работа № 3

Тема: “Формулы исчисления предикатов. Операции над предикатами и кванторами. Родственные отношения”

Цель работы: получить необходимые сведения по программированию на языке и системе логического программирования Турбо-Пролог, основанных на языке предикатов математической логики дизъюнктов Хорна, представляющей собой подмножество логики предикатов первого порядка.

Основные элементы языка Турбо-Пролог

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

Факты в языке Пролог описываются логическими предикатами с конкретными значениями. Правила в Прологе записываются в форме правил

19

логического вывода с логическими заключениями и списком логических условий.

Турбо-Пролог - это осуществленная компанией Borland International реализация языка программирования высокого уровня Пролог компиляторного типа. Ее отличает большая скорость компиляции и счета. Турбо-Пролог предназначен для выдачи ответов, которые он логически выводит при посредстве своих мощных внутренних процедур.

Вызов самого Турбо-Пролога осуществляется командой

PROLOG

Главное меню Турбо-Пролога высвечивает 7 доступных пользователю опций (команд) в верхней части экрана:

1.Запуск программы на счет (Run).

2.Трансляция программы (Compile).

3.Редактирование текста программы (Edit).

4.Задание опций компилятора (Options).

5.Работа с файлами (Files).

6.Настройка системы (Setup).

7.Выход из системы (Quit).

Запуск на счет программы, записанной на Турбо-Прологе. Наберите текст программы WELCOME.PRO:

predicates

hello goal

hello. clauses

hello :- write("Welcome to Turbo Prolog!"), nl.

Данная программа имеет целью дать необходимые навыки в использовании меню системы и основных команд редактора. После ввода программы нажмите клавишу <Esc>. Задайте теперь команду Run и пронаблюдайте за строками в окне Message и за результатом работы программы в окне Dialog.

20

Первая строка в окне сообщений указывает на то, что началась трансляция программы WELCOME.PRO трансляция задается автоматически при задании команды Run. Вторая строка сигнализирует о трансляции предиката hello.

Чтобы записать программу на диск, нажмите <Esc>, затем выберите команду Files и подкоманду Save во вновь появившемся меню. В результате будет высвечено либо заданное по умолчанию имя файла (WORK.PRO), либо то имя, которое вы присвоили файлу (в данном случае следует ввести имя

WELCOME.PRO).

Просмотр каталога осуществляется подкомандой Directory команды Files. Загрузка - подкомандой Load команды Files.

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

С точки зрения логики предикатов элементарные выражения имеют вид

P(A1,A2,…,An),

где P – имя предиката; A1,A2,…,An - аргументы.

В Турбо-Прологе предложение «Себастьян является дядей Марии» запишется в виде

P(s, m),

где P – предикат, выражающий отношение «являться дядей»; s, m – объекты «Себастьян и Мария», связанные отношением P.

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

likes(mary, apples). /* Мэри любит яблоки */

или

man(bob) /* Боб - мужчина */ parent(bob, ann). /* Боб - родитель Энн */

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]