МЛиТА курс лекцийx

advertisement
Математическая логика и теория алгоритмов
ГУ ВПО «Белорусско-Российский университет»
Кафедра АСУ
«Белорусско-Российский университет»
Математическая логика и
теория алгоритмов
Могилев 2014
Математическая логика и теория алгоритмов
Составитель: старший
Александровна
преподаватель
кафедры
АСУ
Беккер
Инга
Математическая логика и теория алгоритмов
Лекция № 1
Введение
Роль математической логики как теоретической основы математики.
Влияние математической логики на развитие информатики.
Необходимость формализации рассуждений. Примеры задач, решаемых
рассуждениями.
Основные математические понятия, необходимые для изложения основ
математической логики.
РОЛЬ МАТЕМАТИЧЕСКОЙ ЛОГИКИ
КАК ТЕОРЕТИЧЕСКОЙ ОСНОВЫ МАТЕМАТИКИ
Среди задач, для решения которых привлекают компьютер, немало таких,
которые принято называть логическими. В логических задачах исходными
данными являются не только и не столько числа, а сложные логические суждения,
подчас весьма запутанные. И нужно применить рассуждения, чтобы от
предпосылок перейти к выводу – это и есть основная задача логики.
Термин "логика" происходит от древнегреческого logos, означающего
"слово, мысль, понятие, рассуждение, закон".
Логика означает набор правил, которым подчиняется процесс мышления.
Основателем логики считают афинского философа Аристотеля (384-322 до
н.э.), одного из величайших мыслителей в истории человеческой цивилизации.
Логические сочинения Аристотеля объединены в сборник трактатов «Органон»
(organon - «орудие»). Название означает, что логика в понимании Аристотеля есть
орудие научного исследования и является введением в философию.
В «Органон» входят следующие логические трактаты:
«Категории» - дают схему описания специфических вещей в терминах их
свойств и действий; это сочинение, не совсем достоверно приписываемое
Аристотелю;
«Об истолковании» (трактат о суждении);
«Аналитики» - первая и вторая, каждая в двух книгах. Это основной
логический труд Аристотеля. В нем излагаются: в первой «Аналитике» - учение
об умозаключении (силлогизме), а во второй - учение о доказательстве,
дедуктивном методе доказательства от частного к общему;
Математическая логика и теория алгоритмов
«Топика» - обширный трактат о вероятных доказательствах и о «диалектике»
- в аристотелевском понимании этого термина;
«Опровержение софистических доказательств».
Цель логических трактатов Аристотеля «Органон» состояла в том, чтобы
развить универсальный метод рассуждения, посредством которого будет
возможно узнать все знания о действительности.
Формальная логика - наука о формах и законах мышления. Законы логики
отражают в сознании человека свойства, связи и отношения объектов
окружающего мира. Логика как наука позволяет строить формальные модели
окружающего мира, отвлекаясь от содержательной стороны.
Логика служит базовым инструментом почти любой науки и является
теоретической основой математики. Из логики выделилась самостоятельная ее
часть – математическая логика, изучающая основания математики и принципы
построения математических теорий. Математика – это наука, в которой все
утверждения доказываются с помощью умозаключений.
Математи́ческая ло́гика (теоретическая логика, символическая логика) —
раздел математики,
изучающий математические
обозначения, формальные
системы, доказуемость математических суждений,
природу
математического доказательства в
целом, вычислимость и
прочие
аспекты оснований математики.[1]
По определению П. С. Порецкого, «математическая логика есть логика по
предмету, математика по методу».
По определению Н. И. Кондакова, «математическая логика — вторая, после
традиционной логики, ступень в развитии формальной логики, применяющая
математические методы и специальный аппарат символов и исследующая
мышление с помощью исчислений (формализованных языков).»[2]
По определению С. К. Клини: математическая логика — это «логика,
развиваемая с помощью математических методов».[3] Все эти определения не
противоречат, а дополняют друг друга.
Применение в логике математических методов становится возможным
тогда, когда суждения формулируются на некотором точном языке. Такие точные
языки имеют две стороны: синтаксис и семантику.
Синтаксисом называется совокупность правил построения объектов языка
(обычно называемых формулами).
Семантикой называется совокупность соглашений, описывающих наше
понимание формул (или некоторых из них) и позволяющих считать одни
формулы верными, а другие — нет.
Математическая логика и теория алгоритмов
ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ПОНЯТИЯ, НЕОБХОДИМЫЕ ДЛЯ
ИЗЛОЖЕНИЯ ОСНОВ МАТЕМАТИЧЕСКОЙ ЛОГИКИ
Основными формами мышления являются
(суждения) и умозаключения (рассуждения).
понятия,
высказывания
Понятие - это форма мышления, которая выделяет существенные признаки
предмета или класса предметов, отличающие его от других. Например,
компьютер, человек, студенты, дата, экзамен.
Суждения (высказывания) - это форма мышления, в которой утверждается или
отрицается связь между предметом (понятием) и его признаком, отношения
между предметами или факт существования предмета; причем она может быть
либо истинной, либо ложной. Языковой формой высказывания является
повествовательное предложение. Вопросительные и побудительные предложения
суждениями не являются.
Высказывания рассматриваются не с точки зрения вложенного в них смысла
и содержания (как в философии), а только с точки зрения их истинности или
ложности. Истинным будет суждение, в котором связь понятий правильно
отражает свойства и отношения реальных объектов. "В январе 31 день" - истинное
суждение, а вот "У курицы 2 лапы" - ложное. Суждения могут быть простыми и
сложными. "Дискриминант равен нулю, И уравнение имеет корни" - сложное
суждение, состоящее из двух простых, которые объединены логической связкой
И.
Умозаключение - прием мышления, позволяющий на основе одного или
нескольких суждений-посылок получить новое суждение (знание или вывод).
Примерами умозаключений являются доказательства теорем в геометрии.
Посылками умозаключения по правилам формальной логики могут быть только
истинные суждения. Тогда и умозаключение будет истинным. Иначе можно
прийти к ложному умозаключению.
ВЛИЯНИЕ МАТЕМАТИЧЕСКОЙ ЛОГИКИ НА РАЗВИТИЕ ИНФОРМАТИКИ
Формальная логика, построенная Аристотелем, просуществовала без
существенных изменений более 20 веков. Развитие математики потребовало ее
развития. Впервые идеи о построении логики на математической основе высказал
немецкий математик Готфрид Лейбниц (1646-1716) – он считал, что основные
понятия логики нужно обозначить символами, соединяя их специальными
связующими символами. Тогда любое рассуждение можно заменить
вычислением. «Мы употребляем знаки не только для того, чтобы передать наши
мысли другим лицам, но и чтобы облегчить сам процесс нашего мышления»
(Г.Лейбниц).
Математическая логика и теория алгоритмов
Реализация этой идеи Лейбница принадлежит английскому математику XIX
столетия Джорджу Булю (1815-1864). Он построил один из разделов формальной
логики в виде некоторой «алгебры», аналогичной алгебре чисел, обозначив
буквами высказывания. Подобно тому, как для описания действий над
переменными был разработан раздел математики алгебра, так и для обработки
логических выражений в математической логике была создана алгебра
высказываний, или алгебра логики. Алгебра логики изучает свойства функций, у
которых и аргументы, и значения принадлежат заданному двухэлементному
множеству (например, {0, 1}). Поэтому иногда вместо термина «алгебра логики»
употребляют термин «двузначная логика». Дж.Буль определил алгебру в
широком смысле слова как науку об общих операциях над математическими
объектами.
Первый русский фундаментальный труд по логике, написанный М.В.
Ломоносовым (1711 — 1765), называется «Краткое руководство к красноречию».
Алгебра логики является частью активно развивающейся сегодня науки дискретной математики, которая изучает дискретные структуры (конечные
группы – вычислительные системы, конечные автоматы, машины Тьюринга) в
классической математике и в прикладной математике. Математический аппарат
алгебры логики широко используется в информатике, в частности, в таких ее
разделах, как проектирование ЭВМ, теория автоматов, теория алгоритмов, теория
информации, целочисленное программирование и т. д.
Большой вклад в становление и развитие математической логики внесли
Августус де Морган (1806-1871), Уильям Стенли Джевонс (1835-1882), Платон
Сергеевич Порецкий (1846-1907), Чарлз Сандерс Пирс (1839-1914), Андрей
Андреевич Марков (1903-1979), Андрей Николаевич Колмогоров (1903-1987) и др.
Долгое время алгебра логики (Булева алгебра) была известна достаточно
узкому классу специалистов. Прошло почти 100 лет со времени создания алгебры
логики Дж. Булем, прежде чем в 1938 году выдающийся американский математик
и инженер Клод Шеннон (1916-2001) показал, что алгебра логики применима для
описания самых разнообразных процессов, в том числе функционирования
релейно-контактных и электронно-ламповых схем.
Современная математическая логика – это раздел математики, который
изучает вопросы применения математических методов для решения логических
задач и построения логических схем, которые лежат в основе работы любого
компьютера. Поэтому основы информатики базируются на математической
логике.
В середине XX века развитие вычислительной техники привело к появлению
логических элементов, логических блоков и устройств вычислительной техники,
что было связано с дополнительной разработкой таких областей логики, как
Математическая логика и теория алгоритмов
проблемы логического синтеза, логическое проектирование и логического
моделирования логических устройств и средств вычислительной техники.
В 80-х годах XX века начались исследования в области искусственного
интеллекта на базе языков и систем логического программирования. Началось и
создание экспертных систем с использованием и развитием автоматического
доказательства теорем, а также методов доказательного программирования для
верификации алгоритмов и программ для ЭВМ.
В
80-ые
годы
начались
также
изменения
в
образовании.
Появление персональных компьютеров в средних школах привело к созданию
учебников информатики с изучением элементов математической логики для
объяснения логических принципов работы логических схем и устройств
вычислительной техники, а также принципов логического программирования
для компьютеров пятого поколения и разработка учебников информатики с
изучением языка исчисления предикатов для проектирования баз знаний.
НЕОБХОДИМОСТЬ ФОРМАЛИЗАЦИИ РАССУЖДЕНИЙ. ПРИМЕРЫ ЗАДАЧ,
РЕШАЕМЫХ РАССУЖДЕНИЯМИ
Рассмотрим вопрос, обсуждаемый в ток-шоу: «Кто ЗА – если человек на
хорошей, оплачиваемой работе, имеет свою фирму, много денег, то он хорошо
учился?»
Обсуждаемое высказывание является сложным, состоит из двух простых
высказываний:
А= «Человек на хорошей, оплачиваемой работе, имеет свою фирму, много
денег»
В= «Человек хорошо учился»,
которые соединены связкой ЕСЛИ…, ТО…
Это высказывание для участия в обсуждении требует четкой формы.
Формализуем высказывание, поставив на первое место причину, а на второе
предполагаемое следствие из этой причины: ЕСЛИ человек хорошо учился, ТО
этот человек на хорошей, оплачиваемой работе, имеет свою фирму, много денег.
Теперь можно пофилософствовать, всегда ли имеет место такая зависимость.
Наверно, не всегда. Т.е. высказывание ЕСЛИ В, ТО А – не является истинным.
Давайте рассмотрим оригинальную форму высказывания: ЕСЛИ А, ТО В,
немного изменив ее: если человек на хорошей, оплачиваемой работе, имеет свою
фирму, много денег, значит, он хорошо учился.
Математическая логика и теория алгоритмов
Каждый человек, имеющий хорошую работу, хорошо учился. Но не каждый,
кто хорошо учился, имеет хорошую, оплачиваемую работу.
Выстроив четко причину и следствие, можно обсуждать философское
содержание высказывания.
Часто в бытовой речи связка ЕСЛИ…, ТО… соединяет следствие и причину
(следствие на первом месте): ЕСЛИ есть грибы, ТО прошел дождь. Нужно четко
выяснить, что имеется в виду: если есть грибы – это признак того, что были
дожди? Или все же наоборот: если прошли дожди, то в лесу есть грибы. Русский
язык богат и многообразен, пользуйтесь синонимами, по-другому проговаривая
свои мысли; уточняйте, переспрашивайте собеседника: «Если я вас правильно
понял, …». Таким образом, как в обыденной речи, так и в математической логике
необходимо четкое понимание связей между высказываниями – вот почему нужна
формализация высказываний.
Рассуждениями решаются многие задачи. Пример: три подразделения A , B
и C торговой фирмы стремились получить по итогам года прибыль. Экономисты
высказали следующие предположения: получение прибыли подразделением B не
является необходимым условием для получения прибыли подразделением A;
получение прибыли хотя бы одним подразделений B и C не является
достаточным для получения прибыли подразделением A; подразделения A и B не
получат прибыль одновременно. По завершению года оказалось, что только одно
из трех предположений истинно. Какие подразделения получили по итогам года
прибыль?
Решение. Запишем предположения из условия задачи в виде логических
высказываний:
«Получение прибыли подразделением B не является необходимым условием
для получения прибыли подразделением A »: F1 ( A, B,C) = A → B
«Получение прибыли хотя бы одним подразделений B и C не является
достаточным для получения прибыли подразделением A»: F2 ( A, B,C) = (B + C) → A
«Подразделения A и B не получат прибыль одновременно»: F3 ( A, B,C) = A  B
Из условия известно, что только одно из трех предположений истинно. Это
значит, что мы должны найти, какое из трех следующих логических выражений
не является тождественно ложным: F1 ⋅ F2 ⋅ F3, F1 ⋅ F2 ⋅ F3, F1 ⋅ F2 ⋅ F3.
При проверке оказывается, что тождественно истинным является третье
предположение. F2 = 1  С = 1. Следовательно, прибыль получит подразделение
C.
Математическая логика и теория алгоритмов
Лекция № 2
Тема 1. Классическая логика
Логика высказываний. Высказывания. Формулы логики высказываний.
Тавтологии.
Основные законы логики.
Логический парадокс Рассела.
Алгебра высказываний.
ЛОГИКА ВЫСКАЗЫВАНИЙ. ВЫСКАЗЫВАНИЯ
ЛОГИКА ВЫСКАЗЫВАНИЙ, пропозициональная логика, алгебра логики,
алгебра высказываний - раздел математической логики, изучающий сложные
высказывания, образованные из простых, и их взаимоотношения. При этом под
высказыванием понимаем повествовательное предложение, о котором можно
судить, истинно оно или ложно.
В естественном языке существует много способов образования сложных
высказываний
из простых. Обычно
выбирают пять общеизвестных
грамматических связок (союзов): “не”, “и”, “или”, “если..., то” и “если..., и только
если”.
Элементарные
высказывания
заменяются
пропозициональными
переменными p, q, r,... с индексами или без них; указанным выше
грамматическим связкам ставятся в соответствие (с близким смыслом) логические
связки, которые получают соответственно следующие обозначения и названия: 
(отрицание), & (конъюнкция), v (дизъюнкция),  (импликация) и 
(эквиваленция); и, наконец, используются скобки (,) для того, чтобы можно было
по-разному группировать высказывания и этим определять порядок выполнения
операций.
Пропозициональные связки задаются с помощью истинностных таблиц:
p
q
AND
&
1
1
1
1
0
0
0
1
0
0
OR
v
1
IMP

1
EQV

