Понятие предиката. Логические операции над предикатами

Конспект

ТЕМА «Понятие предиката. Логические операции над предикатами»
Цель урока: знакомство с предикатами, логическими операциями над предикатами.
Задачи урока:
образовательная – изучение понятий алгебры предикатов, формирование умений и навыков
применения алгебры предикатов;
развивающие – развитие логического и комбинационного мышления, памяти, внимательности;
воспитательные – воспитание познавательного интереса учащихся, умения слушать,
аккуратности в работе, трудолюбия.
Тип урока: комбинированный урок.
Формы работы: фронтальная.
Наглядность и оборудование:
 компьютеры;
 мультимедийный проектор;
 презентация, подготовленная в MS PowerPoint (файл LOGIKA13-14.PPT);
 файл Шпаргалка.doc (системы логических уравнений для задач №6, 7, 8, 9);
 файл log10.pas;
 файл predikat.pas;
 карточки для устной работы;
 опорный конспект.
ПЛАН УРОКА.
1. Подведение итогов работы в группах (20 минут).
2. Проверка домашнего задания (5 минут).
3. Изучение нового материала (40 минут):
а) Понятие предиката. Область определения предиката (20 минут);
б) Одноместный предикат. Многоместный предикат (10 минут);
в) логические операции над предикатами (10 минут).
3. Решение упражнений (20 минут).
4. Подведение итогов урока. Домашнее задание (5 минут).
ХОД УРОКА
I. Подведение итогов работы в группах.
Разбор задач №6-9 (файл Шпаргалка.doc).
II. Проверка домашнего задания.
Решение задачи №10.
Решение логической задачи средствами алгебры логики
Введем буквенное обозначение: A – «Аня смотрит телевизор», B – «Валя смотрит телевизор», C – «Света
смотрит телевизор», O – «отец смотрит телевизор», M – «мать смотрит телевизор».
На основе высказываний членов семьи составим систему логических уравнений. По условию задачи либо
отец и мать смотрят телевизор вдвоем, либо отец не смотрит телевизор, либо оба не смотрят. Составим уравнение
1:
1)( ≡+⋅≡+⋅+⋅≡⋅+⋅+⋅ OMOMMOMOMOMOMO (1)
По условию cмотреть телевизор могут по крайней мере или Света, или Вера, или обе. Уравнение (2) будет иметь
вид:
1)( ≡⋅+≡⋅++⋅≡⋅+⋅+⋅ CBCCBBBCCBCBCB (2)
Если Света смотрит телевизор, то имеем C⋅O⋅B, если же Света не смотрит, то остаются возможности, что отец и
Валя оба смотрят или нет, или смотрит только отец или только Валя:
1
BOCCBOCOOCBOCOCOC
BOCBBOCBBOCBOCBOCBOCBOCBOC
⋅⋅+≡⋅⋅++⋅≡⋅⋅+⋅+⋅≡
≡⋅⋅++⋅⋅++⋅⋅≡⋅⋅+⋅⋅+⋅⋅+⋅⋅+⋅⋅
)(
)()(
(3)
Аня и мама смотрят телевизор только по очереди:
1≡⋅+⋅ AMAM (4)
Аня и Валя либо у телевизора вместе, либо на кухне:
1≡⋅+⋅ BABA (5)
Систему уравнений из пяти логических уравнений решаем так: умножим (1) на (2), получим (6):
CBOCOCBMOCMOCBCOMO ⋅⋅+⋅+⋅⋅⋅+⋅⋅≡⋅+⋅+⋅ )()( (6)
Умножим полученное уравнение (6) на уравнение (4), получим (7):
AMCBOAMCBOAMCOAMCOACBMOACMO
AMCBOAMCBOAMCOAMCO
AMCBMOAMCMO
AMAMCBOCOCBMOCMO
⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅≡
≡⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+
+⋅⋅⋅⋅⋅++⋅⋅⋅⋅+≡
≡⋅+⋅⋅⋅⋅+⋅+⋅⋅⋅+⋅⋅
⋅⋅⋅⋅⋅⋅⋅⋅⋅ AMCBMOAMCMO
)()(
(7)
Умножим полученное уравнение (7) на (5), получим (8):
BAMCOBACMOBAMCBOBAMCO
BAAMCBOBAAMCBOBAAMCO
BAAMCOBAACBMOBAACMO
BAAMCBOBAAMCBOBAAMCO
BAAMCOBAACBMOBABA
AMCBOAMCBOAMCOAMCOACBMOACMO
⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅≡
≡⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅+
+⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅+
+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅++⋅⋅⋅⋅⋅+
+⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅≡⋅+⋅⋅
⋅⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅
BAACMO)(
)(
(8)
Умножим полученное уравнение (8) на (3), получим (9):
BAMCOCBAMCOBOCBAMCO
OCBACMOBOCBAMCBOBOCBAMCO
AMCOCBACMOCBAMCBOCBAMCO
CCBAMCOBACMOBAMCBOBAMCO
⋅⋅⋅⋅≡⋅⋅⋅⋅⋅≡⋅⋅⋅⋅⋅⋅⋅
⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅+
⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅≡
+⋅⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅ ()(
Ответ. Из полученного выражения BAMCO ⋅⋅⋅⋅ следует, что телевизор в первый вечер смотрели Вера и Аня.
Решение логической задачи на ЭВМ.
Программа на Паскале:
PROGRAM LOGIKA10;
USES CRT;
VAR O,M,A,B,C,F,F1,F2,F3,F4,F5:INTEGER;
BEGIN
CLRSCR; WRITELN(' O M A B C F');
FOR O:=0 TO 1 DO
BEGIN
FOR M:=0 TO 1 DO
FOR A:=0 TO 1 DO
FOR B:=0 TO 1 DO
FOR C:=0 TO 1 DO
BEGIN
F1:=(O AND M) OR (NOT O);
F2:=(B AND NOT C) OR C;
F3:=(NOT M AND A) OR (M AND NOT A);
F4:=(A AND B) OR (NOT A AND NOT B);
F5:=(NOT C) OR (C AND O AND B);
F:=F1 AND F2 AND F3 AND F4 AND F5;
IF F=1 THEN WRITELN(O:2,M:4,A:4,B:4,C:4,F:4);
END; END;
END.
2
III. Новый материал.
1. Понятие предиката. Область определения предиката.
2. Одноместный предикат. Многоместный предикат
3. Логические операции над предикатами
Лекция, используется презентация LOGIKA13-14.PPT.
ПОНЯТИЕ ПРЕДИКАТА
Выразительные возможности языка логики высказываний очень ограничены.
С ее помощью невозможно проанализировать внутреннюю структуру даже очень
простых рассуждений. Рассмотрим, например, два умозаключения.
•Любой человек смертен, Сократ - человек, следовательно, Сократ
смертен.
•Крокодилы не летают, Луна - головка швейцарского сыра, следовательно,
сборная России выиграет чемпионат мира по футболу.
С точки зрения логики высказываний, оба этих текста представляются одной и
той же формулой:
X ∧ Y => Z.
Первое высказывание представляется строгим логическим выводом, второе же
не соответствует никакому здравому смыслу.
Эти примеры подтверждают наш тезис о том, что в логике высказываний не
рассматривается внутреннее содержание простейших высказываний (атомарных
формул). Мы не имеем возможности «влезть» внутрь элементарного
высказывания.
Рассмотрим расширение логики высказываний, которое называется логикой
предикатов.
Логика предикатов, как и традиционная формальная логика, расчленяет
элементарное высказывание на субъект (буквально – подлежащее, хотя оно может
играть и роль дополнения) и предикат (буквально – сказуемое, хотя оно может
играть и роль определения).
Субъект – это то, о чем что-то утверждается в высказывании;
предикат – это то, что утверждается о субъекте.
Например, в высказывании “7 - простое число”, “7” – субъект, “простое
число” – предикат. Это высказывание утверждает, что “7” обладает свойством
“быть простым числом”.
(Логика предикатов - раздел математической логики, изучающий
логические законы, общие для любой области объектов исследования
(содержащей хоть один объект) с заданными на этих объектах предикатами
(т. е. свойствами и отношениями)).
Если в рассмотренном примере заменить конкретное число 7 переменной х из множества
натуральных чисел, то получим высказывательную форму “х – простое число”. При одних
3
значения х (например, х=13, х=17) эта форма дает истинные высказывания, а при других
значениях х (например, х=10, х=18) эта форма дает ложные высказывания.
Ясно, что эта высказывательная форма определяет функцию одной переменной х,
определенной на множестве N, и принимающую значения из множества {1;0}. Здесь предикат
становится функцией субъекта и выражает свойство субъекта.
В естественной речи часто встречаются сложные высказывания, истинность
которых может изменяться при изменении объектов, о которых идет речь, хотя
форма самого высказывания остается прежней.
Например, высказывание у кошки четыре ноги истинно, у слона четыре ноги
тоже истинно, а высказывание у человека четыре ноги - ложно. Все эти
высказывания имеют одну форму у субъекта х четыре ноги.
Такое переменное высказывание, истинностное значение которого
зависит от параметра, и называется предикатом. (Предикат от лат.
Praedicatum - сказанное)
Таким образом, предикат есть функция, определенная на некотором
множестве параметров и со значениями в {0, 1}.
Определение 1. Одноместным предикатом Р(х) называется такая функция
одного переменного, в которой аргумент х пробегает значения из некоторого
множества М, а функция при этом принимает одно из двух значений: истина или
ложь.
Множество М, на котором задан предикат, называется областью
определения предиката.
Определение 2. N-местным предикатом называется такая функция n
переменных Q(x1, x2, …,xn), определенная на множестве М=М1×М2×…×Мn и
принимающая на этом множестве одно из двух значений: истина или ложь.
Само множество М называется предметным множеством, а аргументы
x1,...,xn ∈ M - предметными переменными.
Множество М, на котором задан предикат, называется областью
определения предиката.
Множество MI p ⊂ , на котором предикат принимает только истинные
значения, называется областью истинности предиката Р(х).
Можно считать, что высказывание это нульместный предикат, то есть
предикат, в котором нет переменных для замены.
Пример 1.
Пусть предметное множество М есть класс млекопитающих. Рассмотрим
одноместный предикат Р(х): у х четыре ноги. Тогда Р(слон) = 1, Р(кошка) = 1,
Р(человек) =0.
Пусть М - множество натуральных чисел. Рассмотрим двухместный предикат
G(x,y): х<у. Тогда, например, G(l,3) = l, G(8,5) = 0.
Предикат называется
А) тождественно истинным, если значение его для любых аргументов есть
«истина» (Предикат Р(х) называется тождественно истинным на множестве М,
4
если MI p = )
Б) тождественно ложным, если значение его для любых аргументов есть
«ложь» (Предикат Р(х) называется тождественно истинным на множестве М,
если ∅=pI );
В) выполнимым, если существует, по крайней мере, одна n-система его
аргументов, для которой значение предиката есть «истина».
Пример 2.
Предикат “x+y=y+x” является тождественно истинным, предикат
“x+1=x” – тождественно ложным, предикат “x+y=5” – выполнимым.
Упражнение 1. Среди следующих предложений выделите предикаты:
1) Луна есть спутник Венеры
2) Планеты х и y принадлежат Солнечной системе
3) 15010705 65
>−+
4) 0232
=++ xx
5) 834
+− xx
6) Любое простое число Р не имеет делителей, отличных от себя и 1
7) Натуральное число n не меньше 1
8) Треугольник АВС равен треугольнику А1В1С1
9) 0122
>++ xx
10)
x
xtg 2
2
cos
1
1 =+
11) xx sinln <
Ответ: 2), 4) 7)-11).
Упражнение 2. Среди следующих предложений выделить предикаты и для
каждого из них указать область истинности.
1) х+5=1
2) при х=2 выполняется равенство 012
=−x
3) 0122
=+− xx
4) существует такое число х, что 0122
=+− xx
5) x+2<3x-4
6) однозначное число х кратно3;
7) (х+2)-(3х-4).
Решение.
1) Предложение х+5=1 является одноместным предикатом Р(х), Ip={-4}
2) предложение «при х=2 выполняется равенство 012
=−x » не является
предикатом. Это ложное высказывание.
3) Предложение 0122
=+− xx является одноместным предикатом Р(х), Ip={1}
4) предложение «существует такое число х, что 0122
=+− xx » не является
предикатом. Это истинное высказывание.
5) Предложение «x+2<3x-4» является одноместным предикатом Р(х), Ip=(3;+∞)
6) Предложение «однозначное число х кратно3» является одноместным
5
предикатом Р(х), Ip={0; 3; 6; 9);
7) Предложение «(х+2)-(3х-4)» не является предикатом.
Логические операции над предикатами
1) Отрицаниемпредиката P (x) называетсяновый предикат )(xP , множество
истинности которого является дополнением множества истинности
предиката Р(х), то есть pp
CII = .
2) Конъюнкцией предикатовP (x) и Q (x) называется новый предикат
),()( xQxP ∧ который принимает значение 1 при тех и только тех значениях
Mx ∈ , при которых каждый из предикатов P (x) и Q (x) принимает значение 1
и принимает 0 во всех остальных случаях.
Очевидно, что множество истинности QPI ∧ есть пересечение множеств
истинности qpQP III =∧
3) Дизъюнкцией предикатовP (x) и Q (x) называется новый предикат
)()( xQxP ∨ , который принимает значение 1 при тех и только тех значениях
Mx ∈ , при которых хотя бы один из предикатов P (x) и Q (x) принимает
значение 1 и принимает 0 во всех остальных случаях. Очевидно, что
множество истинности QPI ∨ есть объединение множеств истинности
qpQP III =∨
4) Импликацией предикатовP (x) и Q (x) называетсяпредикат )()( xQxP → ,
который имеет значение ложь на тех и только на тех наборах аргументов х,
на которых P (x) имеет значение 1, а Q (x) – значение 0. Очевидно, что
множество истинности QPI → есть объединение множеств истинности
qpQP ICII =→
5) Эквиваленцией P (x) и Q (x) называетсяпредикат )()( xQxP ↔ , который имеет
значение истина на тех и только на тех наборах аргументов х, на которых
значения истинности P (x) и Q (x) совпадают. Очевидно, что множество
истинности QPI → есть объединение множеств истинности
)()( qpqpQP IICICII =↔
Упражнение 3. Пусть даны предикаты P (x) : «х – четное число» и Q (x): «х
кратно 3», определенные на множестве N. Найти области истинности предикатов:
1) )()( xQxP ∧ ; 2) )()( xQxP ∨ ; 3) )(xP ; 4) )()( xQxP →
Решение.
Т.к. { },...2,...,12,10,8,6,4,2 nIP = , { },...3,...,12,9,6,3 nIq =
1) { },...6,...12,6 nIII qpQP ==∧ 
2) { },...3,2,...,6,4,3,2 nnIII qpQP ==∨ 
3) { },...12,...,5,3,1 −=== nINCII ppp
4) { } ,...}3,...,9,6,3{,...12,...,5,3,1 nnICII qpQP  −==→
Субъект – в логике подлежащее суждения, то есть предмет, о котором что-либо
говорится или мыслится.
Самостоятельно.
Упражнение 4. (Готовимся к ЕГЭ по информатике  Информатика в школе. -
6
№2, 2006. Уровень А, с.34). Если значения x,y принадлежат отрезку [2;5], то в
списке выражений следующего вида:
1) х=2 или y=7
2) x-y
3) x+y<2
4) 052
=+x
5) 3<x<y<5
6) x>12
Число истинных и ложных предикатов соответственно равно …
А) 2,4
Б) 1,4
В) 3,3
Г) 1,5
Д) 2,3
Ответ: г)
Упражнение 5. (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2,
2006. Уровень А. с.35). Множество истинности предиката p(x)=”x+y=0”, где x,y
- целые числа принадлежат отрезку [-2;4], равно…
А) {-2,-1,1,2}
Б) {(-2,2), (-1,1)}
В) {(-2,2), (-1,1), (0,0)}
Г) [-2;2]
Д) [-1;1]
Решение.
А) {-2,-1,1,2}
Б) {(-2,2), (-1,1)}
В) {(-2,2), (-1,1), (0,0)}
Г) [-2;2]
Д) [-1;1]
Упражнение 6 (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2,
2006. Уровень А. с.36). Для предиката р(х): ”div(x,3)=mod(x,2)”, где x
изменяется на множестве X={2,3,5,10,19}, область истинности равна …
А) {2,3,5,10}
Б) {10,19}
В) {2, 3, 5}
Г) {2, 5, 10}
Д) {5}
Решение.
А) {2,3,5,10}
Б) {10,19}
В) {2, 3, 5}
7
Г) {2, 5, 10}
Д) {5}
Упражнение 7 (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2,
2006. Уровень B. с.54). Запишите предикат (условие, которое может быть и
сложным), полностью описывающий область, нестрого заключенную между
окружностью с центром в начале координат и радиусом 2 и квадратом, в
который вписана эта окружность.
Решение.
Уравнение рассматриваемой окружности имеет вид: 422
=+ yx . Уравнения
рассматриваемого квадрата — 2=x , 2=y . Искомая область образуется
пересечением внешней области окружности, определяемой неравенством
422
≥+ yx , и внутренней области квадрата, определяемой неравенствами: 2≤x ,
2≤y .Нестрогие неравенства означают, что границы окружности и квадрата
входят в область, т.е. допустимы равенства.
Ответ: ( 422
≥+ yx ) и ( 2≤x ) и ( 2≤y )
Д.з.
1) Выучить конспект.
8
Дополнительно (Источник: Онегов В.А. Решение логических задач средствами
алгоритмических языков Информатика и образование. №6. 2000)
Предикат (от лат. predicatum — сказуемое) — это высказывательная функция,
определенная на некотором множестве М, т. е. такая функция n аргументов Р(x1, ..., хn),
которая каждому набору значений (a1 ,..., aп) — элементов множества М — ставит в
соответствие некоторое высказывание P(a1 ,..., aп), которое может быть истинно или
ложно.
Областью значений предиката является двухэлементное множество В={true,
false}. При этом сами переменные x1, ..., хn называются предметными переменными,
т.е. их значения не являются логическими (не принадлежат множеству В).
Так как значениями предикатов являются true или false, то сами предикаты
можно рассматривать как логические переменные. Из них можно составлять сложные
логические выражения, образованные из простых предикатов с помощью знаков
логических операций. После подстановки в такое составное выражение конкретных
значений предметных переменных получается сложное высказывание, значение
которого определяется истинностью или ложностью входящих в него простых
высказываний и логическими операциями.
Если ориентироваться на набор приведенных выше высказываний, то можно
привести следующие примеры предикатов.
В качестве множества значений предметных переменных возьмем
М — {«теплоход», «капитан», «река»}.
Введем в рассмотрение следующие предикаты:
1) Along(x1,x2) — вдоль.
Если x1 — «теплоход», х2 = «река», то предикат Along превращается в высказывание
«Вдоль теплоход река» — то же самое, что и «Теплоход плывет по реке», и имеет
значение true.
2) Captain's_Bridge(x3) — капитанский мостик.
Если х3 — «капитан», то Captain's Bridge превращается в высказывание «капитанский
мостик капитан» — то же самое, что и «Капитан стоит на мостике», и имеет значение
true.
3) Получим составное предикатное выражение:
Along(x1,x2) & Captain's_Bridge(x3) → Along(x3, x2).
Это выражение на некоторых значениях x1,x2,x3 ∈ M может принимать значения true, на
некоторых — false.
9
Целью логики предикатов является нахождение наборов значений предметных
переменных, при которых составное предикатное выражение истинно. Процедура,
дающая ответ на этот вопрос, состоит в полном переборе всех возможных наборов
значений переменных из множества М. Такой способ называется методом моделей. В
последнем примере значение true получается для набора значениий: х1 = «теплоход»,
х2= «река», х3 = «капитан». А вывод (modus ponens) следующий: «вдоль капитан река»
(«Капитан плывет по реке»).
Опишем общую схему решения логических задач с помощью логики предикатов.
M1={ai,1, ai,2, … , ai,n}, i=1, …,p – множества значений предметных переменных
(x1, x2, …, xp) ∈ X.
Pj(yj,1, yj,2, … , yj,n), j=1, … , r – набор предикатов, причем yj,l ∈ X, l=1, …, k.
F={s1, s2, … , Sm} – множество истинных высказываний (множество фактов, или
семантическая сеть).
Составляются одно или несколько предикатных выражений (получаются из
простых предикатов с помощью логических операций). Наборы значений предметных
переменных, при которых эти выражения принимают значения «истина», являются
решениями поставленной задачи.
В качестве примера подробно рассмотрим и решим с использованием системы
программирования Turbo Pascal следующую задачу.
Задача-шутка.
Согласно одной истории из средневековья девушка по имени Мария поступает в
монастырь. Вновь поступившую строго инструктирует настоятельница монастыря по
соблюдению правил, принятых в монастыре. В соответствии с одним из них она не
может впускать мужчин в свою келью. Однако однажды мужчина стучит в дверь и
Мария впускает его. Настоятельница жестко отчитывает Марию за это. Девушка
защищается, произнося: «Как я могла ему не открыть дверь, ведь его мать — свекровь
моей матери». Настоятельница соглашается с этим особым случаем. Кем мог быть
этот мужчина, если родственные связи семейного клана Марии таковы:
Марта — ее муж — Иоганн; Карина: ее мать — Марта; Карина — ее отец —
Иоганн; Карина — ее свекровь — Элизабет; Карина — ее дочь — Мария; Роланд — его
мать — Элизабет; Себастьян — его мать — Элизабет; Себастьян — его отец —
Зигфрид; Зигфрид — его жена — Элизабет; Элизабет — ее внучка — Мария; Мария —
ее мать — Карина; Мария — ее отец — Роланд; Мария — ее дядя — Себастьян.
10
Решение.
Перечисленные в условии семейные связи между родственниками Марии обра-
зуют семантическую сеть.
Зададим множества значений предметных переменных:
М1 = {«Карина», «Роланд», «Себастьян», «Мария», «Марта», «Иоганн», «Элизабет»,
«Зигфрид»} — имена членов семейного клана;
М2 = {«мать», «отец», «дядя», «свекровь», «муж», «жена», «внучка», «дочь»} — степени
родства.
P1(y1,y2)= Mother( y1,y2) — предикат, принимающий значение «истина», если у1 — имя
матери, у2— имя сына или дочери, y1, у2 ∈ М1.
P2{ y1,y2) = Mother_in_low(y1,y2) — предикат, принимающий значение «истина», если у1 —
имя свекрови, у2 — имя невестки, y1, у2 ∈ М1.
Р3(y1,y2) — Маrу(y1,y2) — предикат, принимающий значение «истина», если Мария и у2
находятся в состоянии родства у1. Здесь у2 ∈M1 , y2 ∈ M2.
Набор фактов, т. е. действительные семейные связи, заданы в виде семантичес-
кой сети. Договоримся записывать их в сокращенном виде и в одном стиле, например:
вместо «Марта — ее муж — Иоганн» будем писать «муж Иоганн Марта» (обязательно
между словами только один пробел). Полностью факты в данном формате приведены
в программе в разделе const под именем F (множество фактов).
Решением задачи-шутки является составное предикатное выражение
Mother(x, «Мария») & Mother_ in_low(y, х) & Mother(y, z). (1)
После правильного задания множеств M1 , M2 и семантической сети F алгоритм
решения задачи состоит в полном переборе наборов значений х, у, z из М1. Наборы
значений (х, у, z), при которых предикатное выражение (1) принимает значение
«истина», являются решением задачи, причем х — имя матери Марии, у — имя
свекрови матери Марии, z — имя посетителя кельи Марии. Алгоритм выдает два
набора значений: («Карина», «Элизабет», «Роланд») и («Карина», «Элизабет», «Се-
бастьян»).
Для полного решения задачи необходимо еще определить степень родства меж-
ду а) Роландом и Марией; б) Себастьяном и Марией. Эта подзадача решается с
помощью предиката Магу(v, z), где v ∈ М2. При фиксированном значении z следует
перебрать все возможные значения v. Те значения v, при которых предикат Маrу(v, z)
принимает значение «истина», дают информацию о степени родства z с Марией.
Получаем две пары: («отец», «Роланд»), («дядя», «Себастьян»).
Из описанной схемы решения задачи совершенно ясно, как реализовать это решение
11
на Turbo Pascal. Ниже приведена программа, решающая нашу задачу.
Файл predikat.pas
program Predikate;
uses crt;
const N=8; {количество элементов в множестве M1}
P=8; { количество элементов в множестве M2}
M=13; {количество фактов}
type
St=string[10];
M1=array[1..n] of St;
M2=array[1..p] of St;
Net=array[1..m] of String;
const
X: M1=('Карина','Мария','Роланд','Себастьян','Марта','Иоганн','Элизабет',
'Зигфрид');
Y: M2=('мать','отец','дядя','свекровь','жена','муж','внучка','дочь');
F: Net=('мать Карина Мария','отец Роланд Мария',
'дядя Себастьян Мария', 'мать Марта Карина',
'отец Иоганн Карина','свекровь Элизабет Карина',
'мать Элизабет Роланд', 'мать Элизабет Себастьян',
'отец Зигфрид Себастьян','муж Иоганн Марта',
'жена Элизабет Зигфрид', 'внучка Мария Элизабет',
'дочь Мария Карина'); {обязательно один пробел между словами! }
var i, j, l, q:byte;
s: string;
function Fact: boolean; {установление истинности высказывания S}
var
Bool: boolean;
r:byte;
begin
r:=1; Bool:=true;
while (r<=m) and Bool do
begin
if F[r]=S then Bool:=false;
r:=r+1;
end;
Fact:=not Bool;
end;
function Mother(x1,x2:St): boolean;
begin
S:='matj' +' ' + x1+' ' +x2; {формирование высказывания S}
Mother:=Fact; {обращение к фактам}
end;
function Mother_in_low(x1,x2:St): boolean;
begin
S:='svekrov' +' ' +x1+' '+x2; { формирование высказывания S}
Mother_in_low:=Fact; {обращение к фактам}
end;
function Mary(y1,y2:St): boolean;
begin
S:=y1+' '+y2+' '+'Marija'; { формирование высказывания S}
Mary:=Fact; {обращение к фактам}
end;
Begin
CLRSCR;
for i:=1 to n do
for j:=1 to n do {циклы полного перебора}
for l:=1 to n do
begin
if Mother(X[i],'Мария') and Mother_in_low(x[j],x[i]) and Mother(x[j],x[l])
then {основное предикатное выражение }
begin
12
writeln ('мать Марии',' ',x[i],' ','свекровь матери Марии',' ', x[j],'
',
'сын свекрови ',x[l]); {выдача ответа}
for q:=1 to p do
if Mary(Y[q],X[l]) then {установление
родства}
writeln (x[l],' ',y[q],' ', 'Марии');
writeln ('если хотите еще получить ответ, то нажмите -<Enter>');
{запрос о желательности дополнительного ответа }
readln; {задержка после очередного ответа};
end;
end;
writeln ('Больше ответов нет!');
readln; { задержка после очередного ответа };
end.
В заключение отметим, что эта программа работает так же, как и аналогичная
Пролог-программа, только в Прологе переборы значений предметных переменных,
составление сложных высказываний и сопоставление с ними фактов осуществляются
внутренними средствами языка.
Литература
1. Анкудинов Г.И., Анкудинов И.Г., Петухов О.А. Математическая логика и
теория алгоритмов: Учебное пособие. СПб.: СЗТУ, 2002. 104 с.
2. Казиев В.М. Готовимся к ЕГЭ по информатике Информатика в школе. №2.
2006.
3. Лихтарников Л.М., Сукачева т.Г. Математическая логика. – СП.: издательство
«Лань», 1998. – 288 с.
4. Никольская И. Л. Математическая логика: Учебник. М.: Высшая школа, 1981.
5. Онегов В.А. Решение логических задач средствами алгоритмических языков
Информатика и образование. №6. 2000.
6. Рыбин С.В. Высказывания и предикаты // Компьютерные инструменты в
образовании. №6, 2005.
13

