Основы искусственного интеллекта




Скачать 473.71 Kb.
НазваниеОсновы искусственного интеллекта
страница2/4
Дата26.09.2012
Размер473.71 Kb.
ТипУчебно-методическое пособие
1   2   3   4

Представление знаний и разработка систем, основанных на знаниях


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

Игры и творчество.


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

Разработка естественноязыковых интерфейсов и машинный перевод


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

морфологический анализ - анализ слов в тексте;

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

семантический анализ - анализ смысла каждого предложения на основе некоторой предметно-ориентированной базы знаний;

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

Распознавание образов


Традиционное направление искусственного интеллекта, берущее начало у самых его истоков. Каждому объекту ставится в соответствие матрица признаков, по которой происходит ею распознавание. Это направление близко к машинному обучению, тесно связано с нейрокибернетикой.

Новые архитектуры компьютеров


Разработка новых аппаратных решений и архитектур, направленных на обработку символьных и логических данных (Пролог- и Лисп-машины, компьютеры V и VI поколений). Последние разработки посвящены компьютерам баз данных и параллельным компьютерам.

Интеллектуальные роботы


Роботы - это электромеханические устройства, предназначенные для автоматизации человеческого труда.

Со времени создания сменилось несколько поколений роботов.

Роботы с жесткой схемой управления. Практически все современные промышленные роботы принадлежат к первому поколению. Фактически это программируемые манипуляторы.

Адаптивные роботы с сенсорными устройствами. Есть образцы таких роботов, но в промышленности они пока не используются.

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

В настоящее время в мире изготавливается более 60 тыс. роботов в год.

Специальное программное обеспечение


Разработка специальных языков для решения задач невычислительного плана (LISP, PROLOG, SMALLTALK, РЕФАЛ и др.). Создание пакетов прикладных программ, ориентированных на промышленную разработку интеллектуальных систем, экспертных оболочек.

Обучение и самообучение


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

2. Система знаний

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

Знанием является  информация, которая от­ражает объективные свойства и связи  некоторых объектов, яв­лений, процессов, сущностей и отношениями между ними как в субъектив­ном, так и научном (объективном) выражении.

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

В системах искусственного интеллекта знания являются основным объектом формирования, обработки и исследования. База знаний, наравне с базой данных, - необходимая составляющая программного комплекса ИИ. Машины, реализующие алгоритмы ИИ, называют машинами, основанными на знаниях, а подраздел теории ИИ, связанный с построением экспертных систем, - инженерией знаний.

Знания можно разделить на процедурные и декларативные. Исторически первичными были процедурные знания, т.е. знания, "растворенные" в алгоритмах. Они управляли данными. Для их изменения требовалось изменять программы. Однако с развитием искусственного интеллекта приоритет данных постепенно изменялся, и все большая часть знаний сосредоточивалась в структурах данных (таблицы, списки, абстрактные типы данных), т.е. увеличивалась роль декларативных знаний.

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

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

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

В системах искусственного интеллекта используются следующие универсальные модели представления знаний:

  1. Семантические сети

  2. Фреймы

  3. Логическая модель

  4. Продукционная модель.

3. Модели представления знаний

3.1. Семантические сети

Семантическая сеть- это ориентированный граф, вершины которого - понятия, а дуги - отношения между ними.

Понятиями обычно выступают абстрактные или конкретные объекты, а отношения - это связи типа: "это" ("is"), "имеет частью" ("has part"), "принадлежит", "любит".

Можно ввести несколько классификаций семантических сетей. Например, по количеству типов отношений:

  • однородные (с единственным типом отношений);

  • неоднородные (с различными типами отношений).

Наиболее часто в семантических сетях используются следующие отношения:

  • связи типа "часть-целое" ("класс-подкласс", "элемент-множество" и т.п.);

  • функциональные связи (определяемые обычно глаголами "производит", "влияет"...);

  • количественные (больше, меньше, равно...);

  • пространственные (далеко от, близко от, за, под, над...);

  • временные (раньше, позже, в течение...);

  • атрибутивные связи (иметь свойство, иметь значение...);

  • логические связи (и, или, не) и др.