1
1
0
0
0
1
1
0
0
0
1
1
Математическая логика и теория алгоритмов
В таблице истинности слева указываются все возможные значения
аргументов (пропозициональных переменных), а справа — значения логической
функции.
Конъюнкцией двух высказываний p, q называется новое высказывание,
которое обозначается p&q (читается "p и q"). Определение конъюнкции:
Конъюнкцией двух высказываний p и q называется новое высказывание p&q, которое
истинно, когда p и q одновременно истинны, а в остальных случаях ложно.
Конъюнкцию также называют логическим произведением и обозначают p  q,
p*q, pq.
Дизъюнкцией высказываний p и q называется новое высказывание,
которое обозначается p  q (читается: "p или q"). Дизъюнкция p  q ложна тогда и
только тогда, когда p и q одновременно ложны. Дизъюнкцию также называют
логической суммой.
Импликацией двух высказываний p и q называется новое высказывание,
которое обозначается p→q (варианты чтения: "Если p, то q"; "p влечет q"; "Из p следует q").
Определение импликации: импликация – это такая логическая операция, при
которой высказывание p→q ложно тогда и только тогда, когда p истинно, а q ложно.
В составе импликации p→q высказывание p называется условием или посылкой, а
высказывание q – заключением или следствием.
Эквиваленцией двух высказываний p и q называется новое высказывание,
которое обозначается p↔q ( читается: "p эквивалентно q", "p выполняется тогда и только
тогда, когда выполняется q"; "p есть необходимое и достаточное условие для того, чтобы
Высказывание p↔q истинно тогда и только тогда, когда значения
истинности p и q совпадают.
выполнялось q").
Отрицание
высказывания
р
будет
обозначаться р (читается: "неверно, что р" или, короче 0
"не р"). Логическую функцию р можно определить с
помощью таблицы истинности или словесно: если A
1
0
истинно, то ⎯A ложно и наоборот.
Эти
таблицы
определяют
классические
пропозициональные связки. Отрицание называется одноместной (унарной)
связкой, а остальные четыре — двухместными (бинарными) связками.
p
NOT
р
1
ФОРМУЛЫ ЛОГИКИ ВЫСКАЗЫВАНИЙ. ТАВТОЛОГИИ. ЛОГИЧЕСКОЕ
СЛЕДОВАНИЕ
Выражением
языка
логики
высказываний
называют
любую
последовательность указанных выше символов. Некоторые из этих выражений
объявляются правильно построенными. Их называют формулами логики
высказываний.
Математическая логика и теория алгоритмов
Формулы определяются следующими правилами, где буквы А, В...
представляют произвольные высказывания (сложные или простые):
(1) всякая пропозициональная переменная есть формула;
(2) если А и В — формулы, то А, (Α  В), (А& В), (A  В), (АВ) тоже
формулы;
(3) никакие другие соединения символов не являются формулами.
Примерами формул являются p, q,  (p v q). Приоритет логических
операций по убыванию силы:
1)
2)
3)
4)
5)
Отрицание
Конъюнкция
Дизъюнкция
Импликация
Эквиваленция.
В классической логике высказываний каждое простое высказывание
является или только истинным, или только ложным (принцип двузначности).
“Истина” и “ложь” называются истинностными значениями высказывания и
обозначаются соответственно И и Л, или 1 и 0.
Формула может быть такой, что на каждой строке она принимает везде
одно значение, равное И. Такая формула называется тавтологией (тождественно
истинным высказыванием).
Если формула в своей таблице истинности принимает только значения Л,
то она называется противоречием (тождественно ложным высказыванием).
Число различных строк в таблице равно 2m , где m – количество логических
переменных.
ОСНОВНЫЕ ЗАКОНЫ ЛОГИКИ
Важнейшие равносильности (законы) алгебры логики можно разбить на
три группы.
1. Основные равносильности:
1) закон идемпотентности 1-ый: А&AA
2) закон идемпотентности 2-ой: АA A
3) А&1A
4) А 1  1
5) А&00
Математическая логика и теория алгоритмов
6) А 0  A
7) закон противоречия: A & A  0
8) закон исключенного третьего: A A  1
9) закон снятия двойного отрицания  A  A
10) законы поглощения 1-ый: A& (A  B)  A
11) законы поглощения 2-ой: A(A & B)  A
2. Равносильности, выражающие одни логические операции через
другие:
1) А  В A  B
2) А  В  (А  В) & (B  A)
3) закон де Моргана 1-ый: (A & B) A   B
4) закон де Моргана 2-ой:
(A  B) A &  B
5) закон де Моргана 3-ий:
A & B   (A   B)
6) закон де Моргана 4-ый: A  B   (A &  B)
Из равносильностей этой группы следует, что всякую формулу алгебры
логики можно заменить равносильной ей формулой, содержащей только две
логические операции: конъюнкцию и отрицание или дизъюнкцию и отрицание.
3. Равносильности, выражающие основные законы алгебры логики:
1) коммутативность конъюнкции: А&ВВ&A
2) коммутативность дизъюнкции: АB BA
3) ассоциативность конъюнкции: (А&В) &C A& (В&C)
4) ассоциативность дизъюнкции: (АB)C A (BC)
5) дистрибутивность конъюнкции относительно дизъюнкции:
А& (ВC)  А&В  А&C
6) дистрибутивность дизъюнкции относительно конъюнкции:
А (В&C)  (АВ) & (АC)
ЛОГИЧЕСКИЙ ПАРАДОКС РАССЕЛА
Парадокс Рассела (1903 г.) в первоначальной его форме связан с понятием
множества, или класса.
Можно говорить о множествах различных объектов, например, о множестве
всех людей или о множестве натуральных чисел. Элементом первого множества
будет всякий отдельный человек, элементом второго — каждое натуральное
число. Допустимо также сами множества рассматривать как некᴏᴛᴏрые объекты и
Математическая логика и теория алгоритмов
говорить о множествах множеств. Можно ввести даже такие понятия, как
множество всех множеств или множество всех понятий.
Множество обычных множеств
Относительно любого произвольно взятого множества представляется
осмысленным спросить, будет оно ϲʙᴏим собственным элементом или нет.
Множества, не содержащие себя в качестве элемента, назовем обычными. К
примеру, множество всех людей не будет человеком, так же как множество атомов
— ϶ᴛᴏ не атом. Необычными будут множества, являющиеся собственными
элементами. К примеру, множество, объединяющее все множества, представляет
собой множество и, значит, содержит само себя в качестве элемента.
Изучим теперь множество всех обычных множеств. Поскольку оно
множество, о нем тоже можно спрашивать, обычное оно или необычное. Ответ,
однако, оказывается обескураживающим. В случае если оно обычное, то, согласно
ϲʙᴏему определению, должно содержать само себя в качестве элемента, поскольку
содержит все обычные множества. Но ϶ᴛᴏ означает, что оно будет необычным
множеством. Допущение, что наше множество представляет собой обычное
множество, приводит, таким образом, к противоречию. Значит, оно не может
быть обычным. С другой стороны, оно не может быть также необычным:
необычное множество содержит само себя в качестве элемента, а элементами
нашего множества будут только обычные множества. В итоге приходим к
заключению, что множество всех обычных множеств не может быть ни обычным,
ни необычным множеством.
Таким образом, множество всех множеств, не являющихся собственными
элементами, есть ϲʙᴏй элемент в том и только том случае, когда оно не будет
таким элементом. Это явное противоречие. И получено оно на базе самых
правдоподобных предположений и с помощью бесспорных как будто шагов.
Противоречие говорит о том, что такого множества просто не существует.
Но почему оно не может существовать? Ведь оно состоит из объектов,
удовлетворяющих четко определенному условию, причем само условие не
кажется каким-то исключительным или неясным. В случае если столь просто и
ясно заданное множество не может существовать, то в чем, собственно,
заключается различие между возможными и невозможными множествами? Вывод
о несуществовании рассматриваемого множества звучит неожиданно и внушает
беспокойство. Он делает наше общее понятие множества аморфным и
хаотичным, и нет гарантии, что оно не способно породить какие-то новые
парадоксы.
Парадокс Рассела замечателен ϲʙᴏей крайней общностью. Стоит сказать,
для его построения не нужны какие-либо сложные технические понятия, как в
случае некᴏᴛᴏᴩых других парадоксов, достаточно понятий «множество» и
«элемент множества». Но эта простота как раз и говорит о его
фундаментальности: он затрагивает самые глубокие основания наших
рассуждений о множествах, поскольку говорит не о каких-то специальных
случаях, а о множествах вообще.
Другие варианты парадокса
Парадокс Рассела не имеет специфически математического характера. В
нем используется понятие множества, но не затрагиваются какие-то его особые,
связанные именно с математикой, ϲʙᴏйства.
Математическая логика и теория алгоритмов
Это становится очевидным, если переформулировать парадокс в чисто
логических терминах.
О каждом ϲʙᴏйстве можно, по всей вероятности, спрашивать, приложимо
оно к самому себе или нет.
Свойство быть горячим, например, неприложимо к самому себе, поскольку
само не будет горячим; ϲʙᴏйство быть конкретным тоже не относится к самому
себе, ибо ϶ᴛᴏ абстрактное ϲʙᴏйство. Но вот ϲʙᴏйство быть абстрактным, являясь
абстрактным, приложимо к самому себе. Назовем данные неприменимые к самим
себе ϲʙᴏйства неприложимыми. Применимо ли ϲʙᴏйство быть неприложимым к
самому себе? Оказывается, неприложимость будет неприложимой только в том
случае, если она не будет таковой. Это, конечно, парадоксально.
Логическая, касающаяся ϲʙᴏйств разновидность антиномии Рассела, столь
же парадоксальна, как и математическая, ᴏᴛʜᴏϲᴙщаяся к множествам, ее
разновидность.
Рассел предложил также следующий популярный вариант открытого им
парадокса.
Представим, что совет одной деревни так определил обязанности
парикмахера: брить всех мужчин деревни, кᴏᴛᴏᴩые не бреются сами, и только
данных мужчин. Должен ли он брить самого себя? В случае если да, то он будет
относиться к тем, кто бреется сам, а тех, кто бреется сам, он не должен брить. В
случае если нет, он будет принадлежать к тем, кто не бреется сам, и, значит, он
должен будет брить себя. Мы приходим, таким образом, к заключению, что ϶ᴛᴏт
парикмахер бреет себя в том и только том случае, когда он не бреет себя. Это,
разумеется, невозможно.
Рассуждение о парикмахере опирается на допущение, что такой
парикмахер существует. Стоит сказать - полученное противоречие означает, что
϶ᴛᴏ допущение ложно, и нет такого жителя деревни, кᴏᴛᴏᴩый брил бы всех тех и
только тех ее жителей, кᴏᴛᴏᴩые не бреются сами.
Обязанности парикмахера не кажутся на первый взгляд противоречивыми,
по϶ᴛᴏму вывод, что его не может быть, звучит несколько неожиданно. Но ϶ᴛᴏт
вывод не являтся все-таки парадоксальным. Условие, кᴏᴛᴏᴩому должен
удовлетворять деревенский брадобрей, на самом деле внутренне противоречиво
и, следовательно, невыполнимо. Подобного парикмахера не может быть в деревне
по той же причине, по какой в ней нет человека, кᴏᴛᴏᴩый был бы старше самого
себя или кᴏᴛᴏᴩый родился бы до ϲʙᴏего рождения.
Рассуждение о парикмахере может быть названо псевдопарадоксом. По
ϲʙᴏему ходу оно строго аналогично парадоксу Рассела и данным интересно. Но
оно все-таки не будет подлинным парадоксом.
Другой пример такого же псевдопарадокса представляет собой известное
рассуждение о каталоге.
Некая библиотека решила составить библиографический каталог, в
кᴏᴛᴏᴩый входили бы все те и только те библиографические каталоги, кᴏᴛᴏᴩые не
содержат ссылки на самих себя. Должен ли такой каталог включать ссылку на
себя?
Нетрудно показать, что идея создания такого каталога неосуществима; он
просто не может существовать, поскольку должен одновременно и включать
ссылку на себя и не включать.
Математическая логика и теория алгоритмов
Интересно отметить, что составление каталога всех каталогов, не
содержащих ссылки на самих себя, можно представить как бесконечный, никогда
не завершающийся процесс. Допустим, что в какой-то момент был составлен
каталог, скажем К1, включающий все отличные от него каталоги, не содержащие
ссылки на себя. С созданием К1 появился еще один каталог, не содержащий
ссылки на себя. Так как задача заключается в том, чᴛᴏбы составить полный каталог
всех каталогов, не упоминающих себя, то очевидно, что К1 не будет ее решением.
Стоит заметить, что он не упоминает один из таких каталогов — самого себя.
Включив в К1 ϶ᴛᴏ упоминание о нем самом, получим каталог К2. В нем
упоминается К1, но не сам К2. Добавив к К2 такое упоминание, получим КЗ,
кᴏᴛᴏрый опять-таки не полон из-за того, что не упоминает самого себя. И далее без
конца.
АЛГЕБРА ВЫСКАЗЫВАНИЙ
Алгебра высказываний (алгебра логики) — раздел математической логики,
в котором изучаются логические операции над высказываниями в виде формул.
Фактически это логика высказываний с определенными для высказываний
логическими операциями, понятием формулы и заданными основными законами
для этих операций. Алгебра высказываний изучает строение сложных логических
высказываний и способы установления их истинности с помощью
алгебраических методов. В алгебре высказываний каждая пропозициональная
переменная, каждая формула принимает одно из двух значений: 1 (истина) или 0
(ложь).
Таким образом, каждая логическая формула задает логическую
функцию — функцию от логических переменных, которая сама может
принимать только два логических значения. Число всех возможных двоичных
векторов длины n равно 2n. Поэтому число всех различных логических функций
от n переменных равно числу возможных расстановок нулей и единиц в столбце
длины
2n
, то есть это число равно
2
2n
.
В алгебре высказываний используются следующие термины:
дизъю́нкт —пропозициональная
одной или более переменных;
формула,
являющаяся
дизъюнкцией
конъюнкт — пропозициональная
одной или более переменных;
формула,
являющаяся
конъюнкцией
интерпретация формул – процесс и результат приписывания входящим в
формулу переменным значений 1 (истина) и 0 (ложь).
Первый
в
России
курс
по
алгебре
логики
прочитан П. С. Порецким в Казанском государственном университете.
был
Математическая логика и теория алгоритмов
Ивин, А.А. Логика: учебник для гуманитарных факультетов / А.А. Ивин.- М.: Фаирпресс, 2002
Лихтарников, Л.М. Математическая логика: курс лекций, задачник-практикум и
решения / Л.М. Лихтарников, Т.Г. Сукачева.- СПб.: Лань, 1999.- 288 с.
Столл, Р.Р. Множества. Логика. Аксиоматические теории / Р.Р.Столл.- Пер. с англ.- М.,
1968.
Философский энциклопедический словарь / Гл. редакция: Л. Ф. Ильичёв, П. Н.
Федосеев, С. М. Ковалёв, В. Г. Панов.— М.: Советская энциклопедия. 1983.
Математическая логика и теория алгоритмов
Лекция № 3
Тема 1. Классическая логика
Релейно-контактные схемы. Равносильные формулы. Алгебра Буля.
Истинные и общезначимые формулы. Проблема разрешимости.
Логическое следование. Принцип дедукции. Силлогизмы.
АЛГЕБРА БУЛЯ
Каждая
формула
алгебры
высказываний
от
пропозициональных
переменных
определяет
некоторую
функцию от аргументов, сопоставляющую любому набору входных данных
длины , составленному из элементов
единственный элемент того же множества.
двухэлементного
множества
,
Этот элемент является логическим значением того составного
высказывания, в которое превращается данная формула, если вместо всех ее
пропозициональных переменных подставить конкретные высказывания,
имеющие соответствующие значения истинности.
Функция, о которой идет речь, определяется структурой формулы и
определениями отрицания, конъюнкции, дизъюнкции, импликации и
эквивалентности, которые понимаются как определения действий над символами
0, 1 — элементами двухэлементного множества
В
связи
с
этим
естественно
.
рассмотреть
функции,
заданные
на
двухэлементном множестве
и принимающие значения в нем же
безотносительно к формулам алгебры высказываний, т.е. сами по себе. Тогда
функции, определяемые таблицами в определениях отрицания, конъюнкции,
дизъюнкции, импликации и эквивалентности, а также функции, определяемые
формулами алгебры высказываний, будут служить примерами таких функций.
Такие функции, заданные и принимающие значения в двухэлементном
множестве, появляющиеся в алгебре высказываний, носят название функций
алгебры логики или булевых (логических) функций.
Обозначим переменные, пробегающие множество
, малыми буквами
латинского
алфавита и
будем
называть
их булевыми
(логическими)
переменными.
Математическая логика и теория алгоритмов
Изучим некоторые свойства булевых функций и посмотрим, как эти
функции могут применяться в алгебре высказываний и в теории релейноконтактных схем.
Булевой функцией от одного аргумента называется функция F, заданная на
множестве из двух элементов и принимающая значения в том же двухэлементном
множестве F: {0; 1}  {0; 1}.
Всего есть четыре различных булевых функции от одного аргумента:
Аргумент
Функции
х
F0(x)
F1(x)
F2(x)
F3(x)
0
0
0
1
1
1
0
1
0
1
F0(x) = 0
функция, тождественно равная 0 (тождественный нуль);
F1(x) = x
тождественная функция;
F2(x) = x
функция, называемая отрицанием;
F3(x) = 1
функция, тождественно равная 1 (тождественная единица).
Булевой функцией от двух аргументов называется функция G, заданная на
множестве {0; 1} х {0; 1} и принимающая значения в двухэлементном множестве
{0; 1} .
G: {0; 1} х {0; 1}  {0; 1}.
Другими словами, булева функция от двух аргументов сопоставляет любой
упорядоченной паре, составленной из элементов 0 и 1 (а таких упорядоченных
пар будет четыре), либо 0, либо 1.
Перечислим все возможные булевы функции от двух аргументов в форме
следующей таблицы:
Аргумент
Функции
х1
х2
G0(x1,
x2)
G1
G2
G3
G4
G5
G6
G7
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
Математическая логика и теория алгоритмов
Аргумент
Функции
х1
х2
G8
G9
G10
G11
G12
G13
G14
G15
0
0
1
1
1
1
1
1
1
1
0
1
0
0
0
0
1
1
1
1
1
0
0
0
1
1
0
0
1
1
1
1
0
1
0
1
0
1
0
1
Заметим: функции пронумерованы так, что номер функции, записанный в
двоичной системе счисления, дает последовательность значений оответствующей
функции. Например, двоичная запись числа 13 имеет вид: 1101. G13(x1, x2)
принимает на наборах аргументов последовательно значения: 1101.
Многие из перечисленных функций имеют названия и специальные
обозначения.
Функция
Название
G0(x1, x2) = 0
константа 0
G1(x1, x2) = х1  х2
конъюнкция, логическое умножение
G2(x1, x2) =  (х1  х2)
запрет по х1, отрицание импликации от х1 к х2
G3(x1, x2) = х1
переменная х1
G4(x1, x2) =  (х2  х1)
запрет по х2, отрицание импликации от х2 к х1
G5(x1, x2) = х2
переменная х2
G6(x1, x2) = х1  х2
сложение по модулю 2, логическая неравнозначность, строгая
дизъюнкция
G7(x1, x2) = х1  х2
дизъюнкция, логическое сложение
G8(x1, x2) = х1  х2
стрелка Пирса, символ Лукашевича, функция Даггера, функция
Вебба,
отрицание дизъюнкции
G9(x1, x2) = х1  х2
эквиваленция, равнозначность
G10(x1, x2) =  х2
отрицание, инверсия х2
G11(x1, x2) = х2  х1
импликация от х2 к х1
G12(x1, x2) =  х1
отрицание, инверсия х1
Математическая логика и теория алгоритмов
G13(x1, x2) = х1  х2
импликация от х1 к х2
G14(x1, x2) = х1  х2
штрих Шеффера, отрицание конъюнкции
G15(x1, x2) = 1
константа 1
Если у функции 3 аргумента, то число возможных функций возрастает до 256,
поэтому более сложные булевы функции задаются с помощью простых функций одного
или двух аргументов.
Теперь установим некоторые важнейшие свойства введенных функций. Две
булевы функции
и
называются равными, если каждому набору
значений аргументов
обе функции сопоставляют один и тот же элемент из
множества
Например,
,
т.е.
для
любых
.
.
Из введенных простейших булевых функций можно строить с помощью
суперпозиций более сложные булевы функции. Например, если в функцию
вставить вместо аргумента функцию
, то получим следующую сложную
функцию:
. Если в нее в свою очередь вставить вместо аргумента
функцию
, то получим сложную функцию
. И так далее. В
результате получаются булевы функции от трех, четырех и большего числа
аргументов.
Для булевых функций выполняются следующие равенства:
1а) х + у = у + х
1б) х у = у х в)
коммутативность
дизъюнкции и
конъюнкции
2а) (х + у) + z = х + (у + z)
ассоциативность
2б) (х у) z = х (у z)
дизъюнкции и
конъюнкции
3а) (x + y) z = x z + x y
3б) (x y) + z = (x + z) (y + z)
4а) x + x = x
дистрибутивные
законы
4б) x x = x
законы
идемпотентности
5)   х = х
закон двойного
отрицания
Математическая логика и теория алгоритмов
6а)  (х + у) = х & y
законы де Моргана
6б)  (х & у) = х  y
7a) х + (у х) = х
7б) х ( у + х) = х
законы поглощения
Непустое множество М = {x, y, z…} элементов любой природы, в котором
определены
отношение равно и три операции: сложения, умножения,
отрицания; подчиняющееся при этом аксиомам 1а) -7б), называется булевой
алгеброй.
Если под основными элементами x, y, z… подразумевать высказывания, а
под операциями сложения, умножения, отрицания – логическое сложение,
логическое умножение и логическое отрицание, под знаком равенства понимать
равносильность и учесть выполнение в этом случае равносильностей для
высказываний х, у, то получаем следующее: алгебра логики является конкретной
интерпретацией (моделью) булевой алгебры.
Говорят, что найдена интерпретация (модель) некоторой системы
аксиом, если для данной системы аксиом удалось подобрать конкретные объекты
и конкретные соотношения между ними таким образом, что все аксиомы
выполняются.
Алгебра Буля имеет и другие интерпретации: если под основными
элементами x, y, z… понимать множества, а под операциями сложения,
умножения, отрицания – объединение, пересечение, дополнение множеств
соответственно, а под знаком равенства – равенство множеств, то получим алгебру
множеств как интерпретацию (модель) булевой алгебры.
РЕЛЕЙНО-КОНТАКТНЫЕ СХЕМЫ
Булевы функции широко применяются при описании работы дискретных
управляющих систем (контактных схем, схем из функциональных элементов,
логических сетей и т.д.), при исследовании некоторых электрических цепей, так
называемых релейно-контактных схем.
Релейно-контактные схемы (Ladder Diagram ) предназначены для
программирования промышленных контроллеров и обеспечивают наглядный
интерфейс логики работы контроллера, облегчающий не только задачи
Математическая логика и теория алгоритмов
собственно программирования и ввода в эксплуатацию, но и быстрый поиск
неполадок в подключаемом к контроллеру оборудовании.
Программа на языке релейной логики имеет интуитивно понятный
инженерам-электрикам графический интерфейс, представляющий логические
операции как электрическую цепь с замкнутыми и разомкнутыми контактами.
Протекание или отсутствие тока в этой цепи соответствует результату логической
операции (истина — если ток течет; ложь — если ток не течет).
Основными элементами языка являются контакты, которые можно образно
уподобить паре контактов реле или кнопки. Пара контактов отождествляется с
логической переменной, а состояние этой пары — со значением переменной.
Контакты релейно-контактной схемы могут быть двух типов: замыкающие
и размыкающие. Каждый контакт подключен к некоторому реле
(переключателю). К одному реле может быть подключено несколько контактов —
как замыкающих, так и размыкающих. Технически реле представляет собой
катушку с металлическим сердечником (магнитопроводом), вблизи которого
находится соответствующий контакт.
Когда через катушку пропускается электрический ток, металлический
сердечник намагничивается и замыкает все находящиеся при нем замыкающие
контакты. Одновременно все размыкающие контакты, относящиеся к данному
реле, размыкаются. Поскольку замыкающие контакты при отсутствии в реле
электрического тока разомкнуты, то они называются также нормально
разомкнутыми. Аналогично, размыкающие контакты называются также
нормально замкнутыми. При обесточивании обмоток реле (т.е. когда реле
отключается) все замыкающие контакты снова размыкаются, а все размыкающие,
замыкаются.
Каждому реле ставится в соответствие своя булева переменная
или
, или
, которая принимает значение 1, когда реле срабатывает, и
принимает значение 0 при отключении реле. На чертеже все замыкающие
контакты, подключенные к реле , обозначаются тем же символом , а все
размыкающие контакты, подключенные к этому реле, обозначаются
отрицанием . Это означает, что при срабатывании реле все его замыкающие
контакты х проводят ток и им сопоставляется значение 1, а все размыкающие
контакты не проводят электрический ток и им сопоставляется значение 0. При
отключенном реле создается противоположная ситуация: все его замыкающие
контакты разомкнуты, т. е. в этот момент им сопоставляется (переменная
принимает) значение 0, а все его размыкающие контакты замкнуты, т. е. в этот
момент им сопоставляется (другими словами, переменная принимает) значение
1.
Математическая логика и теория алгоритмов
Всей релейно-контактной схеме тогда ставится в соответствие булева
переменная , зависящая от булевых переменных
, сопоставленным
тем реле, которые участвуют в схеме. Если при данном наборе состояний
реле
(некоторые из этих реле находятся в рабочем состоянии под
током, остальные отключены, т.е. "обесточены") вся релейно-контактная схема
проводит электрический ток, то переменной ставится в соответствие (другими
словами, переменная принимает) значение 1. Если же при этом наборе
состояний реле
схема не проводит электрический ток, то считаем,
что переменная у принимает значение 0. Поскольку каждый набор состояний
реле
характеризуется набором, составленным из нулей и единиц и
имеющим длину , то данная релейно-контактная схема определяет некоторое
правило, по которому каждому такому набору длины , составленному из нулей
и единиц, сопоставляется либо 0, либо 1. Таким образом, каждая релейноконтактная схема, в которой занято независимых реле (контактов в ней может
быть или больше), определяет некоторую булеву функцию от аргументов.
Она принимает значение 1 на тех и только тех наборах значений
аргументов
,
которые
соответствуют
тем
состояниям
реле
, при которых данная схема проводит электрический ток. Такая
булева
функция
называется
проводимости данной релейно-контактной схемы.
функцией
Таким образом, теория булевых функций предоставляет математические
модели реальных физических релейно-контактных схем.
Рассмотрим некоторые релейно-контактные схемы и найдем их функции
проводимости. Первая схема состоит из двух последовательно соединенных
контактов и , т. е. контактов, связанных с двумя независимыми реле и ,
каждое из которых срабатывает независимо от другого.
Ясно, что данная схема проводит электрический ток тогда и только тогда,
когда оба контакта и замкнуты, т. е. только тогда, когда оба переменных и
принимают значение 1. Булева функция от двух аргументов
,
удовлетворяющая
такому
условию
конъюнкция
.
Говорят,
что последовательное соединение двух контактов реализует конъюнкцию
соответствующих этим контактам булевых переменных.
Вторая релейно-контактная схема состоит из двух параллельно
соединенных контактов х и у. Ясно, что эта схема проводит электрический ток в
том и только в том случае, когда по меньшей мере один из контактов ( или )
замкнут, т.е. лишь в случае, когда хотя бы одна из булевых переменных ( или )
принимает значение 1. Булева функция от двух аргументов и ,
Математическая логика и теория алгоритмов
удовлетворяющая этому условию
- это дизъюнкция
что параллельное
соединение
двух
контактов реализует
соответствующих этим контактам булевых переменных.
. Говорят,
дизъюнкцию
Итак, с помощью релейно-контактных схем можно реализовывать булевы
функции: конъюнкцию, дизъюнкцию и отрицание. Поскольку всякая булева
функция может быть выражена через конъюнкцию, дизъюнкцию и отрицание,
причем отрицание стоит лишь непосредственно около переменных и не стоит ни
около каких внутренних скобок, а конъюнкция, дизъюнкция и отрицание, как
показано только что, реализуются на релейно-контактных схемах, то и всякая
булева функция может быть реализована с помощью релейно-контактной схемы,
т. е. может быть построена такая схема, для которой данная булева функция
служит функцией проводимости.
ИСТИННЫЕ И ОБЩЕЗНАЧИМЫЕ ФОРМУЛЫ. РАВНОСИЛЬНЫЕ ФОРМУЛЫ.
ПРОБЛЕМА РАЗРЕШИМОСТИ. ЛОГИЧЕСКОЕ СЛЕДОВАНИЕ
Формула алгебры высказываний может быть такой, что на каждой строке
она принимает везде одно значение, равное ИСТИНА. Такая формула называется
тавтологией (тождественно истинной, общезначимой).
В формальной логике тавтологии играют важную роль и служат для записи
ее законов.
Если формула в своей таблице истинности принимает только значения
ЛОЖЬ, то она называется противоречием (тождественно ложной).
Формула называется выполнимой, если существует такой набор значений
переменных, при котором эта формула принимает значение ИСТИНА и при
этом она не является тавтологией.
Все формулы алгебры логики делятся на три класса:
1. тождественно истинные,
2. тождественно ложные,
3. выполнимые.
Задача «К какому классу относится формула?» называют проблемой
разрешимости алгебры логики.
Важное свойство истинностных таблиц в том, что они дают эффективную
процедуру решения этого вопроса.
Процедура построения таблиц истинности называется разрешающей
процедурой и благодаря ей логика высказываний является разрешимой.
Математическая логика и теория алгоритмов
Вот некоторые общие факты о тавтологиях,
ПРАВИЛАМИ ЛОГИКИ ВЫСКАЗЫВАНИЙ:
которые
называются
1. Правило заключения (modus ponens). Если А и А В тавтологии, то В
тавтология.
2. Правило подстановки. Если А(р) есть тавтология и В — формула, то А(В)
тоже тавтология, где В замещает каждое вхождение переменной р в формуле А,
т.е. подстановка в тавтологию приводит к тавтологии. Уже отсюда следует, что
имеется бесконечное множество тавтологий.
3. Правило замены. Две формулы алгебры логики А и В называются
равносильными, если они принимают одинаковые логические значения на
любом наборе входящих в формулы элементарных высказываний. Между
понятиями равносильности и эквивалентности существует следующая связь: если
формулы А и В равносильны, то формула АВ – тавтология, и обратно, если
формула АВ – тавтология, то формулы А и В равносильны. Равносильность
формул будем обозначать знаком , а запись А В означает, что формулы А и В
равносильны. Правило замены: если некоторая формула F содержит в качестве
подформулы F1, то можно заменить F1 на эквивалентную ей F2. Полученная с
помощью такой замены новая формула G эквивалентна исходной F .
Наряду с понятием тавтологии фундаментальным для логики
высказываний является понятие логического следования, поскольку одной из
главных задач логики является устанавливать, что из чего следует, и тем самым
указывать, какие высказывания являются теоремами при заданных условиях.
Всякую теорему можно записать в виде импликации и т. о. выделить ее условие и
заключение.
Отношение логического следования существует между определенными
формулами логики высказываний.
Говорят, В логически следует из А или является логическим следствием из
А, и пишут А├В, если в таблицах истинности формула В имеет значение И во всех
тех строках, где А имеет значение И.
Отсюда вытекает, что А├В тогда и только тогда, когда АВ есть тавтология.
Если формула А тавтология, то пишут ├А.
Примером логического следования (вывода) из посылок является уже
упомянутое правило modus ponens. Выводимость В из высказываний А и А В
следует из того, что формула (А & (Α  В)) В является тавтологией.
Математическая логика и теория алгоритмов
Из посылок А1, ..., Аn логически следует высказывание В, если не может
быть так, что высказывания А1, ..., Аn истинны, а высказывание В - ложно, (т.е.
если В истинно в любой модели, в которой истинны А1, ..., Аn).
Отличительной чертой логического следования является то, что оно ведет
от истинных высказываний только к истинным.
Если определено понятие тавтологии и определено семантическое понятие
логического следования (как это сделано выше), то говорят, что дано
семантическое представление логики высказываний. Однако такое представление
ставит серьезную проблему: как обозреть все тавтологии, которых бесконечное
множество? Для решения этой проблемы нужно перейти к синтаксическому
представлению логики высказываний.
Формальный (символический) язык логики высказываний и понятие
формулы остаются прежними. Но теперь из всего множества тавтологий
выбирают некоторое их конечное (и, вообще говоря, определяемые
неоднозначно) подмножество, элементы которого называются аксиомами.
ПРИНЦИП ДЕДУКЦИИ. СИЛЛОГИЗМЫ
Процесс получения новых знаний, выраженных высказываниями, из
других знаний, также выраженных высказываниями, называется рассуждением
(или умозаключением). Исходные высказывания называются посылками
(гипотезами, условиями) умозаключения, а получаемые высказывания —
заключением (следствием).
В логике умозаключения делятся на дедуктивные и индуктивные.
Дедуктивные умозаключения – те умозаключения, у которых между посылками
и заключением имеется отношение логического следования. В дедуктивных
умозаключениях связи между посылками и заключением представляют собой
формально-логические законы, в силу чего при истинных посылках заключение
всегда оказывается истинным.
Дедукция (лат. deductio — выведение) — метод мышления, при котором
частное положение логическим путём выводится из общего, вывод выполняется
по правилам логики.
Если посылки дедукции истинны, то истинны и её следствия. Дедукция —
основное средство доказательства, оно противоположно индукции.
Пример дедуктивного умозаключения:
Все млекопитающие животные кормят детенышей молоком. Все дельфины
– млекопитающие.
Значит: Все дельфины кормят детенышей молоком.
Математическая логика и теория алгоритмов
В индуктивных умозаключениях между посылками и заключением имеют
место такие связи, которые обеспечивают получение только правдоподобного
заключения при истинных посылках. В этих рассуждениях посылки лишь
подтверждают заключение. В индуктивных рассуждениях ход мысли направлен
от единичного знания к общему.
Силлоги́зм (греч. συλλογισμός) — рассуждение мысли, состоящее из трёх
простых атрибутивных высказываний: двух посылок и одного заключения.
Силлогизмы – правильные схемы рассуждений, в которых заключение верно в
силу именно формы рассуждения, а не содержания.
Пример силлогизмов и их записи:
Все люди смертны. Сократ человек.
Значит, что Сократ смертен.
Некоторые кошки бесхвосты. Все кошки — млекопитающие.
Некоторые млекопитающие бесхвосты.
Силлогизм "речь, в которой, если нечто предположено, то с
необходимостью вытекает нечто, отличное от положенного в силу того, что
положенное есть" (Аристотель, «Первая аналитика», 1, 24b).
«Формальная логика есть не что иное, как учение о свойствах, общих
всякой классификации, - разъясняет Анри Пуанкаре. - Она учит нас, что два
солдата, являющихся частью одного полка, тем самым принадлежат к одной и той
же бригаде, следовательно, к одной и той же дивизии; к этому-то и сводится вся
теория силлогизмов».
Приведем примеры наиболее употребляемых схем силлогизмов
(логически правильных умозаключений), для получения тождественно истинного
высказывания-следствия в них необходимо использовать тождественно истинные
посылки:
1. Утверждающий модус (modus ponens):
«Если из высказывания A следует высказывание B и справедливо (истинно)
высказывание A, то справедливо B».
Логическая форма этого умозаключения такова:
А В, А
В
Математическая логика и теория алгоритмов
2. Отрицающий модус (modus tollens):
«Если из A следует B, но высказывание B неверно, то неверно A».
Обозначается:
А В, В
А
3. Правило транзитивности:
«Если из A следует B, а из B следует C, то из A следует C »:
А В, В С
А С
4. Закон противоречия:
«Если из A следует B, а также из A следует ¬ B, то неверно A»:
А В, А В
А
5. Правило контрапозиции:
«Если из A следует B, то из того, что неверно B, следует, что
неверно A»:
А В
В  А
Примерами
неправильных
умозаключений
могут
служить
следующие:
А В, В
А
А В, А
В
Алгебра
высказываний
дает
эффективный
метод
проверки правильности рассуждений. Рассуждение
считается правильным, если между его посылками и заключением имеет место
отношение логического следования.
Если импликация А1 & …&An  В является тождественно истинной, то
из посылок А1, …,An следует заключение B.
Математическая логика и теория алгоритмов
Если формула, являющаяся переводом рассуждения на язык символов,
оказывается тождественно истинной, то можно сделать вывод о том, что
рассуждение правильное. Если эта формула является тождественно ложной, то
рассуждение неправильное.
Может оказаться, что формула является выполнимой, но не тождественно
истинной. В этом случае нет оснований считать рассуждение правильным.
Необходимо продолжить анализ рассуждения, но уже средствами более богатого
раздела логики — средствами логики предикатов.
Агарева, О. Ю. Математическая логика и теория алгоритмов [Текст] : учеб. пособие / О.
Ю. Агарева, Ю. В. Селиванов. — М. : МАТИ, 2011. — 80 с.
Лихтарников, Л.М. Математическая логика: курс лекций, задачник-практикум и
решения / Л.М. Лихтарников, Т.Г. Сукачева.- СПб.: Лань, 1999.- 288 с.
Математическая логика и теория алгоритмов
Лекция № 4.
Тема 1. Логика предикатов
Основные понятия теории множеств.
Предикаты и формулы, истинность и выполнимость формул логики
предикатов, интерпретации.
Основные равносильности логики предикатов.
ОСНОВНЫЕ ПОНЯТИЯ ТЕОРИИ МНОЖЕСТВ
ПРЕДИКАТЫ И ФОРМУЛЫ, ИСТИННОСТЬ И ВЫПОЛНИМОСТЬ ФОРМУЛ
ЛОГИКИ ПРЕДИКАТОВ, ИНТЕРПРЕТАЦИИ
Логика высказываний позволяет формализовать лишь малую часть
множества рассуждений. Высказывания, описывающие некоторые свойства
объектов, или отношения между объектами выходят за рамки логики
высказываний. Поэтому следует расширить логику высказываний и построить
такую логическую систему, в рамках которой можно было бы исследовать
структуру и содержание тех высказываний, которые в рамках алгебры
высказываний считались бы элементарными. Такой логической системой является
логика предикатов, а алгебра высказываний является ее составной частью.
Предикатом называется функция, аргументы которой принимают
значения из некоторого множества, а сама функция – значение 0 («ложь») или
1 («истина»).
N-местным предикатом
функция
областью предиката
.
на множестве M называется n-местная
Множество
,
M при
а хi (i = 1,
этом
2,
называется предметной
…, n)
–
предметными
переменными. Множество n-ок
, для которых
называется областью истинности предиката P и обозначается Ip.
Понятие предиката восходит к Аристотелю. Это понятие обобщает
понятие «высказывание». Неформально говоря, предикат — это высказывание,
содержащее неизвестную (или несколько неизвестных), т. е. в него можно
подставлять аргументы. Если аргумент один — то предикат выражает свойство
аргумента, если больше — то отношение между аргументами. Сам Аристотель
ограничился в своей логике рассмотрением предикатов только от одной
Математическая логика и теория алгоритмов
переменной (одноместных предикатов). Но позднее (после работ Дж. Буля) в
рассмотрение вошли и предикаты от нескольких переменных.
Одноместным предикатом называется произвольная функция от одной
переменной x, определенная на некотором множестве M и принимающая
(логические) значения из множества {0, 1}. Множество M, на котором определен
предикат
P(x), называется предметной областью или областью определения
предиката, а сама переменная x — предметной переменной.
При фиксации значения переменной x об утверждении P(x) можно
сказать, истинно оно или ложно. То есть если в P(x) вместо x подставить
конкретный изучаемый объект a , то получаем высказывание, принадлежащее
алгебре высказываний. Конкретные объекты, о которых говорится в
высказывании, называются термами или предметными константами.
Предметные константы, подобно константам в математике, определяют
значения, которые могут быть приписаны в высказываниях предметным
переменным. При этом каждой переменной соответствует своё множество
предметных констант.
Например, если речь идет о студенческой группе, то переменной
ФАМИЛИЯ соответствует множество констант – конкретных фамилий студентов
группы, переменой ОЦЕНКА – множество констант {отл., хор., удовл., неуд.}.
Предикат можно рассматривать как расширение понятия высказывания.
Пример 1. Вместо трех высказываний
"Маша любит математику"
"Даша любит математику"
"Саша любит математику"
можно написать один предикат: "Икс любит математику" и договориться,
что вместо неизвестного Икс могут быть Маша, Даша или Саша. Т.е. М = { Маша,
Даша, Саша}. Подстановка вместо Икс конкретного имени превращает предикат
в обычное высказывание.
Областью истинности предиката P(x), заданного на множестве M,
называется совокупность всех x из M, при которых данный предикат
обращается в истинное высказывание:
Иными словами, область истинности предиката есть подмножество его
предметной области, на котором данный предикат принимает значение 1.
Математическая логика и теория алгоритмов
Пример 2А. Пусть М ={2, 3, 4, 5, 6, 7, 8}. Предикаты Р(x) = «х - простое число»
и Q(x) = «x-четное число» заданы на множестве М. Требуется найти области
истинности этих предикатов.
Решение. Очевидно, что IP={3, 5, 7} и IQ={2, 4, 6, 8}.
Пример 2Б. Найти область истинности предиката P(x,y)=«y-x2≥0» и
изобразить его на координатной плоскости.
Решение. Область истинности данного предиката – часть плоскости Oxy,
заключенная между ветвями параболы y= x2.
Пример 2В. Найти область истинности предиката B(x, y) =«x2 +y2 <5»,
заданного на множестве Z+×Z+, где Z+ = {0, 1, 2... }. Ответ: {(0; 0), (0; 1), (0; 2), (1; 0),
(1; 1), (2; 0)}.
Для
предикатов
справедливы
рассмотренные логические операции.
и
имеют
тот же смысл ранее
Пусть R(x) и E(x)– два одноместных предиката, определённых на некотором
множестве M.
Конъюнкция. P1(x) ≡ R(x) & E(x) – это предикат, который истинен для тех и
только для тех объектов из M, для которых оба предиката истинны. Таким
образом, область истинности предиката P1(x) равна пересечению областей
истинности предикатов R(x) и E(x).
Дизъюнкция. P2(x) ≡ R(x) ∨ E(x) – это предикат, который ложен для тех и
только для тех объектов из M, для которых оба предиката ложны. Таким образом,
область истинности предиката P2(x) равна объединению областей истинности
предикатов R(x) и E(x).
Импликация. Р3 ≡ R(x)  E(x) – это предикат, который является ложным
для тех и только для тех объектов из M, для которых одновременно R(х)
принимает значение ИСТИНА, а Е(х) принимает значение ЛОЖЬ, и принимает
значения ИСТИНА во всех остальных случаях.
Отрицание. P4(x) ≡ ¬R(x) – это предикат, который истинен для тех и
только для тех объектов из M, для которых предикат R(x) ложен. Его область
истинности является дополнением области истинности предиката R(x).
Операции над многоместными предикатами определяются аналогично.
Есть две новые операции, специфические. Они называются операциями
НАВЕШИВАНИЯ КВАНТОРОВ. Эти операции соответствуют фразам "для всех"
- квантор общности и "некоторые" - квантор существования. Квантор
общности произошел от английского All и обозначается буквой A, перевернутой
Математическая логика и теория алгоритмов
вверх ногами - . Квантор существования произошел от английского Exist и
обозначается буквой E, которую повернули кругом, - .
 (x) P(x), x M. Если множество M состоит из конечного числа объектов
