Другие разделы курса Информатика для студентов технических университетов

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

 

 

ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ

11.1. Алгоритмы и способы их описания

Понятие алгоритма
Способы описания алгоритмов

Структурные схемы алгоритмов

11.2. Этапы подготовки и решения задач на ЭВМ

11.3. Компиляция и интерпретация программ

11.4. Стили программирования

Процедурное  программирование

Функциональное программирование

Логическое программирование

Объектно-ориентированное программирование


11.5 Контрольные вопросы

11.6. Глоссарий

11.7. Библиографический список

ТЕСТ
Глава 3. ОСНОВЫ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

3.1. Элементы математической логики

Понятие «искусственный интеллект» возникло с появлением самых первых компьютерных программ, имитирующих интеллектуальную деятельность людей - игру в шахматы, шашки, доказательство теорем и решение задач на ЭВМ.

Все компьютерные программы, демонстрирующие интеллектуальное поведение, основаны на использовании определенного математического аппарата, опирающегося на законы математической логики. Без понимания этих законов невозможно понимание принципов работы вычислительных машин вообще и систем искусственного интеллекта в частности.

Логика - это наука, изучающая правильность суждений, рассуждений и доказательств. Примеры суждений: «снег белый», «2´2 = 5», «Земля круглая», «информатика - наука», «генетика - лженаука».

Суждения могут быть истинными или ложными. Истинность или ложность суждений проверяется их соответствием действительности. Пример истинного суждения - «снег белый». Пример ложного суждения - «генетика - лженаука».

Суждение истинно, если оно отражает действительное положение вещей. Примеры истинных суждений: «снег белый», «2´2 = 4», «театр - это искусство».

Суждение ложно, если оно противоречит истинному положению вещей. Примеры ложных утверждений - «2´2 = 5», «снег - черный», «Земля плоская».

Однако существуют суждения, об истинности или ложности которых нельзя судить однозначно. Пример таких суждений: «есть жизнь на Марсе», «машина может думать», «астрология - наука».

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

Математика - наука, признающая исключительно только однозначные суждения, утверждения и допускающая только строгие доказательства. В то время как люди в своих рассуждениях и высказываниях допускают различного рода неточности и двусмысленности.

Работа ЭВМ как автоматических устройств основана исключительно на математически строгих правилах выполнения команд, программ и интерпретации данных. Тем самым работа компьютеров допускает строгую однозначную проверку правильности своей работы в плане заложенных в них процедур и алгоритмов обработки информации.

Фундаментом науки о вычислительных машинах является конструктивная математика, в основе которой лежит математическая логика и теория алгоритмов с их однозначностью в оценке суждений и процедур вывода. Математическая логика с самого начала использовалась для описания элементов и узлов ЭВМ, а теория алгоритмов - для описания компьютерных программ.

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

Высказывания - это суждения, о которых может быть известно - что они истины или ложны. В исчислении высказываний не исследуется - о чем утверждается в этих суждениях.

Высказывания обычно обозначаются отдельными буквами или буквами с возможными индексами. Примеры простых высказываний и их обозначений:

А = «снег белый»

В1 = «вода теплая»

В2 = «земля твердая»

С математической точки зрения высказывания - это переменные, принимающие значения «истина» или «ложь». Эти два истинностных значения иногда заменяются словами «да», «нет», либо цифрами 1 и 0.

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

А(х) = «цвет яблока - х»

В(х, у) = «х < у»

где х, у - это некоторые переменные (объекты).

Значениями переменных в предикатах могут быть числа, слова, вектора, списки, функции, процедуры, алгоритмы или даже программы. Для математической логики существенно, чтобы эти переменные объекты имели конструктивную форму и были бы строго определены.

С математической точки зрения предикаты - это функции, имеющие одну или несколько переменных и принимающие логические значения «истина» или «ложь». Обозначения предикатов в математической логике схожи с обозначениями обычных математических функций: Р(х), Q(x,y) и т. д.

В информатике для обозначения переменных, функций и предикатов, а также их аргументов обычно используются осмысленные слова и словосочетания в целях простоты их ввода в ЭВМ. Например, предикаты, используемые для описания фактов в языке Пролог, обычно имеют обозначения, выражаемые в лексике родного языка:

любит (Маша, х);

цена (конфеты, с).

В форме предикатов с конкретными аргументами-значениями могут быть описаны факты любой базы данных. Примеры описания фактов из базы данных в записи на языке Пролог:

любит (Маша, цветы)                                       - Маша любит цветы

любит (Саша, машины)                                                   - Саша любит машины

цена (цветы, 1000)                                             - цена цветов 1000

цена (мороженое, 2500)                                                   - цена морженого 2500

В этой же форме предикатов с переменными могут описываться и простейшие запросы к базам данных на языке Пролог. Примеры запросов к указанной базе данных на языке Пролог и соответствующие ответы ЭВМ:

? любит (х, конфеты)                                        - Кто любит конфеты?

х = Маша

? цена (конфеты, с)                                            - Какова цена конфет?

с = 1000

В о п р о с ы

1. Что изучает математическая логика?

2. Что изучает логика?

3. Что такое высказывание?

4. Что такое предикат?

5. Когда суждения истинны?

6. Когда суждения ложны?

З а д а ч и

1. Приведите примеры истинных и ложных утверждений

а) из арифметики;

б) из геометрии;

в) из биологии;

г) из жизни.

2. Выразите отрицания для высказываний:

а) «мы пойдем в кино»;

б) «х = 0 или х = 1»;

