ДИСКРЕТНАЯ МАТЕМАТИКА КОМБИНАТОРНЫЕ ОБЪЕКТЫ. СОЧЕТАНИЯ, РАЗБИЕНИЯ, ПЕРЕСТАНОВКИ В разделе математики, который называется комбинаторикой, решаются некоторые задачи, связанные с рассмотрением множеств и составлением различных комбинаций из элементов этих множеств. Например, если взять 10 различных цифр 0, 1, 2, 3, … , 9 и составлять из них комбинации, то будем получать различные числа, например, 345, 534, 1036, 5671, 45 и т.п. Мы видим, что некоторые из таких комбинаций отличаются только порядком цифр (например, 345 и 534), другие – входящими в них цифрами (например, 1036 и 5671), третьи различаются и числом цифр (например, 345 и 45). Т.о., полученные комбинации удовлетворяют различным условиям. В зависимости от правил составления можно выделить три типа комбинаций: перестановки, размещения, сочетания. Понятие факториала Произведение всех натуральных чисел от 1 до n включительно называют nфакториалом и пишут n! = 1*2*3*…*(n-1)*n. Перестановки Пусть даны три буквы A, B, C. Составим все возможные комбинации из этих букв: ABC; ACB; BCA; CAB; CBA; BAC (всего комбинаций). Мы видим, что они отличаются друг от друга только порядком расположения букв. Комбинации из n элементов, которые отличаются друг от друга только порядком элементов, называются перестановками. Комбинации обозначаются символом Pn, где n – число элементов, входящих в каждую перестановку. Число перестановок можно вычислить по формуле Pn = n*(n-1)*(n-2)*…*3*2*1 Или с помощью факториала: Pn = n! Размещения Пусть имеются четыре буквы A, B, C, D. Составив все комбинации только из двух букв, получим: AB, AC, AD; BA, BC, BD; CA, CB, CD; DA, DB, DC. Мы видим, что все полученные комбинации отличаются или буквами или их порядком (комбинации BA и AB считаются различными). Комбинации из m элементов по n элементов, которые отличаются друг от друга или самими элементами или порядком элементов, называются размещениями. Размещения обозначаются символом Amn, где m – число всех имеющихся элементов, n – число элементов в каждой комбинации. При этом полагают, что n ≤ m. Число размещения можно вычислить по формуле Amn mm 1m 2 ..., n множителей т.е. число всех возможных размещений из m элементов по n равно произведению n последовательных целых чисел, из которых большее есть m. При нахождении числа размещений мы перемножаем n последовательно убывающих целых чисел, т.е. до полного факториала не хватает (m-n) последовательно убывающих целых множителей. Поэтому формулу числа размещений можно записать в виде Amn mm 1m 2 m n m n 12 1 m n m n 12 1 Отсюда, учитывая, что числитель равен m!, а знаменатель равен (m–n)!, запишем эту формулу в факториальной форме; Amn m! (m n )! Сочетаниями называются все возможные комбинации из m элементов по n, которые отличаются друг от друга по крайней мере хотя бы одним элементом (здесь m и n – натуральные числа, причем n ≤ m). Так, из четырех различных букв A, B, C, D можно составить следующие комбинации, отличающиеся друг от друга хотя бы одним элементом: AB, AC, AD, BC, BD, CD. Значит, число сочетаний из четырех элементов по два равно 6. Это кратко записывается так: C42=6. В каждой комбинации сделаем перестановки элементов: AB, AC, AD, BC, BD, CD; BA, CA, DA, CB, DB, DC. В результате мы получили размещения из четырех элементов по два. 2 2P A2, откуда C 2 A4 . Следовател ьно , C4 2 4 4 P2 В общем случае число сочетаний из m элементов по n равно числу размещений из m элементов по n, деленному на число перестановок из n элементов: m! Cmn m n ! n! Используя для чисел размещений и перестановок факториальные формулы, получим формулу числа размещений в виде: n Cm m! m n ! n! МЕТОДЫ МИНИМИЗАЦИИ ФУНКЦИЙ АЛГЕБРЫ ЛОГИКИ Графический способ задания ФАЛ Существует 2 графических способа задания ФАЛ: 1) в виде множества вершин многомерного куба: x3 (0;0;1) (1;1;1) x2 (0;0;0) x1 (1;1;0) Кружками обозначены наборы значений букв, при которых ФАЛ принимает значение 1. 4-х мерный куб можно представить как два 3-х мерных куба. Одному соответствует x4=0, другому – x4=1. 5-ти мерный куб – два 4-х мерных куба и т.п. 2) как диаграмму Карно-Вейче x3x4 00 x1x2 00 01 1 01 11 11 10 1 1 1 10 1 Единица, стоящая в определенной ячейке, означает, что для данного набора значений переменных функция принимает значение 1. Методы минимизации ФАЛ (функций алгебры логики) имеют важное значение при проектировании схем ЭВМ. Минимальные формы ФАЛ фактически экономят оборудование. Рассмотрим задачу минимизации в булевском базисе, предположим, что функция для минимизации задана в ДСНФ (дизъюнктивная совершенная нормальная форма) – это значит, что она представлена через конъюнкции ранга n – такая конъюнкция – элементарная. Задача минимизации состоит в том, чтобы найти ДНФ (дизъюнктивную нормальную форму), имеющую минимальный ранг, т.е. наименьшее число входящих в нее букв. Алгоритм Квайна – Мак Класки Закон склеивания : x1 & x2 x1 & x2 x1 Этот алгоритм основан на применении закона склеивания и включает в себя несколько этапов. 1) нахождение первичных импликант: осуществляет попарное склеивание конъюнкций n-го ранга, все склеенные конъюнкции отмечаются, затем полученное множество конъюнкций (n-1)-го ранга также попарно склеивается, склеенные конъюнкции отмечаются и т.д. Те конъюнкции, которые остались неотмеченными, образуют множество первичных или простых импликант; 2) расстановка меток: рисуется таблица Конъюнкции из ДСНФ Первичные импликанты Если первичная импликанта входит в некоторую конъюнкцию в соответствующем месте таблицы ставится метка. 3) нахождение существенных импликант: существенные импликанты – это те, которые имеют метку только в одном столбце; 4) из таблицы вычеркиваются строки с существенными импликантами и все столбцы, в которых имеются метки, соответствующие этим существенным импликантам; 5) вычеркивание лишних столбцов: если в таблице имеются столбцы с одинаковыми метками, то оставляем только 1 из них, вычеркивая остальные; 6) вычеркивание лишних первичных импликант: если в таблице появились стро- ки, в которых нет меток, то соответствующие импликанты вычеркиваются; 7) выбор покрытия оставшихся столбцов импликантами, имеющими минимальный суммарный ранг. При склеивании применяются правила: 1) Ax Ax A 2) A AB A 3) A A A Пример Дана функция f: f x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 x1x2 x3 x4 R (ранг) = 8 * 4 = 32 Шаг 1 На первом этапе склеиваются те конъюнкции (4-го ранга), которые при склейке дают конъюнкции 3-го ранга. Склеиваемые конъюнкции должны различаться только одной буквой: в одну из конъюнкций эта буква входит с отрицанием, в другую – без отрицания. Т.о., для данной функции получаем 7 конъюнкций – первичных импликант. 1) 2) x1x2 x3 1) 7) x1x2 x4 2) 3) x2 x3 x4 5) 3) x1x3 x4 4) 5) x1x2 x3 6) 7) x1x3 x4 7) 8) x2 x3 x4 R = 7 * 3 = 21 Шаг 2 1 2 3 1 2 3 4 4 5 6 7 8 5 6 7 Шаг 3 Отмечаем столбцы, которые имеют по одной метке, стрелками (4, 6 ,8). Шаг 4 Вычеркиваем все строки (5, 6, 7), соответствующие меткам в этих столбцах, и все столбцы (4, 5, 6, 7, 8), имеющие метки в вычеркнутых строках. Шаг 5 Оставляем только один столбец из тех, которые имеют одинаковые метки. В данном случае все столбцы уникальные – ничего не вычеркиваем. Шаг 6 Вычеркиваем строки, в которых нет меток. В данном случае таких строк нет. Шаг 7 Строим новую таблицу – из оставшихся строк (1, 2, 3, 4) и столбцов (1, 2, 3). x1x 2 x3 x 4 x1x 2 x3 x 4 x1x 2 x3 x 4 x1x 2 x3 x1x 2 x 4 x 2 x3 x 4 x1x3 x 4 Выберем по таблице покрытие оставшихся импликант так, чтобы суммарный ранг был минимален (метки в строках выбранных импликант должны накрывать все столбцы). В данном случае есть альтернативы: (2 и 3), (1 и 4)… Ответ: f x x x x x x 1 2 4 2 3 4 Модификация Мак Класки Состоит в следующем: исходные импликанты заменяются соответствующими двоичными наборами: наборы объединяются в группы по количеству единиц в минитерме, очевидно, что склеивания возможны только между соседними группами: x1x2 x3 x 4 0000 x1x2 x3 x 4 1001 Для рассмотренного ранее примера: 0 1 0100 1000 0010 2 0101 1001 0110 3 1101 1110 4 Такое упорядочение сокращает перебор – снижает трудоемкость. 1 010– 01–0 100– 0–10 2 –101 1–01 –110 Применение карт Карно для минимизации ФАЛ x3 x4 x1 x2 00 01 11 10 1 1 1 1 1 00 01 1 x1x2 x3 x1 x3 11 10 1 1 Каждой клетке соответствует двоичный набор, с рангом равным 4. Легко видеть, что при выбранной кодировке клеток в соседнем столбце или строке клеткам соответствуют склеивающиеся конъюнкции. 1 клетка – конъюнкция 4-го ранга; 2 клетки – конъюнкция 3-го ранга; 4 клетки – конъюнкция 2-го ранга; … Минимизация на карте Карно заключается в выборе покрытия клеток с единицами конъюнкциями минимального ранга, т.е. необходимо объединять единичные клетки в блоки, чем больше единиц входит в блок, тем меньше ранг. Число клеток, входящих в блок, равно степени двойки. Импликанты могут покрывать одновременно несколько единиц, одна и та же единица может покрываться несколькими импликантами. Этот метод удобен при ручной минимизации. Метод Класки – минимизация не полностью определенных ФАЛ Если значения ФАЛ заданы на числе наборов, меньшем чем 2n, то такая функция определена не полностью. Такая ситуация часто встречается на практике – если некоторые наборы просто не могут появляться при кодировании. Пример Для десятичных цифр (0..9) ФАЛ f принимает значение 0, если цифра четная и 1 – если нечетная. Т.о., f определена на наборах 0000..1001 и не определена на наборах 1010..1111. Построим карту Карно и обозначим неопределенные наборы *. x3x4 0 0 1 1 0 1 1 0 x1 00 0 1 1 0 x2 01 0 1 1 0 11 * * * * 10 0 1 * * Для того, чтобы получить аналитическое выражение для неполной ФАЛ, ее необходимо доопределить, т.е. задать на запрещенных наборах некоторые значения. 6 запрещенных наборов – 26=64 различные доопределения – 64 различные функции. Будем доопределять ФАЛ так, чтобы получить минимальную ДНФ. x3x4 0 0 1 1 0 1 1 0 x1 00 0 1 1 0 x2 01 0 1 1 0 11 0 1 1 0 10 0 1 1 0 fmin=x4 R(ранг)=1 Выполнив такую склейку, мы доопределили функцию следующим образом: на запрещенных наборах, участвующих в склеивании, функция доопределена 1-ми, на не участвующих – доопределена 0-ми. МНОЖЕСТВА, ОПЕРАЦИИ НАД МНОЖЕСТВАМИ Элемент – это некоторая сущность, которая в рамках рассматриваемой задачи обладает свойством неделимости на части. Множество – это совокупность элементов, которые обладают двумя свойствами: – элементы различаемы; – принадлежат множеству. Способы задания множеств: 1) перечисление элементов; 2) описание свойств элементов. Например 1) A = {a,b,c,d,e} B = {c,d,f} 2) N = {целые натуральные числа} = {1,2,3…} a A; g A; Множество наборов, на которых ФАЛ (функция алгебры логики) от n аргументов обращается в 0: T0={…} Множество наборов, на которых ФАЛ (функция алгебры логики) от n аргументов обращается в 1: T1={…}. Множество наборов, на которых ФАЛ (функция алгебры логики) от n аргументов не определена: T*={…}. Универсальное множество (U) – это множество всех элементов, рассматриваемых в рамках исследуемой задачи. Множества могут содержать в качестве элементов другие множества: H = {A,B} = {{a,b,c,d,e},{c,d,f}} A H; B H a H !!! Предполагают, что множество всегда состоит из уникальных элементов. Если в множестве появляются “одинаковые” элементы, то это должно быть обосновано. Например, бригада студентов, выполняющих один курсовой проект: (Мануйленко, Мануйленко, Иванов, Петров). Операции над множествами Знак “:” = “такой, что” 1) Пересечение множеств A B = {x : xA и xB} 2) Объединение множеств A B = {x : xA или xB} (включающее или) 3) Разность множеств A \ B = {x : xA или xB} 4) Симметрическая разность множеств A B = (A B) \ (A B) 5) Дополнение множества A’ = U \ A = {x: xU и xA} Пример A = {a,b,c,d,e} B = {c,d,f} A B = {c,d} A B = {a,b,c,d,e,f} A \ B = {a,b,e} B \ A = {f} A B = {a,b,e,f} Пример дополнения множества f 000 * 001 * 010 1 011 0 100 0 101 * 110 1 111 0 T0, T1, T* U = {0,1,2,3,4,5,6,7} T0’ = U \ T0 = U \ (T1 T*)’ T0 = {3,4,7} T1 = {2,6} T* = {0,1,5} T0’ = U \ T0 = {0,1,5,2,6} Мощность Мощность множества – это количество элементов Например: | A | = 5 | B \ A | = 1 Пустое множество - Это множество, которое не содержит элементов. Пустое множество считается входящим в любое другое множество. = {x, x} A\A= A=A Диаграммы Венна-Эйлера Графическая форма представления операций над множествами U B A Заштриховано – A \ B Рассмотрим A, B: U B A A B – отношение включения A B – отношение строгого включения, это значит, что существует хотя бы один x, который принадлежит B, но не принадлежит A. Говорят, что A является собственным подмножеством B. Эквивалентность множеств A, B называется эквивалентными, если A B и B A: (A B и B A)=>(A=B) A \ B = ; B \ A = . Множества не являются эквивалентными, если хотя бы одна из разностей A \ B или B \ A не является . Термин эквивалентности имеет более глубокий смысл, чем термин равенства. Произведение множеств ( ) – обозначают упорядоченность A1, A2 … An – множества (x1, x2, … xn): x1A1, x2A2, … xnAn Рассмотрим множество всех таких наборов – произведение множеств. n x1, x2, xn A1 A2 An Ai i 1 не комОперация произведения множеств мутативна Пример B = {c,d,f} C = {g,h} B * C = {(c,g), (c,h), (d,g), (d,h), (f,g), (f,h)} ИСЧИСЛЕНИЕ ВЫСКАЗЫВАНИЙ Математическая логика занимается анализом методов рассуждений. В задачи математической логики входят формализация и систематизация правильных методов рассуждений. В настоящее время математическая логика является фундаментальной основой логического программирования и систем ИИ (искусственного интеллекта). 1. Все коты любят рыбу Кузма – кот Следовательно: Кузьма любит рыбу 2. Все программы содержат ошибку Windows 95 – программа Следовательно: Windows 95 содержит ошибку Все A есть B C есть A Следовательно: C есть B Математическая логика изучает структуру рассуждения, форму, отвлекаясь от смыслового содержания этих структур. В исчислении высказываний рассматриваются следующие операции над высказываниями: A A A A A B B AB A A& A B B B B B 00 1 0 0 1 1 0 01 1 1 0 1 0 1 10 0 1 0 0 0 1 11 0 1 1 1 1 0 A, B – пропозициональные буквы (переменные) Операция: функция, которая отображает … (???) f: AA…AA Существуют функции, не являющиеся операциями: f={Истина, если x0; Ложь, если x<0} Импликация: если A, то B Тождество: тогда и только тогда Или: часто в речи, говоря “или”, мы подразумеваем разделительную операцию (). Логические операции в математической логике – связки (пропозициональные связки) Если Бим сыт, то Кузьма голоден или если Бим голоден, то Кузьма сыт a = Бим сыт b = Кузьма сыт (a b) (a b) – пропозициональная форма (ПФ), формула высказывания Если формула или пропозициональная форма является истиной при любых значениях входящих в нее букв, то такая формула называется логически общезначимой или тавтологией. Обозначение: = A x x – тавтология x (y x) – тавтология Если Бим сыт, то Кузьма голоден, если Бим голоден, то Кузьма голоден подавно. (a b) (a b) Студент счастлив тогда и только тогда, когда тепло, выдали стипендию, до сессии далеко. xa&b&c необходимым и достаточным условием x является a & b & c Если A и B – формулы и AB является тавтологией, то говорят, что A логически влечет B, иначе говоря, B является следствием A. Если AB является тавтологией, то говорят, что A и B логически эквивалентны. Противоречие – формула, принимающая значение “ложь” при любых значениях входящих в нее букв. Если A тавтология, то A – противоречие и наоборот. Если в тавтологию подставить вместо букв логические высказывания, то получится логически истинное высказывание. A A – снег идет или снег не идет (закон исключения третьего). Если в противоречие подставить вместо букв логические высказывания, то получится логически ложное высказывание. A & A – снег идет и снег не идет На практике могут быть длинные сложные высказывания, содержащие много букв и обнаружить, являются ли они тавтологиями или противоречиями, может быть трудоемко. Свойства тавтологий 1. Если =A и = (A B), то =B. Доказательство (от противного) Предположим, что B не является тавтологией, тогда существуют значения букв, на которых B является ложным, тогда: (истина ложь) – истина, потому что по условию (A B) – тавтология, это противоречит определению импликации, следовательно =B – тавтология. 2. Подстановка в тавтологию приводит к тавтологии. Предположим: =A, в нее входят пропозициональные буквы a1, a2, … an; заменим ai на Ai (ПФ), i=1..n. В результате этой замены мы получим пропозициональную формулу B, откуда =B. Доказательство Зададим буквам, входящим в B, некоторые значения, тогда формулы Ai примут некоторые значения, зададим эти значения буквам ai, входящим в формулу A, тогда значение формулы A совпадает со значением формулы B, поскольку A является всегда истинным, то и B примет значение “истина”, следовательно B – всегда “истина” или B – тавтология. 3. Предположим A – ПФ, а – ПФ, входящая в A, заменим a на b в формуле A хотя бы один раз. В результате этой замены мы получили ПФ B, тогда: = (ab) (AB) Доказательство AB ab AB 00 1 1 01 0 0 10 0 0 11 1 1 Если a и b одинаковы, то одинаковы и A и B. Приоритеты логических связок младший < < < & < старший Принцип двойственности Предположим, что A – ПФ, содержащая только операции &, , ; A’ получается заменой в A на & и & на , тогда: 1) =A =A’ 2) если =A B, то =B’ A’ 3) если =A B, то =A’ =B’ A* (ПФ) получается из формы A, если произведем замены: &; & ; a a; a a. A* – негатив для формулы A 4. = (A A*) ИСЧИСЛЕНИЕ ПРЕДИКАТОВ Знак “:” = “такой, что” M – произвольное множество B = {0,1} Предикат – функция P(x1, x2, x3, … xn): Mn B, MM…M=Mn, xiM M – предметная область предиката xi – предикатные переменные B – область значений предиката Связь отношений и предикатов R Mn R = {(a1, a2, … an), aiM} Истина , a1, a2,an R P a1, a2,an Ложь, a1, a2,an R Обратное отношение Пусть есть высказывание a1, a2,an R Истина , P a1, a2,an Истина Ложь, P a1, a2,an Ложь Связь между предикатами и функциями: f: Mn M Истина , f a1, a2,an an 1 P a1, a2,an , an 1 Ложь, f a1, a2,an an 1 (n+1)-местный предикат , P a1, a2,an , an 1 Истина f a1,a2,an an1 Истина Ложь Ложь , P a , a ,a , a 1 2 n n 1 Обратный переход от предиката к функции возможен не всегда потому, что могут быть предикаты, в которых: P (a1, a2, a3) = Истина, P (a1, a2, a3) = Истина. Из предикатов можно образовывать логически формулы: P1(x1, x2) (P2(x3, x4) & P1(x2, x3)) Формулу можно рассматривать как составной предикат: Q(x1, x2, x3, x4) Примеры предикатов 1) P(x, y) = x y 2) P(x) = x > 5 3) do f(x, y, z) while ((x = y) & (i < 100)) Истина, x y & i 100 ложь P x, y , z Ложь , иначе Исчисление предикатов применяется при доказательстве правильности программы. Кванторы Введенных логических операций недостаточно для формализации всего множества используемых высказываний, поэтому множество этих связок расширяется за счет введения кванторов. – “для всех x из M P(x) – истина” – квантор общности x P(x) или xM P(x) – “существует x из M, для которого P(x) – истина” – квантор существования x P(x) Операция добавления квантора к предикату называется навешиванием квантора на переменную или связыванием переменной (квантификация). Переменная x, на которую повешен квантор, называется связанной, несвязанные переменные называются свободными. Свободная переменная – это обычная переменная, она может принимать любые значения. Навешивать кванторы можно на предикаты и вообще на любые логические выражения. Выражения, на которые навешиваются кванторы, называются областью действия квантора. Все вхождения переменных, указанных в кванторе, являются в выражении связанными. Навешивание квантора на предикат уменьшает количество свободных переменных в нем. x P(x, y, z) = Q (y, z) Истинные формулы и эквивалентные соотношения в исчислении высказываний F – формула, которая может содержать предикаты, логические связки, кванторы. 1) формула F называется выполнимой в заданной области M, если существует такая подстановка логических констант в переменные, при которой F становится истинным высказыванием; 2) формула F называется выполнимой, если существует область M, в которой F выполнимо; 3) если формула F выполнима во множестве M при любых подстановках констант, она называется тождественно истинной во множестве M; 4) формула F тождественно истинная для любого множества M называется просто тождественно истинной или общезначимой, или тавтологией; 5) если формула F невыполнима в множестве M, то она называется тождественно ложной во множестве M; 6) если формула F невыполнима для любых M, она называется просто тождественно ложной или противоречием. x (P(x) P(x)) – тождественно истинна x (P(x) & P(x)) – тождественно ложна Формулы называются эквивалентными, если при любых подстановках констант они принимают одинаковые значения, в частности все тождественно истинные (ложные) формулы являются эквивалентными. Если формулы F1 и F2 – эквивалентны, то = (F1 F2). В математической логике существуют две проблемы при исследовании истинности формул. - определение порождающей процедуры для множества истинных формул; - проверка формулы на истинность – проблема построения разрешающей процедуры для множества истинных формул. Для этого – построение таблицы истинности. Порождающую процедуру можно организовать так: строим последовательно все формулы, проверяем их на тождественную истинность, и те формулы, которые тождественно истинны, включаем в множество тождественно истинных формул. В логике предикатов предикатные переменные имеют в общем случае бесконечные области определения, поэтому прямой перебор в общем случае невозможен, и нужно применять методы доказательства. Формулы преобразования 1. ( x P(x)) x (P(x)) 2. ( x P(x)) x (P(x)) Вынесение квантора: 3. x (P1(x) & P2(x)) x P1(x) & x P2(x) 4. x (P1(x) P2(x)) x P1(x) x P2(x) 5. x (P1(x) P2(x)) x (P1(x) x P2(x)) 6. x (P1(x) & P2(x)) x P1(x) & x P2(x) 7. x y P(x, y) y x P(x, y) 8. x y P(x, y) y x P(x, y) x y P(x, y) y x P(x, y) Предваренные нормальные формы Формула представлена в ПНФ (предваренная нормальная форма), если она имеет следующий вид (K – квантор): K1x1 K2x2 K3x3 … Knxn M M – матрица до M – кванторное начало (префикс) Если все кванторы существования предшествуют всем кванторам общности, то такая форма называется нормальная форма Сколема. Существует формальный алгоритм построения предваренных нормальных форм. Цель алгоритма вынесение квантора влево. Шаг 1: Исключение связок эквивалентности и импликации, заменой их на , , &. P Q P & Q P & Q P Q P Q Шаг 2: Вносят отрицание внутрь формул с применением законов: (P) P (P Q) P & Q (P & Q) P Q – законы де Моргана ( x P(x)) x (P(x)) ( x P(x)) x (P(x)) Шаг 3: Переименовываем связанные переменные, если это необходимо (формулы 5 и 6) Шаг 4: Используем оставшиеся формулы для вынесения кванторов в самое начало формулы