M = {a1, a2, a3,…an}, то
значение
истинности
предиката с
квантором
общности (x) P(x) записывается в виде конъюнкции. P(a1) & P(a2) & P(a3) &…&
P(an).
(x) P(x), x M. Если множество M = { a1, a2, a3,…an}, то значение истинности
предиката с квантором существования  (x) P(x) совпадает со значением
дизъюнкции. P(a1)  P(a2)  P(a3)  … P(an).
Итак, квантор общности обобщает операцию конъюнкции, квантор
существования обобщает операцию дизъюнкции.
СВОБОДНЫЕ И СВЯЗАННЫЕ ПЕРЕМЕННЫЕ
Переменные в логике играют роль , аналогичную их роли в алгебре
или анализе. Они позволяют указать в структуре объекта те места, которые
при использовании этого объекта будут заняты
другими объектами.
Переменная в области действия
квантора
играет
роль
обычной
переменной и
называется
связанной, поэтому говорят, что кванторы
связывают переменные. Пример 3А. x ((x+1)(x-1)=(x2-1)). Здесь переменная x
является связанной.
Вне действия квантора переменная называется свободной и играет
роль неизвестного. Пример 3Б. (x2+4x+4=0). Этот предикат
определяет
множество значений переменной x, при котором он истинен.
Пример 3В. x P(x, y), здесь x – связанная переменная, y – свободная
переменная.
Область действия некоторой квантификации (или квантора) есть
формула, к которой применяется эта квантификация. Формула, не
содержащая свободных переменных, называется замкнутой.
Пример 4. К предикату от двух переменных P(x,)y кванторные операции
можно применить к одной переменной или к двум переменным. Получаем
следующие высказывания:
xP(x,y);
yP(x,y);
xP(x,y);
yP(x,y);
x y P(x,y); xy P(x,y); xy P(x,y);
xy P(x,y);
yx P(x,y); y x P(x,y); yx P(x,y);
yx P(x,y).
Математическая логика и теория алгоритмов
В общем случае изменение порядка следования кванторов изменяет смысл
высказывания и его логическое значение.
Квантификация превращает n - местный предикат в (n –1)-местный.
Если R(x) – одноместный предикат на некотором множестве M, то  (x)R(x)
и (x) R(x)– нульместный предикат или просто высказывание.
Одноместный предикат после навешивания квантора превращается
высказывание, которое может быть истинно или ложно; в примере 1 получим:
в
"ВСЕ любят математику"
"НЕКОТОРЫЕ любят математику"
Интересно посмотреть, как ведут себя кванторы в присутствии операции
отрицания. Возьмем отрицание предиката "ВСЕ любят математику": "НЕ ВЕРНО,
что ВСЕ любят математику". Это равносильно (по закону Де Моргана)
заявлению: "НЕКОТОРЫЕ НЕ любят математику. То есть отрицание "задвинули"
за квантор, в результате чего квантор сменился на противоположный.
Имеют
Моргана.
место следующие
тождества, носящие название
законов де
¬ (x) (P(x)) ≡(x) ( ¬ P(x));
¬x P(x) ≡ (x) (¬ P(x)).
Как уже отмечалось, расширение логики высказываний до логики
предикатов получается за счет включения в формулы утверждений, являющихся
предикатами. Формула логики предикатов
определяется индуктивно по
следующей схеме:
1) Всякая пропозициональная переменная (т.е. 0–местный предикат) есть
формула.
2) Если P(.) — n-местный предикат, то P(x1,...xn) есть формула. Все
переменные x1,...xn— свободные переменные, связанных переменных в этой
формуле нет.
3) Если A — формула, то ¬A — формула, причем с теми же свободными
и связанными переменными, что и в формуле A .
4) Если A и B — формулы, причем нет таких переменных, которые были
бы связанными в одной формуле и свободными в другой, то выражения (A&B),
(AB), (A→B) , (A ~B) , (AB) суть формулы, в которых свободные переменные
формул A и B остаются свободными, а связанные переменные формул A и B
остаются связанными.
Математическая логика и теория алгоритмов
5) Если A — формула, содержащая свободную предметную переменную
x, то x A и x A — тоже формулы. Переменная x в них связана. Остальные
же переменные, которые в формуле A были свободны, остаются свободными и в
новых формулах. Переменные, которые были связаны в A, связаны и в новых
формулах.
6) Других формул, кроме построенных по правилам пяти предыдущих
пунктов, нет.
Из этого определения ясно, что всякая формула алгебры высказываний
является формулой логики предикатов.
Как обычно, часть скобок,
определяющих порядок действий в формуле, можно опускать.
Пример 5. Следующее выражение является формулой логики предикатов:
здесь P — трехместный предикат, а Q — двухместный предикат. В этой
формуле переменные x, y связаны, а переменные u, w свободны.
Пример 6. Выражение
логики предикатов.
не является формулой
ИЗ
ФОРМАЛИЗОВАННЫХ
ЯЗЫКОВ
МАТЕМАТИКИ
ЯЗЫК
ПРЕДИКАТОВ – САМЫЙ БЛИЗКИЙ К ЕСТЕСТВЕННОМУ. Поэтому работы
по
искусственному интеллекту тяготеют к использованию этого языка. В
сравнении с естественным, это очень во многих смыслах ограниченный язык. Но
лучшего за 100 лет не придумано.
В хорошо формализованных системах
даже
наоборот, дополнительно ограничивают этот язык для
удобной
реализации
на компьютерах.
Примером
тому
язык (логического)
программирования ПРОЛОГ - ПРОграммирование на ЛОГике.
Язык предикатов наследует недостатки языка логики высказываний,
которые
обуславливают
изначальное
несоответствие естественного и
логического языков.
На языке предикатов можно описать далеко не все, хотя
и многое. Но даже в этом ограниченном пространстве подчас приходится
применять хитрости и уловки, которые бы больше пристали ремеслу или
искусству.
Вот некоторые "классические примеры". Если мы желаем сказать на
языке предикатов "Все студенты отличники", то рекомендуется конструкция:
"ДЛЯ ВСЕХ иксов справедливо: ЕСЛИ икс студент, ТО икс отличник".
Но если
хотим сказать "Некоторые студенты отличники", то это следует записать
"ДЛЯ
НЕКОТОРЫХ иксов справедливо: икс студент И икс отличник" Конструкция
ЕСЛИ ..., ТО в данном случае не подходит. И вот почему: стоит затесаться в
Математическая логика и теория алгоритмов
компанию одному иксу-нестуденту и он сделает этот предикат истинным, даже
если там нет ни одного отличника!
На языке предикатов можно составить более сложные высказывания,
чем на языке логики высказываний.
или
С каждым предикатом связано число, которое называется местностью
арностью
предиката
(количество
переменных).
Язык предикатов – наиболее приближенный к естественным языкам
формальный математический язык.
Введение переменных и функций позволяет более подробно
описывать предметную область, чем при описании через элементарные
высказывания, смысл которых нам был неважен. Но если там решение можно
было найти перебором
истинностных
значений
элементарных
высказываний, то перебор по всевозможным значениям предметных
переменных становится часто невозможным, поэтому требуются другие
методы поиска решений.
Примеры:
Пример 7. Р(х) – х делится на 2; Q(x) – x делится на 3. Тогда P(x)&Q(x) – x
делится на 2 и 3, т. е. определен предикат делимости на 6.
Пример 8. S(x,y) – x равно y. Тогда S(x,y)& S(y,z)S(x,z) .
Пример 9. Записать, введя предикаты, в виде формулы рассуждение:
«Каждый человек любит себя. Значит, кто-то кого-нибудь любит».
Решение. Введем двухместный предикат P(x,y) = « x любит y ». Тогда
первая часть предложения выражается высказыванием x P(x,x), а вторая —
высказыванием  x  y P(x,y).Искомая общая формула имеет вид:
ИСТИННОСТЬ И ВЫПОЛНИМОСТЬ ФОРМУЛ ЛОГИКИ ПРЕДИКАТОВ,
ИНТЕРПРЕТАЦИИ
Если в формулу логики предикатов вместо каждой предикатной
переменной подставить конкретный предикат, определенный на некотором
выбранном множестве
, то формула превратится в конкретный предикат,
заданный над множеством
.
При этом, если исходная формула была замкнутой (т.е. не содержит
свободных предметных переменных), то полученный конкретный предикат
окажется нульместным, т.е. будет высказыванием.
Математическая логика и теория алгоритмов
Если же исходная формула была открытой, т. е. содержала свободные
вхождения предметных переменных, то в результате подстановки получим
предикат, зависящий от некоторых предметных переменных.
Если теперь подставить вместо этих предметных переменных конкретные
предметы из множества
, то полученный предикат, а следовательно, и исходная
формула превратятся в конкретное высказывание.
Превращение формулы логики предикатов в высказывание описанным
выше способом (а также само получаемое высказывание) называется
интерпретацией этой формулы на множестве
.
Итак, если формула логики предикатов замкнутая, т.е. не содержит
свободных предметных переменных, то ее интерпретация состоит из одного этапа
и сводится к подстановке вместо всех предикатных переменных конкретных
предикатов, в результате чего формула превращается в конкретное высказывание
(нульместный предикат).
Если же формула логики предикатов открытая, т. е. содержит ряд
свободных предметных переменных, то ее интерпретация состоит из двух этапов.
Во-первых, вместо всех предикатных переменных необходимо подставить
конкретные предикаты, в результате чего формула превратится в конкретный
предикат, зависящий от такого количества предметных переменных, сколько
было свободных предметных переменных в исходной формуле. Во-вторых, нужно
придать значение каждой предметной переменной, от которой зависит
получившийся предикат, в результате чего этот предикат (и, значит, вся исходная
формула) превратится в конкретное высказывание (истинное или ложное).
Пример 10. Дадим интерпретацию формуле
множества
возьмем множество всех мужчин,
а
вместо
. В качестве
предикатной
переменной
подставим конкретный предикат, определенный на
"
есть отец ". Тогда исходная формула превратится в следующее (очевидно,
ложное) высказывание
( есть отец ) — "у каждого мужчины есть сын".
Этой же формуле можно дать и другую интерпретацию. Возьмем в качестве
множество
всех натуральных чисел, а вместо предикатной переменной
подставим предикат "
", определенный на
. Тогда исходная формула
превратится в (очевидно, истинное) высказывание
— "Для
каждого натурального числа существует большее по сравнению с ним
натуральное число".
Пример 11. В предыдущем примере была рассмотрена интерпретация
замкнутой
формулы.
Дадим
интерпретацию
открытой
формуле
. В качестве множества
возьмем
Математическая логика и теория алгоритмов
множество
всех натуральных чисел. Вместо предикатных переменных
и
подставим трехместные предикаты "
" и "
"
соответственно, а вместо нульместного предиката подставим (ложное)
высказывание "
". Тогда данная формула превратится в двухместный
предикат (от предметных переменных
):
Посмотрим, в какие высказывания может превращаться данный предикат
при подстановке вместо его переменных и конкретных предметов (чисел) из
. Нетрудно понять, что двухместный предикат
превращается в истинное высказывание при любой подстановке вместо его
предметных переменных и натуральных чисел. В самом деле, для
натуральных тип получаем высказывание
Одноместный предикат (зависит от )
, стоящий
под знаком квантора
, выполним, потому что всегда можно найти такое
натуральное число , что
и
, т. е. высказывания
и
будут ложны, а значит, высказывание
истинно. А раз так, то высказывание
—
истинно.
Поэтому высказывание
в которое превращается данный предикат, ложно. Итак, исходная открытая
формула логики предикатов превращена в тождественно ложный предикат.
Нетрудно
понять,
что
если
вместо
предикатных
переменных
и
подставить только что рассмотренные предикаты, а вместо
нульместной предикатной переменной — любое истинное высказывание, то
исходная формула превратится в тождественно истинный предикат.
Как и формулы исчисления высказываний, формулы исчисления
предикатов делятся на три класса: общезначимые формулы ( истины при
всех интерпретациях), невыполнимые (ложны при всех интерпретациях ),
выполнимые ( истины хотя бы при одной интерпретации).
Формула логики предикатов называется общезначимой (тождественно
истинной), если для любого набора значений аргументов её значение равно
ИСТИНА.
Формула логики предикатов
называется тождественно
(противоречивой, невыполнимой), если
для любого набора
аргументов её значение равно ЛОЖЬ.
ложной
значений
Математическая логика и теория алгоритмов
Формула логики предикатов называется выполнимой если существует
хотя бы один набор значений аргументов, для которых её значение равно
ИСТИНА.
Две формулы логики предикатов называются равносильными на области М,
если они принимают одинаковые значения при всех возможных значениях
предметных переменных
.
Две формулы логики предикатов называются равносильными, если они
равносильны на всякой области.
Справедливы равносильности:
,
.
Разноименные кванторы можно переставлять только следующим образом:
,
.
Обратные формулы неверны.
ОСНОВНЫЕ РАВНОСИЛЬНОСТИ, СОДЕРЖАЩИЕ КВАНТОРЫ
Пусть P(x), Q(x) и R(x,y) — произвольные два однородных предиката и
двухместный предикат, а S — произвольное временное высказывание (или
формула, не содержащая x ).
Имеют место следующие равносильности:
(Используя эти соотношения,
другой.)
можно выразить один квантор через
Математическая логика и теория алгоритмов
(Соотношения 5— 8 показывают, что произвольное высказывание или
формулу, не содержащую x , можно вносить под знак квантора всеобщности и
выносить из-под знака этого квантора в конъюнкции и дизъюнкции.)
(Соотношения
9—12
показывают, что произвольное
высказывание или формулу, не содержащую x , можно вносить под знак квантора
существования и выносить из-под знака этого квантора в конъюнкции
и
дизъюнкции.)
(Соотношения 21, 22 и 27 не будут верны, если поменять направления стрелок
на противоположные).
В алгебре высказываний было установлено, что существует четкий
алгоритм, позволяющий для каждой формулы алгебры высказываний ответить на
вопрос, будет ли данная формула выполнима, тождественно истинна или
тождественно ложна. Для этого нужно составить таблицу истинности формулы и
посмотреть на распределение нулей и единиц в ее последнем столбце.
Аналогичная проблема возникает и для формул логики предикатов: существует
ли единый алгоритм, позволяющий для каждой формулы логики предикатов
определить, будет ли она выполнимой или общезначимой? Ответ
отрицательный: общего такого алгоритма не существует. Это было доказано в
1936 г. американским математиком А. Чёрчем. Тем не менее для некоторых
частных видов формул данная проблема допускает решение.
Математическая логика и теория алгоритмов
Лекция № 5.
Метод резолюций
Метод резолюций
МЕТОД РЕЗОЛЮЦИЙ
Для порождения логических следствий используется очень простая схема
рассуждений. Пусть А, В, X – формулы. Предположим, что две формулы (A∨X) и
(B∨¬X) – истинны. Если X – истинна, то следовательно В истинна. Наоборот, если
X ложна, то можно заключить, что А – истинна. В обоих случаях (A∨В) истинна.
Получается правило {A∨X, B∨¬X}⎥= A∨В, которое можно записать в виде: {¬XvA,
XvB}⎥= A∨В.
Это правило называется правилом резолюций.
Метод резолюций – это метод автоматического доказательства теорем – основы
логического
программирования.
выводимости
├
Это
алгоритм,
проверяющий
отношение
. В общем случае алгоритм автоматического доказательства
теорем не существует, но для формальных теорий с несложной структурой (таких
как исчисление высказываний, исчисление предикатов с одним одноместным
предикатом) подобные алгоритмы известны.
Вообще говоря, в исчислении высказываний (благодаря полноте
исчисления) проверка выводимости формулы состоит в проверке того, является
ли формула тавтологией или нет. Это можно легко установить по таблицам
истинности. Но этот метод не обеспечивает построения вывода формулы.
Метод
резолюций
–
классический
алгоритм
автоматического
доказательства теорем. Рассмотрим его для исчисления высказываний. Для
любого множества формул
ответ, если
├
и любой формулы
метод дает утвердительный
, и дает отрицательный ответ, если неверно, что
Теорема о доказательстве от противного. Если
тождественно ложная формула, то
├
,
├
├
.
, где
–
.
Доказательство. Доказательство проведем для частного случая, когда
представляет собой одну формулу. По теореме дедукции,
,
├
– тавтология. Преобразуем правую часть равносильности, учитывая,
что формула
тождественно ложна.
Математическая логика и теория алгоритмов
– тавтология Û
├
, что и требовалось доказать.
Как правило, в качестве формулы
используют пустую формулу •,
которая не имеет никакого значения ни в какой интерпретации, и, по
определению, является противоречием.
Метод резолюций использует специальную форму формул, которая
называется предложением.
Предложением называется дизъюнкция формул вида
атом (буква).
или
, где
–
Любая формула исчисления высказываний может быть преобразована в
предложение следующей последовательностью действий:
1.
Замена
импликации
по
формуле:
самостоятельно). В результате в формуле остаются связки:
2.
Преобразование
выражений
законам
с
де
инверсиями
(проверьте
,
по
,
.
закону
двойного
отрицания:
,
Моргана:
,
. В результате инверсии остаются только перед буквами.
3. Приведение формулы к конъюнктивной нормальной форме с помощью
дистрибутивных законов:
,
.
4. Преобразование конъюнктивной нормальной формы во множество
предложений:
Связки
.
,
используются здесь для удобства записи.
Множество формул называется невыполнимым, если оно не имеет модели,
то есть интерпретации, в которой все формулы истинны.
Без доказательства приведем следующую теорему.
Теорема. Если из формулы
получено множество
предложений, то
формула
тождественно ложна тогда и только тогда, когда множество
невыполнимо.
До сих пор мы пользовались только одним правилом вывода – Modus
ponens. В других исчислениях высказываний имеют место и другие правила
вывода.
Правило
где
резолюций. Даны
– пропозициональная буква,
предложения:
и
,
,
– предложения (в частности, пустые
Математическая логика и теория алгоритмов
или содержащие только одну букву или ее отрицание). Правило резолюций
формулируется так:
,
├
.
,
называются Резольвируемыми
Резольвентой.
Правило резолюций будем обозначать
предложениями,
а
–
.
Теорема. Резольвента логически следует из резольвируемых предложений.
Доказательство. В вышеприведенных обозначениях, нам нужно доказать,
что
– тавтология (по теореме дедукции).
Предположим, что
Полученное противоречие доказывает утверждение теоремы.
Правило резолюций применяется в опровержении методом резолюций –
алгоритме, устанавливающем выводимость
├
.
Запишем
. Каждая формула из множества
и формула
независимо преобразуются во множество предложений. В этом множестве нужно
найти резольвируемые предложения и применить к ним правило резолюций.
Резольвенты добавляются во множество предложений до тех пор, пока не будет
получено пустое предложение. Возможны два случая:
· Среди множества предложений нет резольвируемых. Вывод: теорема
опровергнута, и формула
·
Получено
выводимость
├
пустое
.
не выводима из множества формул
предложение.
Теорема
доказана.
.
Имеет
место
Математическая логика и теория алгоритмов
Примеры. 1. Методом резолюций доказать теорему ├
Доказательство. Запишем инверсию исходной формулы:
.
Заменим все импликации по соответствующей формуле:
.
Применим закон двойного отрицания и закон де Моргана:
.
Получаем предложения:
1.
2.
3.
,
,
. Резольвируем их:
– предложение.
– предложение.
– предложение.
4. •.
1, 2.
2. Методом резолюций доказать теорему
├
.
Доказательство. Запишем инверсию исходной формулы:
.
Заменим все импликации по соответствующей формуле:
.
Применим закон двойного отрицания и закон де Моргана:
.
Получаем предложения:
1.
– предложение.
2.
– предложение.
3.
4.
5. •.
,
– предложение.
.
1, 3.
2, 4.
,
.
.
Математическая логика и теория алгоритмов
Лекция № 6
Формальные теории (аксиоматические системы)
Определение формальной теории. Формальный вывод. Метатеория
формальных систем: основные свойства формальных систем (непротиворечивость
теории, полнота), разрешимость; теоремы о неполноте формальных систем (см.
лекцию № 8).
Исчисление высказываний. Синтаксис и семантика языка исчисления
высказываний. Правила вывода
ОПРЕДЕЛЕНИЕ ФОРМАЛЬНОЙ ТЕОРИИ. ФОРМАЛЬНЫЙ ВЫВОД
Доказательство тождественной истинности, семантических отношений
равносильности и следования для формул логики высказываний и предикатов
можно
свести
к
последовательности
символьных
преобразований
соответствующих формул.
Этим занимается раздел логики, в котором изучаются формальные теории
(дедуктивные системы, исчисления). Идея заключается в том, чтобы
доказательство того, что некоторая формула является тавтологией, свести к
конечной последовательности формальных символьных преобразований
логических формул.
Формальная теория Т считается заданной, если
а) задан алфавит теории - совокупность разрешенных для использования
символов;
б) задано множество правильно построенных формул (ППФ) теории;
в) выделено
аксиомами теории;
подмножество
формул
множества
ППФ,
называемых
г) определены правила вывода новых формул из аксиом.
Выводом (доказательством) в теории Т называется
конечная
последовательность формул Ф1,….,Фn, такая, что каждая Фі есть либо аксиома,
либо получена из предыдущих формул по одному из правил вывода.
Формула Ф теории Т называется теоремой, если существует доказательство
Ф1,…,Фn, где Фn=Ф.
Математическая логика и теория алгоритмов
Формула Ф является следствием множества формул Г в теории Т тогда и
только тогда, когда существует такая конечная последовательность формул
Ф1,….,Фn, что Фn есть Ф и для каждого i Фi есть либо аксиома, либо элемент Г,
либо непосредственное следствие из некоторых предыдущих формул по одному
из правил вывода.
Такая последовательность называется выводом формулы Ф из Г.
Члены множества формул Г называются гипотезами или посылками вывода.
Утверждение типа «А есть следствие Г» обозначают Г├А (можно читать «Г
даёт А»). Для указания того, что А есть следствие Г именно в теории Т пользуются
обозначением Г├ т А.
Для конечного множества Г={В1,…,Вn}, (где Вi∈Г элементы множества Г)
вместо {В1,…,Вn}├ т А обычно пишут В1,…,Вn├ т А.
Если Г пустое множество ∅ (т.е. множество, не содержащее ни одного
элемента), то Г├А тогда и только тогда, когда А является теоремой (т.е. аксиомой
или формулой выводимой из аксиомы). Вместо ∅├А пишут ├А (т.е. А теорема).
Очевидными являются следующие свойства понятия выводимости:
1. Если Г⊆ Δ (т.е. «Г подмножество Δ», «Г включается в Δ») и Г├А, то Δ├А.
Т.е. если А выводимо из Г, то оно выводимым будет если к Г добавить новые
посылки.
2. Г├А тогда и только тогда, когда в Г существует конечное подмножество
Δ, для которого Δ├А. Достаточность условия вытекает из предыдущего свойства.
Необходимость вытекает из того, что каждый вывод А из Г использует
лишь конечное число посылок из Г.
4. Если Δ├А и Г├В для любого В из множества Δ, то Г├А, т.е. если А
выводима из Δ и каждая формула из Δ выводима из Г, то А выводима
из Г.
МЕТАТЕОРИЯ ФОРМАЛЬНЫХ СИСТЕМ:
ОСНОВНЫЕ СВОЙСТВА ФОРМАЛЬНЫХ СИСТЕМ
(НЕПРОТИВОРЕЧИВОСТЬ ТЕОРИИ, ПОЛНОТА), РАЗРЕШИМОСТЬ
Метатеория – совокупность математических средств и методов,
предназначенных для описания и определения некоторой формальной
аксиоматической теории, а также для исследования её свойств. Т.е. это теория,
изучающая другую теорию. Рассмотрим свойства аксиоматических теорий.
Математическая логика и теория алгоритмов
Свойства аксиоматических теорий
Непротиворечивость
Теория, в которой множество теорем покрывает всё множество формул (все
формулы
являются
теоремами,
«истинными
высказываниями»),
называется противоречивой. Аксиоматическая теория противоречива, если в ней
могут быть доказаны как Ф, так и “не Ф”. В противном случае теория
называется непротиворечивой. Выяснение противоречивости теории — одна из
важнейших и иногда сложнейших задач формальной логики. После выяснения
противоречивости теория, как правило, не имеет дальнейшего ни теоретического,
ни практического применения.
Полнота
Теория называется полной, если в ней для любой формулы Ф выводима
либо сама Ф, либо ее отрицание Ф. В противном случае, теория
содержит недоказуемые утверждения (утверждения, которые нельзя ни доказать,
ни опровергнуть средствами самой теории), и называется неполной.
Аксиоматическая теория полна (по Посту), если присоединение к ее аксиомам
формулы, не являющейся теоремой, делает теорию противоречивой.
Разрешимость
Аксиоматическая
теория
разрешима,
если
в
ней
понятие
теоремы эффективно, то есть для любой ППФ Ф существует процедура
(алгоритм), которая за конечное число шагов позволяет определить, является ли Ф
теоремой теории.
Независимость аксиом
Отдельная аксиома теории считается независимой, если эту аксиому нельзя
вывести из остальных аксиом. Зависимая аксиома по сути избыточна, и ее
удаление из системы аксиом никак не отразится на теории. Вся система аксиом
теории называется независимой, если каждая аксиома в ней независима.
Интерпретация теории
Интерпретацией формальной теории в содержательную теорию называется
соответствие
теорем
формальной
теории
истинным
утверждениям
содержательной теории. Интерпретация называется правильной, если каждой
теореме формальной теории ставится в соответствие истинное утверждение
содержательной теории. Интерпретация называется адекватной, если она
правильная и каждому истинному утверждению содержательной теории ставится
в соответствие теорема формальной теории.
Для изучения той или иной формальной теории приходится пользоваться
мета-языком, т.е. естественным языком, дополненным общеупотребительными
математическими символами, по отношению к которому языку изучаемой теории
(множество ППФ) является языком-объектом.
Математическая логика и теория алгоритмов
Примером формальной
исчисление высказываний.
теории
для
логики
высказываний
служит
Рассмотрим формальную аксиоматическую теорию L для классического
исчисления высказываний (Д. Гильберт, П. Бернайс, С. Клини):
I. Символами L являются , →, (,) и буквы А с целыми положительными
числами в качестве индексов: А1, А2,… Символы  , → называют примитивными
связками, а буквы А1, А2,… - пропозиционными буквами;
II. а) Все пропозиционные буквы Аi
б) Если А и В формулы, то (А) и (А→В) – тоже формулы
в) Никаких других формул, кроме определённых согласно а) и б) нет.
III. Каковы бы ни были формулы А, В, С теории L, следующие формулы
есть аксиомы L:
(АК1)
А→(В→А)
(АК2)
(А→(В→С))→((А→В)→(А→С))
(АК3)
(А→В)→(( А→В)→А)
IV. Единственное используемое правило вывода: В есть непосредственное
следствие А и А→В. Это записывают в виде:
А, А→В
А и А→В – посылки
В
В – заключение
Это правило называют modus ponens (МР) или правило отделения.
Отметим, что выражения АК1, АК2, АК3 представляют собой не
конкретные аксиомы, а схемы аксиом, с помощью которых можно получить
бесчисленное множество аксиом, подставляя в них вместо А, В, С конкретные
формулы. Например, если А есть А1→А2, В есть А3, то из АК1 получим
конкретную аксиому:
А1→А2→(А3→(А1→А2)).
Отметим также и то, что знаки , → в формальной теории выступают
просто как формальные символы, а не как рассматриваемые ранее операции
«отрицания»,
и «импликации». Учитывая сказанное можно с помощью
определений ввести и другие связки:
А&В есть  (А→  В)
А∨ В есть  А→В
А↔ есть (А→В)&(В→А)
Здесь &, ∨ , ↔ также трактуются как абстрактные знаки.
Существуют исчисления высказываний с другим набором логических
связок и другими схемами аксиом.
Интерпретацией
исчисления
высказываний
является
логика
высказываний. Нетрудно проверить, что аксиомы исчисления высказываний
являются тавтологиями логики высказываний. Исчисление высказываний
непротиворечиво, полно и разрешимо.
Теорема. Все теоремы исчисления высказываний – тавтологии.
Доказательство. Докажем сначала, что аксиомы А1 – А3 являются тавтологиями.
Математическая логика и теория алгоритмов
Предположим, что
Полученное противоречие доказывает, что аксиома А1 – тавтология.
Предположим, что
Полученное противоречие доказывает, что аксиома А2 – тавтология.
Предположим, что
Полученное противоречие доказывает, что аксиома А3 – тавтология.
Таким образом, все аксиомы исчисления высказываний представляют собой
тавтологии. Теоремы выводятся по правилу вывода MP, следовательно, по ранее
полученным результатам также являются тавтологиями, что и требовалось
доказать.
Следствие. Исчисление высказываний непротиворечиво.
Доказательство. Предположим противное, то есть в исчислении есть теоремы
и
. По доказанной теореме,
и
являются тавтологиями (тождественно
истинными формулами), следовательно, формула
одновременно является
тождественно истинной и тождественно ложной, что является противоречием.
Математическая логика и теория алгоритмов
Лемма. ├
.
Доказательство. Построим вывод формулы
1.
.
. А1 с подстановкой вместо
2.
–
.
. А1 с подстановкой вместо
–
.
3.
А2 с подстановкой вместо
–
4.
. МР 2,3.
5.
, а вместо
–
.
. МР 1,4.
Что и требовалось доказать.
Теорема дедукции. Пусть
Тогда
,
├
– множество формул,
├
, то если
Доказательство. Пусть
,
├
, …,
1) Проверим, что утверждение
1.
. Методом
,
.
справедливо при
,
– аксиома,
, то есть
├
.
.
– аксиома. Построим вывод:
.
2.
3.
. А1 с подстановкой вместо
–
, вместо
–
.
. МР 1, 2.
Таким образом,
Б) Пусть
├
.
. По лемме, ├
2) Пусть утверждение
для
и
.
├
├
возможны три варианта:
или
├
, – вывод из
математической индукции докажем, что
А) Пусть
– формулы.
.
В частности, если
Для
,
, то есть
Для формулы
├
├
. Таким образом,
верно при
,
├
.
. Докажем утверждение
.
есть следующие возможности:
,
– аксиома,
которые рассматриваются аналогично предыдущему пункту, и новая возможность:
получается из предыдущих формул
,
Последний случай рассмотрим подробно.
, …,
, по правилу Modus ponens.
,
Математическая логика и теория алгоритмов
Среди формул
,
, …,
есть формулы (может быть, и не одна) вида
,
, такие, что имеет место формула
(которая также присутствует в выводе),
поэтому и возможно применение правила Modus ponens.
По предположению индукции,
├
,
├
.
Построим вывод:
1.
.
2.
.
3.
. А2 с подстановкой вместо
вместо
–
–
,
.
4.
. МР 2, 3.
5.
.
Таким образом, доказано, что
индукции,
├
├
, то есть
, следовательно, по методу математической
├
. Теорема доказана.
Справедлива и обратная теорема.
Теорема.
├
,
├
.
Доказательство. Построим вывод:
1.
.
2.
.
3.
4.
. По условию теоремы, эта формула выводима из
.
. МР 2, 3.
Теорема доказана.
На основании теоремы дедукции получена теорема о полноте исчисления
высказываний.
Теорема о полноте. Всякая
высказываний.
тавтология
является
теоремой
исчисления
Следствие. Множество всех теорем исчисления высказываний совпадает с
множеством всех тавтологий.
Теорема дедукции позволяет строить выводы многих формул в исчислении
высказываний.
ПОСТРОЕНИЕ ВЫВОДА В ЛОГИКЕ ВЫСКАЗЫВАНИЙ
Пример. Докажем, что
выводима
Математическая логика и теория алгоритмов
формула
. Сокращенно это записывается так: ├
По теореме, обратной теореме дедукции, посылку можно перенести в левую
часть:
├
.
Проделаем эту операцию еще раз:
,
├
.
Таким образом, нам нужно доказать, что из формул
и
выводима
формула . Составим вывод формулы . В каждой строке вывода записывается
только одна формула. В правой части страницы удобно указывать комментарий,
– что собой эта формула представляет. Возможны варианты:
· гипотеза,
· аксиома (может быть, с какими-то подстановками),
· ранее доказанная теорема,
· формула получена из предыдущих формул по правилу Modus ponens.
Вначале мы запишем гипотезы.
1.
2.
– гипотеза.
– гипотеза.
Формулу
удобно получить из аксиомы А3. Поэтому запишем эту аксиому:
3.
А3.
К формулам 1 и 3 можно применить правило вывода Modus ponens (что мы и
отметим в комментарии). Порядок номеров формул существенен (первой
указывается посылка).
4.
. МР 1, 3.
Посылку в формуле 4 можно получить из аксиомы А1, если заменить
5.
. А1 с подстановкой вместо
–
на
:
.
Далее дважды применяем правило Modus ponens:
6.
7.
. МР 2, 5.
. МР 6, 4.
Вывод построен, и применением теоремы дедукции мы доказали выводимость
первоначальной формулы.
Исчисление
высказываний является
непротиворечивой,
полной,
разрешимой теорией, причем все три утверждения доказуемы в рамках самой
логики высказываний.
Математическая логика и теория алгоритмов
Лекция № 8
Формальная арифметика
Эгалитарные теории. Язык и правила вывода формальной арифметики.
Непротиворечивость формальной арифметики.
ФОРМАЛЬНАЯ АРИФМЕТИКА
Теория, содержащая исчисление предикатов, называется эгалитарной, если
она имеет дополнительный двуместный предикат, означающий равенство, для
которого выполняются две нелогические (специальные) аксиомы:
1.х(х=х)
2. ху (х=у  (А(х) = А(у)). Здесь А произвольная формула.
Формальная арифметика - это эгалитарное прикладное исчисление, в
котором дополнительно имеются:
1. Предметная константа 0.
2. Двуместные операции + и • и одноместная операция S. Они вводят число 0
и операции сложения и умножения с помощью следующих аксиом:
1)
2)
3)
4)
;
;
;
.
3. Знак = и две специальные аксиомы равенства.
4. Аксио́мы Пеа́но — одна из систем аксиом для натуральных чисел.
Аксиомы Пеано позволили формализовать арифметику. После введения
аксиом стали возможны доказательства многих свойств натуральных и целых
чисел, а также использование целых чисел для построения формальных
теорий рациональных и вещественных чисел.
Изначально Пеано постулировал девять аксиом. Первая утверждает
существование по меньшей мере одного элемента множества чисел. Следующие
четыре — общие утверждения о равенстве, отражающие внутреннюю логику
аксиоматики и исключённые из современного состава аксиом, как очевидные.
Следующие три — аксиомы на языке логики первого порядка о выражении
натуральных чисел через фундаментальное свойство функции следования.
Девятая и последняя аксиома на языке логики второго порядка — о принципе
Математическая логика и теория алгоритмов
математической индукции над рядом натуральных чисел. Арифметика Пеано —
система, получаемая заменой аксиомы индукции системой аксиом на языке
логики первого порядка и добавлением символов операций сложения и
умножения.
Словесная формулировка аксиом Пеано
1.
2.
3.
4.
1 является натуральным числом;
Число, следующее за натуральным, тоже является натуральным;
1 не следует ни за каким натуральным числом;
Если натуральное число непосредственно следует как за числом , так и
за числом , то и тождественны;
5. (Аксиома индукции.) Если какое-либо предложение доказано для 1 (база
индукции) и если из допущения, что оно верно для натурального числа ,
вытекает, что оно верно для следующего за натурального числа
(индукционное предположение), то это предложение верно для всех
натуральных чисел.
Математическая формулировка аксиом
Введём функцию
1.
, которая сопоставляет числу
следующее за ним число.
;
2.
;
3.
;
4.
;
5.
:
Если некоторое высказывание
любого
верно для
при допущении, что из верности
(индукционное предположение), то
(база индукции) и для
следует верность и
верно для любых натуральных
.
Формальное определение натуральных чисел в 1889 году сформулировал
итальянский
математик Пеано,
основываясь
на
более
ранних
построениях Грассмана. В 1888 году (за год до Пеано) практически в точности
подобную аксиоматическую систему опубликовал Дедекинд.
НЕПРОТИВОРЕЧИВОСТЬ АРИФМЕТИКИ. ТЕОРЕМА ГЕНЦЕНА
Непротиворечивость формальной арифметики Пеано доказана в 1936
году Генценом с помощью трансфинитной индукции до ординала
Как следует
из второй теоремы Гёделя о неполноте, это доказательство не может быть
проведено средствами самой арифметики Пеано.
Метод математической индукции, который входит в качестве аксиомы в
формальную арифметику, может быть усилен за счет расширения области его
применения до так называемых трансфинитных чисел, которые, как видно из их
названия, «идут следом» за финитными, т.е. натуральными числами. Получается
более
мощный
способ
доказательства
теорем,
названный
методом
трансфинитной индукции.
Математическая логика и теория алгоритмов
Теорема (Генцен, 1936). Непротиворечивость формальной арифметики
доказывается в более широкой формальной теории, содержащей арифметику и
принцип трансфинитной индукции.
О НЕПОЛНОТЕ ФОРМАЛЬНОЙ АРИФМЕТИКИ
Теорема Гёделя о неполноте́. Во всякой теории первого порядка,
включающей формальную арифметику,
1) существует такая (истинная) формула Л, что ни А, ни -А не являются
доказуемыми;
2) утверждение о непротиворечивости этой теории - это формула данной
теории, которая не является доказуемой.
Теорема Гёделя говорит о том, что в любой достаточно богатой теории
существуют высказывания, которые воспринимаются как истинные, разумные, но
тем не менее они не могут быть обоснованы, доказаны теми средствами, которые
теория предоставляет исследователю. А.Н.Колмогоров: «Математикам хорошо
известно, что в пределах каждой формальной системы, достаточно богатой
математически,
можно
сформулировать
вопросы,
которые
кажутся
содержательными,
осмысленными
и
должны
предполагать
наличие
определенного ответа, хотя в пределах данной системы такого ответа найти
нельзя». По существу, теорема утверждает, что в любом мире есть вещи, познание
которых требует выхода в более обширный, высший мир. Над каждой теорией
нужно надстраивать более изощренную метатеорию, над метатеорией метаметатеорию и т.д. Собственно говоря, так вышло с доказательством
непротиворечивости формальной арифметики.
Кроме того, теорема Гёделя говорит о несостоятельности идеи полной
формализации процесса логического вывода. Иначе говоря, не все может быть
формализовано, как бы этого ни хотелось математикам.
Теоре́ма Гёделя о неполноте́ и втора́я теоре́ма Гёделя — две
теоремы математической логики о принципиальных ограничениях формальной
арифметики и, как следствие, всякой формальной системы, в которой можно
определить
основные
арифметические
понятия:
натуральные
числа, 0, 1, сложение и умножение.
Первая теорема утверждает, что если формальная арифметика
непротиворечива, то в ней существует невыводимая и неопровержимая формула.
Вторая теорема утверждает, что если формальная арифметика
непротиворечива, то в ней невыводима некоторая формула, содержательно
утверждающая непротиворечивость этой арифметики.
Эти теоремы были доказаны Куртом Гёделем в 1930 году (опубликованы в
1931) и имеют непосредственное отношение ко второй проблеме из
знаменитого списка Гильберта. Как следует из теоремы Гёделя о неполноте,
существуют утверждения о натуральных числах, которые нельзя ни доказать, ни
опровергнуть, исходя из аксиом Пеано.
Математическая логика и теория алгоритмов
Лекция № 9
Логическое программирование
Логическое программирование. Язык ПРОЛОГ.
Логическое программирование. Язык ПРОЛОГ.
Развитие вычислительной техники стало мощным стимулом для поиска
алгоритмов и соответствующих им машинных программ, позволяющих
автоматически доказывать теоремы формального исчисления посредством
нахождения соответствующего ((логического) вывода.
Доказанная теорема - это новая открытая истина. Автоматический поиск
выводов, таким образом, является открытием истин, которое доверено ЭВМ.
Машина, «доказывая теорему» Л, ищет конечную последовательность формул,
последняя из которых - это формула Л, удовлетворяющую определению
(формального) доказательства.
Одной из первых работ по созданию алгоритма автоматического вывода
была статья Ван Хао. В СССР автоматический вывод в рамках исчисления
высказываний в 1960-е годы осуществлялся на машине «Урал-4» группой
Н.А.Шанина. Наиболее крупными достижениями по созданию методов
автоматического доказательства теорем являются «обратный метод» С.Ю.Маслова
и «метод резолюций» Дж.Робинсона
Как решается задача с помощью ЭВМ? Математик разрабатывает алгоритм
решения задачи, а программист, используя один из языков программирования,
например PASCAL, реализует предложенный алгоритм в виде программы.
Возможен иной подход. Он основывается на следующих трех моментах:
• На способности ЭВМ доказывать теоремы.
• На понимании, что вычисление — это частный случай логического
вывода.
• На осознании того, что алгоритм - формальное задание функции.
Иначе говоря, задачу, решение которой ищется, надо представить в виде
высказывания, доказательство которого следует предоставить ЭВМ.
Таким образом, компьютеру предлагается не алгоритм, а описание
предметной области задачи и сама задача в виде формул формального
исчисления. Решение задачи является в таком случае выводом в данном
исчислении. Какова при этом роль программиста? От программиста при таком
подходе требуется описать с достаточной степенью полноты предметную область
и формулировку задачи на языке этого исчисления, а поиск вывода, приводящего
к решению задачи, поручается компьютеру.
Логическая программа представляет собой конечный набор формул
логики предикатов одного из следующих видов:
Математическая логика и теория алгоритмов
P(t1,...,tn)
Q(s1, ..., sk) : — Q1(s1, ..., sk)… Qm (s1, ..., sk)
где P,Q,Q1, ...,Qm - предикаты, a t1, ...tn, s1,..., sk - термы. Формулы первого
вида называются фактами, а второго - правилами. (В конце каждого выражения
ставится точка). Факт — один-единственный экземпляр, свойство или отношение
между объектами.
Правило Q(s1, ..., sk) : — Q1(s1, ..., sk)… Qm (s1, ..., sk) читается как «Q(s1, ..., sk)
истинно, если истинны Q1(s1, ..., sk)… Qm (s1, ..., sk). Формула Q(s1, ..., sk) называется
заголовком этого правила. Правило позволяет выводить новые факты из уже
имеющихся.
Таким образом, логическая программа состоит из конечного числа фактов и
правил. В фактах и правилах описывается логическая модель предметной
области, отношения предметов и правила получения новых свойств. Логическая
программа задает множество следствий, которые являются результатом
программы. Выполнение логической программы - это вывод следствия из нее.
Для выполнения программы требуется обратиться с целевым запросом
(целью), который представляет собой последовательность формул вида R1
(u1,...,um),..., Rp (u1,...,um), где Rj(u1,...,um) - атомарные формулы логики первого
порядка, буквы ui - термы.
Выполнение программы состоит в попытке решить задачу, т.е. доказать
целевое утверждение, используя факты и предположения, заданные в логической
программе.
Описанные конструкции логического программирования семантически
интерпретируются в логике предикатов. Процедура интерпретации состоит в
сопоставлении формулам логической программы формул логики предикатов.
Для реализации идей логического программирования разработаны
различные языки логического программирования. Первым и наиболее известным
является язык PROLOG.
В TURBO PROLOG структура логической программы имеет следующий
вид:
domains < структуры и типы данных>
global domains <внешние структуры и типы данных>
data base <глобальные предикаты динамической базы данных>
predicates <определение предикатов>
Математическая логика и теория алгоритмов
global predicates < внешние предикаты >
goal <цели>
clauses <факты и правила>
Пример Логическая программа для выяснения родственных связей:
domains
name=symbol
predicates
parent (name,name)
father(name,name)
mother(name,name)
grandfather(name,name)
grandmather(name,name)
clauses
mother (оля, петя).
father (олег, петя).
fathe (олег, лена).
mother (лиза, кирилл).
parent (X,Y):- mother(X,Y) ,father(X,Y).
grandfather(X,Y):- father(X,Z),parent(Z,Y).
grandmather(X,Y):- mother(X,Z),parent(Z,Y).
1. Гуц, А.К. Математическая логика и теория алгоритмов: учебное пособие. - Омск:
Издательство Наследие. Диалог-Сибирь, 2003. - 108 с.
Математическая логика и теория алгоритмов
Лекции № 10
Неклассические логики
Неклассические логики. Интуиционистская логика.
логика.
Многозначная
НЕКЛАССИЧЕСКИЕ ЛОГИКИ.
ИНТУИЦИОНИСТСКАЯ ЛОГИКА
Источник математики, как считал основоположник интуиционистской
логики Брауэр, – фундаментальная математическая интуиция. Не все обычные
логические принципы приемлемы для нее.
Так, в частности, обстоит дело с законом исключенного третьего,
говорящим, что либо само утверждение, либо его отрицание истинно. Этот закон
исторически возник в рассуждениях о конечных множествах объектов. Но затем
он был необоснованно распространен также на бесконечные множества.
Когда множество является конечным, мы можем решить, все ли входящие в
него объекты обладают некоторым свойством, проверив один за другим все эти
объекты. Но для бесконечных множеств такая проверка невозможна.
Допустим, что мы, рассматривая конечный набор чисел, доказали, что не
все они четны. Отсюда по закону исключенного третьего следует, что по крайней
мере одно из них нечетно. При этом утверждение о существовании такого числа
можно подтвердить, предъявив это число.
Но если бы рассматриваемое множество чисел было бесконечным,
заключение о существовании среди них хотя бы одного нечетного числа
оказалось бы непроверяемым. Тем самым осталось бы неясным, что означает в
этом случае само слово «существование».
Выдвигая на первый план математическую интуицию, интуиционисты не
придавали большого значения систематизации логических правил.
Только в 1930 г. ученик Брауэра А. Рейтинг опубликовал работу с
изложением особой интуиционистской логики. В этой логике не действует закон
исключенного третьего, несомненный для классической логики. Отбрасывается
также ряд других законов, позволяющих доказывать существование объектов,
которые нельзя построить или вычислить. В число отвергаемых попадают, в
частности, закон снятия двойного отрицания («Если неверно, что не-А, то А») и
закон приведения к абсурду, дающий право утверждать, что математический
Математическая логика и теория алгоритмов
объект существует, если предположение о его несуществовании приводит к
противоречию.
В дальнейшем идеи, касающиеся ограниченной приложимости закона
исключенного третьего и близких ему способов математического доказательства,
были развиты российскими математиками А.Н. Колмогоровым, В.А. Гливенко,
А.А. Марковым и другими.
В результате переосмысления основных предпосылок интуиционистской
логики возникла конструктивная логика, также считающая неправомерным
перенос ряда логических принципов, применимых в рассуждениях о конечных
множествах, на область бесконечных множеств.
НЕКЛАССИЧЕСКИЕ ЛОГИКИ.
МНОГОЗНАЧНАЯ ЛОГИКА
Классическая логика основывается на принципе, согласно которому каждое
высказывание является либо истинным, либо ложным. Это так называемый
принцип двузначности. Саму такую логику именуют двузначной. Ей
противопоставляют многозначные системы. В последних наряду с истинными и
ложными утверждениями допускаются также разного рода «неопределенные»
утверждения, учет которых сразу же не только усложняет, но и меняет всю
картину.
Два враждебных флота расположились друг против друга и выжидают утра
и вместе с ним подходящего ветра. Будет ли завтра морская битва? Очевидно, что
она или состоится, или же не состоится.
Но по мысли Аристотеля, ни одно из этих двух предсказаний не является
сегодня ни истинным, ни ложным. Аристотелю казалось, что высказывания о
будущих случайных событиях, наступление которых зависит от воли человека, не
являются ни истинными, ни ложными. Они не подчиняются принципу
двузначности.
Прошлое и настоящее однозначно определены и не подвержены
изменению. Будущее же в определенной мере свободно для изменения и выбора.
только в современной логике оказалось возможным реализовать сомнения в
универсальности принципа двузначности в форме логических систем.
Этому способствовало широкое использование ею методов,
препятствующих формальному подходу к логическим проблемам.
не
Первые многозначные логики построили независимо друг от друга польский
логик Я. Лукасевич в 1920 г. и американский логик Э. Пост в 1921 г.
Математическая логика и теория алгоритмов
С тех пор построены и исследованы десятки и сотни таких «логик».
Я. Лукасевичем была предложена трехзначная логика, основанная на
предположении, что высказывания бывают истинными, ложными и возможными,
или неопределенными.
К последним были отнесены высказывания наподобие: «Я буду в Москве в
декабре будущего года». Событие, описываемое этим высказыванием, сейчас
никак не предопределено ни позитивно, ни негативно. Значит, высказывание не
является ни истинным, ни ложным, оно только возможно.
Все законы трехзначной логики Лукасевича оказались также законами и
классической логики; обратное, однако, не имело места.
Ряд классических законов отсутствовал в трехзначной логике. Среди них
были закон противоречия, закон исключенного третьего, законы косвенного
доказательства и др.
То, что закона противоречия не оказалось в трехзначной логике, не
означало, конечно, что она была в каком-то смысле противоречива или
некорректно построена.
Э. Пост подходил к построению многозначных логик чисто формально.
Пусть 1 означает истину, а 0 – ложь. Естественно допустить тогда, что числа
между единицей и нулем обозначают какие-то уменьшающиеся к нулю степени
истины.
Такой подход вполне правомерен на первом этапе. Но чтобы построение
логической системы перестало быть чисто техническим упражнением, а сама
система – сугубо формальной конструкцией, в дальнейшем необходимо, конечно,
придать ее символам определенный логический смысл, содержательно ясную
интерпретацию.
Вопрос о такой интерпретации – это как раз самая сложная и спорная
проблема многозначной логики. Как только между истиной и ложью допускается
что-то промежуточное, встает вопрос: что, собственно, означают высказывания, не
относящиеся ни к истинным, ни к ложным?
Кроме того, введение промежуточных степеней истины изменяет обычный
смысл самих понятий истины и лжи. Приходится поэтому не только придавать
смысл промежуточным степеням, но и переистолковывать сами понятия истины и
лжи.
Было много попыток содержательно обосновать многозначные логические
системы. Однако до сих пор остается спорным, являются ли такие системы просто
«интеллектуальным упражнением» или они все же говорят что-то о принципах
нашего мышления.
Математическая логика и теория алгоритмов
Многозначная логика никоим образом не отрицает и не дискредитирует
двузначную. Напротив, первая позволяет более ясно понять идеи, лежащие в
основе второй, и является в определенном смысле ее обобщением.
НЕКЛАССИЧЕСКИЕ ЛОГИКИ.
МОДАЛЬНАЯ ЛОГИКА
Модальная логика (от латинского
существования, способ понимания).
слова
“модус”
-
мера, способ
Для классической логики вещь существует или не существует, и нет
никаких других вариантов. Но как в обычной жизни, так и в науке постоянно
приходится говорить не только о том, что есть в действительности и чего нет, но и
о том, что должно быть или не должно быть и т.д. Действительный ход событий
можно рассматривать как реализацию одной из многих мыслимых возможностей,
а действительный мир, в котором мы находимся, – как один из бесчисленного
множества возможных миров.
Стремление обогатить язык логики и расширить ее выразительные
возможности привело к возникновению модальной логики.
Ее задача – анализ рассуждений, в которых встречаются модальные понятия
«необходимо», «возможно», «случайно», «знает», «полагает», «было», «будет»,
«обязательно», «разрешено» и т.д.
Модальные понятия
Интересную группу составляют понятия «полагает», «сомневается» и т.п.
Раздел модальной логики, исследующей эти и подобные им понятия, получил
название эпистемической логики.
В числе самых простых законов этой логики такие положения:
«Невозможно полагать что-то и вместе с тем сомневаться в этом», «Если субъект
убежден в чем-то, неверно, что он убежден также в противоположном» и т.п.
Временные модальные понятия «было», «будет», «раньше», «позже»,
«одновременно» и т.п. изучаются логикой времени.
Среди элементарных ее законов содержатся утверждения: «Неверно, что
произойдет логически невозможное событие», «Если было, что всегда будет нечто,
то оно всегда будет», «Ни одно событие не происходит раньше самого себя» и т.п.
В модальной логике истинные значения суждений могут быть
представлены трехзначно (истина, возможно, ложь или необходимо, возможно,
невозможно) и четырехзначно (истина, случайная истина, случайная ложь,
Математическая логика и теория алгоритмов
сознательная ложь или необходимо истинно, случайно истинно, вероятно
ложно, ложно).
Специфическим разделом модальной логики является деонтическая
логика (от греческого “деонтос” - нужное, должное).
Она решает задачи в терминах, отличных от истины и лжи, исследует
структуры предписывающего языка, то есть языка нормативного действия.
Деонтическая логика подразделяется на логику оценок и логику норм.
Все оценки делятся на абсолютные (хорошо, плохо, безразлично) и
сравнительные (лучше, хуже, равноценно).
В формулировках норм используются понятия: обязательно, разрешено,
запрещено. Логика оценок опирается на ряд законов:
1. Ничто не может быть хорошим и плохим одновременно, с одной и то же
точки зрения.
2. Невозможно сразу быть хорошим, плохим и безразличным.
3. Логические следствия хорошего позитивно ценны.
4. Что-то является хорошим в том и только в том случае, когда
противоположное плохо.
5. Ничто не может быть лучше или хуже самого себя.
6. Одно лучше другого только в том случае, когда другое хуже первого.
7. Равноценны каждые два объекта, которые не лучше и не хуже друг
друга.
Деонтическая
логика
признает
истинность
и
допустимость
противоположных оценок, если они относятся к разным предметам, состояниям,
положениям дел. Например, неискренность у постели смертельно больного
человека - хороша, а неискренность с его лечащим врачом - плоха и т.д.
Нормативная логика изучает логику команд, просьб, рекомендаций,
исследует структуры, выражающие нормы и нормативные действия. Нормы
включают в себя правила (этики, спора, общежития и т.д.), предписания (законы,
указы, приказы и т.д.), технические нормы ( инструкции, регламенты, нормативы
и т.д.)
К
основным
законам
логики
норм
относятся:
1. Никакое действие не может быть одновременно и обязательным и
запрещенным.
Математическая логика и теория алгоритмов
2. Логические следствия обязательного - обязательны.
3. Если действие ведет к запрещенному следствию, то само действие
запрещено и другие. Если проведение работ невозможно без нарушения техники
безопасности, то такие работы являются запрещенными.
В логике норм понятия (обязательно, разрешено, запрещено) являются
взаимно определяемыми. Разрешено действие, от выполнения которого не
обязательно воздерживаться . Запрещено то, от выполнения чего следует
воздержаться. Не разрешенное - запрещено и т.п. Безразличное действие
определяется как не являющееся ни обязательным, ни запрещенным или, что то
же, как действие, которое разрешено выполнять и разрешено не выполнять.
НЕКЛАССИЧЕСКИЕ ЛОГИКИ.
НЕЧЕТКАЯ ЛОГИКА
В предложенном Лотфи Заде варианте нечеткой логики множество
истинностных значений высказываний обобщается до интервала действительных
значений [0, 1], что позволяет высказыванию принимать любое значение
истинности из этого интервала. Это численное значение является количественной
оценкой степени истинности высказывания, относительно которого нельзя с
полной уверенностью заключить о его истинности или ложности.
Использование в качестве множества истинностных значений интервала [0,
1] позволяет построить логическую систему, в рамках которой оказалось
возможным выполнять рассуждения с неопределенностью и оценивать
истинность высказываний типа: "Скорость автомобиля до- вольно высокая",
"Давление в системе весьма значительное", "Высота полета самолета предельно
низкая" и др. Исходным понятием нечеткой логики является понятие
элементарного нечеткого высказывания.
В общем случае элементарным нечетким высказыванием называется
повествовательное предложение, выражающее законченную мысль, относительно
которой мы можем судить об ее истинности или ложности только с некоторой
степенью уверенности.
Элементарные нечеткие высказывания для удобства будем обозначать теми
же буквами, что и нечеткие множества: (возможно, с индексами). Сами
элементарные нечеткие 2 высказывания иногда называют просто нечеткими
высказываниями. Главным отличием элементарного нечеткого высказывания от
элементарного высказывания математической логики является следующий факт.
Множество
значений
истинности
элементарных
высказываний
классической математической логики состоит из двух элемен- тов: {"истина",
"ложь"} ({И, Л} или {0, 1}), при этом значению "истина" соответствует цифра 1 или
Математическая логика и теория алгоритмов
буква И, а значению "ложь" — цифра 0 или буква Л. В нечеткой логике сте- пень
истинности элементарного нечеткого высказывания принимает значение из
замкнутого интервала [0, 1], причем 0 и 1 являются предельными значениями
степени истинности и сов- падают со значениями "ложь" и "истина"
соответственно.
Пример. Ниже приводится несколько примеров элементарных нечетких
высказываний:
1. О. Бендер имеет довольно высокий рост.
2. Завтра будет пасмурная погода.
3. 3 — малое число.
4. ВАЗ 2110 является скоростным автомобилем.
5. Возможно, нам подадут горячий кофе.
Содержательно неопределенность нечетких высказываний может иметь
различную природу.
Так, например, неопределенность оценки истинности в высказывании (1)
связана с нечеткостью определения понятия "высокий рост", которое является
нечеткой переменной. Аналогичный характер неопределенности имеют нечеткие
высказывания (3) и (4), связанные с определением нечетких переменных "малое
число" и "скоростной автомобиль" соответственно.
Что касается высказываний (2) и (5), то здесь кроме определения нечетких
переменных "пасмурная погода" и "горячий кофе" следует оценить их истинность
относительного некоторого момента времени в будущем. Общим для всех этих
высказываний является то обстоятельство, что относительно их истинности мы
можем судить лишь с некоторой степенью, количественно оцениваемой
действительным числом из интервала [0; 1].
Для оценки степени истинности произвольного нечеткого высказывания
удобно ввести в рассмотрение специальное отображение Т, которое действует из
множества рассматриваемых нечетких высказываний в интервал [0; 1].
Это отображение будем называть отображением истинности нечетких
высказываний. В этом случае значение истинности некоторого нечеткого
высказывания будем обозначать через T.
Так, если обозначить нечеткое высказывание (1) из примера через А, то его
истинность формально может быть записана как Т(А), а количественно равна,
например, 0.7, т.е. Т(А) = 0,7.
Математическая логика и теория алгоритмов
Нечеткий предикат P() (k-местный нечеткий предикат) формально
определяется как некоторое отображение из декартова произведения
универсумов Х1, Х2,..., Хk в некоторое вполне упорядоченное множество значений
истинности, в частности, в интервал [0; 1], т. е. Р: Х1×Х2×...×Хk→[0, 1].
Математическая логика и теория алгоритмов
Лекции № 11, 12.
Тема 4. Теория алгоритмов
Введение в теорию алгоритмов. Понятие алгоритма и вычислимой
функции. Рекурсивные функции. Примитивно-рекурсивные функции.
Частично-рекурсивные функции. Тезис Чёрча.
Формализация понятия алгоритма. Машина Тьюринга. Вычисление
функций на машине Тьюринга. Тезис Тьюринга. Универсальная машина
Тьюринга.
ВВЕДЕНИЕ В ТЕОРИЮ АЛГОРИТМОВ
Теория алгоритмов - это наука, изучающая общие свойства и
закономерности
алгоритмов,
разнообразные
формальные
модели
их
представления. На основе формализации понятия алгоритма возможно
сравнение алгоритмов по их эффективности, проверка их эквивалентности,
определение областей применимости.
Разработанные в 1930-х годах разнообразные формальные модели
алгоритмов (Пост, Тьюринг, Черч), равно как и предложенные в 1950-х годах
модели Колмогорова и Маркова, оказались эквивалентными в том смысле, что
любой класс проблем, разрешимых в одной модели, разрешимы и в другой.
В настоящее время полученные на основе теории алгоритмов практические
рекомендации получают всё большее распространение в области проектирования
и разработки программных систем.
В связи с этим в государственный стандарт РФ введена специальная
дисциплина “Математическая логика и теория алгоритмов”.
Описание государственного стандарта регламентирует включение в состав
дисциплины ряда понятий и методов теории алгоритмов, которые и отражены в
настоящем учебном пособии.
Мы рассмотрим основы таких разделов теории алгоритмов как:
классическая теория алгоритмов (машина Поста, машина Тьюринга,
алгоритмически неразрешимые проблемы), асимптотический анализ сложности
алгоритмов, сложностные классы задач P, NP, NPC, включая проблему P = NP и
практический сравнительный анализ алгоритмов.
Начальной точкой отсчета современной теории алгоритмов можно считать
работу немецкого математика Курта Гёделя (1931 год - теорема о неполноте
символических логик), в которой было показано, что некоторые математические
проблемы не могут быть решены алгоритмами из некоторого класса. Общность
результата Геделя связана с тем, совпадает ли использованный им класс
Математическая логика и теория алгоритмов
алгоритмов с классом всех (в интуитивном смысле) алгоритмов. Эта работа дала
толчок к поиску и анализу различных формализаций алгоритма.
Первые фундаментальные работы по теории алгоритмов были
опубликованы независимо в 1936 году годы Аланом Тьюрингом, Алоизом Черчем
и Эмилем Постом. Предложенные ими машина Тьюринга, машина Поста и
лямбда-исчисление Черча были эквивалентными формализмами алгоритма.
Сформулированные ими тезисы (Поста и Черча-Тьюринга) постулировали
эквивалентность предложенных ими формальных систем и интуитивного
понятия алгоритма. Важным развитием этих работ стала формулировка и
доказательство алгоритмически неразрешимых проблем.
В 1950-е годы существенный вклад в теорию алгоритмов внесли работы
Колмогорова и Маркова.
К 1960-70-ым годам оформились следующие направления в теории
алгоритмов:
 Классическая теория алгоритмов (формулировка задач в терминах
формальных языков, понятие задачи разрешения, введение сложностных классов,
формулировка в 1965 году Эдмондсом проблемы P=NP, открытие класса NPполных задач и его исследование);
 Теория асимптотического анализа алгоритмов (понятие сложности и
трудоёмкости алгоритма, критерии оценки алгоритмов, методы получения
асимптотических оценок, в частности для рекурсивных алгоритмов,
асимптотический анализ трудоемкости или времени выполнения), в развитие
которой внесли существенный вклад Кнут, Ахо, Хопкрофт, Ульман, Карп;
 Теория практического анализа вычислительных алгоритмов
(получение явных функции трудоёмкости, интервальный анализ функций,
практические критерии качества алгоритмов, методика выбора рациональных
алгоритмов), основополагающей работой в этом направлении, очевидно, следует
считать фундаментальный труд Д. Кнута «Искусство программирования для
ЭВМ».
ЦЕЛИ И ЗАДАЧИ ТЕОРИИ АЛГОРИТМОВ
Обобщая результаты различных разделов теории алгоритмов можно
выделить следующие цели и соотнесенные с ними задачи, решаемые в теории
алгоритмов:
формализация понятия «алгоритм» и исследование формальных
алгоритмических систем;
формальное доказательство алгоритмической неразрешимости ряда задач;
классификация задач, определение и исследование сложностных классов;
асимптотический анализ сложности алгоритмов;
исследование и анализ рекурсивных алгоритмов;
получение явных функций трудоемкости в целях сравнительного анализа
алгоритмов;
разработка критериев сравнительной оценки качества алгоритмов.
Математическая логика и теория алгоритмов
ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ РЕЗУЛЬТАТОВ ТЕОРИИ
АЛГОРИТМОВ
Полученные в теории алгоритмов теоретические результаты находят
достаточно широкое практическое применение, при этом можно выделить
следующие два аспекта:
Теоретический аспект: при исследовании некоторой задачи результаты
теории алгоритмов позволяют ответить на вопрос – является ли эта задача в
принципе алгоритмически разрешимой – для алгоритмически неразрешимых
задач возможно их сведение к задаче останова машины Тьюринга. В случае
алгоритмической разрешимости задачи – следующий важный теоретический
вопрос – это вопрос о принадлежности этой задачи к классу NP–полных задач,
при утвердительном ответе на который, можно говорить о существенных
временных затратах для получения точного решения для больших размерностей
исходных данных.
Практический аспект: методы и методики теории алгоритмов (в основном
разделов асимптотического и практического анализа) позволяют осуществить:
 рациональный выбор из известного множества алгоритмов решения
данной задачи с учетом особенностей их применения (например, при
ограничениях на размерность исходных данных или объема дополнительной
памяти);
 получение временных оценок решения сложных задач;
 получение достоверных оценок невозможности решения некоторой
задачи за определенное время, что важно для криптографических методов;
 разработку и совершенствование эффективных алгоритмов решения
задач в области обработки информации на основе практического анализа.
ФОРМАЛИЗАЦИЯ ПОНЯТИЯ АЛГОРИТМА
Во всех сферах своей деятельности, и частности в сфере обработки
информации, человек сталкивается с различными способами или методиками
решения задач. Они определяют порядок выполнения действий для получения
желаемого результата – мы можем трактовать это как первоначальное или
интуитивное определение алгоритма. Некоторые дополнительные требования
приводят к неформальному определению алгоритма:
Алгоритм - это заданное на некотором языке конечное предписание,
задающее конечную последовательность выполнимых элементарных операций
для решения задачи, общее для класса возможных исходных данных.
Пусть D – область (множество) исходных данных задачи, а R – множество
возможных результатов, тогда мы можем говорить, что алгоритм осуществляет
отображение D → R. Поскольку такое отображение может быть не полным, то
вводятся следующие понятия:
Алгоритм называется частичным алгоритмом, если мы получаем результат
только для некоторых d є D и полным алгоритмом, если алгоритм получает
правильный результат для всех d є D.
Математическая логика и теория алгоритмов
Несмотря на усилия исследователей отсутствует одно исчерпывающе
строгое определение понятия алгоритм, в теории алгоритмов были введены
различные формальные определения алгоритма и удивительным научным
результатом является доказательство эквивалентности этих формальных
определений в смысле их равномощности.
Варианты словесного определения алгоритма принадлежат российским
ученым А.Н. Колмогорову и А.А. Маркову:
Определение (А.Н. Колмогоров): Алгоритм – это всякая система
вычислений, выполняемых по строго определенным правилам, которая после
какого-либо числа шагов заведомо приводит к решению поставленной задачи.
Определение (А.А. Марков): Алгоритм – это точное предписание,
определяющее вычислительный процесс, идущий от варьируемых исходных
данных к искомому результату.
Отметим, что различные определения алгоритма, в явной или неявной
форме, постулируют следующий ряд требований:
1.
алгоритм должен содержать конечное количество элементарно
выполнимых предписаний, т.е. удовлетворять требованию конечности записи;
2.
алгоритм должен выполнять конечное количество шагов при
решении задачи, т.е. удовлетворять требованию конечности действий;
3.
алгоритм должен быть единым для всех допустимых исходных
данных, т.е. удовлетворять требованию универсальности;
4.
алгоритм должен приводить к правильному по отношению к
поставленной задаче решению, т.е. удовлетворять требованию правильности.
Другие формальные определения понятия алгоритма связаны с введением
специальных математических конструкций (машина Поста, машина Тьюринга,
рекурсивно-вычислимые функции Черча) и постулированием тезиса об
эквивалентности такого формализма и понятия «алгоритм».
РЕКУРСИВНЫЕ ФУНКЦИИ
Вычислимые функции – одно из основных понятий теории алгоритмов.
Функция f(х) называется вычислимой, если существует алгоритм, для
любого х из области определения функции находящий f(х), и при этом не
приводящий к результату для всех тех х, на которых f(х) не определена.
Для всякой ли функции существует вычисляющий ее алгоритм?
Если нет, то для каких функций существует вычисляющий их алгоритм
(машина Тьюринга), как описать такие, как говорят, алгоритмически (машинно)
вычислимые функции?
Исследование этих вопросов привело к созданию в 1930-х гг. теории
рекурсивных функций.
Математическая логика и теория алгоритмов
При этом класс вычислимых функций (названных здесь рекурсивными)
получил такое описание, которое весьма напомнило процесс построения
аксиоматической теории на базе некоторой системы аксиом.
Сначала
были
выбраны
простейшие
функции,
эффективная
вычисляемость которых была очевидна (своего рода "аксиомы").
Затем сформулированы некоторые правила (названные операторами), на
основе которых можно строить новые функции из уже имеющихся (своего рода
"правила вывода").
Тогда требуемым классом функций будет совокупность всех функций,
получающихся из простейших с помощью выбранных операторов.
Наша цель будет состоять в том, чтобы доказать, что этот класс функций
совпадет с классом функций, вычислимых с помощью машин Тьюринга.
Идея доказательства этого утверждения в одну сторону проста: сначала
доказать вычислимость по Тьюрингу простейших функций, а затем
вычислимость по Тьюрингу функций, получающихся из вычислимых по
Тьюрингу функций с помощью выбранных операторов.
Основные понятия теории рекурсивных функций и тезис Чёрча
Приступим к построению класса рекурсивных функций в соответствии с
изложенными принципами.
Напомним, что рассматриваются функции, заданные на множестве
натуральных чисел и принимающие натуральные значения.
Функции предполагается брать частичные, т. е. определенные, вообще
говоря, не для всех значений аргументов. В качестве исходных простейших
функций выберем следующие:
(функция следования);
(нуль-функция);
(функции-проекторы,
).
Они вычислимы с помощью машины Тьюринга.
Далее, в качестве операторов, с помощью которых будут строиться новые
функции, выберем следующие три: операторы суперпозиции, примитивной
рекурсии и минимизации.
ОПРЕДЕЛЕНИЕ 1 (оператор суперпозиции). Будем говорить, что nместная функция получена из m-местной функции и n-местных
функций
с
помощью
оператора
суперпозиции,
если
для
всех
, справедливо равенство:
Понятие суперпозиции функций (сложной функции) хорошо известно, но нас
сейчас этот оператор интересует с точки зрения его взаимоотношений с
процессом вычислимости функций с помощью машин Тьюринга.
Теорема
Математическая логика и теория алгоритмов
Если
функции
правильно вычислимы по Тьюрингу, то правильно вычислима и сложная
функция (суперпозиция функций):
ОПРЕДЕЛЕНИЕ 2. Говорят, что (n+1)-местная функция получена из
n-местной функции и (n +2)-местной функции с помощью оператора
примитивной рекурсии, если для любых
справедливы равенства:
 (х1…хn, 0) = f (x1…xn)
 (х1…хn, y + 1) = g (x1…xn, y,  (х1…хn, y))
Пара этих равенств называется схемой примитивной рекурсии.
Здесь важно отметить то, что, независимо от числа аргументов в , рекурсия
ведется только по одной переменной ; остальные переменных
, на
момент применения схемы примитивной рекурсии зафиксированы и играют
роль параметров. Кроме того, схема примитивной рекурсии выражает каждое
значение определяемой функции не только через данные функции и , но и
через так называемые предыдущие значения определяемой функции
прежде
чем получить значение
указанной схеме — для
, придется проделать
вычисление по
.
Определение 3. Функция называется примитивно рекурсивной, если
она может быть получена из простейших функций
с помощью
конечного числа применений операторов суперпозиции и примитивной
рекурсии.
Теорема. Функция,
полученная
суперпозицией
примитивно
рекурсивных функций, сама примитивно рекурсивна.
Теорема. Функция , полученная примитивной рекурсией из правильно
вычислимых на машине Тьюринга функций и , сама правильно вычислима
на машине Тьюринга.
Следствие. Всякая примитивно рекурсивная функция вычислима по
Тьюрингу.
После того как в предыдущем пункте было доказано, что всякая
примитивно рекурсивная функция вычислима (по Тьюрингу), возникает
обратный вопрос: исчерпывается ли класс вычислимых (по Тьюрингу) функций
примитивно рекурсивными функциями, т.е. всякая ли вычислимая (по Тьюрингу)
функция будет непременно примитивно рекурсивной?
Математическая логика и теория алгоритмов
Теорема. Существуют
рекурсивными.
функции,
не
являющиеся
примитивно
Наконец, введем заключительный, третий, оператор.
Определение 4. (оператор минимизации). Будем говорить, что nместная функция получается из (n+1)-местных функций
и
с помощью
оператора минимизации, или оператора наименьшего числа, если для
любых
равенство
выполнено
тогда
и
только
тогда,
когда
значения
определены и попарно неравны:
а
.
Коротко говоря, величина
равна наименьшему значению
аргумента , при котором выполняется последнее равенство. Используется
следующее обозначение:
В
частном
случае
может
быть
.
Тогда
.
Оператор
минимизации
называется также µ-оператором. Этот оператор предназначен для порождения
следующего важного класса рекурсивных функций.
Теорема. Если
функция
Тьюринга, то и функция
правильно
вычислима
на
машине
. получающаяся с помощью
оператора минимизации из функции
, также правильно вычислима на
машине Тьюринга.
Определение 5. Функция называется частично рекурсивной, если она
может быть получена из простейших функций
с помощью конечного
числа применений суперпозиции, примитивной рекурсии и µ -оператора.
Определение 6. Если функция всюду определена и частично
рекурсивна, то она называется общерекурсивной. (Отметим, что не всегда
частично рекурсивную функцию можно эффективно доопределить до
общерекурсивной.)
Следствие. Всякая частично рекурсивная функция вычислима по
Тьюрингу.
Ясно, что всякая примитивно рекурсивная функция будет и частично
рекурсивной (и даже общерекурсивной, так как каждая примитивно
рекурсивная функция всюду определена), поскольку для построения частично
рекурсивных функций из простейших используется больше средств, чем для
построения примитивно рекурсивных функций. В то же время класс частично
рекурсивных функций шире класса примитивно рекурсивных функций, так как
Математическая логика и теория алгоритмов
все примитивно рекурсивные функции всюду определены, а среди частично
рекурсивных функций встречаются и функции не всюду определенные.
Понятие частично рекурсивной функции оказалось исчерпывающей
формализацией
понятия
вычислимой
функции.
При
построении
аксиоматической теории высказываний исходные формулы (аксиомы) и правила
вывода выбирались так, чтобы полученные в теории формулы исчерпали бы все
тавтологии алгебры высказываний. К чему же стремимся мы в теории
рекурсивных функций, почему именно так выбрали простейшие функции и
операторы для получения новых функций? Рекурсивными функциями мы
стремимся исчерпать все мыслимые функции, поддающиеся вычислению с
помощью какой-нибудь определенной процедуры механического характера.
Подобно тезису Тьюринга, в теории рекурсивных функций выдвигается
соответствующая естественно-научная гипотеза, носящая название тезиса Чёрча:
Числовая функция тогда и только тогда алгоритмически (или
машинно) вычислима, когда она частично рекурсивна.
И эта гипотеза не может быть доказана строго математически, она
подтверждается практикой, опытом, ибо призвана увязать практику и теорию. Все
рассматривавшиеся в математике конкретные функции, признаваемые
вычислимыми в интуитивном смысле, оказывались частично рекурсивными.
Частичная рекурсивность функций, вычислимых по Тьюрингу
Теорема Тьюринга. Если функция вычислима по Тьюрингу, то она
частично рекурсивна.
Теорема. Функция вычислима по Тьюрингу тогда и только тогда, когда
она частично рекурсивна.
Итог рассмотрений настоящей лекции состоит в том, что мы дали некую
альтернативную характеристику вычислимым по Тьюрингу функциям: это те и
только те функции, которые частично рекурсивны. Другими словами, класс
функций, вычислимых по Тьюрингу, совпадает с классом частично рекурсивных
функций. Совпадение этих двух классов вычислимых функций, в основе
построения которых лежали совершенно разные подходы к формализации
понятия вычислимости функции, говорит о том, что эти подходы оказались
весьма состоятельными, и служит косвенным подтверждением того, что как тезис
Тьюринга, так и тезис Чёрча не только не безосновательны, но и имеют все права
на признание.
Значение понятия частично рекурсивной функции состоит в следующем. С
одной стороны, каждая частично рекурсивная функция вычислима путем
процедуры, отвечающей интуитивному представлению об алгоритмах. С другой
стороны, какие бы классы алгоритмов ни строились, вычисляемые ими числовые
функции оказывались частично рекурсивными.
Математическая логика и теория алгоритмов
Пример. Найти функцию, получаемую из g(x)= x, h(x, y,z)= zy + z с помощью
операции примитивной рекурсии.
Решение.
МАШИНА ТЬЮРИНГА
Алан Тьюринг (Turing) в 1936 году опубликовал в трудах Лондонского
математического общества статью «О вычислимых числах в приложении к
проблеме разрешения», которая наравне с работами Поста и Черча лежит в
основе современной теории алгоритмов.
Приведем характеристику этой работы, принадлежащую Джону
Хопкрофту: «Работая над проблемой Гильберта, Тьюрингу пришлось дать четкое
определение самого понятия метода. Отталкиваясь от интуитивного
представления о методе как о некоем алгоритме, т.е. процедуре, которая может
быть выполнена механически, без творческого вмешательства, он показал, как эту
идею можно воплотить в виде подробной модели вычислительного процесса.
Полученная модель вычислений, в которой каждый алгоритм разбивался на
последовательность простых, элементарных шагов, и была логической
конструкцией, названной впоследствии машиной Тьюринга».
Машины Тьюринга - это формальный пример алгоритма. Придуман этот
алгоритм независимо Аланом Тьюрингом и Эмилем Постом.
Формально машина Тьюринга может быть описана следующим образом:
машина Тьюринга состоит из следующих «частей»:
Математическая логика и теория алгоритмов
1. Ленты, разбитой на конечное число ячеек, - внешней памяти. В ячейке
может быть записан символ внешнего алфавита А = {а0, а1,..., аm}. Ячейка ленты
содержит только один символ из множества А. Символ а0 называется пустым.
2. Управляющей головки, двигающейся вдоль ленты и считывающей
содержимое ячейки, напротив которой она останавливается.
3. Внутренней памяти - набора состояний, принимаемых управляющей
головкой и входящих в множество Q = {q0, q1, …qn}. Состояние q0 называется
«стоп» и означает прекращение работы.
5. Механического устройства, передвигающего головку и меняющего
состояния внешней и внутренней памяти в соответствии с заданной программой.
Работа машины Тьюринга осуществляется посредством команд, которые
выполняет механическое устройство. Команда имеет вид: qi аk  qj L al , где L - это
движение головки влево на одну ячейку, a R - вправо. При этом всегда самое левое
в записи команды qi q0.
Смысл команды таков: если головка в состоянии qi стоит напротив ячейки с
символом аk, то она меняет свое состояние на qj, а содержимое ячейки на al и
сдвигается влево. Весь набор команд образует программу.
Пример
1.
Найти
результат
применения машины Тьюринга к
записям на ленте:
Решение. В
последнем
случае машина никогда
не остановится, и будет
работать вечно. Таким
образом,
она
неприменима ко второй
записи на ленте.
Математическая логика и теория алгоритмов
Пример 2. Построить машину Тьюринга, правильно вычисляющую функцию f
(x, y) = x +y .
Решение.
В начальном состоянии на ленте имеем:
После работы машины Тьюринга на ленте должно быть:
Программа такой машины, например, такая:
Машина, построенная таким образом, вначале, двигаясь вправо, заменяет
нуль, разделяющий массивы единиц, единицей; затем, пройдя массив единиц,
начинает движение влево, заменяя две последние единицы нулями.
Вспоминая тезис Чёрча, естественно провести следующее рассуждение:
если вычислимые функции — это частично рекурсивные, а последние
вычисляются на машинах Тьюринга-Поста, то не содержится ли в этом
рассуждении ответ на то, что такое вычислимая функция. Утверждение, которое
сделал А.Тьюринг, не поддерживается строгим доказательством и называется
поэтому тезисом.
Тезис Тьюринга. Все вычислимые частичные функции вычисляются на
машинах Тьюринга.
Машина Тьюринга называется универсальной, если она может при
определенных начальных входных данных вычислить любую функцию, которая
вычислима на какой-либо машине Тьюринга.
Иначе говоря, с учетом тезиса Тьюринга можно сказать, что универсальная
машина Тьюринга способна вычислить любую вычислимую функцию. Доказано,
что универсальная машина Тьюринга существует.
1.
http://mathhelpplanet.com/static.php?p=rekursivnyye-funktsii
2.
Гуц, А.К. Математическая логика и теория алгоритмов: учебное пособие. Омск: Издательство Наследие. Диалог-Сибирь, 2003. - 108 с.
Математическая логика и теория алгоритмов
Лекция № 13
Алгоритмически неразрешимые проблемы
Алгоритмически неразрешимые проблемы
АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ
За время своего существования человечество придумало множество
алгоритмов для решения разнообразных практических и научных проблем.
Зададимся вопросом – а существуют ли какие-нибудь проблемы, для которых
невозможно придумать алгоритмы их решения?
Утверждение о существовании алгоритмически неразрешимых проблем
является весьма сильным – мы констатируем, что мы не только сейчас не знаем
соответствующего алгоритма, но мы не можем принципиально никогда его
найти.
Успехи математики к концу XIX века привели к формированию мнения,
которое выразил Д. Гильберт – «в математике не может быть неразрешимых
проблем», в связи с этим формулировка проблем Гильбертом на конгрессе 1900
года в Париже была руководством к действию, констатацией отсутствия решений
в данный момент.
Первой фундаментальной теоретической работой, связанной с
доказательством алгоритмической неразрешимости, была работа Курта Гёделя –
его известная теорема о неполноте символических логик. Это была строго
формулированная математическая проблема, для которой не существует
решающего ее алгоритма. Усилиями различных исследователей список
алгоритмически неразрешимых проблем был значительно расширен. Сегодня
принято при доказательстве алгоритмической неразрешимости некоторой задачи
сводить ее к ставшей классической задаче – «задаче останова».
Имеет место быть следующая теорема :
Теорема. Не существует алгоритма (машины Тьюринга), позволяющего по
описанию произвольного алгоритма и его исходных данных (и алгоритм и
данные заданы символами на ленте машины Тьюринга) определить,
останавливается ли этот алгоритм на этих данных или работает бесконечно.
Таким образом, фундаментально алгоритмическая неразрешимость связана
с бесконечностью выполняемых алгоритмом действий, т.е. невозможностью
предсказать, что для любых исходных данных решение будет получено за
конечное количество шагов.
Математическая логика и теория алгоритмов
Тем не менее, можно попытаться сформулировать причины, ведущие к
алгоритмической неразрешимости, эти причины достаточно условны, так как все
они сводимы к проблеме останова, однако такой подход позволяет более глубоко
понять природу алгоритмической неразрешимости:
а) Отсутствие общего метода решения задачи
Проблема 1: Распределение девяток в записи числа ;
Определим функцию f(n) = i, где n – количество девяток подряд в
десятичной записи числа π, а i – номер самой левой девятки из n девяток подряд:
=3,141592…
f(1) = 5.
Задача состоит в вычислении функции f(n) для произвольно заданного n.
Поскольку число π является иррациональным и трансцендентным, то мы
не знаем никакой информации о распределении девяток (равно как и любых
других цифр) в десятичной записи числа . Вычисление f(n) связано с
вычислением последующих цифр в разложении π, до тех пор, пока мы не
обнаружим n девяток подряд, однако у нас нет общего метода вычисления f(n),
поэтому для некоторых n вычисления могут продолжаться бесконечно – мы даже
не знаем в принципе (по природе числа ) существует ли решение для всех n.
Проблема 2: Вычисление совершенных чисел;
Совершенные числа – это числа, которые равны сумме своих делителей,
например: 28 = 1+2+4+7+14.
Определим функцию S(n) = n-ое по счёту совершенное число и поставим
задачу вычисления S(n) по произвольно заданному n. Нет общего метода
вычисления совершенных чисел, мы даже не знаем, множество совершенных
чисел конечно или счетно, поэтому наш алгоритм должен перебирать все числа
подряд, проверяя их на совершенность. Отсутствие общего метода решения не
позволяет ответить на вопрос о останове алгоритма. Если мы проверили М чисел
при поиске n-ого совершенного числа – означает ли это, что его вообще не
существует?
Проблема 3: Десятая проблема Гильберта;
Пусть задан многочлен n-ой степени с целыми коэффициентами – P,
существует ли алгоритм, который определяет, имеет ли уравнение P=0 решение в
целых числах?
Ю.В. Матиясевич показал, что такого алгоритма не существует, т.е.
отсутствует общий метод определения целых корней уравнения P=0 по его
целочисленным коэффициентам.
Математическая логика и теория алгоритмов
б) Информационная неопределенность задачи
Проблема 4:
помеченный ящик;
Позиционирование
машины
Поста
на
последний
Пусть на ленте машины Поста заданы наборы помеченных ящиков
(кортежи) произвольной длины с произвольными расстояниями между
кортежами и головка находится у самого левого помеченного ящика. Задача
состоит в установке головки на самый правый помеченный ящик последнего
кортежа.
Попытка построения алгоритма, решающего эту задачу, приводит к
необходимости ответа на вопрос – когда после обнаружения конца кортежа мы
сдвинулись вправо по пустым ящикам на М позиций и не обнаружили начало
следующего кортежа – больше на ленте кортежей нет или они есть где-то правее?
Информационная неопределенность задачи состоит в отсутствии информации
либо о количестве кортежей на ленте, либо о максимальном расстоянии между
кортежами – при наличии такой информации (при разрешении
информационной неопределенности) задача становится алгоритмически
разрешимой.
в) Логическая неразрешимость (в смысле теоремы Гёделя о неполноте)
Проблема 5: Проблема «останова»;
Проблема 6: Проблема эквивалентности алгоритмов;
По двум произвольным заданным алгоритмам (например, по двум
машинам Тьюринга) определить, будут ли они выдавать одинаковые выходные
результаты на любых исходных данных.
Проблема 7: Проблема тотальности;
По произвольному заданному алгоритму определить, будет ли он
останавливаться на всех возможных наборах исходных данных. Другая
формулировка этой задачи – является ли частичный алгоритм Р всюду
определённым?
3.3. Проблема соответствий Поста над алфавитом Σ
В качестве более подробного примера алгоритмически неразрешимой
задачи рассмотрим проблему соответствий Поста [1] (Э. Пост, 1943 г.). Мы
выделили эту задачу, поскольку на первый взгляд она выглядит достаточно
«алгоритмизуемой», однако она сводима к проблеме останова и является
алгоритмически неразрешимой.
Постановка задачи:
Математическая логика и теория алгоритмов
Пусть дан алфавит Σ: |Σ| ≥ 2 (для одно-символьного алфавита задача имеет
решение) и дано конечное множество пар из Σ+х Σ+ , т.е. пары непустых цепочек
произвольного языка над алфавитом Σ:
(x1,y1), ……, (xm,ym).
Проблема: Выяснить существует ли конечная последовательность этих пар,
не обязательно различных, такая что цепочка, составленная из левых подцепочек,
совпадает с последовательностью правых подцепочек – такая последовательность
называется решающей.
В качестве примера рассмотрим Σ = {a,b}
1. Входные цепочки: (abbb, b), (a, aab), (ba, b)
Решающая последовательность для этой задачи имеет вид:
(a,aab) (a,aab) (ba,b) (abbb,b), так как : a a ba abbb ≡ aab aab b b
2. Входные цепочки: (ab,aba), (aba,baa), (baa,aa)
Данная задача вообще не имеет решения, так как нельзя начинать с пары
(aba,baa) или (baa,aa), поскольку не совпадают начальные символы подцепочек, но
если начинать с цепочки (ab,aba), то в последующем не будет совпадать общее
количество символов «а», т.к. в других двух парах количество символов «а»
одинаково.
В общем случае мы можем построить частичный алгоритм, основанный на
идее упорядоченной генерации возможных последовательностей цепочек
(отметим, что мы имеем счетное множество таких последовательностей) с
проверкой выполнения условий задачи. Если последовательность является
решающей – то мы получаем результативный ответ за конечное количество
шагов. Поскольку общий метод определения отсутствия решающей
последовательности не может быть указан, т.к. задача сводима к проблеме
«останова» и, следовательно, является алгоритмически неразрешимой, то при
отсутствии решающей последовательности алгоритм порождает бесконечный
цикл.
В теории алгоритмов такого рода проблемы, для которых может быть
предложен частичный алгоритм их решения, частичный в том смысле, что он
возможно, но не обязательно, за конечное количество шагов находит решение
проблемы, называются частично разрешимыми проблемами.
В частности, проблема останова так же является частично разрешимой
проблемой, а проблемы эквивалентности и тотальности не являются таковыми.
Математическая логика и теория алгоритмов
Лекция № 14
Введение в анализ алгоритмов
Введение в анализ алгоритмов. Трудоёмкость алгоритма. Сравнительные
оценки алгоритмов. Система обозначений в анализе алгоритмов
Классификация
алгоритмов
по
виду
Асимптотический анализ функций трудоемкости.
функции
трудоёмкости.
ВВЕДЕНИЕ В АНАЛИЗ АЛГОРИТМОВ.
СРАВНИТЕЛЬНЫЕ ОЦЕНКИ АЛГОРИТМОВ
Сложность - это способ сравнения алгоритмов, когда стоит проблема
рационального выбора алгоритма для решения задачи.
Алгоритмы сравнивают по количеству необходимых для выполнения
алгоритма шагов (временная сложность) и по объему памяти, необходимой для
работы алгоритма (ёмкостная сложность или трудоемкость).
Решение проблемы выбора связано с построением системы сравнительных
оценок, которая в свою очередь существенно опирается на формальную модель
алгоритма.
В качестве формальной системы будем рассматривать абстрактную
машину, включающую процессор с фон-Неймановской архитектурой,
поддерживающий адресную память и набор «элементарных» операций
соотнесенных с языком высокого уровня.
В целях дальнейшего анализа примем следующие допущения:


каждая команда выполняется не более чем за фиксированное
время;
исходные данные алгоритма представляются машинными словами
по  битов каждое.
Конкретная проблема задается N словами памяти, таким образом, на входе
алгоритма –
N = N* бит информации. Отметим, что в ряде случаев,
особенно при рассмотрении матричных задач N является мерой длины входа
алгоритма, отражающей линейную размерность.
Математическая логика и теория алгоритмов
Программа, реализующая алгоритм для решения общей проблемы, состоит
из М машинных инструкций по м битов – М = М* м бит информации.
Кроме того, алгоритм может требовать следующих дополнительных
ресурсов абстрактной машины:

Sd – память для хранения промежуточных результатов;

Sr – память для организации вычислительного процесса (память,
необходимая для реализации рекурсивных вызовов и возвратов).
При решении конкретной проблемы, заданной N словами памяти алгоритм
выполняет не более, чем конечное количество «элементарных» операций
абстрактной машины в силу условия рассмотрения только финитных
алгоритмов. В связи с этим введем следующее определение:
Под трудоёмкостью алгоритма для данного конкретного входа – Fa(N),
будем понимать количество «элементарных» операций, совершаемых алгоритмом
для решения конкретной проблемы в данной формальной системе.
Комплексный анализ алгоритма может быть выполнен на основе
комплексной оценки ресурсов формальной системы, требуемых алгоритмом для
решения конкретных проблем. Очевидно, что для различных областей
применения веса ресурсов будут различны, что приводит к следующей
комплексной оценке алгоритма:
c1 * Fa(N) + c2 *  + c3 * Sd + c4 * Sr, где ci – веса ресурсов.
СИСТЕМА ОБОЗНАЧЕНИЙ В АНАЛИЗЕ АЛГОРИТМОВ
При более детальном анализе трудоемкости алгоритма оказывается, что не
всегда количество элементарных операций, выполняемых алгоритмом на одном
входе длины N, совпадает с количеством операций на другом входе такой же
длины. Это приводит к необходимости введения специальных обозначений,
отражающих поведение функции трудоемкости данного алгоритма на входных
данных фиксированной длины.
Пусть DА – множество конкретных проблем данной задачи, заданное в
формальной системе. Пусть D  DА – задание конкретной проблемы и |D| = N.
В общем случае существует собственное подмножество множества DА,
включающее все конкретные проблемы, имеющие мощность N:
обозначим это подмножество через DN: DN = {D DN, |D| = N};
обозначим мощность множества DN через MDN → MDN = |DN |.
Математическая логика и теория алгоритмов
Тогда содержательно данный алгоритм, решая различные задачи
размерности N, будет выполнять в каком-то случае наибольшее количество
операций, а в каком-то случае наименьшее количество операций. Ведем
следующие обозначения:
1. Fa(N) – худший случай – наибольшее количество операций, совершаемых
алгоритмом А для решения конкретных проблем размерности N:
Fa(N) = max {Fa (D)} – худший случай на DN
D DN
2. Fa(N) – лучший случай – наименьшее количество операций, совершаемых
алгоритмом А для решения конкретных проблем размерности N:
Fa(N) = min {Fa (D)} – лучший случай на DN
D DN
3. Fa(N) – средний случай – среднее количество операций, совершаемых
алгоритмом А для решения конкретных проблем размерности N:
Fa(N) = (1 / MDN)* {Fa (D)} – средний случай на DN
DDN
КЛАССИФИКАЦИЯ АЛГОРИТМОВ ПО ВИДУ ФУНКЦИИ
ТРУДОЁМКОСТИ
В зависимости от влияния исходных данных на функцию трудоемкости
алгоритма может быть предложена следующая классификация, имеющая
практическое значение для анализа алгоритмов:
1.Количественно-зависимые по трудоемкости алгоритмы
Это алгоритмы, функция трудоемкости которых зависит только от
размерности конкретного входа, и не зависит от конкретных значений:
Fa (D) = Fa ( |D| ) = Fa (N)
Примерами
алгоритмов
с
количественно-зависимой
функцией
трудоемкости могут служить алгоритмы для стандартных операций с массивами
и матрицами – умножение матриц, умножение матрицы на вектор и т.д.
2.Параметрически-зависимые по трудоемкости алгоритмы
Это алгоритмы, трудоемкость которых определяется не размерностью входа
(как правило, для этой группы размерность входа обычно фиксирована), а
конкретными значениями обрабатываемых слов памяти:
Математическая логика и теория алгоритмов
Fa (D) = Fa (d1,…,dn) = Fa (P1,…,Pm), m  n
Примерами алгоритмов с параметрически-зависимой трудоемкостью
являются алгоритмы вычисления стандартных функций с заданной точностью
путем вычисления соответствующих степенных рядов. Очевидно, что такие
алгоритмы, имея на входе два числовых значения – аргумент функции и точность
выполняют существенно зависящее от значений количество операций.
а) Вычисление xk последовательным умножением  Fa(x, k) = Fa (k).
б) Вычисление ex=(xn/n!), с точностью до   Fa = Fa (x, )
3. Количественно-параметрические по трудоемкости алгоритмы
Однако в большинстве практических случаев функция трудоемкости
зависит как от количества данных на входе, так и от значений входных
данных, в этом случае:
Fa (D) = Fa (|D|, P1,…,Pm) = Fa (N, P1,…,Pm)
В качестве примера можно привести алгоритмы численных методов, в
которых параметрически-зависимый внешний цикл по точности включает в себя
количественно-зависимый фрагмент по размерности.
4. Порядково-зависимые по трудоемкости алгоритмы
Среди разнообразия параметрически-зависимых алгоритмов выделим еще
одну группу, для которой количество операций зависит от порядка
расположения исходных объектов.
Пусть множество D состоит из элементов (d1,…,dn), и ||D||=N,
Определим Dp = {(d1,…,dn)}-множество всех упорядоченных N-ок из d1,…,dn,
отметим, что |Dp|=n!.
Если Fa (iDp)  Fa (jDp), где iDp, jDp  Dp, то алгоритм будем называть
порядково-зависимым по трудоемкости.
Примерами таких алгоритмов могут служить ряд алгоритмов сортировки,
алгоритмы поиска минимума и максимума в массиве.
АСИМПТОТИЧЕСКИЙ АНАЛИЗ ФУНКЦИЙ
При анализе поведения функции трудоемкости алгоритма часто
используют принятые в математике асимптотические обозначения, позволяющие
показать скорость роста функции, маскируя при этом конкретные
коэффициенты.
Математическая логика и теория алгоритмов
Такая оценка функции трудоемкости алгоритма называется сложностью
алгоритма и позволяет определить предпочтения в использовании того или иного
алгоритма для больших значений размерности исходных данных.
В асимптотическом анализе приняты следующие обозначени:
1. Оценка  (тетта)
Пусть f(n) и g(n) – положительные
функции положительного аргумента, n ≥ 1
(количество объектов на входе и количество
операций – положительные числа), тогда:
c2g(n)
f(n)
f, g
c1g(n)
f(n) =  (g(n)), если существуют
n
положительные с1, с2, n0, такие, что:
n0
с1 * g(n)  f(n)  c2 * g(n), при n > n0
Обычно говорят, что при этом функция g(n) является асимптотически
точной оценкой функции f(n), т.к. по определению функция f(n) не отличается от
функции g(n) с точностью до постоянного множителя.
Отметим, что из f(n) =  (g(n)) следует, что g(n) =  (f(n)).
Примеры:
1) f(n)=4n2+nlnN+174
– f(n)= (n2);
2) f(n)=(1) – запись означает, что f(n) или равна константе, не равной нулю,
или f(n) ограничена константой на  : f(n) = 7+1/n = (1).
2. Оценка О (О большое)
В отличие от оценки , оценка О требует только, что бы функция f(n) не
превышала g(n) начиная с n > n0, с точностью до постоянного множителя:
cg(n)
f(n)
 c > 0, n0 > 0 :