Recommandé

Предикаты. Основные понятия, связанные с предикатами par
Предикаты. Основные понятия, связанные с предикатамиПредикаты. Основные понятия, связанные с предикатами
Предикаты. Основные понятия, связанные с предикатамиИльдус Ситдиков
2.4K vues29 diapositives
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог... par
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...
Кванторы. Квантор всеобщности. Квантор существования.Равносильные формулы лог...aleksashka3
4.8K vues16 diapositives
Кванторные операции над предикатами. Формула логики предикатов. Тавтологии ло... par
Кванторные операции над предикатами. Формула логики предикатов. Тавтологии ло...Кванторные операции над предикатами. Формула логики предикатов. Тавтологии ло...
Кванторные операции над предикатами. Формула логики предикатов. Тавтологии ло...Ильдус Ситдиков
2.4K vues31 diapositives
4. Законы логики. Упрощение формул par
4. Законы логики. Упрощение формул4. Законы логики. Упрощение формул
4. Законы логики. Упрощение формулaleksashka3
659 vues7 diapositives
2. Таблицы истинности. Эквивалентные высказывания par
2. Таблицы истинности. Эквивалентные высказывания2. Таблицы истинности. Эквивалентные высказывания
2. Таблицы истинности. Эквивалентные высказыванияaleksashka3
1.5K vues7 diapositives
04 классическая логика предикатов par
04 классическая логика предикатов04 классическая логика предикатов
04 классическая логика предикатовJulia Gorbatova
3.2K vues28 diapositives

