Дискретная математика

Раздел 1. Математическая логика

Тема 1. Логика высказываний

Тема 2. Булевы функции

Тема 3. Логика предикатов

Логика высказываний обладает довольно слабыми выразительными возможностями. В ней нельзя выразить даже очень простые с математической точки зрения рассуждения. Рассмотрим, например, следующее умозаключение. «Всякое целое число является рациональным. Число 2 – целое. Следовательно, 2 – рациональное число». Все эти утверждения с точки зрения логики высказываний являются атомарными. Средствами логики высказываний нельзя вскрыть внутреннюю структуру и поэтому нельзя доказать логичность этого рассуждения в рамках логики высказываний. Мы рассмотрим расширение логики высказываний, которое называется логика предикатов первого порядка или короче: логика первого порядка.

§1. Предикаты и операции над ними

§2. Формулы логики первого порядка

§3. Интерпретация в логике первого порядка

§4. Равносильность, законы логики первого порядка

§6. Логическое следствие

§7. Нормальные формы

§8. Невыразимость в логике первого порядка

§9. Многосортная логика первого порядка

Расширим понятия формулы, введя так называемые ограниченные кванторы. Допустим, что нам надо записать на языке логики предикатов следующее утверждение «для всякого x>5 существует y>0 такое, что xy=1». Отметим, что здесь написано не «для всякого x» и «существует y», а «для всякого x>5 « и «существует y>0 «. Если на это не обратить внимание, то получается формула ("x)($y)(xy=1) имеющая другой смысл, нежели исходное утверждение. Для правильного перевода надо немного изменить исходное предложение по форме (не меняя, разумеется, смысла): «для всякого x справедливо, если x>5, то существует y такой, что y>0 и xy=1». Правильный перевод имеет вид ("x)[x>5®($y)(y>0&(xy=1)].


Если рассматривать более длинные исходные предложения, то соответствующие им формулы логики предикатов будут, вообще говоря, довольно громоздкими. Для того, чтобы частично избавиться от усложнения при переводе на язык логики предикатов, вводятся ограниченные кванторы. Пусть B(x) – формула с одной свободной переменной x. Тогда выражение "B(x) называется ограниченным квантором общности $B(x) – ограниченным квантором существования. С помощью ограниченных кванторов исходное предложение предыдущего абзаца можно записать довольно просто: ("x>5)($y>0)(xy=1).