0  f(n)  c * g(n), n  n0
Математическая логика и теория алгоритмов
Вообще, запись O(g(n)) обозначает класс функций, таких, что все они растут
не быстрее, чем функция g(n) с точностью до постоянного множителя, поэтому
иногда говорят, что g(n) мажорирует функцию f(n).
Например, для всех функций:
f(n)=1/n, f(n)= 12, f(n)=3*n+17, f(n)=n*Ln(n), f(n)=6*n2 +24*n+77
будет справедлива оценка О(n2 )
Указывая оценку О есть смысл указывать наиболее «близкую»
мажорирующую функцию, поскольку например для f(n)= n2 справедлива оценка
О(2n), однако она не имеет практического смысла.
3. Оценка  (Омега)
В отличие от оценки О, оценка  является оценкой снизу – т.е. определяет
класс функций, которые растут не медленнее, чем g(n) с точностью до
постоянного множителя:
F(n)
cg(n)
 c > 0, n0 >0 :
0  c * g(n)  f(n)
Например, запись (n*Ln(n)) обозначает класс функций, которые растут не
медленнее, чем g(n) = n*Ln(n), в этот класс попадают все полиномы со степенью
большей единицы, равно как и все степенные функции с основанием большим
единицы.
Асимптотическое обозначение О восходит к учебнику Бахмана по теории
простых чисел (Bachman, 1892), обозначения ,  введены Д. Кнутом- (Donald
Knuth).
Отметим, что не всегда для пары функций справедливо одно из
асимптотических соотношений, например для f(n)=n1+sin(n) и g(n)=n
не
выполняется ни одно из асимптотических соотношений.
В асимптотическом анализе алгоритмов разработаны специальные методы
получения асимптотических оценок, особенно для класса рекурсивных
алгоритмов. Очевидно, что  оценка является более предпочтительной, чем
оценка О. Знание асимптотики поведения функции трудоемкости алгоритма (его
Математическая логика и теория алгоритмов
сложности) дает возможность делать прогнозы по выбору более рационального с
точки зрения трудоемкости алгоритма для больших размерностей исходных
данных.
ТРУДОЕМКОСТЬ АЛГОРИТМОВ.
Элементарные операции в языке записи алгоритмов
Для получения функции трудоемкости алгоритма, представленного в
формальной системе введенной абстрактной машины необходимо уточнить
понятия «элементарных» операций, соотнесенных с языком высокого уровня.
В качестве таких элементарных операций ДОГОВАРИВАЕМСЯ
использовать следующие операции:
1) Присваивание: а  b
2) Одномерная индексация a[i]
3) Арифметические операции: * / - +
4) Операции сравнения: a < b
5) Логические операции (l1) {or, and, not} (l2)
Опираясь на идеи структурного программирования, исключим команду
перехода по адресу, считая ее связанной с операцией сравнения в конструкции
ветвления.
После введения элементарных операций анализ трудоемкости основных
алгоритмических конструкций в общем виде сводится к следующим положениям:
А) Конструкция «Следование»
Трудоемкость конструкции есть сумма трудоемкостей
блоков, следующих друг за другом.
F «следование» = f1 + … + fk, где k – количество блоков.
B) Конструкция «Ветвление»
if (условие ) then
fthen с вероятностью p
else
felse с вероятностью (1-p)
Else
Then
Математическая логика и теория алгоритмов
Общая трудоемкость конструкции «Ветвление» требует анализа
вероятности выполнения переходов на блоки «Then» и «Else» и определяется как
F «ветвление» = fthen * p + felse * (1-p).
Оценка блока проверки условия выполняется отдельно, как будто этот блок
просто последовательно соединен с предыдущим.
C) Конструкция «Цикл»
for i  1 to N
Тело цикла
end
Трудоемкость конструкции цикла определяется по формуле:
F «цикл» = 1+3*N+N*f«тела цикла»
Примеры анализа простых алгоритмов.
Задача суммирования элементов квадратной матрицы записана в
псевдокоде по Кормену.
SumM (A, n; Sum)
Sum  0
For i  1 to n
For j  1 to n
Sum  Sum + A[i,j]
end for
Return (Sum)
End
Алгоритм выполняет одинаковое количество операций при
фиксированном значении n и, следовательно, является количественнозависимым. Функция трудоемкости
FA(n)=1+1+ n *(3+1+ n *(3+4))=7 n 2+4* n +2 = (n 2),
где под n понимается линейная размерность матрицы, в то время как на
вход алгоритма подается n 2 значений.
Математическая логика и теория алгоритмов
Лекция № 15
Временная сложность алгоритмов
Переход к временным оценкам. Асимптотическая временная сложность.
Пооперационный анализ.
ПЕРЕХОД К ВРЕМЕННЫМ ОЦЕНКАМ
Сравнение двух алгоритмов по их функции трудоемкости вносит
некоторую ошибку в получаемые результаты. Основной причиной этой ошибки
является различная частотная встречаемость элементарных операций,
порождаемая разными алгоритмами и различие во временах выполнения
элементарных операций на реальном процессоре. Таким образом, возникает
задача перехода от функции трудоемкости к оценке времени работы алгоритма
на конкретном процессоре.
Договориться о том, как входные данные представляются «в понятном
для компьютера виде»; мы будем считать, что исходные данные
закодированы последовательностью битов. Формально говоря, представлением
элементов некоторого множества M называется отображение e из M во
множество битовых строк. Например, натуральные числа 0, 1, 2, 3, … обычно
представляют битовыми строками 0, 1, 10, 11, 100, …
Т.о. мы превращаем абстрактную задачу в строковую, для которой
входным данным является битовая строка, представляющая исходное данное
абстрактной задачи. Естественно считать размером строковой задачи длину
строки.
Входные данные
Алгоритм
Выходные данные
АСИМПТОТИЧЕСКАЯ ВРЕМЕННАЯ СЛОЖНОСТЬ
Будем говорить, что алгоритм решает строковую задачу за время
Ο(T(n)), если на входном данном битовой строки длины n алгоритм работает
время Ο(T(n)).
Можно подумать, что колоссальный рост скорости вычислений, вызванный
появлением
нового
поколения
компьютеров,
уменьшит
значение
эффективных алгоритмов. Однако происходит в точности противоположное.
Математическая логика и теория алгоритмов
Так как компьютеры работают все быстрее и мы можем решать все большие
задачи, именно сложность алгоритма определяет то увеличение размера
задачи, которое можно достичь с увеличением скорости машины.
Допустим, у нас есть пять алгоритмов A1–A5 со следующими временными
сложностями:
Ο(n), Ο(n log n), Ο(n2), Ο(n3), Ο(2n)
Функции
ведут себя следующим образом:
f(n) = n
Основной
Основной
Основной
f(n) = n
Основной
Основной
Основной
Основной
Основной
Основной
Основной
f(n) = n log n
Основной
Основной
Основной
Основной
f(n) = n log n
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
ОсновнойОсновнойОсновнойОсновной
f(n) = n
f(n) = n log n
Математическая логика и теория алгоритмов
f(n) = n2
f(n) = n3
f(n) = 2n
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
f(n) =
n2
Основной
Основной
f(n) =
n3
Основной
f(n)
= 2n
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
f(n) = n3
f(n) = 2n
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Основной
Пусть
единицей
времени
будет
одна
миллисекунда и мультипликативные константы в
точных оценках временной сложности во всех
алгоритмах равны 1.
Тогда алгоритм A1 может обработать за одну
секунду вход размера 1000, в то время как A5 – вход
размера не более 9. В таблице приведены размеры
задач, которые можно решить за одну секунду, одну
минуту и один час каждым из этих пяти алгоритмов.
Границы размеров задач, определяемые скоростью
роста сложности.
Таблица 1 Функция, возвращающая время работы алгоритма
Алгоритм
A1
A2
A3
A4
A5
Асимптотическая
временная
сложность
Ο(n)
Ο(n log n)
Ο(n2)
Ο(n3)
Ο(2n)
Максимальный размер задачи
1 сек
1 мин
1 час
1000
140
31
10
9
60 000
4893
244
39
15
3 600 000
200 000
1897
153
21
Предположим, что следующее поколение компьютеров будет в 10 раз
быстрее нынешнего. В таблице показано, как возрастут размеры задач,
которые мы сможем решить благодаря этому увеличению скорости.
Математическая логика и теория алгоритмов
Таблица 2 Эффект десятикратного ускорения
Заметим, что для алгоритма A5 десятикратное увеличение скорости
увеличивает размер задачи, которую можно решить, только на три, тогда как для
алгоритма A3 размер задачи более чем утраивается. Вместо эффекта увеличения
скорости рассмотрим теперь эффект применения более действенного алгоритма.
Вернемся к таблице 1. Если в качестве основы для сравнения взять 1
мин, то, заменяя алгоритм A4 алгоритмом A3, можно решить задачу в 6 раз
большую, а заменяя A4 на A2, можно решить задачу, большую в 125 раз. Эти
результаты производят гораздо большее впечатление, чем двукратное улучшение,
достигаемое за счет десятикратного увеличения скорости. Если в качестве основы
для сравнения взять 1 ч, то различие оказывается еще значительнее.
Отсюда мы заключаем, что асимптотическая скорость алгоритма служит
важной мерой качественности алгоритма, причем такой мерой, которая
обещает стать еще важнее при последующем увеличении скорости
вычислений.
Несмотря на то, что основное внимание здесь уделяется порядку роста
величин, надо понимать, что больший порядок сложности алгоритма может
иметь меньшую мультипликативную постоянную, чем малый порядок роста
сложности другого алгоритма. В таком случае алгоритм с быстро растущей
сложностью может оказать предпочтительнее для задач с малым размером –
возможно, даже для всех задач, которые нас интересуют.
На пути построения временных оценок мы сталкиваемся с целым набором
различных проблем, пофакторный учет которых вызывает существенные
трудности. Укажем основные из этих проблем:
неадекватность формальной системы записи алгоритма и реальной
системы команд процессора;
Математическая логика и теория алгоритмов
наличие архитектурных особенностей существенно влияющих на
наблюдаемое время выполнения программы, таких как конвейер, кеширование
памяти, предвыборка команд и данных, и т.д.;
различные времена выполнения реальных машинных команд;
различие во времени выполнения одной команды, в зависимости от
значений операндов;
различные времена реального
зависимости от типов данных;
выполнения
однородных
команд
в
неоднозначности компиляции исходного текста, обусловленные как самим
компилятором, так и его настройками.
Попытки различного подхода к учету этих факторов привели к появлению
разнообразных методик перехода к временным оценкам.
ПООПЕРАЦИОННЫЙ АНАЛИЗ
Идея пооперационного анализа состоит в получении пооперационной
функции трудоемкости для каждой из используемых алгоритмом элементарных
операций
с
учетом
типов
данных.
Следующим
шагом
является
экспериментальное определение среднего времени выполнения данной
элементарной операции на конкретной вычислительной машине. Ожидаемое
время выполнения рассчитывается как сумма произведений пооперационной
трудоемкости на средние времена операций:
TA(N) =  Faопi(N) * t опi
Пример пооперационного временного анализа
В ряде случаев именно пооперационный анализ позволяет выявить тонкие
аспекты рационального применения того или иного алгоритма решения задачи.
В качестве примера рассмотрим задачу умножения двух комплексных чисел:
(a+bi)*(c+di)=(ac - bd) + i(ad + bc)=e + if
1. Алгоритм А1 (прямое вычисление e, f – четыре умножения)
MultComplex1 (a, b, c, d; e, f)
ea*c - b*d
a*d + b*c
Return (e, )
End.
A1 =8 операций
* =4 операций
± =2 операций
 =2 операций