Contenu connexe

Tendances

пугач му по матлогике 2015 par
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015LIPugach
143 vues16 diapositives
О трояком корне закона непротиворечия par
О трояком корне закона непротиворечияО трояком корне закона непротиворечия
О трояком корне закона непротиворечияVictor Gorbatov
227 vues32 diapositives
Kuznecova 9klass par
Kuznecova 9klassKuznecova 9klass
Kuznecova 9klassqwasar1
9.1K vues288 diapositives
Logika par
LogikaLogika
Logikacsn1311
744 vues112 diapositives
Основы комбинаторики - II par
Основы комбинаторики - IIОсновы комбинаторики - II
Основы комбинаторики - IIDEVTYPE
3.4K vues16 diapositives
15 par
1515
15JIuc
337 vues10 diapositives

Tendances(20)

пугач му по матлогике 2015 par LIPugach
пугач му по матлогике 2015пугач му по матлогике 2015
пугач му по матлогике 2015
LIPugach143 vues
О трояком корне закона непротиворечия par Victor Gorbatov
О трояком корне закона непротиворечияО трояком корне закона непротиворечия
О трояком корне закона непротиворечия
Victor Gorbatov227 vues
Kuznecova 9klass par qwasar1
Kuznecova 9klassKuznecova 9klass
Kuznecova 9klass
qwasar19.1K vues
Logika par csn1311
LogikaLogika
Logika
csn1311744 vues
Основы комбинаторики - II par DEVTYPE
Основы комбинаторики - IIОсновы комбинаторики - II
Основы комбинаторики - II
DEVTYPE3.4K vues
15 par JIuc
1515
15
JIuc337 vues
Racionalnye uravneniya par dimonz9
Racionalnye uravneniyaRacionalnye uravneniya
Racionalnye uravneniya
dimonz9889 vues
Скорость роста функций par DEVTYPE
Скорость роста функцийСкорость роста функций
Скорость роста функций
DEVTYPE2.7K vues
Основы комбинаторики II. Разбор задач par DEVTYPE
Основы комбинаторики II. Разбор задачОсновы комбинаторики II. Разбор задач
Основы комбинаторики II. Разбор задач
DEVTYPE6.5K vues
Алгоритмы и структуры данных осень 2013 лекция 8 par Technopark
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
Technopark3.1K vues
556 1 алгебра. 10кл.-кузнецова, муравьева и др_минск, 2013 -271с par psvayy
556 1  алгебра. 10кл.-кузнецова, муравьева и др_минск, 2013 -271с556 1  алгебра. 10кл.-кузнецова, муравьева и др_минск, 2013 -271с
556 1 алгебра. 10кл.-кузнецова, муравьева и др_минск, 2013 -271с
psvayy40 vues
Логарифмические уравнения par Formula.co.ua
Логарифмические уравненияЛогарифмические уравнения
Логарифмические уравнения
Formula.co.ua1.9K vues
метод пособие par oquzaman
метод пособиеметод пособие
метод пособие
oquzaman968 vues
Основы комбинаторики - I par DEVTYPE
Основы комбинаторики - IОсновы комбинаторики - I
Основы комбинаторики - I
DEVTYPE2.4K vues
Квадратичная математика par DEVTYPE
Квадратичная математикаКвадратичная математика
Квадратичная математика
DEVTYPE1.5K vues
Metod matematicheskoj indukcii par Ivanchik5
Metod matematicheskoj indukciiMetod matematicheskoj indukcii
Metod matematicheskoj indukcii
Ivanchik5509 vues

