Главная > Интеллектуальные системы > Системы искусственного интеллекта
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

7.5. Сравнение декларативного и процедурного подходов

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

(см. скан)

вводится в форме

(см. скан)

Эти подходы возникали также и в классическом программировании. Они привели к противостоянию аппликативного и повелительного, рекурсивного и итеративного, статического и динамического, функционального и описательного, вообще в противостоянии между процедурами и описаниями. Идеал, конечно же, заключается в описании (задачи, программы, знания) независимо от используемых методов. При декларативном подходе к продукционным правилам и экспертным системам доступ к информации осуществляется с помощью унификации или ограниченной унификации (называемой сравнением с образом и фильтрацией) [Waterman, Hayes-Roth, 1979; Nilsson, 1980; Farreny, 1980].

Ответ на вопрос “Лжец ли он?” отыскивается с помощью двух обращений к базе фактов. А из утверждения “Он честный политик” выводится с помощью унификации “Он не американец”.

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

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

7.5.1. Критика «процедурной» информатики или «языки программирования не являются языками»

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

1) состоит исключительно из инструкций (первое значение);

2) представляет собой строго определенную последовательность последних (второе значение).

Из этого следует, что на доступных языках программирования нельзя выразить фразы: “На Парижской бирже повышается курс доллара” или “Женевское озеро очень приятно в хорошую погоду”, так как они не содержат ничего, что могло бы быть выполнено в определенном порядке. Кроме того, если нет дополнительной информации, они независимы друг от друга.

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

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

Кроме того, как предоставить в распоряжение ЭВМ информацию типа: “ЭДС U, сопротивление и ток I, протекающий по электрической цепи при комнатной температуре, связаны между собой законом Ома

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

1) обращаться к ней только при необходимости;

2) в случае возникновения такой необходимости иметь в виду, что не только является функцией и но и — функция и функция и Даже если из трех значений и неизвестными являются два, то все равно можно использовать некоторые соотношения, например для двух параллельно включенных сопротивлений справедливо

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

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

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

<< Предыдущий параграф Следующий параграф >>
Оглавление