рис.1 Фрагмент семантической сети, описывающей предметную область «животные».

Виды отношений: 1–«часть-целое», 2–«подкласс-класс», 3–«имеет свойство», 4–«умеет».

Проблема поиска решения в базе знаний типа семантической сети сводится к задаче поиска фрагмента сети, соответствующего некоторой подсети, соответствующей поставленному вопросу.

Преимущества сетей: 1) модель адекватно отображает представления о мире, 2) позволяет работать не с полностью определенными знаниями.

Недостатки: Чем сложнее модель, тем больше сеть, тем сложнее поиск.

Эта модель ориентирована на использование языка LISP.

3.2. Фреймовая модель

Frame (рамка) является единицей представления информации об объекте, который можно описать некоторой совокупностью понятий и сущностей.

Фрейм имеет внутреннюю структуру, состоящую из множества элементов, называемыми слотами. Слоты могут быть разного типа (числа, тексты, математические соотношения)и содержать не только конкретное значение, но и имя процедуры, позволяющей вычислить её по некоторому алгоритму.

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

<имя_фрейма>

<имя_слота 1> (<значение_слота 1>)

<имя_слота 2> (<значение_слота 2>)



<имя_слота n> (<значение_слота n>)

Имеются 2 типа фреймов: фреймы-прототипы (пустые фреймы, описывающие понятия) и фреймы-экземпляры (описывают конкретные объекты).

Например, фрейм-прототип «студент» может быть задан следующим образом:

студент

ФИО (<значение_слота 1>)

группа (<значение_слота 2>)

предмет (<значение_слота 3>)

оценка (<значение_слота 4>)

Фрейм-экземпляр, описывающий конкретного студента:

студент

ФИО (Иванов Иван Иванович)

группа (401ФФ)

предмет (ОИИ)

оценка (отл.)

Важнейшим свойством теории фреймов является заимствованное из теории семантических сетей наследование свойств. И во фреймах, и в семантических сетях наследование происходит по АКО-связям (A-Kind-Of = это). Слот АКО

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

Для работы с фреймами был разработан язык FRL (Frame Representation Language).

Преимущества фреймовских систем:

  • фреймовское представление позволяет описывать и управлять сложными знаниями больших объемов на основе описания концептуальных объектов;

  • в целях увеличения гибкости системы, декларативные и процедурные знания концептуальных объектов комбинируют;

  • при решении сложных проблем используют комбинации управления выводом.

Недостатки: громоздкость, сложность модификации вида родовых отношений.

3.3. Продукционная модель

Продукционная модель, или модель, основанная на правилах, позволяет представить знания в виде предложений типа: Если (условие), то (действие).

если А1, А2, …, Аn, то В

А1, А2, …, Аn – факты

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

При использовании продукционной модели база знаний состоит из набора правил, Программа, управляющая перебором правил, называется машиной вывода. Чаще всего вывод бывает прямой (от данных к поиску цели) или обратный (от цели для ее подтверждения - к данным). Данные - это исходные факты, на основании которых запускается машина вывода - программа, перебирающая правила из базы.

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

Преимущества продукционных систем:

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

  • системы продукции являются модульными;

  • при необходимости системы продукций могут реализовывать сложные алгоритмы;

  • прозрачность системы (легко проследить логику и объяснить полученный результат).

Продукционные модели имеют два недостатка: при большом числе продукций (> 1000) проверка непротиворечивости становится сложнее; неоднозначность выбора из фронта готовой продукции.

Язык, использующий продукционную модель – ПРОЛОГ.

3.4. Логическая модель

В основе их описания лежит формальная система с четырьмя элементами:

М=<Т, Р, А, В > , где

Т – множество базовых элементов различной природы с соответствующими процедурами;

Р – множество синтаксических правил. С их помощью из элементов Т образуют синтаксически правильные совокупности. Процедура П(Р) определяет, является ли эта совокупность правильной;

А- подмножество множества Р, называемых аксиомами. Процедура П(А) дает ответ на вопрос о принадлежности к множеству А;

В – множество правил вывода. Применяя их к элементам А, можно получить новые синтаксически правильные совокупности, к которым можно применить эти правила снова. Процедура П(В) определяет для каждой синтаксически правильной совокупности, является ли она выводимой.