Математическая логика и теория алгоритмов
2. Алгоритм А2 (вычисление e, f за три умножения)
MultComplex2 (a, b, c, d; e, f)
z1c*(a + b)
z2b*(d + c)
A2 =13 операций
z3a*(d - c)
* =3 операций
ez1 - z2
± =5 операций
z1 + z3
 =5 операций
Return (e, )
End.
Пооперационный анализ этих двух алгоритмов не представляет труда, и
его результаты приведены справа от записи соответствующих алгоритмов.
По совокупному количеству элементарных операций алгоритм А2 уступает
алгоритму А1, однако в реальных компьютерах операция умножения требует
большего времени, чем операция сложения, и можно путем пооперационного
анализа ответить на вопрос: при каких условиях алгоритм А2 предпочтительнее
алгоритма А1?
Введем параметры q и r, устанавливающие соотношения между временами
выполнения операции умножения, сложения и присваивания для операндов
действительного типа.
Тогда мы можем привести временные оценки двух алгоритмов к времени
выполнения операции сложения/вычитания – t+:
t* = q*t+, q>1;
t=r*t+, r<1, тогда приведенные к t+ временные оценки имеют вид:
ТA1 = 4*q*t++2*t++2*r*t+=t+*(4*q+2+2*r);
ТA2 = 3*q*t++5*t++5*r*t+=t+*(3*q+5+5*r).
Равенство времен будет достигнуто при условии:
4*q+2+2*r = 3*q+5+5*r, откуда:
q = 3 + 3r и следовательно при q > 3 + 3r алгоритм А2 будет работать более эффективно.
Таким образом, если среда реализации алгоритмов А1 и А2 – язык
программирования, обслуживающий его компилятор и компьютер на котором
реализуется задача – такова, что время выполнения операции умножения двух
Математическая логика и теория алгоритмов
действительных чисел более чем втрое превышает время сложения двух
действительных чисел, в предположении, что r << 1, а это реальное соотношение,
то для реализации более предпочтителен алгоритм А2.
Конечно, выигрыш во времени пренебрежимо мал, если мы перемножаем
только два комплексных числа, однако, если этот алгоритм является частью
сложной вычислительной задачи с комплексными числами, требующей
существенно значимого по времени количества умножений, то выигрыш во
времени может быть ощутим. Оценка такого выигрыша на одно умножение
комплексных чисел следует из только что проведенного анализа:
T = (q – 3 – 3*r)* t+
Математическая логика и теория алгоритмов
Лекции № 16-17
Сложность задач, классы сложности
Сложность задач, классы сложности P, E, NP.
СЛОЖНОСТЬ ЗАДАЧИ
Сложность
задачи – это
асимптотическая
временная
сложность
наилучшего алгоритма, известного для ее решения. Сложность задачи
характеризуют сложностью наилучшего алгоритма, решающего задачу с самым
трудным значением входа.
По сложности алгоритмы делят на категории. Примеры некоторых
категорий сложности алгоритмов:
- алгоритмы полиномиальной сложности, F(n) = O(np) ;
- алгоритмы экспоненциальной сложности, F(n) = O(ean) ;
- алгоритмы факториальной сложности, F(n) = O(n!) .
Основной вопрос теории сложности: насколько успешно или с какой
стоимостью может быть решена заданная проблема Q? Мы не имеем в виду
никакого конкретного алгоритма решения Q. Наша цель – рассмотреть все
возможные алгоритмы решения Q и попытаться сформулировать утверждение о
вычислительной сложности, внутренне присущей Q.
В то время как всякий алгоритм A для Q дает верхнюю оценку величины
сложности Q, нас интересует нижняя оценка.
Знание нижней оценки представляет интерес математически и, кроме того,
руководит нами в поиске хороших алгоритмов, указывая, какие попытки заведомо
будут безуспешны.
Быстрыми
являются
линейные
алгоритмы,
которые
обладают
сложностью порядка Ο(n), где n – размерность входных данных. К линейным
алгоритмам относится школьный алгоритм нахождения суммы десятичных
чисел, состоящих из n1 и n2 цифр. Сложность этого алгоритма – Ο(n1 + n2).
Есть алгоритмы, которые быстрее линейных, например, алгоритм двоичного
поиска в линейном упорядоченном массиве имеет сложность Ο(log n), n –
длина массива. Другие хорошо известные алгоритмы – деление, извлечение
Математическая логика и теория алгоритмов
квадратного корня, решение систем линейных уравнений и др. – попадают в
более общий класс полиномиальных алгоритмов.
В рамках классической теории осуществляется классификация задач по
классам сложности (P-сложные, NP-сложные, экспоненциально сложные и др.).
Класс P
К классу P относятся задачи, которые могут быть решены за время,
полиномиально зависящее от объёма исходных данных, с помощью
детерминированной вычислительной машины (например, машины Тьюринга),
а к классу NP — задачи, которые могут быть решены за полиномиально
выраженное время с помощью недетерминированной вычислительной машины,
то есть машины, следующее состояние которой не всегда однозначно
определяется предыдущими. Работу такой машины можно представить как
разветвляющийся на каждой неоднозначности процесс: задача считается
решённой, если хотя бы одна ветвь процесса пришла к ответу.
Полиномиальным
алгоритмом (или
алгоритмом
полиномиальной
временной сложности, или алгоритмом, принадлежащим классу P) называется
алгоритм, у которого временная сложность равна Ο(nk), где k – положительное
целое число. Алгоритмы, для временной сложности которых не существует
такой оценки, называются экспоненциальными и такие задачи считаются
труднорешаемыми. Понятие полиномиально разрешимой задачи принято
считать уточнением идеи «практически разрешимой», «эффективно решаемой»
задачи. Чем объясняется такое соглашение?
Во-первых, используемые на практике полиномиальные алгоритмы
обычно действительно работают довольно быстро. Конечно, трудно назвать
практически разрешимой задачу, которая требует времени Θ(n100). Однако
полиномы такой степени в реальных задачах почти не встречаются.
Второй аргумент в пользу рассмотрения класса полиномиальных
алгоритмов – тот факт, что объем этого класса не зависит от выбора конкретной
модели вычислений (для достаточно широкого класса моделей). Например, класс
задач, которые могут быть решены за полиномиальное время на
последовательной машине с произвольным доступом (RAM), совпадает с
классом задач, полиномиально разрешимых на машинах Тьюринга. Класс
будет тем же и для моделей параллельных вычислений, если, конечно, число
процессоров ограничено полиномом от длины входа.
В-третьих,
класс
полиномиально
разрешимых
задач
обладает
естественными свойствами
замкнутости.
Например,
композиция
двух
полиномиальных алгоритмов (выход первого алгоритма подается на вход
Математическая логика и теория алгоритмов
второго) также работает полиномиальное время. Объясняется это тем, что
сумма, произведение и композиция многочленов снова есть многочлен.
Примеры задач класса Р
Рассортировать множество из n чисел. Сложность поведения в среднем
порядка Ο(n log n) для быстрого алгоритма Хоара.
Найти эйлеровый цикл на графе из m ребер. В силу теоремы Эйлера
мы имеем необходимое и достаточное условие для существования эйлерова
цикла и проверка этого условия есть алгоритм порядка Ο(m).
Задача Прима-Краскала. Дана плоская страна и в ней n городов. Нужно
соединить все города телефонной связью так, чтобы общая длина телефонных
линий была минимальной. В терминах теории графов задача Прима-Краскала
выглядит следующим образом: Дан граф с n вершинами; длины ребер заданы
матрицей (d[i,j]), i,j = 1,...,n.
Найти остовное дерево минимальной длины. Эта задача решается с
помощью жадного алгоритма сложности Ο(n log n).
Кратчайший путь на графе, состоящем из n вершин и m ребер. Сложность
алгоритма Ο(m n).
Связные компоненты графа. Определяются подмножества вершин в
графе (связные компоненты), такие, что две вершины, принадлежащие одной
и той же компоненте, всегда связаны цепочкой дуг. Если n – количество вершин,
а m – количество ребер, то сложность алгоритма Ο(n+m).
Быстрое преобразование Фурье, требующее Ο(n log n) арифметических
операций, – один из наиболее часто используемых алгоритмов в научных
вычислениях.
Умножение целых чисел. Алгоритм Шёнхаге-Штрассена. Сложность
алгоритма порядка Ο(n log n log log n). Отметим, что школьный метод для
умножения двух n-разрядных чисел имеет сложность порядка Ο(n2).
Умножение матриц. Алгоритм Штрассена имеет сложность порядка
Ο(nlog 7), для умножения двух матриц размера nхn. Очевидный алгоритм имеет
порядок сложности Ο(n3).
Класс E: задачи, экспоненциальные по природе
К экспоненциальным задачам относятся задачи, в которых требуется
построить множество всех подмножеств данного множества, все полные подграфы
некоторого графа или же все поддеревья некоторого графа.
Математическая логика и теория алгоритмов
Существует масса примеров задач с экспоненциальной сложностью.
Например, чтобы вычислить
для заданного натурального k, нам только
для записи конечного ответа потребуется около 2n шагов (где n – число цифр в
двоичной записи k), не говоря даже о самом вычислении.
Задачи не попадающие ни в класс P, ни в класс E. NP-полнота
На практике существуют задачи, которые заранее не могут быть
отнесены ни к одному из рассмотренных выше классов. Хотя в их условиях
не содержатся экспоненциальные вычисления, однако для многих из них до
сих пор не разработан эффективный (т.е. полиномиальный) алгоритм.
Это следующие задачи, образующие класс NP-полных задач:
 задача о выполнимости: существует ли для данной булевской