Более формально, ограниченные кванторы вводятся следующим образом: формула ("B(x)F(x) есть сокращение формулы ("x)B(x)®F(x)), формула ($B(x)F(x) – сокращение формулы ($B(x)&F(x)). Для ограниченных кванторов справедливы аналоги законов 22-33.

33. Упомянутые выше четыре типа задач могут быть поставлены и для логики с ограниченными кванторами.


Ограниченные кванторы часто вводятся неявно. Для переменных, пробегающих множество истинности формулы B(x), вводят специальное обозначение. Например, в геометрии довольно часто применяется следующее соглашение: А, B, C, D,… обозначаются точки, буквами a, b, c, d,… прямые, а буквами a, b, g,… – плоскости, т.е. с нашей точки зрения первые пробегают множество истинности формулы T(x), вторые – Пр(x), третьи – Пл(x).


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


Приведем пример применения многоосновной логики предикатов.


Рассмотрим информационную систему под условным названием «Сделки». Система содержит сведения о сделках купли-продажи, произведенных некоторой фирмой. Предметом сделок служат партии товаров, определяемые номером партии, наименованием товара, единицей измерения и количеством. Используются следующие атрибуты: HOM – номер партии товара, НАИМ – наименование товара, ЕД – единица измерения, КОЛ – количество единиц товара в партии, ДАТА – дата сделки, АГЕНТ – покупатель или продавец, СЕК – номер секции склада, СРОК – срок годности. Информация хранится в виде отношений: ПАР (НОМ, НАИМ, ЕД, КОЛ), ПОК (НОМ, ДАТА, АГЕНТ), ПРОД (НОМ, ДАТА, АГЕНТ), СКЛАД (СЕК, НОМ, СРОК). Первое отношение содержит сведения о партиях товара, которые были предметом сделок, второе – сведения о покупках, третье – о продажах партий товара. В четвертом указывается, в какой секции склада хранится купленная (но еще не проданная) партия товара и срок годности товара в партии. Система может вычислять отношение РАН(x,y)=«x раньше y», определенное на доменах атрибутов ДАТА и СРОК.

Формализуем эту информационную систему в многоосновной логике предикатов следующим образом. Введем восемь сортов переменных (по количеству атрибутов), для каждого атрибута – свой сорт. Переменные будут принимать значения в доменах соответствующих атрибутов. Другими словами, области интерпретации (основы) будут состоять из доменов атрибутов. Переменные по сортам синтаксически различать не будем. А для того, чтобы указать, что переменная x, например, изменяется по домену атрибута НАИМ, а y – по домену атрибута ЕД, будем писать: xÎНАИМ, yÎЕД. Каждому отношению поставим в соответствие предикат той же местности, что и отношения, с соответствующими типами переменных. Предикат и отношение будем обозначать одинаково. Например, отношению ПАР(НОМ, НАИМ, ЕД, КОЛ) будет соответствовать предикат ПАР(x, y, u, v), где xÎНОМ, yÎНАИМ, uÎЕД, vÎКОЛ. Сигнатура å, таким образом, будет содержать 5 символов предикатов:


å={ПАР(x, y, u, v), ПОК(x, y, z), ПРОД(x, y, z), СКЛАД(x, y, z), РАН(x,y)}.


В сигнатуру å можно добавлять константы, интепретируемые как элементы доменов атрибутов.

Эта формализация позволяет запросы к информационной системе представлять формулами логики предикатов указанной сигнатуры. Расмотрим следующий запрос:


Q1. «Каковы номера партий товаров, купленных у фирмы b, и каково наименование товара в этих партиях?»


Запрашиваемая информация содержится в двух отношениях ПАР(НОМ, НАИМ, ЕД, КОЛ) и ПОК(НОМ, ДАТА, АГЕНТ), которые связаны номером партии товара, АГЕНТ – b. Если взять конъюнкцию предикатов


ПАР(x, y, u, v)&ПОК(x, z, фирма b),


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


F1(x, y)=xÎНОМ&yÎНАИМ&($u ÎЕД)($zÎДАТА)[ПАР(x, y ,u, v)&ПОК(x, z, фирма b)]


Формула F1(x,y) представляет собой перевод запроса Q1 на язык многоосновной логики предикатов.


Рассмотрим еще ряд примеров перевода запросов на язык логики предикатов.


Q2.»Каковы наименования товаров, единицы измерения и количество единиц в партиях товара, срок годности, которого истекает 20.03.01?»


Q3. «Для каких фирм срок годности товара, купленного у этих фирм, истекает 20.03.01?»

Q4. «Какой товар хранится на складе более, чем в двух партиях?»


Q5. «Какие из закупленных партий товаров в последствии проданы?»


Эти на язык логики предикатов будут переведены формулами F2 – F5:


F2(x,y,z)=xÎНАИМ&yÎЕД&zÎКОЛ&($uÎСЕК)($vÎНОМ)($wÎСРОК)

[ПАР(v,x,y,z)&СКЛАД(u,v,w)&РАН(w,20.03.01)],


F3(x)=xÎАГЕНТ&("yÎНОМ)("zÎДАТА)("uÎСЕК)

("vÎСРОК)[ПОК(y,z,x)&СКЛАД(u,y,v)®РАН(v,20.03.01)],


F4(x)=x xÎНАИМ&($y1,y2ÎНОМ)($z1,z2ÎЕД)($u1,u2ÎКОЛ)($v1,v2ÎСЕК)

($w1,w2ÎСРОК)[y1¹y2&ПАР(y1,x,z1,u1)&СКЛАД(v1,x,w1)&

ПАР(y2,x,z2,u2)&СКЛАД(v2,x,w2),


F5(x)=xÎНОМ&($yÎНАИМ)($zÎЕД)($uÎКОЛ)($v1,v2ÎДАТА($w1,w2ÎАГЕНТ)

ПАР(x,y,z,u)&ПОК(x,v1,w1)&ПРОД(x,v2,w2) &РАН(v1,v2)].


Рассмотрим второй вариант выбора сигнатуры для формализации запросов Q1 – Q5. Для этого вначале к имеющимся восьми основам (доменам восьми исходных атрибутов) добавим девятую основу: множество сделок СДЕЛ. Далее, вместо предикатов ПАР(x,y,u,v), ПОК(x,y,z), ПРОД(x,y,z), СКЛАД(x,y,z) введем функции:


наим : НОМ®НАИМ,

ед : НОМ®ЕД,

кол : НОМ®КОЛ,

сдел : СДЕЛ®НОМ,

тип : СДЕЛ®{пок, прод},

дата : СДЕЛ®ДАТА,

агент : СДЕЛ®АГЕНТ,

сек : НОМ®СЕК,

срок : НОМ®СРОК,


а предикат РАН(x,y) оставим. Функции имеют естественный смысл: Например, функция наим номеру партиии товара ставит в соответствие наименование товара в этой партии, функция сдел ставит в соответствие сделке номер партии товара, относительно которого эта сделка была заключена. Новую сигнатуру будем обозначать буквой D. К сигнатуре D, как и к å, можно добавлять константы. Тогда запросы Q1 – Q5 будут переведены следующим образом:


G4(x,y)=xÎНОМ&yÎНАИМ&y=наим(x)&(($zÎСДЕЛ)

[x=сдел(z)тип(z)=пок&агент(z)=фирма b,


G2(x,y,z)=xÎНАИМ&yÎЕД&zÎКОЛ&

($uÎНОМ)[x=наим(u)&y=ед(u)&z=кол(u)&РАН(срок(u),20.03.01)],


G4(x)=xÎНАИМ&($u1,u2ÎНОМ)[$v1,v2ÎСЕК)[u1¹u2&сек(u1)=v1&сек(u2)=v2],

G5(x)=xÎНОМ&($v1,u2ÎСДЕЛ)[x=сдел(u1)&x=сдел(u2)&тип(u1)=

пок&тип(u2)=прод&РАН(дата(u1), дата(u2))].


Сигнатуру å можно назвать «реляционной» (или «предикатной»), а D – «функциональной». Разумеется возможны и другие варианты выбора сигнатуры.

Задачи

Ответы, указания и решения

Тема 4. Метод резолюций

Раздел 2. Теория графов

Тема 5. Раскраски

Тема 6. Ориентированные графы и сети


Fair.ru Ярмарка сайтов
Rambler's Top100 Submitter.ru - Free promoting

Дизайн: Alex © 2002
Все вопросы и предложения можно направлять по адресу cad@mail.ustu.ru