4. Экспертные системы

4.1. Назначение экспертных систем

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

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

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

Факты, свидетельствующие о необходимости разработки и внедрения экспертных систем:

  • нехватка специалистов, расходующих значительное время для оказания помощи другим;

  • потребность в многочисленном коллективе специалистов, поскольку ни один из них не обладает достаточным знанием;

  • низкая производительность, поскольку задача требует полного анализа сложного набора условий, а обычный специалист не в состоянии просмотреть (за отведенное время) все эти условия;

  • наличие конкурентов, имеющих преимущество в том, что они лучше справляются с поставленной задачей.

По функциональному назначению экспертные системы можно разделить на следующие типы:

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

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

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

    4. Простые экспертные системы индивидуального использования. Часто изготавливаются самостоятельно. Применяются в ситуациях, чтобы облегчить повседневную работу. Пользователь, организовав правила в некоторую базу знаний, создает на ее основе свою экспертную систему. Такие системы находят применение в юриспруденции, коммерческой деятельности, ремонте несложной аппаратуре.

Использование экспертных систем и нейронных сетей приносит значительный экономический эффект. Так, например: - American Express сократила свои потери на 27 млн. долларов в год благодаря экспертной системе, определяющей целесообразность выдачи или отказа в кредите той или иной фирме; - DEC ежегодно экономит 70 млн. долларов в год благодаря системе XCON/XSEL, которая по заказу покупателя составляет конфигурацию вычислительной системы VAX. Ее использование сократило число ошибок от 30% до 1%; - Sira сократила затраты на строительство трубопровода в Австралии на 40 млн. долларов за счет управляющей трубопроводом экспертной системы.

4.2. Типы задач, решаемых с помощью
экспертных
систем

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

  • обнаружение и идентификация различных типов океанских судов - SIAP;

  • определение основных свойств личности по результатам психодиагностического тестирования в системах АВТАНТЕСТ и МИКРОЛЮШЕР и др.

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

  • диагностика и терапия сужения коронарных сосудов - ANGY;

  • диагностика ошибок в аппаратуре и математическом обеспечении ЭВМ - система CRIB и др.

Мониторинг. Основная задача мониторинга - непрерывная интерпретация данных в реальном масштабе времени и сигнализация о выходе тех или иных параметров за допустимые пределы. Главные проблемы - "пропуск" тревожной ситуации и инверсная задача "ложного" срабатывания. Примеры ЭС:

  • контроль за работой электростанций СПРИНТ, помощь диспетчерам атомного реактора - REACTOR:

  • контроль аварийных датчиков на химическом заводе - FALCON и др.

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

  • проектирование конфигураций ЭВМ VAX ― 1/780 в системе XCON (или R1),

  • проектирование БИС - CADHELP;

  • синтез электрических цепей - SYN и др.

Прогнозирование. Прогнозирующие системы логически выводят вероятные следствия из заданных ситуаций. Примеры ЭС:

  • предсказание погоды - система WILLARD:

  • оценки будущего урожая - PI.ANT;

  • прогнозы в экономике - ЕСОN и др.

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

  • планирование поведения робота - STRIPS,

  • планирование промышленных заказов - 1SIS,

  • планирование эксперимента - MOLGEN и др.

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

  • обучение языку программирования Лисп в системе "Учитель Лиспа";

  • система PROUST - обучение языку Паскаль и др.

Решения экспертных систем обладают прозрачностью, т.е. могут быть объяснены пользователю на качественном уровне.

Экспертные системы способны пополнять свои знания в ходе взаимодействия с экспертом.

4.3. Структура экспертных систем

Структура экспертных систем включает в себя следующие компоненты:

База знаний – ядро ЭС, совокупность знаний предметной области, записанная на машинный носитель в форме, понятной эксперту и пользователю (обычно на некотором языке, приближенном к естественному). Параллельно такому "человеческому" представлению существует БЗ во внутреннем "машинном" представлении. Она состоит из набора фактов и правил.

Факты – описывают объекты и взаимосвязь между ними. Правила – используется в базе знаний для описания отношений между объектами. На основе отношений, задаваемых правилами, выполняется логический вывод.