Similaire à Понятие предиката. Логические операции над предикатами

013 par
013013
013JIuc
653 vues6 diapositives
основы логики par
основы логикиосновы логики
основы логикиisva69
330 vues34 diapositives
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с par
554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287сdfdkfjs
51 vues288 diapositives
117 par
117117
117fderfwr
2.2K vues288 diapositives
Logika1 par
Logika1Logika1
Logika1kilyakova
143 vues24 diapositives
основы логики par
основы логикиосновы логики
основы логикиisva69
923 vues34 diapositives

Similaire à Понятие предиката. Логические операции над предикатами(20)

013 par JIuc
013013
013
JIuc653 vues
основы логики par isva69
основы логикиосновы логики
основы логики
isva69330 vues
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с par dfdkfjs
554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с554 1  алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
554 1 алгебра. 9кл.-кузнецова, муравьева и др_минск, 2014 -287с
dfdkfjs51 vues
117 par fderfwr
117117
117
fderfwr2.2K vues
основы логики par isva69
основы логикиосновы логики
основы логики
isva69923 vues
Формы мышления, алгебра высказываний par serge_luch
Формы мышления, алгебра высказыванийФормы мышления, алгебра высказываний
Формы мышления, алгебра высказываний
serge_luch2.8K vues
Тренировочный вариант экзамена с решением par Kurbatskiy Alexey
Тренировочный вариант экзамена с решениемТренировочный вариант экзамена с решением
Тренировочный вариант экзамена с решением
Алгоритмы и структуры данных осень 2013 лекция 1 par Technopark
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
Technopark1.5K vues
018 par JIuc
018018
018
JIuc221 vues
18 par JIuc
1818
18
JIuc165 vues
014 par JIuc
014014
014
JIuc489 vues
Логика как наука par Natalitutor
Логика как наукаЛогика как наука
Логика как наука
Natalitutor990 vues

