- •Системы искусственного интеллекта
- •Лекция 1
- •Лекция 2
- •Лекция 3
- •Лекция 4
- •Восходящее и нисходящее проектирование пс.
- •Базовые управляющие структуры.
- •Общие правила структурного построения пс.
- •Лекция 5
- •Лекция 6
- •Лекция 7 Лекция 8
- •Лекция 9
- •Лекция 10
- •Лекция 11
- •Лекция 12
- •2.1 Процесс решения задач в системе семантического моделирования
- •2.2 Представление знаний о предметной области в виде вычислительных метасетей
- •2.3 Средства проектирования и реализации интеллектуальных пакетов прикладных программ
- •Лекция 13
- •2.1. Назначение, особенности и области применения экспертных систем
- •2.2. Классификация экспертных систем
- •Лекция 14
- •2.3. Структура экспертных систем
- •2.4. Основные режимы работы экспертных систем
- •2.5. Технология и средства разработки экспертных систем
- •2.6. Модели представления знаний
- •2.7. Механизм обработки знаний
- •2.8. Средства приобретения знаний
- •Лекция 15
- •2.9. Направления развития экспертных систем
Лекция 4
Для выявления общих черт, присущих системам моделирования семантики, и выбора тех из них, которые воплотятся в разработанную систему, проведен анализ существующих концепций решения задач на ЭВМ. В анализе уделяется внимание не только парадигме программирования, но и всему процессу поиска решения от формализации до автоматических вычислений. В отличие от других обзоров известных моделей представления знаний (например, [47]) в данной главе основной акцент делается на удобство и выразительность формального аппарата моделирования семантики предметной области, эффективность реализации в нем известных формализмов и моделей.
В обзор не включены системы моделирования семантики, основанные на использовании эмпирических неформализованных знаний, область исследований ограничена формальными и формализованными моделями. По этой причине не рассматриваются вопросы приобретения знаний, а только их представления и обработки.
Определим те основные элементы концепции решения задач на ЭВМ, по которым сравниваются различные подходы. При этом будем называть метод автоматизации решения задач, как это принято в [90] и других известных работах, концепцией программирования, понимая под программированием весь спектр вопросов формализации, аналитики, алгоритмизации и разработки программы, а не только кодирования алгоритма.
Концепцией программирования называется модель вычислений (и базирующееся на ней семейство языков программирования) вместе с адекватными этой модели систематическими методами программирования - парадигмой программирования.
Модель вычислений - это набор формальных средств для описания вычислений (т.е. язык с точным (формальным) синтаксисом) вместе с точными указаниями, как исполнять такие описания, т.е. описаниями того, что называется операционной семантикой языка моделей. Такая семантика может задаваться в терминах элементарных действий (актов вычислений) выполняемых некоторой машиной, описание устройства которой также включается в модель вычислений.
Примерами моделей вычислений могут служить машины Тьюринга и Поста, нормальные алгоритмы Маркова, язык рекурсивных функций, лямбда-определимые функции, системы равенств Эрбрана, Геделя, алгоритмы Колмогорова, Успенского и др.. Многие из этих моделей уже нашли свое применение в программировании.
Дескриптивность модели вычислений означает, что ее язык допускает другую, отличную от операционной, семантику, определяющую и как, и что надо вычислять. Это позволяет смотреть на язык такой модели как на язык спецификаций задач. Дескриптивных семантик языка моделей может быть несколько (так же, как и операционных). Важно, чтобы они были согласованы с выделенной операционной семантикой, т.е. чтобы дескриптивная и операционная семантики определяли бы по возможности один и тот же класс объектов.
Парадигма программирования определяет методологию решения задач на данной вычислительной модели. Парадигма программирования, с одной стороны, тесно связана с вычислительной моделью и методом ее практической реализации. С другой стороны, она во многом определяет способ формализации задачи и должна быть хорошо согласована с выбранным формализмом моделирования.
В работе для сравнительного анализа выбраны 8 основных концепций моделирования семантики предметной области: процедурное программирование, функциональное программирование, логическое программирование, моделирование с помощью правил продукций, объектно-ориентированный подход, семантические сети, фреймы, дедуктивный синтез программ.
Результаты анализа приведены в таблице (рис. 1.3 с. 44).
Результаты анализа основных концепций программирования представлены на рис. 1.3. Рассматриваются следующие свойства:
А - парадигма программирования
а - способ декомпозиции задачи
(1 - функциональная, 2 - статусная, 4 - объектная)
б - виды представляемых знаний
(1 - процедурные, 2 - декларативные, 4 - метазнания)
в - способ постановки задачи
(1 - алгоритм, 2 - запрос к базе знаний)
г - способ решения задачи
(1 - выполнение алгоритма, 2 - редукция, 4 - логический
вывод)
д - семантика языка программирования
(1 - операционная, 2 - дескриптивная)
е - реализация интерфейса пользователя
(1 - команды, 2 - WIMP, 4 - DWIM)
Б - вычислительная модель
а - сложность реализации на традиционных ЭВМ
(1 - алгоритм вывода, 2 - правила редукции, 4 -
базовые процедуры)
б - возможности распараллеливания
(1 - невозможно, 2 - требуется специальный анализ
алгоритмов, 4 - естественное распараллеливание)
в - сложность решения задач
(1 - экспоненциальная, 2 - полиномиальная, 4 - линейная)
Значения свойств ранжированы по степени предпочтительности
(чем больше значение, тем оно предпочтительнее). Если концепция
программирования обладает сразу несколькими значениями одного
свойства в разных реализациях, для А эти значения суммируются,
для Б - берется наихудшее.
|
|
А |
Б | |||||||
|
КОНЦЕПЦИИ ПРОГРАММИРОВАНИЯ |
а |
б |
в |
г |
д |
е |
а |
б |
в |
|
процедурная |
1 |
1 |
1 |
1 |
1 |
3 |
4 |
2 |
4 |
|
функциональная |
3 |
3 |
2 |
2 |
3 |
3 |
2 |
4 |
4 |
|
логическая |
3 |
7 |
2 |
4 |
3 |
7 |
1 |
4 |
1 |
|
продукционная |
3 |
5 |
2 |
5 |
3 |
3 |
1 |
2 |
4 |
|
объектно-ориентированная |
4 |
3 |
1 |
1 |
1 |
3 |
4 |
4 |
4 |
|
сетевая |
2 |
6 |
2 |
4 |
2 |
7 |
1 |
2 |
2 |
|
фреймовая |
3 |
3 |
2 |
1 |
1 |
3 |
4 |
2 |
4 |
|
доказат. программирование |
7 |
7 |
3 |
5 |
3 |
7 |
1 |
2 |
2 |
Рис. 1.3. Свойства основных концепций программирования.
В данной таблице под способом декомпозиции задачи понимается принцип ее разбиения на подзадачи, решение которых приводит к решению общей задачи. В этом смысле функциональная декомпозиция иерархически определяет набор операций для решения задачи, статусная - структуры данных, объектная - совокупность структур данных и методов их обработки.
Виды представляемых формализованных знаний делятся на процедурные - задающие алгоритм решения, декларативные - описательные и метазнания - знания о метазадаче (возможных методах решения задачи, критериях оценки решения и т.п.).
Способ постановки задачи определяет одну из важных частей парадигмы программирования, определяющую режим взаимодействия автоматизированной системы с пользователем. Задача может ставиться путем подачи команды на выполнение алгоритма обработки данных или в виде запроса к базе знаний для получения необходимой информации.
Способ решения задачи отражает метод обработки знаний системой. Этим методом может быть выполнение алгоритма, редукция или логический вывод.
Семантика языка программирования характеризует его выразительность и пригодность для реализации концепции программирования. Различают операционную и дескриптивную семантики.
В настоящее время известны три варианта реализации интерфейса пользователя автоматизированной системы - это языковой интерфейс с набором команд, пиктографический WIMP-интерфейс с использованием метафор "окна" и "меню", а также интеллектуальный пользовательский интерфейс типа DWIM (Do What I Mean - Делай, Что Я Имею в виду). Последний способ означает, что пользователь сообщает системе постановку задаче в декларативной форме, а последовательность действий, необходимых для ее решения, система определяет и исполняет самостоятельно, без участия человека.
В таблице 1.3 под сложностью реализации вычислительной модели на традиционных (фоннеймановских) ЭВМ понимается объем системы семантического моделирования и эффективность методов обработки знаний, характерных для данной концепции программирования. По сложности различаются способы реализации базовых процедур вычислителя, правил редукции и алгоритмов вывода.
В разделе возможностей распараллеливания оценивается эффективность реализации концепции программирования на параллельных ЭВМ. При этом наиболее предпочтителен естественный параллелизм вычислительной модели, однако большинству моделей для распараллеливания требуется предварительный анализ алгоритмов решения задачи пользователя, в некоторых случаях параллельная реализация вычислительной модели не представляется возможной.
Под сложностью решения задач на вычислительной модели понимается зависимость числа шагов вывода вычислителя для получения решения задачи пользователя от числа объектов в базе знаний. По степени предпочтительности выделяют линейную, полиномиальную и экспоненциальную сложность.
Как видно из таблицы 1.3, нет такой концепции программирования, которая была бы наиболее предпочтительной по всем показателям. Наилучшими характеристиками по отдельным своиствам обладают процедурная (наилучшим образом реализуется на фоннеймановских ЭВМ), продукционная, сетевая, объектно-ориентированная концепции программирования (эффективный способ декомпозиции задач и распараллеливания) и дедуктивный синтез программ (лучшие свойства парадигмы программирования). Поэтому разумным является сочетание этих концепций в реализации системы семантического моделирования.
ПРОЦЕДУРНАЯ КОНЦЕПЦИЯ ПРОГРАММИРОВАНИЯ
Вычислительная модель.
Фоннеймановская архитектура компьютера (см. [3]) предполагает последовательное расположение команд центрального процессора (ЦП) в программе. ЦП последовательно по одной считывает эти команды из памяти и в соответствии с имеющимися в них указаниями считывает данные, хранящиеся по некоторому адресу в памяти, выполняет заданные операции и записывает результаты операции в некоторый адрес памяти. Содержимое памяти соответствует состоянию машины, а вычисления выполняются путем последовательного изменения этого состояния. Таким образом, выполнение вычислений сопровождается побочным эффектом. Последовательность выполнения команд может изменяться при помощи команд передачи управления (if, goto,...). С помощью них описываются повторяющиеся последовательности команд (циклы) и участки программы, выполнение которых зависит от некоторого условия (состояния памяти). Часто используемые последовательности команд оформляются в виде модулей. При вызове модулей в программе им передается часть состояния памяти в виде параметров. Результат работы модуля также отражается изменением состояния памяти.

