Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Экспертные системы. Учебное пособие по специальности 080801 «Прикладная информатика (в информационной сфере)»

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
627 Кб
Скачать

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

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

Таким образом, оболочки ЭС ориентированы на работу с пользова- телем-непрофессионалом в области программирования.

Оболочки ЭС обладают следующими свойствами:

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

представляют процедурные знания в виде правил;

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

Средства автоматизации проектирования экспертных систем

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

1)средства модификации функционирования оболочки;

2)набор компонентов, позволяющих конструировать собственные оболочки;

3)средства комплексирования компонентов в виде языка высокого уровня;

4)развитые интерактивные графические средства общения с пользователем.

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

51

На основе этой архитектуры во второй половине 1980-х годов было разработано несколько коммерческих программных продуктов, из которых наибольшую известность получили KEE, KnowledgeCraft и ART.

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

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

Эти программы предоставляют в распоряжение квалифицированного пользователя множество опций, и для последующих разработок, таких как КАРРА и CLIPS, они стали своего рода стандартом.

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

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

Пролог – язык высокого уровня, ориентированный на использование концепций и методов математической логики. Как следует из названия, Пролог предназначен для ПРОграммирования в терминах ЛОГики. Этот язык был разработан в Марселе в 1972 году. Основной особенностью Пролога, отличающей его от других языков, является декларативный характер написанных на нем программ, при котором задача описывается с помощью фактов и правил, затем формулируется утверждение, проверяемое на истинность.

52

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

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

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

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

экспертные системы и оболочки экспертных систем;

создание естественно-языковых интерфейсов для существующих систем;

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

символьные вычисления для решения уравнений, дифференцирования и интегрирования;

системы автоматизированного проектирования;

автоматизированное управление производственными процессами;

проектирование динамических реляционных баз данных;

автоматический перевод с одного языка на другой.

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

С точки зрения логики предикатов элементарные выражения имеют вид:

p(a1,...an ),

где p – имя предиката; a1,...an – аргументы. Аргументом предиката может быть константа, переменная или составной объект. Число аргументов предиката называется его арностью.

53

Типы предложений

Программа на Прологе есть совокупность предложений (утверждений).

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

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

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

likes (nick, helen).

Здесь устанавливается, что «Нику нравится Елена».

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

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

Система рассматривает вопрос как цель, к которой надо стремиться. Ответ на вопрос может оказаться положительным или отрицательным в зависимости от того, может ли быть достигнута соответствующая цель. В Прологе вопрос записывается почти так же, как и факт, за исключением того, что перед ним ставится специальный символ, представляющий собой вопросительный знак и следующее за ним тире («? – »). Вопрос «Имеет ли Мэри (данную конкретную) книгу?» запишется в следующем виде:

? – have (mary, book).

Обращение к Прологу с вопросом инициирует процедуру поиска в базе данных, ранее введенной в систему. Пролог ищет факты, сопоставимые с фактом в вопросе. Два факта сопоставимы, если их предикаты одинаковы и их соответствующие аргументы попарно совпадают. Если Пролог находит факт, сопоставимый с вопросом, то он отвечает «да». Если в базе данных такого факта не существует, то Пролог отвечает «нет». Ответ, выдаваемый Прологом, выводится на дисплей непосредственно под запросом.

54

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

Правила содержат утверждения, зависящие от условий. Следующее правило содержит утверждение, что «X является роди-

телем Y», если истинно утверждение, что «X является матерью Y» или «X является отцом Y»:

parent (X, Y) :– mother (X, Y); father (X, Y).

Символ «;» соответствует связке «или».

Встроенные предикаты

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

Отсечение

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

Выполнение и невыполнение целевого утверждения

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

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

Списки

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

55

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

Список, не содержащий элементов, называется пустым (или нуле-

вым).

Приведем пример списка:

[элемент 1, элемент 2, элемент 3...]

Списки могут содержать другие списки и переменные. Например, в Прологе допустимы следующие списки:

[a, III, [X,Y]]

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

Так, для списка [ элемент 1, элемент 2, элемент 3... ] элемент 1

это голова, а хвостом является список [ элемент 2, элемент 3... ].

ВПрологе введена специальная форма для представления списка

сголовой Х и хвостом Y. Это записывается как [X|Y], где для разделения Х и Y используется вертикальная черта.

Пустой список не имеет ни головы, ни хвоста.

Графически список можно представить в виде дерева (рис. 5) либо в виде диаграммы «виноградная лоза» (рис. 6). Конец списка обычно представляют как хвост, который является пустым списком.

На рисунках 5, 6 в качестве примера приведено графическое

представление списка [a, III, [X,Y]].

A

 

Проанализируем

диаграмму

 

 

 

«виноградная лоза» (рис. 6). Из ри-