База данных – предназначена для временного хранения фактов и гипотез, содержит промежуточные данные или результат общения систем с пользователем.

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

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

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

Подсистема приобретения знаний – программа, представляющая инженеру по знаниям возможность создавать БЗ в диалоговом режиме. Включает в себя систему вложенных меню, шаблонов языка представления знаний, подсказок ("help" - режим) и других сервисных средств, облегчающих работу с базой.

Экспертная система работает в двух режимах:

  • приобретения знаний (определение, модификация, дополнение);

  • решения задач.

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

4.4. Основные этапы разработки экспертных систем

Технологический процесс разработки промышленной экспертной системы можно разделить на шесть основных этапов:

1. Выбор подходящей проблемы

Деятельность, предшествующая решению начать разрабатывать конкретную ЭС, включает:

  • определение проблемной области и задачи;

  • нахождение эксперта, желающего сотрудничать при решении проблемы, и назначение коллектива разработчиков;

  • определение предварительного подхода к решению проблемы;

  • анализ расходов и прибыли от разработки;

  • подготовку подробного плана разработки.

2. Разработка прототипной системы

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

Прототип должен удовлетворять двум требованиям:

  • прототипная система должна решать наиболее типичные задачи, но и не должна бать большой.

  • время и трудоемкость создания прототипа должны быть незначительными.

Оценивается и проверяется работа программ прототипа с целью приведения в соответствие с реальными запросами пользователей. Прототип проверяется на:

  • удобство и адекватность интерфейсов ввода-вывода (характер вопросов в диалоге, связность выводимого текста результата и др.)

  • эффективность стратегии управления (порядок перебора, использование нечеткого вывода и др.);

  • качество проверочных примеров;

  • корректность базы знаний (полнота и непротиворечивость правил).

Эксперт работает, как правило, с инженером по знаниям, который помогает структурировать знания, определять и формировать понятия и правила, нужные

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

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

3. Развитие прототипа до промышленной экспертной системы.

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

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

4. Оценка системы

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

  • критерии пользователей (понятность и "прозрачность" работы системы, удобство интерфейсов и др.);

  • критерии приглашенных экспертов (оценка советов-решений, предлагаемых системой, сравнение ее с собственными решениями, оценка подсистемы объяснений и др.);

  • критерии коллектива разработчиков (эффективность реализации, производительность, время отклика, дизайн, широта охвата предметной области, непротиворечивость БЗ, количество тупиковых ситуаций, когда система не может принять решение, анализ чувствительности программы к незначительным изменениям в представлении знаний, весовых коэффициентах, применяемых в механизмах логического вывода, данных и т.п.).

5. Стыковка системы

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

Стыковка включает обеспечение связи ЭС с существующими базами данных и другими системами на предприятии, а также улучшение системных факторов, зависящих от времени, чтобы можно было обеспечить ее более эффективную работу и улучшить характеристики ее технических средств, если система работает в необычной среде (например, связь с измерительными устройствами).

6. Поддержка системы

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

4.5. Инструментальные средства разработки
экспертных
систем

Языки искусственного интеллекта

Лисп (LISP) и Пролог (Prolog) - наиболее распространенные языки, предназначенные для решения задач искусственного интеллекта. Есть и менее распространенные языки искусственного интеллекта, например РЕФАЛ, разработанный в России. Универсальность этих языков меньшая, нежели традиционных языков, но ее потерю языки искусственного интеллекта компенсируют богатыми возможностями по работе с символьными и логическими данными, что крайне важно для задач искусственного интеллекта. На основе языков искусственного интеллекта создаются специализированные компьютеры (например, Лисп-машины), предназначенные для решения задач искусственного интеллекта. Недостаток этих языков - неприменимость для создания гибридных экспертных систем.

Специальный программный инструментарий

Библиотеки и надстройки над языком искусственного интеллекта Лисп: KEE (Knowledge Engineering Environment), FRL (Frame Representation Language), KRL (Knowledge Represantation Language), ARTS и др., позволяющие пользователям работать с заготовками экспертных систем на более высоком уровне, нежели это возможно в обычных языках искусственного интеллекта.