формулы, находящейся в КНФ, такое распределение истинностных значений, что
она имеет значение истина?

задача коммивояжера (Коммивояжер хочет объехать все города,
побывав в каждом ровно по одному разу, и вернуться в город, из которого начато
путешествие. Известно, что переезд из города i в город j стоит c(i, j) рублей.
Требуется найти путь минимальной стоимости.);

решение систем уравнений с целыми переменными;

составление расписаний, учитывающих определенные условия;

размещение обслуживающих центров (телефон, телевидение,
срочные службы) для максимального числа клиентов при минимальном числе
центров;

оптимальная загрузка емкости (рюкзак, поезд, корабль, самолёт)
при наименьшей стоимости;

оптимальный раскрой (бумага, картон, стальной прокат, отливки),
оптимизация маршрутов в воздушном пространстве, инвестиций, станочного
парка;

задача распознавания простого числа; самый лучший в настоящее
время тест на простоту имеет сложность порядка Ο(L(n)L(L(L(n)))), где L(n) –
количество цифр в числе n (выражение L(L(L(n))) стремится к бесконечности
очень медленно; первое число, для которого L(L(L(n))) = 2, равно 10999999999).
Эти задачи называются «NP-полными». Для них не найдены
полиномиальные алгоритмы, однако не доказано, что таких алгоритмов не
существует.
Изучение NP-полных задач связано с так называемым вопросом P≠NP. Этот
вопрос был поставлен в 1971 году и является сейчас одной из наиболее
интересных и сложных проблем теории вычислений.
Математическая логика и теория алгоритмов
Большинство специалистов полагают, что NP-полные задачи нельзя
решить за полиномиальное время. Дело в том, что если хотя бы для одной
NP-полной задачи существует решающий ее полиномиальный алгоритм, то и
для всех NP-полных задач такие алгоритмы существуют. В настоящее время
известно очень много NP-полных задач – многие из них практически важные.
Все попытки найти для них полиномиальные алгоритмы оказались
безуспешными. По-видимому, таких алгоритмов нет вовсе.
Зачем программисту знать о NP-полных задачах? Если для некоторой
задачи удается доказать ее NP-полноту, есть основания считать ее практически
неразрешимой. В этом случае лучше потратить время на построение
приближенного
алгоритма,
чем продолжать искать быстрый алгоритм,
решающий ее точно.
Задачи разрешения и задачи оптимизации
В теории NP-полноты рассматриваются только задачи разрешения –
задачи, в которых требуется дать ответ «да» или «нет» на некоторый вопрос.
Формально
задачу разрешения можно рассматривать как функцию,
отображающую множество условий I во множество {0,1} (1 = «да», 0 = «нет»).
Многие задачи можно тем или иным способом преобразовать к такому
виду. Например, с задачей SHORTEST-PATH поиска кратчайшего пути в графе
связана задача разрешения PATH: «по заданному графу G = (V, E), паре
вершин u, v ∈ V и натуральному числу k определить, существует ли в G
путь между вершинами u и v, длина которого не превосходит k». Пусть
четверка i = <G, u, v, k> является условием задачи PATH. Тогда PATH(i) = 1,
если длина кратчайшего пути между вершинами u и v не превосходит k, и
PATH(i) = 0 в противном случае.
Чаще встречаются задачи оптимизации, в которых требуется
минимизировать или максимизировать значение некоторой величины. Прежде
чем ставить вопрос о NP-полноте таких задач, их следует преобразовать в задачу
разрешения. Обычно в качестве такой задачи разрешения рассматривают
задачу проверки, является ли некоторое число верхней (или нижней)
границей для оптимизируемой величины.
Так, например, мы перешли от задачи оптимизации SHORTEST-PATH к
задаче разрешения PATH, добавив в условие задачи границу длины пути k.
Если после этого получается задача, не имеющая полиномиального
алгоритма разрешения, то тем самым установлена трудность исходной задачи. В
самом деле, если для оптимизационной задачи имеется быстрый алгоритм, то и
полученную из неё задачу разрешения можно решить быстро (надо просто
Математическая логика и теория алгоритмов
сравнить ответ этого алгоритма с заданной границей). Таким образом, можно
исследовать временную сложность задач оптимизации.
Класс NP
К классу NP относятся задачи, решение которых с помощью
дополнительной информации полиномиальной длины, данной нам свыше, мы
можем проверить за полиномиальное время.
В частности, к классу NP относятся все задачи, решение которых можно
проверить за полиномиальное время. Классическим примером NP-задачи
является задача о коммивояжёре.
Класс P содержится в классе NP. Поскольку класс P содержится в классе
NP, принадлежность той или иной задачи к классу NP зачастую отражает наше
текущее представление о способах решения данной задачи и носит
неокончательный характер.
В общем случае нет оснований полагать, что для той или иной NP-задачи
не может быть найдено P-решение. Вопрос о возможной эквивалентности
классов P и NP (то есть о возможности нахождения P-решения для любой NPзадачи) считается многими одним из основных вопросов современной теории
сложности алгоритмов.
Предполагаемое соотношение между классами P, NP и NPC
Если некоторая NP-полная задача разрешима за полиномиальное время,
то P = NP. Другими словами, если в классе NP существует задача, не разрешимая
за полиномиальное время, то все NP-полные задачи таковы.
Таким образом, гипотеза P ≠ NP означает, что NP-полные задачи не могут
быть решены за полиномиальное время. Большинство экспертов полагают,
что это действительно так; предполагаемое соотношение между классами P, NP и
NPC показано на рис. Классы P и NPC содержатся в
NP (что очевидно), и, можно полагать, не пересекаются
и не покрывают всего NP.
Конечно, мы не можем быть уверены, что
однажды кто-нибудь не предъявит полиномиальный
алгоритм для решения NP-полной задачи и не
докажет тем самым, что P=NP. Но пока этого никому
не удалось, и поэтому доказательство NP-полноты некоторой задачи является
убедительным аргументом в пользу того, что она является практически
неразрешимой.
Математическая логика и теория алгоритмов
Ответ на этот вопрос не найден до сих пор. Сама постановка вопроса об
эквивалентности классов P и NP возможна благодаря введению понятия NPполных задач. Наиболее убедительным аргументом в пользу того, что классы P и
NP различны, является существование так называемых NP-полных задач.
Этот класс обладает удивительным свойством: если какая-нибудь NP-полная
задача разрешима за полиномиальное время, то и все задачи из класса NP
разрешимы за полиномиальное время, т.е. P = NP. Несмотря на многолетние
исследования, ни для одной NP-полной задачи не найден полиномиальный
разрешающий алгоритм.
NP-полные задачи составляют подмножество NP-задач и отличаются тем
свойством, что все NP-задачи могут быть тем или иным способом сведены к ним.
Из этого и следует, что если для NP-полной задачи будет найдено P-решение, то
P-решение будет найдено для всех задач класса NP. Примером NP-полной задачи
является задача о конъюнктивной форме.
Исследования сложности алгоритмов позволили по-новому взглянуть на
решение многих классических математических задач и найти для ряда таких
задач (умножение многочленов и матриц, решение линейных систем уравнений и
др.) решения, требующие меньше ресурсов, нежели традиционные.
Большим разнообразием в отношении сложности отличаются задачи
дискретной математики. Алгоритмы решения многих из них имеют переборный
характер, что часто приводит к труднорешаемости задачи.
Нередки случаи, когда такая задача может быть решена только путем
применения алгоритма полного перебора. В таком случае сложность задачи
определяется тем, насколько быстро растет множество вариантов с
увеличением размера входных данных.
Зюзьков, В. М. Теория алгоритмов: учебное пособие / В. М. Зюзьков. – Томск: Изд-во Том.
Ун-та, 2005. – 101 с.
Ивин, А.А. Логика: учебник для гуманитарных факультетов / А.А. Ивин.- М.: Фаирпресс, 2002
Лихтарников, Л.М. Математическая логика: курс лекций, задачник-практикум и
решения / Л.М. Лихтарников, Т.Г. Сукачева.- СПб.: Лань, 1999.- 288 с.
Столл, Р.Р. Множества. Логика. Аксиоматические теории / Р.Р.Столл.- Пер. с англ.- М.,
1968.
Философский энциклопедический словарь / Гл. редакция: Л. Ф. Ильичёв, П. Н.
Федосеев, С. М. Ковалёв, В. Г. Панов.— М.: Советская энциклопедия. 1983.
Download