Такая вычислительная модель называется процедурной (императивной, фоннеймановской). Языки программирования, основанные на этой модели (Фортран, Алгол, ПЛ/1, Паскаль, Ада, Модула, Си и т.п.) объединяются в семейство процедурных языков программирования.
С точки зрения моделирования семантики предметной области процедурная модель обладает ясной операционной семантикой. Процедурная программа описывает алгоритм решения одной задачи в рамках предметной области. Эта модель хорошо отражает семантику действия. Процедурная программа описывает процесс решения проблемы ("как" производятся вычисления), а не саму проблему ("что" вычисляется). Поэтому процедурные языки программирования по-другому называют "как-языками", в отличие от декларативных "что-языков". С помощью процедурного представления удобно программировать сценарии, технологии, процессы и т.п..
Парадигма программирования.
Среди методов проектирования и разработки моделей для процедурного программирования наиболее характерны два [90], [10]: метод структурного проектирования сверху вниз и метод организации потоков данных. Следует отметить, что большинство существующих программ написано в соответствии с одним из этих методов. В методе структурного проектирования используется алгоритмическая декомпозиция модели. Этот метод неэффективен при разработке сложных систем, он не позволяет выделять абстракции объектов и не предоставляет достаточных средств распараллеливания вычислений. В методе организации потоков данных структура проектируемой системы строится как организация преобразований входных потоков данных в выходные. Оба метода с успехом применялись при решении ряда сложных задач, в частности, в системах информационного обеспечения, где существуют прямые связи между входными и выходными потоками данных и не требуется высокого быстродействия.
ПРИНЦИПЫ СТРУКТУРИРОВАНИЯ ПРОГРАММ И ДАННЫХ
Модульно-иерархическое построение программных средств.
Для обеспечения взаимодействия программных и информационных компонент (модулей) в едином комплексе используются многоуровневые иерархические структуры. Иерархия представляет собой свойство упорядоченного множества компонент, между которыми установлено отношение приоритета. Компоненты, между которыми отсутствует предпочтительность, образуют один иерархический уровень.
Иерархия КП предполагает наличие следующих типов подчиненности компонент:
- иерархия целей КП и его составляющих, при которой их зачастую противоречивые частные цели должны способствовать достижению основной цели функционирования всего комплекса;
- иерархия задач и поведения групп программ, обеспечивающая концептуальное единство комплекса программ и данных и возможность последовательного функционального раскрытия комплекса;
- иерархия структуры КП и взаимодействия программ и данных, отражающая декомпозицию конкретных компонент комплекса и оформление реализуемых связей между программами и используемыми данными.
Многоуровневое иерархическое построение сложных программ позволяет ограничить и локализовать на каждом из уровней соответствующие ему компоненты.
Всем иерархическим системам (в частности, КП) присущ ряд свойств, важнейшими из которых являются:
- вертикальная соподчиненность, заключающаяся в последовательном упорядоченном расположении взаимодействующих компонент, составляющих данный КП;
- право вмешательства и приоритетного воздействия на компоненты любых уровней со стороны компонент более высоких иерархических уровней;
- взаимосвязь действий компонент верхних уровней от реакций на воздействия и от функционирования компонент нижних уровней, информация о которых передается верхним уровням.
В результате в иерархических структурах КП образуется два потока взаимодействий между компонентами разных уровней:
- сверху-вниз - координирующие и управляющие воздействия верхних уровней;
- снизу-вверх - информация о состоянии и реализации предписанных функций компонентами нижних уровней.
Взаимодействие предполагает выбор способа координации и реализацию координирующих алгоритмов с выработкой соответствующих воздействий. Координируемые компоненты имеют некоторую автономность поведения и подготовки локальных решений. Степень автономности компонент и интенсивность координирующих воздействий устанавливается компромиссом при выделении иерархических уровней. Взаимодействие компонент в пределах уровня целесообразно максимально ограничивать, что позволяет упростить общее координирование компонент и проводить его только по вертикали.
Компоненты нижних уровней влияют на вышестоящие непосредственно, поставляя информацию о своем состоянии и результатах функционирования, а также косвенно, подготавливая возможные решения для их выбора на более высоких уровнях. Информация о результатах функционирования верхних уровней может учитываться компонентами нижних уровней для улучшения собственных решений и для косвенной координации. Таким образом, нижние иерархические уровни являются основными компонентами, обрабатывающими информацию и подготавливающими данные для для выдачи за пределы анализируемого КП.