в) «х = 0 и у = 0»;

г) «а = 0 и b = 0 и с = 0»;

д) «х = 0 или у = 0 или z = 0».

е) «мы не пойдем никуда»;

ж) «а = 0 или b = 0»;

з) «х > 0 и х < 100».

3.2. Основные логические операции

Суждения в математической логике могут быть простыми и сложносоставными. Примеры простых суждений:

х = 1       рост < 160

А                             цена (х, у)

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

логическая связка не                         - отрицание суждений;

логическая связка или                      - конъюнкция суждений;

логическая связка и                          - дизъюнкция суждений.

Примеры сложносоставных суждений:

не А                                                                        - неверно суждение А

С или В                                                 - истинно С или В

(х > 0) и (у > 0)                                                    - (х больше 0) и (у больше 0)

(глаза = синие) или (глаза = голубые)

Логическая связка не используется для выражения отрицаний. Примеры:

не (глаза = синие),                             - неверно, что глаза синие

не (А или В),                                        - неверно, что выполняется А или В

не (любит (Саша, конфеты))           - неверно, что Саша любит конфеты

Наглядной иллюстрацией этих логических связок с предикатами служат следующие диаграммы:

Отрицание не А истинно или ложно в зависимости от истинности исходного суждения А. Свойства отрицания не как логической связки можно описать таблицей истинности:

Таблица истинности:

А                             не А

да

нет

нет

да

Свойства отрицаний:

НЕ1: Отрицание ложно, если суждение истинно.

НЕ2: Отрицание истинно, если суждение ложно.

Для понимания отрицаний важно уметь выражать их в позитивной форме. Приведем примеры отрицания математических неравенств и их позитивные переформулировки:

не (х = 0)               º              (х ¹ 0)

не (х ¹ 0)               º              (х = 0)

не (х > 0)               º              (х £ 0)

не (х < 0)               º              (х ³ 0)

не (х ³ 0)               º              (х < 0)

не (х £ 0)               º              (х > 0)

Свойства отрицаний, записанные в таблицу истинностности, могут быть описаны как факты на языке Пролог:

не (да, нет);

не (нет, да);

После ввода этих фактов в ЭВМ с помощью запросов можно перепроверить свойства отрицаний:

? не (А, нет)

А = да

? не (А, да)

А = нет

Логическая связка и в математической логике называется конъюнкцией. Таблица истинности конъюнкции:

А                                   В                                       А и В

да

да

да

да

нет

нет

нет

да

нет

нет

нет

нет

Свойства конъюнкции:

И1: Конъюнкция А и В истинна, когда истинны оба суждения.

И 2: Конъюнкция А и В ложна, когда ложно хотя бы одно из суждений А или В.

Логическая связка или в математической логике называется дизъюнкцией. Таблица истинности дизъюнкции:

А                                    В                                      А или В

да

да

да

да

нет

да

нет

да

да

нет

нет

нет

Свойства дизъюнкции:

ИЛИ1: Дизъюнкция А или В истинна, когда истинно любое из суждений А или В.

ИЛИ2: Дизъюнкция А или В ложна, когда ложны оба суждения А и В.

Свойства конъюнкции и дизъюнкции также можно описать в виде фактов на языке Пролог:

Дизъюнкция:                                       Конъюнкция:

или (да, да, да);                                                  и2 (да, да, да);

или (да, нет, да);                                и2 (да, нет, нет);

или (нет, да, да);                                и2 (нет, да, нет);

или (нет, нет, нет);                             и2 (нет, нет, нет);

Опираясь на эти факты можно получить ответы на вопросы о свойствах дизъюнкции и конъюнкции с помощью ЭВМ:

? или (А, В, нет)                                  ? и 2 (А, В, да)

А = нет В = нет                                                    А = да В = да

? или (А, В, да)                                                    ? и 2 (А, В, нет)

А = да В = да                                                       А = да В = нет

А = да В = нет                                                     А = нет В = да

А = нет В = да                                                     А = нет В = нет

Одной из важнейших логических связок математической логики является импликация А ® В. Эта связка в математической логике используется для определения правил логического вывода.

Импликация А ® В - это логическое следование. Импликация А ® В читается: «если А, то В». Первое суждение в импликации называется посылкой, а второе суждение - следствием.

Приведем примеры правил логического вывода:

а) с использованием высказываний:

если «на улице дождь», то «на улице мокро»,

б) с использованием предикатов:

любит (х, конфеты) ® сластена (х).

Таблица истинности импликации:

А                                 В               А ® В

да

да

да

да

нет

нет

нет

да

да

нет

нет

да

Свойства импликации:                       

П1: «Импликация А ® В ложна,

когда посылка А истинна, а следствие В - ложно».

П2: «Импликация А ® В истинна,

когда истинно следствие либо ложны и посылка и следствие».

В языке Пролог импликации используются для описания правил вывода и определения новых логических понятий. Например, понятие «сластена» в языке .Пролог описывается следующим образом:

сластена (х) ¬ любит (х, конфеты);

Описание этого правила позволяет вводить в ЭВМ вопросы о «сластенах» и получать осмысленные ответы, исходя из сведений, хранящихся в базе данных:

? сластена (х)    - Кто сластена?

х = Маша

С помощью таблиц истинности могут быть описаны и проверены свойства любых сложносоставных высказываний. Соответственно с помощью этих таблиц на ЭВМ средствами языка Пролог могут быть проверены любые сложносоставные высказывания и законы исчисления высказываний.

Вернуться на главную