Plus de aleksashka3

КР Решение логических задач. логические основы построения пк par
КР Решение логических задач. логические основы построения пкКР Решение логических задач. логические основы построения пк
КР Решение логических задач. логические основы построения пкaleksashka3
781 vues4 diapositives
Структурные формулы и функциональные схемы par
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемыaleksashka3
1.1K vues12 diapositives
Логические основы построения эвм par
Логические основы построения эвмЛогические основы построения эвм
Логические основы построения эвмaleksashka3
456 vues10 diapositives
Конспект. Решение логических задач par
Конспект. Решение логических задачКонспект. Решение логических задач
Конспект. Решение логических задачaleksashka3
653 vues6 diapositives
Решение логических задач. Опорный конспект par
Решение логических задач. Опорный конспектРешение логических задач. Опорный конспект
Решение логических задач. Опорный конспектaleksashka3
438 vues3 diapositives
КР Истинность высказываний. Тавтологии. Эквивалентности par
КР Истинность высказываний. Тавтологии. ЭквивалентностиКР Истинность высказываний. Тавтологии. Эквивалентности
КР Истинность высказываний. Тавтологии. Эквивалентностиaleksashka3
237 vues2 diapositives

Plus de aleksashka3(15)

КР Решение логических задач. логические основы построения пк par aleksashka3
КР Решение логических задач. логические основы построения пкКР Решение логических задач. логические основы построения пк
КР Решение логических задач. логические основы построения пк
aleksashka3781 vues
Структурные формулы и функциональные схемы par aleksashka3
Структурные формулы и функциональные схемыСтруктурные формулы и функциональные схемы
Структурные формулы и функциональные схемы
aleksashka31.1K vues
Логические основы построения эвм par aleksashka3
Логические основы построения эвмЛогические основы построения эвм
Логические основы построения эвм
aleksashka3456 vues
Конспект. Решение логических задач par aleksashka3
Конспект. Решение логических задачКонспект. Решение логических задач
Конспект. Решение логических задач
aleksashka3653 vues
Решение логических задач. Опорный конспект par aleksashka3
Решение логических задач. Опорный конспектРешение логических задач. Опорный конспект
Решение логических задач. Опорный конспект
aleksashka3438 vues
КР Истинность высказываний. Тавтологии. Эквивалентности par aleksashka3
КР Истинность высказываний. Тавтологии. ЭквивалентностиКР Истинность высказываний. Тавтологии. Эквивалентности
КР Истинность высказываний. Тавтологии. Эквивалентности
aleksashka3237 vues
1. Алгебра высказываний. Основные операции алгебры высказываний par aleksashka3
1. Алгебра высказываний. Основные операции алгебры высказываний1. Алгебра высказываний. Основные операции алгебры высказываний
1. Алгебра высказываний. Основные операции алгебры высказываний
aleksashka3367 vues
Решение логических задач №3 par aleksashka3
Решение логических задач №3Решение логических задач №3
Решение логических задач №3
aleksashka32.8K vues
Таблицы истинности. Эквивалентные высказывания par aleksashka3
Таблицы истинности. Эквивалентные высказыванияТаблицы истинности. Эквивалентные высказывания
Таблицы истинности. Эквивалентные высказывания
aleksashka3504 vues
Построение таблиц истинности par aleksashka3
Построение таблиц истинностиПостроение таблиц истинности
Построение таблиц истинности
aleksashka3239 vues
Алгебра логики par aleksashka3
Алгебра логикиАлгебра логики
Алгебра логики
aleksashka3231 vues
Логика как наука par aleksashka3
Логика как наукаЛогика как наука
Логика как наука
aleksashka3290 vues
Урок 1. Создание таблиц базы данных par aleksashka3
Урок 1. Создание таблиц базы данныхУрок 1. Создание таблиц базы данных
Урок 1. Создание таблиц базы данных
aleksashka3868 vues
Учебное пособие по Ms Excel par aleksashka3
Учебное пособие по Ms ExcelУчебное пособие по Ms Excel
Учебное пособие по Ms Excel
aleksashka313.2K vues
Правила работы и ТБ в КИВТ par aleksashka3
Правила работы и ТБ в КИВТПравила работы и ТБ в КИВТ
Правила работы и ТБ в КИВТ
aleksashka3346 vues