"Оболочки"

"Оболочки" – это пустые" версии существующих экспертных систем, т.е. готовые экспертные системы без базы знаний. Примером такой оболочки может служить EMYCIN (Empty MYCIN - пустой MYC1N), которая представляет собой незаполненную экспертную систему MYCIN. Достоинство оболочек в том, что они вообще не требуют работы программистов для создания готовой экспертной системы. Требуется только специалисты в предметной области для заполнения базы знаний. Однако если некоторая предметная область плохо укладывается в модель, используемую в некоторой оболочке, заполнить базу знаний в этом случае весьма не просто.

5. ПРОЛОГ - язык логического
программирования


5.1. Общие сведения о ПРОЛОГе.

ПРОЛОГ(ПРОграммирование в ЛОГике) - язык логического программирования, предназначен для решения задач из области искусственного интеллекта (создание ЭС, программы-переводчики, обработка естественного языка). Он используется для обработки естественного языка и обладает мощными средствами, позволяющими извлекать информацию из баз данных, причем методы поиска, используемые в нем, принципиально отличаются от традиционных.

Основные конструкции ПРОЛОГа заимствованы из логики. ПРОЛОГ относится не к процедурным, а к декларативным языкам программирования. Он ориентирован не на разработку решений, а на систематизированное и формализованное описание задачи с тем, чтобы решение следовало из составленного описания.

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

Фундаментальные свойства ПРОЛОГа:

  1. механизм вывода с поиском и возвратом

  2. встроенный механизм сопоставления с образцом

  3. простая и легко изменяемая структура данных

  4. отсутствие указателей, операторов присваивания и перехода

  5. естественность рекурсии

Этапы программирования на ПРОЛОГе:

  1. объявление фактов об объектах и отношениях между ними;

  2. определение правил взаимосвязи объектов и отношений между ними;

  3. формулировка вопроса об объектах и отношениях между ними.

Теоретической основой ПРОЛОГа является раздел символьной ло­гики, называемый исчислением предикатов.

Предикат – это имя свойства или отношения между объектами с последовательностью аргументов.

<имя_предиката>(t1, t2, ..., tn) ), t1,t2,...,tn – аргументы

Например, факт black(cat) записан с использованием предиката black, имеющего один аргумент. Факт написал(шолохов, "ТИХИЙ ДОН") записан с использованием предиката написал, имеющего два аргумента.

Число аргументов предиката называется арностью предиката и обозначается black/1 (предикат black имеет один аргумент, его арность равна единице). Предикаты могут не иметь аргументов, арность таких предикатов равна 0.

Язык Пролог вырос из работ Алана Колмерауэра (A. Colmerauer) по обработке естественного языка и независимых работ Роберта Ковалького (R. Kowalski) по приложениям логики к программированию (1973 г.).

Наиболее известна в России система программирования Turbo Prolog — коммерческая реализация языка для IBM-совместимых ПК. В 1988 г. вышла значительно более мощная версия Turbo Prolog 2.0, включающая усовершенствованную интегрированную среду разработки программ, быстрый компилятор и средства низкоуровневого программирования. Фирма Borland распространяла эту версию до 1990 г., а затем компания PDC приобрела монопольное право на использование исходных текстов компилятора и дальнейшее продвижение системы программирования на рынок под названием PDC Prolog.

В 1996 г. Prolog Development Center выпускает на рынок систему Visual Prolog 4.0. В среде Visual Prolog используется подход, получивший название «визуальное программирование», при котором внешний вид и поведение программ определяются с помощью специальных графических средств проектирования без традиционного программирования на алгоритмическом языке.

В Visual Prolog входят интерактивная среда визуальной разработки (VDE — Visual Develop Environment), которая включает текстовый и различные графические редакторы, инструментальные средства генерации кода, конструирующие управляющую логику (Experts), а также являющийся расширением языка интерфейс визуального программирования (VPI — Visual Programming Interface), Пролог-компилятор, набор различных подключаемых файлов и библиотек, редактор связей, файлы, содержащие примеры и помощь.

5.2. Предложения: факты и правила

Программа на ПРОЛОГе состоит из предложений, которые могут быть фактами, правилами или запросами.