III

 

сунка видно, что каждый ее горизон-

 

тальный уровень является списком,

[X,Y]

 

состоящим из некоторого числа эле-

[]

ментов.

 

 

Рисунок 5 – Графическое представление списка в виде дерева

56

[]

A III

[]

 

X Y

Рисунок 6 – Графическое представление списка в виде диаграммы «виноградная лоза»

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

2.3. Символьное вычисление и функциональное программирование

Язык Лисп (LISP) был разработан в 1958 году американским ученым Джоном Маккарти как функциональный язык, предназначенный для обработки списков (LISt Processing).

Сформулированная Джоном Мак-Каpти концепция символьной обработки информации компьютером восходит к идеям Черча и других математиков, известным как лямбда-исчисление с конца 20-х годов прошлого века. Выбирая лямбда-исчисление как теоретическую модель, Мак-Карти предложил рассматривать функции как общее базовое понятие, к которому могут быть сведены понятия, возникающие при программировании.

Долгое время язык использовался узким кругом исследователей. Широкое распространение он получил в конце 70-х – начале 80-х годов с появлением необходимой мощности вычислительных машин и соответствующего круга задач. В настоящее время Лисп – одно из главных инструментальных средств систем искусственного интеллекта. Он принят как один из двух основных языков программирования для министерства обороны США и постепенно вытесняет второй язык программирования – АДА.

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

Лисп – язык искусственного интеллекта и исследования наукоемких и новых направлений информационной обработки. Но этим влияние

57

Лиспа не ограничено. Диалекты Лиспа (Logo, ML, MuLisp, Scheme, Hope, AutoLisp, CommonLisp, Reduce и др.) заняли обширную нишу в области учебно-экспериментального программирования, связанного с развитием теории программирования, системного программирования, разработки

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

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

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

итеоретического программирования, лингвистики, химии, биологии, медицины и инженерного проектирования. В качестве примера можно привести AutoCAD – систему автоматизации инженерных расчетов, разработанную на Лиспе.

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

Возможности языка Лисп наиболее ярко проявились при решении задач искусственного интеллекта. Программная поддержка таких работ потребовала большого числа нетрадиционных решений и соглашений, основа которых предложена и опробована Дж. Мак-Карти с его коллега-

58

ми и учениками в определении языка Лисп и в первых реализациях Лисп

1.0и Лисп 1.5. Наиболее общие из них:

унификация понятий «функция» и «значение»;

кроме функций-констант, вполне допустимы функции-пере- менные;

множественность определений.

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

Многие современные языки и технологии программирования унаследовали опыт реализации и применения Лиспа и других языков символьной обработки. Так, например, Java берет на вооружение идеи неполной компиляции и освобождения памяти, объектно-ориентированное программирование реализует объекты, весьма похожие на списки свойств атомов Лиспа.

Символьные данные: выражения и представление данных

Выражения

Основу Лиспа составляют символьные выражения, которые называются S-выражениями и образуют область определения для функциональных программ.

S-выражение (Simbolic expresion) – основная структура данных в Лиспе.

Примеры S-выражений:

(Джон Смит 33 года) ((Мария 21) (Иван 25) (Федор 15))

S-выражение является либо атомом, либо списком.

Атомы

Атомы – это простейшие объекты Лиспа, из которых строятся остальные структуры.

Атомы бывают двух типов – символьные и числовые. Символьные атомы – последовательность букв и цифр; при этом

должен быть, по крайней мере, один символ, отличающий его от числа. К примеру, Анна АВ13 В54 10А

59

Символьный атом (или символ) – это не идентификатор переменой в обычном языке программирования. Символ, как правило, обозначает какой-либо предмет, объект, вещь, действие.

Символьный атом рассматривается как неделимое целое.

К символьным атомам применяется только одна операция: сравне-

ние.

Всостав символа могут входить:

+- * / @ $ % ^ _ \ <>

Числовые атомы – действительные числа. Примерами числовых атомов могут служить: 36, –12, 7.5E6

Атом является простейшим S-выражением.

Списки

В Лиспе список – это последовательность элементов. Элементами являются атомы или сами списки.

Списки заключаются в скобки, элементы списка разделяются пробелами.

(лекция) – 1 атом (л е к ц и я) – 6 атомов

(a b (c d) e) – 4 элемента

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

(+ 4 3) – 3 атома

(((((первый) 2) второй) 4) 5) – 2 элемента Список, в котором нет ни одного элемента, называется пустым

списком и обозначается «()» или символом NIL.

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

(NIL) – список, состоящий из атома NIL; (()) – то же самое, что и (NIL);

(NIL ()) – список из двух других списков. Рассматривают графическую нотацию представления списка

в Лиспе.

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

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]