Понятие предиката. Логические операции над предикатами

  • 1. ТЕМА «Понятие предиката. Логические операции над предикатами» Цель урока: знакомство с предикатами, логическими операциями над предикатами. Задачи урока: образовательная – изучение понятий алгебры предикатов, формирование умений и навыков применения алгебры предикатов; развивающие – развитие логического и комбинационного мышления, памяти, внимательности; воспитательные – воспитание познавательного интереса учащихся, умения слушать, аккуратности в работе, трудолюбия. Тип урока: комбинированный урок. Формы работы: фронтальная. Наглядность и оборудование:  компьютеры;  мультимедийный проектор;  презентация, подготовленная в MS PowerPoint (файл LOGIKA13-14.PPT);  файл Шпаргалка.doc (системы логических уравнений для задач №6, 7, 8, 9);  файл log10.pas;  файл predikat.pas;  карточки для устной работы;  опорный конспект. ПЛАН УРОКА. 1. Подведение итогов работы в группах (20 минут). 2. Проверка домашнего задания (5 минут). 3. Изучение нового материала (40 минут): а) Понятие предиката. Область определения предиката (20 минут); б) Одноместный предикат. Многоместный предикат (10 минут); в) логические операции над предикатами (10 минут). 3. Решение упражнений (20 минут). 4. Подведение итогов урока. Домашнее задание (5 минут). ХОД УРОКА I. Подведение итогов работы в группах. Разбор задач №6-9 (файл Шпаргалка.doc). II. Проверка домашнего задания. Решение задачи №10. Решение логической задачи средствами алгебры логики Введем буквенное обозначение: A – «Аня смотрит телевизор», B – «Валя смотрит телевизор», C – «Света смотрит телевизор», O – «отец смотрит телевизор», M – «мать смотрит телевизор». На основе высказываний членов семьи составим систему логических уравнений. По условию задачи либо отец и мать смотрят телевизор вдвоем, либо отец не смотрит телевизор, либо оба не смотрят. Составим уравнение 1: 1)( ≡+⋅≡+⋅+⋅≡⋅+⋅+⋅ OMOMMOMOMOMOMO (1) По условию cмотреть телевизор могут по крайней мере или Света, или Вера, или обе. Уравнение (2) будет иметь вид: 1)( ≡⋅+≡⋅++⋅≡⋅+⋅+⋅ CBCCBBBCCBCBCB (2) Если Света смотрит телевизор, то имеем C⋅O⋅B, если же Света не смотрит, то остаются возможности, что отец и Валя оба смотрят или нет, или смотрит только отец или только Валя: 1
  • 2. BOCCBOCOOCBOCOCOC BOCBBOCBBOCBOCBOCBOCBOCBOC ⋅⋅+≡⋅⋅++⋅≡⋅⋅+⋅+⋅≡ ≡⋅⋅++⋅⋅++⋅⋅≡⋅⋅+⋅⋅+⋅⋅+⋅⋅+⋅⋅ )( )()( (3) Аня и мама смотрят телевизор только по очереди: 1≡⋅+⋅ AMAM (4) Аня и Валя либо у телевизора вместе, либо на кухне: 1≡⋅+⋅ BABA (5) Систему уравнений из пяти логических уравнений решаем так: умножим (1) на (2), получим (6): CBOCOCBMOCMOCBCOMO ⋅⋅+⋅+⋅⋅⋅+⋅⋅≡⋅+⋅+⋅ )()( (6) Умножим полученное уравнение (6) на уравнение (4), получим (7): AMCBOAMCBOAMCOAMCOACBMOACMO AMCBOAMCBOAMCOAMCO AMCBMOAMCMO AMAMCBOCOCBMOCMO ⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅≡ ≡⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+ +⋅⋅⋅⋅⋅++⋅⋅⋅⋅+≡ ≡⋅+⋅⋅⋅⋅+⋅+⋅⋅⋅+⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅ AMCBMOAMCMO )()( (7) Умножим полученное уравнение (7) на (5), получим (8): BAMCOBACMOBAMCBOBAMCO BAAMCBOBAAMCBOBAAMCO BAAMCOBAACBMOBAACMO BAAMCBOBAAMCBOBAAMCO BAAMCOBAACBMOBABA AMCBOAMCBOAMCOAMCOACBMOACMO ⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅≡ ≡⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅+ +⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅+ +⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅++⋅⋅⋅⋅⋅+ +⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅≡⋅+⋅⋅ ⋅⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅+⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅ BAACMO)( )( (8) Умножим полученное уравнение (8) на (3), получим (9): BAMCOCBAMCOBOCBAMCO OCBACMOBOCBAMCBOBOCBAMCO AMCOCBACMOCBAMCBOCBAMCO CCBAMCOBACMOBAMCBOBAMCO ⋅⋅⋅⋅≡⋅⋅⋅⋅⋅≡⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅⋅+ ⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅⋅+⋅⋅⋅⋅⋅≡ +⋅⋅⋅⋅⋅+⋅⋅⋅⋅+⋅⋅⋅⋅⋅+⋅⋅⋅⋅ ()( Ответ. Из полученного выражения BAMCO ⋅⋅⋅⋅ следует, что телевизор в первый вечер смотрели Вера и Аня. Решение логической задачи на ЭВМ. Программа на Паскале: PROGRAM LOGIKA10; USES CRT; VAR O,M,A,B,C,F,F1,F2,F3,F4,F5:INTEGER; BEGIN CLRSCR; WRITELN(' O M A B C F'); FOR O:=0 TO 1 DO BEGIN FOR M:=0 TO 1 DO FOR A:=0 TO 1 DO FOR B:=0 TO 1 DO FOR C:=0 TO 1 DO BEGIN F1:=(O AND M) OR (NOT O); F2:=(B AND NOT C) OR C; F3:=(NOT M AND A) OR (M AND NOT A); F4:=(A AND B) OR (NOT A AND NOT B); F5:=(NOT C) OR (C AND O AND B); F:=F1 AND F2 AND F3 AND F4 AND F5; IF F=1 THEN WRITELN(O:2,M:4,A:4,B:4,C:4,F:4); END; END; END. 2
  • 3. III. Новый материал. 1. Понятие предиката. Область определения предиката. 2. Одноместный предикат. Многоместный предикат 3. Логические операции над предикатами Лекция, используется презентация LOGIKA13-14.PPT. ПОНЯТИЕ ПРЕДИКАТА Выразительные возможности языка логики высказываний очень ограничены. С ее помощью невозможно проанализировать внутреннюю структуру даже очень простых рассуждений. Рассмотрим, например, два умозаключения. •Любой человек смертен, Сократ - человек, следовательно, Сократ смертен. •Крокодилы не летают, Луна - головка швейцарского сыра, следовательно, сборная России выиграет чемпионат мира по футболу. С точки зрения логики высказываний, оба этих текста представляются одной и той же формулой: X ∧ Y => Z. Первое высказывание представляется строгим логическим выводом, второе же не соответствует никакому здравому смыслу. Эти примеры подтверждают наш тезис о том, что в логике высказываний не рассматривается внутреннее содержание простейших высказываний (атомарных формул). Мы не имеем возможности «влезть» внутрь элементарного высказывания. Рассмотрим расширение логики высказываний, которое называется логикой предикатов. Логика предикатов, как и традиционная формальная логика, расчленяет элементарное высказывание на субъект (буквально – подлежащее, хотя оно может играть и роль дополнения) и предикат (буквально – сказуемое, хотя оно может играть и роль определения). Субъект – это то, о чем что-то утверждается в высказывании; предикат – это то, что утверждается о субъекте. Например, в высказывании “7 - простое число”, “7” – субъект, “простое число” – предикат. Это высказывание утверждает, что “7” обладает свойством “быть простым числом”. (Логика предикатов - раздел математической логики, изучающий логические законы, общие для любой области объектов исследования (содержащей хоть один объект) с заданными на этих объектах предикатами (т. е. свойствами и отношениями)). Если в рассмотренном примере заменить конкретное число 7 переменной х из множества натуральных чисел, то получим высказывательную форму “х – простое число”. При одних 3
  • 4. значения х (например, х=13, х=17) эта форма дает истинные высказывания, а при других значениях х (например, х=10, х=18) эта форма дает ложные высказывания. Ясно, что эта высказывательная форма определяет функцию одной переменной х, определенной на множестве N, и принимающую значения из множества {1;0}. Здесь предикат становится функцией субъекта и выражает свойство субъекта. В естественной речи часто встречаются сложные высказывания, истинность которых может изменяться при изменении объектов, о которых идет речь, хотя форма самого высказывания остается прежней. Например, высказывание у кошки четыре ноги истинно, у слона четыре ноги тоже истинно, а высказывание у человека четыре ноги - ложно. Все эти высказывания имеют одну форму у субъекта х четыре ноги. Такое переменное высказывание, истинностное значение которого зависит от параметра, и называется предикатом. (Предикат от лат. Praedicatum - сказанное) Таким образом, предикат есть функция, определенная на некотором множестве параметров и со значениями в {0, 1}. Определение 1. Одноместным предикатом Р(х) называется такая функция одного переменного, в которой аргумент х пробегает значения из некоторого множества М, а функция при этом принимает одно из двух значений: истина или ложь. Множество М, на котором задан предикат, называется областью определения предиката. Определение 2. N-местным предикатом называется такая функция n переменных Q(x1, x2, …,xn), определенная на множестве М=М1×М2×…×Мn и принимающая на этом множестве одно из двух значений: истина или ложь. Само множество М называется предметным множеством, а аргументы x1,...,xn ∈ M - предметными переменными. Множество М, на котором задан предикат, называется областью определения предиката. Множество MI p ⊂ , на котором предикат принимает только истинные значения, называется областью истинности предиката Р(х). Можно считать, что высказывание это нульместный предикат, то есть предикат, в котором нет переменных для замены. Пример 1. Пусть предметное множество М есть класс млекопитающих. Рассмотрим одноместный предикат Р(х): у х четыре ноги. Тогда Р(слон) = 1, Р(кошка) = 1, Р(человек) =0. Пусть М - множество натуральных чисел. Рассмотрим двухместный предикат G(x,y): х<у. Тогда, например, G(l,3) = l, G(8,5) = 0. Предикат называется А) тождественно истинным, если значение его для любых аргументов есть «истина» (Предикат Р(х) называется тождественно истинным на множестве М, 4
  • 5. если MI p = ) Б) тождественно ложным, если значение его для любых аргументов есть «ложь» (Предикат Р(х) называется тождественно истинным на множестве М, если ∅=pI ); В) выполнимым, если существует, по крайней мере, одна n-система его аргументов, для которой значение предиката есть «истина». Пример 2. Предикат “x+y=y+x” является тождественно истинным, предикат “x+1=x” – тождественно ложным, предикат “x+y=5” – выполнимым. Упражнение 1. Среди следующих предложений выделите предикаты: 1) Луна есть спутник Венеры 2) Планеты х и y принадлежат Солнечной системе 3) 15010705 65 >−+ 4) 0232 =++ xx 5) 834 +− xx 6) Любое простое число Р не имеет делителей, отличных от себя и 1 7) Натуральное число n не меньше 1 8) Треугольник АВС равен треугольнику А1В1С1 9) 0122 >++ xx 10) x xtg 2 2 cos 1 1 =+ 11) xx sinln < Ответ: 2), 4) 7)-11). Упражнение 2. Среди следующих предложений выделить предикаты и для каждого из них указать область истинности. 1) х+5=1 2) при х=2 выполняется равенство 012 =−x 3) 0122 =+− xx 4) существует такое число х, что 0122 =+− xx 5) x+2<3x-4 6) однозначное число х кратно3; 7) (х+2)-(3х-4). Решение. 1) Предложение х+5=1 является одноместным предикатом Р(х), Ip={-4} 2) предложение «при х=2 выполняется равенство 012 =−x » не является предикатом. Это ложное высказывание. 3) Предложение 0122 =+− xx является одноместным предикатом Р(х), Ip={1} 4) предложение «существует такое число х, что 0122 =+− xx » не является предикатом. Это истинное высказывание. 5) Предложение «x+2<3x-4» является одноместным предикатом Р(х), Ip=(3;+∞) 6) Предложение «однозначное число х кратно3» является одноместным 5
  • 6. предикатом Р(х), Ip={0; 3; 6; 9); 7) Предложение «(х+2)-(3х-4)» не является предикатом. Логические операции над предикатами 1) Отрицаниемпредиката P (x) называетсяновый предикат )(xP , множество истинности которого является дополнением множества истинности предиката Р(х), то есть pp CII = . 2) Конъюнкцией предикатовP (x) и Q (x) называется новый предикат ),()( xQxP ∧ который принимает значение 1 при тех и только тех значениях Mx ∈ , при которых каждый из предикатов P (x) и Q (x) принимает значение 1 и принимает 0 во всех остальных случаях. Очевидно, что множество истинности QPI ∧ есть пересечение множеств истинности qpQP III =∧ 3) Дизъюнкцией предикатовP (x) и Q (x) называется новый предикат )()( xQxP ∨ , который принимает значение 1 при тех и только тех значениях Mx ∈ , при которых хотя бы один из предикатов P (x) и Q (x) принимает значение 1 и принимает 0 во всех остальных случаях. Очевидно, что множество истинности QPI ∨ есть объединение множеств истинности qpQP III =∨ 4) Импликацией предикатовP (x) и Q (x) называетсяпредикат )()( xQxP → , который имеет значение ложь на тех и только на тех наборах аргументов х, на которых P (x) имеет значение 1, а Q (x) – значение 0. Очевидно, что множество истинности QPI → есть объединение множеств истинности qpQP ICII =→ 5) Эквиваленцией P (x) и Q (x) называетсяпредикат )()( xQxP ↔ , который имеет значение истина на тех и только на тех наборах аргументов х, на которых значения истинности P (x) и Q (x) совпадают. Очевидно, что множество истинности QPI → есть объединение множеств истинности )()( qpqpQP IICICII =↔ Упражнение 3. Пусть даны предикаты P (x) : «х – четное число» и Q (x): «х кратно 3», определенные на множестве N. Найти области истинности предикатов: 1) )()( xQxP ∧ ; 2) )()( xQxP ∨ ; 3) )(xP ; 4) )()( xQxP → Решение. Т.к. { },...2,...,12,10,8,6,4,2 nIP = , { },...3,...,12,9,6,3 nIq = 1) { },...6,...12,6 nIII qpQP ==∧  2) { },...3,2,...,6,4,3,2 nnIII qpQP ==∨  3) { },...12,...,5,3,1 −=== nINCII ppp 4) { } ,...}3,...,9,6,3{,...12,...,5,3,1 nnICII qpQP  −==→ Субъект – в логике подлежащее суждения, то есть предмет, о котором что-либо говорится или мыслится. Самостоятельно. Упражнение 4. (Готовимся к ЕГЭ по информатике Информатика в школе. - 6
  • 7. №2, 2006. Уровень А, с.34). Если значения x,y принадлежат отрезку [2;5], то в списке выражений следующего вида: 1) х=2 или y=7 2) x-y 3) x+y<2 4) 052 =+x 5) 3<x<y<5 6) x>12 Число истинных и ложных предикатов соответственно равно … А) 2,4 Б) 1,4 В) 3,3 Г) 1,5 Д) 2,3 Ответ: г) Упражнение 5. (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2, 2006. Уровень А. с.35). Множество истинности предиката p(x)=”x+y=0”, где x,y - целые числа принадлежат отрезку [-2;4], равно… А) {-2,-1,1,2} Б) {(-2,2), (-1,1)} В) {(-2,2), (-1,1), (0,0)} Г) [-2;2] Д) [-1;1] Решение. А) {-2,-1,1,2} Б) {(-2,2), (-1,1)} В) {(-2,2), (-1,1), (0,0)} Г) [-2;2] Д) [-1;1] Упражнение 6 (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2, 2006. Уровень А. с.36). Для предиката р(х): ”div(x,3)=mod(x,2)”, где x изменяется на множестве X={2,3,5,10,19}, область истинности равна … А) {2,3,5,10} Б) {10,19} В) {2, 3, 5} Г) {2, 5, 10} Д) {5} Решение. А) {2,3,5,10} Б) {10,19} В) {2, 3, 5} 7
  • 8. Г) {2, 5, 10} Д) {5} Упражнение 7 (Готовимся к ЕГЭ по информатике, «Информатика в школе» №2, 2006. Уровень B. с.54). Запишите предикат (условие, которое может быть и сложным), полностью описывающий область, нестрого заключенную между окружностью с центром в начале координат и радиусом 2 и квадратом, в который вписана эта окружность. Решение. Уравнение рассматриваемой окружности имеет вид: 422 =+ yx . Уравнения рассматриваемого квадрата — 2=x , 2=y . Искомая область образуется пересечением внешней области окружности, определяемой неравенством 422 ≥+ yx , и внутренней области квадрата, определяемой неравенствами: 2≤x , 2≤y .Нестрогие неравенства означают, что границы окружности и квадрата входят в область, т.е. допустимы равенства. Ответ: ( 422 ≥+ yx ) и ( 2≤x ) и ( 2≤y ) Д.з. 1) Выучить конспект. 8
  • 9. Дополнительно (Источник: Онегов В.А. Решение логических задач средствами алгоритмических языков Информатика и образование. №6. 2000) Предикат (от лат. predicatum — сказуемое) — это высказывательная функция, определенная на некотором множестве М, т. е. такая функция n аргументов Р(x1, ..., хn), которая каждому набору значений (a1 ,..., aп) — элементов множества М — ставит в соответствие некоторое высказывание P(a1 ,..., aп), которое может быть истинно или ложно. Областью значений предиката является двухэлементное множество В={true, false}. При этом сами переменные x1, ..., хn называются предметными переменными, т.е. их значения не являются логическими (не принадлежат множеству В). Так как значениями предикатов являются true или false, то сами предикаты можно рассматривать как логические переменные. Из них можно составлять сложные логические выражения, образованные из простых предикатов с помощью знаков логических операций. После подстановки в такое составное выражение конкретных значений предметных переменных получается сложное высказывание, значение которого определяется истинностью или ложностью входящих в него простых высказываний и логическими операциями. Если ориентироваться на набор приведенных выше высказываний, то можно привести следующие примеры предикатов. В качестве множества значений предметных переменных возьмем М — {«теплоход», «капитан», «река»}. Введем в рассмотрение следующие предикаты: 1) Along(x1,x2) — вдоль. Если x1 — «теплоход», х2 = «река», то предикат Along превращается в высказывание «Вдоль теплоход река» — то же самое, что и «Теплоход плывет по реке», и имеет значение true. 2) Captain's_Bridge(x3) — капитанский мостик. Если х3 — «капитан», то Captain's Bridge превращается в высказывание «капитанский мостик капитан» — то же самое, что и «Капитан стоит на мостике», и имеет значение true. 3) Получим составное предикатное выражение: Along(x1,x2) & Captain's_Bridge(x3) → Along(x3, x2). Это выражение на некоторых значениях x1,x2,x3 ∈ M может принимать значения true, на некоторых — false. 9
  • 10. Целью логики предикатов является нахождение наборов значений предметных переменных, при которых составное предикатное выражение истинно. Процедура, дающая ответ на этот вопрос, состоит в полном переборе всех возможных наборов значений переменных из множества М. Такой способ называется методом моделей. В последнем примере значение true получается для набора значениий: х1 = «теплоход», х2= «река», х3 = «капитан». А вывод (modus ponens) следующий: «вдоль капитан река» («Капитан плывет по реке»). Опишем общую схему решения логических задач с помощью логики предикатов. M1={ai,1, ai,2, … , ai,n}, i=1, …,p – множества значений предметных переменных (x1, x2, …, xp) ∈ X. Pj(yj,1, yj,2, … , yj,n), j=1, … , r – набор предикатов, причем yj,l ∈ X, l=1, …, k. F={s1, s2, … , Sm} – множество истинных высказываний (множество фактов, или семантическая сеть). Составляются одно или несколько предикатных выражений (получаются из простых предикатов с помощью логических операций). Наборы значений предметных переменных, при которых эти выражения принимают значения «истина», являются решениями поставленной задачи. В качестве примера подробно рассмотрим и решим с использованием системы программирования Turbo Pascal следующую задачу. Задача-шутка. Согласно одной истории из средневековья девушка по имени Мария поступает в монастырь. Вновь поступившую строго инструктирует настоятельница монастыря по соблюдению правил, принятых в монастыре. В соответствии с одним из них она не может впускать мужчин в свою келью. Однако однажды мужчина стучит в дверь и Мария впускает его. Настоятельница жестко отчитывает Марию за это. Девушка защищается, произнося: «Как я могла ему не открыть дверь, ведь его мать — свекровь моей матери». Настоятельница соглашается с этим особым случаем. Кем мог быть этот мужчина, если родственные связи семейного клана Марии таковы: Марта — ее муж — Иоганн; Карина: ее мать — Марта; Карина — ее отец — Иоганн; Карина — ее свекровь — Элизабет; Карина — ее дочь — Мария; Роланд — его мать — Элизабет; Себастьян — его мать — Элизабет; Себастьян — его отец — Зигфрид; Зигфрид — его жена — Элизабет; Элизабет — ее внучка — Мария; Мария — ее мать — Карина; Мария — ее отец — Роланд; Мария — ее дядя — Себастьян. 10
  • 11. Решение. Перечисленные в условии семейные связи между родственниками Марии обра- зуют семантическую сеть. Зададим множества значений предметных переменных: М1 = {«Карина», «Роланд», «Себастьян», «Мария», «Марта», «Иоганн», «Элизабет», «Зигфрид»} — имена членов семейного клана; М2 = {«мать», «отец», «дядя», «свекровь», «муж», «жена», «внучка», «дочь»} — степени родства. P1(y1,y2)= Mother( y1,y2) — предикат, принимающий значение «истина», если у1 — имя матери, у2— имя сына или дочери, y1, у2 ∈ М1. P2{ y1,y2) = Mother_in_low(y1,y2) — предикат, принимающий значение «истина», если у1 — имя свекрови, у2 — имя невестки, y1, у2 ∈ М1. Р3(y1,y2) — Маrу(y1,y2) — предикат, принимающий значение «истина», если Мария и у2 находятся в состоянии родства у1. Здесь у2 ∈M1 , y2 ∈ M2. Набор фактов, т. е. действительные семейные связи, заданы в виде семантичес- кой сети. Договоримся записывать их в сокращенном виде и в одном стиле, например: вместо «Марта — ее муж — Иоганн» будем писать «муж Иоганн Марта» (обязательно между словами только один пробел). Полностью факты в данном формате приведены в программе в разделе const под именем F (множество фактов). Решением задачи-шутки является составное предикатное выражение Mother(x, «Мария») & Mother_ in_low(y, х) & Mother(y, z). (1) После правильного задания множеств M1 , M2 и семантической сети F алгоритм решения задачи состоит в полном переборе наборов значений х, у, z из М1. Наборы значений (х, у, z), при которых предикатное выражение (1) принимает значение «истина», являются решением задачи, причем х — имя матери Марии, у — имя свекрови матери Марии, z — имя посетителя кельи Марии. Алгоритм выдает два набора значений: («Карина», «Элизабет», «Роланд») и («Карина», «Элизабет», «Се- бастьян»). Для полного решения задачи необходимо еще определить степень родства меж- ду а) Роландом и Марией; б) Себастьяном и Марией. Эта подзадача решается с помощью предиката Магу(v, z), где v ∈ М2. При фиксированном значении z следует перебрать все возможные значения v. Те значения v, при которых предикат Маrу(v, z) принимает значение «истина», дают информацию о степени родства z с Марией. Получаем две пары: («отец», «Роланд»), («дядя», «Себастьян»). Из описанной схемы решения задачи совершенно ясно, как реализовать это решение 11
  • 12. на Turbo Pascal. Ниже приведена программа, решающая нашу задачу. Файл predikat.pas program Predikate; uses crt; const N=8; {количество элементов в множестве M1} P=8; { количество элементов в множестве M2} M=13; {количество фактов} type St=string[10]; M1=array[1..n] of St; M2=array[1..p] of St; Net=array[1..m] of String; const X: M1=('Карина','Мария','Роланд','Себастьян','Марта','Иоганн','Элизабет', 'Зигфрид'); Y: M2=('мать','отец','дядя','свекровь','жена','муж','внучка','дочь'); F: Net=('мать Карина Мария','отец Роланд Мария', 'дядя Себастьян Мария', 'мать Марта Карина', 'отец Иоганн Карина','свекровь Элизабет Карина', 'мать Элизабет Роланд', 'мать Элизабет Себастьян', 'отец Зигфрид Себастьян','муж Иоганн Марта', 'жена Элизабет Зигфрид', 'внучка Мария Элизабет', 'дочь Мария Карина'); {обязательно один пробел между словами! } var i, j, l, q:byte; s: string; function Fact: boolean; {установление истинности высказывания S} var Bool: boolean; r:byte; begin r:=1; Bool:=true; while (r<=m) and Bool do begin if F[r]=S then Bool:=false; r:=r+1; end; Fact:=not Bool; end; function Mother(x1,x2:St): boolean; begin S:='matj' +' ' + x1+' ' +x2; {формирование высказывания S} Mother:=Fact; {обращение к фактам} end; function Mother_in_low(x1,x2:St): boolean; begin S:='svekrov' +' ' +x1+' '+x2; { формирование высказывания S} Mother_in_low:=Fact; {обращение к фактам} end; function Mary(y1,y2:St): boolean; begin S:=y1+' '+y2+' '+'Marija'; { формирование высказывания S} Mary:=Fact; {обращение к фактам} end; Begin CLRSCR; for i:=1 to n do for j:=1 to n do {циклы полного перебора} for l:=1 to n do begin if Mother(X[i],'Мария') and Mother_in_low(x[j],x[i]) and Mother(x[j],x[l]) then {основное предикатное выражение } begin 12
  • 13. writeln ('мать Марии',' ',x[i],' ','свекровь матери Марии',' ', x[j],' ', 'сын свекрови ',x[l]); {выдача ответа} for q:=1 to p do if Mary(Y[q],X[l]) then {установление родства} writeln (x[l],' ',y[q],' ', 'Марии'); writeln ('если хотите еще получить ответ, то нажмите -<Enter>'); {запрос о желательности дополнительного ответа } readln; {задержка после очередного ответа}; end; end; writeln ('Больше ответов нет!'); readln; { задержка после очередного ответа }; end. В заключение отметим, что эта программа работает так же, как и аналогичная Пролог-программа, только в Прологе переборы значений предметных переменных, составление сложных высказываний и сопоставление с ними фактов осуществляются внутренними средствами языка. Литература 1. Анкудинов Г.И., Анкудинов И.Г., Петухов О.А. Математическая логика и теория алгоритмов: Учебное пособие. СПб.: СЗТУ, 2002. 104 с. 2. Казиев В.М. Готовимся к ЕГЭ по информатике Информатика в школе. №2. 2006. 3. Лихтарников Л.М., Сукачева т.Г. Математическая логика. – СП.: издательство «Лань», 1998. – 288 с. 4. Никольская И. Л. Математическая логика: Учебник. М.: Высшая школа, 1981. 5. Онегов В.А. Решение логических задач средствами алгоритмических языков Информатика и образование. №6. 2000. 6. Рыбин С.В. Высказывания и предикаты // Компьютерные инструменты в образовании. №6, 2005. 13