Факт – это утверждение о том, что соблюдается некоторое конкретное соотношение между объектами. Факт используется для того, чтобы показать простую взаимосвязь между данными.

Структура факта:

<имя_отношения>( t1,t2,...,tn) ), t1,t2,...,tn– объекты

Примеры фактов:

учится (ира, университет). % Ира учится в университете

родитель(иван, алексей). % Иван является родителем Алексея

язык_программирования (пролог). % Пролог – это язык программирования

Набор фактов составляет базу данных. В виде факта в программе записываются данные, которые принимаются за истину и не требуют доказательства.

Правила используются для того, чтобы установить отношения между объектами на основе имеющихся фактов.

Структура правила:

<имя_правила> :- <тело правила> или

<имя_правила > if <тело правила>

Левая часть правила вывода называется головой правила, а правая часть - телом. Тело может состоять из нескольких условий, перечисленных через запятую или точку с запятой. Запятая означает операцию «логическое И», точка с запятой – операцию «логическое ИЛИ». В предложениях используются переменные для обобщенной формулировки правил вывода. Переменные действуют только в одном предложении. Имя в разных предложениях указывает на разные объекты. Все предложения обязательно заканчиваются точкой.

Примеры правил:

мать (Х, У) :- родитель (Х, У), женщина(Х).

студент (X) :- учится (X, институт); учится (X, университет).

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

5.3. Запросы

Если имеется база данных, то можно написать запрос (цель) к ней. Запрос — это формулировка задачи, которую программа должна решить. Его структура такая же, как у правила или факта. Существуют запросы с константами и запросы с переменными.

Запросы с константами позволяют получить один из двух ответов: “да” или “нет”

Например, имеются факты:

знает (лена, таня).

знает (лена, саша).

знает (саша, таня).

а) Знает ли Лена Сашу?

запрос: знает (лена, саша).

Результат: yes

б) Знает ли Таня Лену?

запрос знает (таня, лена).

Результат: no

Если в запрос входит переменная, то интерпретатор пытается найти такие ее значения, при которых запрос будут истинным.

а) Кого знает Лена?

запрос: знает (лена, Х).

Результат:

Х = таня

Х = саша

б) Кто знает Сашу?

запрос: знает (Х, саша).

Результат: Х = лена

Запросы могут быть составными, т.е. состоять из нескольких простых запросов. Они объединяются знаком “,“, который понимается как логическая связка “и”.

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

Для ответа, есть ли общие знакомые у Лены и Саши, следует составить запрос:

знает (лена, Х), знает (саша, Х).

Результат:

Х = Таня

5.4. Переменные в ПРОЛОГе

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

Имя переменной должно начинаться с прописной буквы или символа подчеркивания и содержать только символы букв, цифр и подчеркивания: Х, _у, АВ, Х1. Переменная, не имеющая значения, называется свободной, переменная, имеющая значение – конкретизированной.

Переменная, состоящая только из символа подчеркивания, называется анонимной и используется в том случае, если ее значение несущественно. Например, имеются факты:

родитель (ира, таня).

родитель (миша, таня).

родитель (оля, ира).

Требуется определить всех родителей

Запрос: родитель(Х, _)

Результат:

Х = Ира

Х = Миша

Х = Оля

Областью действия переменной является утверждение. В пределах утверждения одно и то же имя принадлежит одной и той же переменной. Два утверждения могут использовать одно имя переменной совершенно различным образом.

В ПРОЛОГе нет оператора присваивания, его роль выполняет оператор равенства =. Цель X=5 может рассматриваться как сравнение (если переменная X имеет значение) или как присваивание (если переменная X свободна).

В ПРОЛОГе нельзя для увеличения значения переменной записать X=X+5. Следует использовать новую переменную: Y=X+5.

5.5. Объекты и типы данных в ПРОЛОГе

Объекты данных в ПРОЛОГе называются термами. Терм может быть константой, переменной или составным термом (структурой). Константами являются целые и действительные числа (0, -l, 123.4, 0.23E-5), а также атомы.

