Специализированный язык LISP.
Инструментальные средства проектирования интеллектуальных систем.
Программные средства инженерии знаний и реализации интеллектуальных информационных систем (ИИС) можно разделить на следующие группы: универсальные языки программирования (в том числе традиционные), универсальные языки представления знаний и оболочки.
Выше уже говорилось, что ИИС представляют собой некоторый программный комплекс, позволяющий решать производственный и экономические задачи на уровне человека – оператора или управленца (эксперта). Однако очевидно, что любую программу можно написать на машинно – ориентированном языке (ассемблере) или на универсальном языке высокого уровня (ПЛ/1, Си, Бейсик, Алгол, Ада, Фортран, Паскаль и т.д.). В этой связи возникает вполне справедливый вопрос: зачем рассматривать специализированные средства, для изучения которых требуется определенное время, если универсальным языком высокого уровня (либо языком ассемблера) владеет практически любой программист? Ответ на этот вопрос взят из практики: процесс программирования систем ИИ на специализированных средствах занимает в 2-3 раза меньше времени, чем на универсальных. Однако следует всегда помнить, что параметры эффективности (объем памяти и быстродействие) ИИС, реализованных на базе специализированных средств, в большинстве случаев ниже, чем при реализации ИИС на универсальных средствах.
Еще одним фактором, существенным для выбора ИИС инструментальных программных средств при разработке ИИС, является потенциальная возможность взаимодействия с программными средствами, используемыми на различных уровнях иерархии интегрированных корпоративных информационных систем.
В этой связи оптимальным решением задачи выбора программных средств для реализации ИИС следует, по – видимому, считать следующее: первый прототип (или прототипы: исследовательский, демонстрационный) реализуется на специализированных средствах. В случае достаточной эффективности этих средств на них могут быть написаны действующий прототип, и даже промышленная система. Однако в большинстве случаев прототип и даже промышленная система. Однако в большинстве случаев прототип следует «переписать» на традиционных программных средствах.
Рассмотрим наиболее известные и широко применяемые программные средства интеллектуальных систем.
Анализ традиционных языков программирования и представления знаний.
Специализированный язык LISP.
Одним из самых популярных языков программирования в системах ИИ является язык LISP[71]. Этот язык был создан в 60-х годах американским ученым Дж. Маккарти и его учениками. На сегодняшний день существует около 20 диалектов этого языка. Наиболее известными являются INTERLISP, FRANZLISP, QLISP, COMMONLISP. В Советском Союзе разработаны также несколько версий языка LISP. На языке LISP написаны многие экспертные системы (MYCIN, INTERNIST, KEE и др.), системы естественно – языкового общения (MARGIE, SHRDLU, ДИЛОС и др.), интеллектуальные операционные системы (FLEX).
Популярность языка LISP в первую очередь объясняется тем, что он с помощью довольно простых конструкций позволяет писать сложные и изящные системы обработки символьной информации. К сожалению, почти все существующие LISP – системы имеют низкую вычислительную эффективность. Именно это не дает возможность языку LISP выйти за рамки «академических» экспериментальных систем. Однако бурное повышение производительности современных компьютеров, а также разработка LISP – машин типа С/330, SYMBOLICS и т.д. вселяет оптимизм в отношении будущего языка.
Язык LISP имеет очень простой синтаксис, поскольку возможны только две его конструкции: атом и список.
Атом – элементарная конструкция языка LISP, характеризуемая своим именем и значением. В некоторых LISP – системах с атомом связывается также определенный список свойств. Примерами атомов могут служить: А, В, А1, ВРЕМЯ ВЫЛЕТА, ВЫПУСК, АИ-93 и т.д.
Список – конструкция LISP, состоящая из множества атомов и подсписков. В LISP принята скобочная нотация описания списков. Примеры списков (А1, А2,…,АК), (А,В) (ВРЕМЯ ВЫЛЕТА, 15_40) (ВЫПУСК АИ-93).
Существенной особенностью языка LISP является то, что здесь «данные» и «программы» внешне ничем не отличаются друг от друга. Это дает возможность писать на LISP «программы», манипулирующие не только данными, но и «программами». Именно данное свойство позволяет LISP стать изящным средством программирования систем ИИ. Понятия «данные», и «программа» в LISP не используются, их заменяют такие понятия, как выражение и функция.
LISP – функциональный язык. Все процедуры обработки информации оформляются в виде функций. Благодаря стандартному набору системных функций, LISP может быть «расширен» за счет пользовательских функций. Системные функции делятся на арифметические, списковые функции, функции ввода – вывода, предикаты и др.
LISP – это рекурсивный язык, т.е. обеспечивает возможность определения функций с помощью самих себя.
Рекурсивность LISP удобна при решении очень популярной в искусственном интеллекте задачи «поиска по дереву», которая является довольно обобщенной и охватывает широкий класс конкретных задач, начиная шахматными и кончая задачами «принятия решений» или управления сложными объектами. В каждом конкретном случае вершины дуги будут иметь свою семантику. Например, при решении шахматной задачи вершинам могут соответствовать возможные позиции, а дугам те или иные ходы, приводящие к этим позициям. Последовательность ходов, обязательно приводящих к «выигранной» позиции, и будет решением данной задачи. Древовидная структура очень часто имеет также и сценарий диалога человека с ЭВМ. В этом случае с вершинами соотносятся состояния (шаги) диалога, а с дугами – возможные переходы из одного состояния в другое.
9.1.2 Фрейм – ориентированный язык FRL.
Одним из известных языков представления знаний является язык FRL (Frame Representation Language)[92], относящийся к классу фрейм - ориентированных. Основная единица знания в таких языках – фрейм, представляющий собой информационную модель (или описание) некоторой стереотипной ситуации. «Стереотипная ситуация», является обобщением таких понятий, как действия, процессы, события, объекты, свойства, модификаторы и т.д.
Фрейм в FRL – это совокупность поименованных, ассоциативных списков, содержащая до пяти уровней подструктур. Подструктурами фреймов могут быть слоты, аспекты, данные, комментарии и сообщения. Основной структурной единицей во фрейме являются слоты, отражающие взаимосвязи между понятиями предметной области. Слот характеризуется своим именем и значением. Имена слотов назначаются проектировщиками БЗ. Однако FRL имеет также и зарезервированные имена слотов: АКО, INSTANSE, CLAS SIFICATON. В качестве значения слотов могут выступать числа, символы, имена других фреймов, имена процедур.
Фреймы в FRL строятся с помощью процедуры FASSERT.
В FRL имеется семь зарезервированных аспектов: ¤VALUE, ¤DEFAULT, ¤IF-NEEDED, ¤IF-ADDED, ¤IF-REMOVED, ¤IF-INSTANTIAD, ¤REQUIRE. Данные из аспекта ¤VALUE интерпретируются как значение слота, а из аспекта ¤DEFAULT – как значение по умолчанию. Остальные пять аспектов связывают с фреймом процедуральные знания. Процедуры из аспекта ¤IF-ADDED активизируются в том случае, если в слот добавлено новое данные; из аспекта ¤IF-REMOVED – если из слота удаляется то или иное данные. Процедуры из аспекта ¤IF-NEEDED запускаются при создании экземпляров фрейма. Аспект ¤REQUIRE содержит процедуры, которые ограничивают значение слота.
Важным свойством FRL является наличие в нем встроенного механизма «наследования свойств». Суть этого механизма заключается в следующем. Все понятия предметной области в БЗ организовываются в виде иерархической классификационной системы, где каждое понятие связывается с помощью специальных отложений с более конкретными. Для реализации этих отложений существуют слоты АКО и INSTANSE. Слот АКО связывает понятие с более общим (родовым). Слот INSTANSE связывает понятие с более конкретным (видом). Свойства присущие всему классу, описывают только во фрейме класса, а остальные фреймы этого класса могут наследовать это свойство в случае надобности.
Процедуры обработки FRL подразделяются на независимые и присоединенные. Независимо от типа эти процедуры пишутся обычно на языке реализации самого FRL. На сегодняшний день большинство FRL – систем написаны на LISP.
Дата добавления: 2017-02-20; просмотров: 743;