Атом – любая последовательность символов, заключенная в кавычки. Кавычки опускаются, если строка начинается со строчной буквы и содержит только буквы, цифры и знак подчеркивания (т.е. если ее можно отличить от обозначения переменных). Примеры атомов:

abcd, “a+b”, “студент Иванов”, пролог, “Пролог”.

Структура позволяет объединить несколько объектов в единое целое. Она состоит из функтора (имя) и последовательности термов.

Например, data (15, апрель, 1983)

data – функтор, (15, апрель, 1983) – термы

Число компонент в структуре называется арностью структуры: data/3.

Структура может содержать другую структуру в качестве одного из своих объектов.

день_рождения (person(“Маша”,”Иванова”), data(15,апрель,1983))

Доменом в ПРОЛОГе называют тип данных. Стандартными доменами являются:

integer – целые числа.

real – вещественные числа.

string – строки (любая последовательность символов, заключенная в кавычки).

char – одиночный символ, заключенный в апострофы.

symbol – последовательность латинских букв, цифр и символов подчеркивания, начинающаяся с маленькой буквы или любая последовательность символов, заключенная в кавычки.

5.6. Основные разделы ПРОЛОГ-программы

Как правило, программа на ПРОЛОГе состоит из четырех разделов.

DOMAINS – секция описания доменов (типов). Секция применяется, если в программе используются нестандартные домены.

Например:

name = string

data = integer

PREDICATES – секция описания предикатов. Секция применяется, если в программе используются нестандартные предикаты.

Например:

знает (name, name)

студент (name)

CLAUSES – секция предложений. Именно в этой секции записываются предложения: факты и правила вывода.

Например:

знает (лена, иван).

студент (иван).

знаком_студент(X,Y):- знает (X,Y ), студент (Y).

GOAL – секция цели. В этой секции записывается запрос.

Например:

знаком_студент(лена,X).


Простейшая программа может содержать только раздел GOAL, например:

GOAL

write (“Введите Ваше имя: ”), readln (Name),

write (“Здравствуйте, ”, Name, “!”).
1   2   3   4

Похожие:

Основы искусственного интеллекта iconУчебно-методический комплекс по дисциплине “основы искусственного интеллекта”
...
Основы искусственного интеллекта icon«Основы искусственного интеллекта»
Рабочая учебная программа по дисциплине «Основы искусственного интеллекта» для ооп «050100 Физика и информатика по циклу б в. 13...
Основы искусственного интеллекта iconУчебно-методический комплекс по дисциплине “основы искусственного интеллекта” для специальности
...
Основы искусственного интеллекта iconУчебно-методический комплекс по дисциплине “основы искусственного интеллекта” для специальности
...
Основы искусственного интеллекта iconВ. К. Финн к структурной когнитологии: феноменология сознания с точки зрения искусственного интеллекта
Ки и искусственного интеллекта – полигона экспериментальной проверки научных средств имитации рациональности и продуктивного мышления....
Основы искусственного интеллекта iconКонспект лекций по дисциплине «Системы искусственного интеллекта»
Место среди других наук, первые шаги и современные направления искусственного интеллекта
Основы искусственного интеллекта icon«шаг за шагом» создание искусственного интеллекта гашева Светлана
Интеллект рассматривают как прикладную область исследований, связанных с имитацией отдельных функций интеллекта человека [6]. Распознавание...
Основы искусственного интеллекта iconФилософия искусственного интеллекта в свете новой методологии познания
М.: Философия искусственного интеллекта. Материалы Всероссийской междисциплинарной конференции, иф ран, 2005 г., с. 143-146
Основы искусственного интеллекта iconО работе научного советаран по методологии искусственного интеллекта
Первой Всероссийской междисциплинарной конференции, посвященной философским, методологическим и теоретическим проблемам искусственного...
Основы искусственного интеллекта iconСтатья рассматривает вопросы в области информационных технологий в системах: человек-машина, человек-информация. В статье раскрыты моменты: функции обработки информации,
Целью данной работы является моделирование алгоритма искусственного интеллекта на доминантах функций: интроверсии, экстраверсии;...
Разместите кнопку на своём сайте:
Библиотека


База данных защищена авторским правом ©lib.znate.ru 2014
обратиться к администрации
Библиотека
Главная страница