Глава 8. ИНФОРМАЦИОННАЯ СИСТЕМА ALICE
Дело не в том, какая система является искусственной, какая — естественной, а в том, поддается ли она программированию.
Герберт А. Саймон (1977 г.)
ALICE — информационная система, которая работает с языком высокого уровня, позволяющим формулировать задачи, и содержит модуль решения задач, использующий методы искусственного интеллекта.
При разработке системы принимались в расчет следующие два соображения:
1. Классическое программирование требует больших затрат. Действительно, для каждой новой задачи программист пишет новую программу. За любое изменение в программе приходится платить слишком дорого: 75 долл. за каждую вновь написанную инструкцию и 4000 долл. и каждую инструкцию в отлаженной программе (данные министерства обороны США, 1972 г.). Это объясняется двумя причинами:
а) Плохо поддаются контролю побочные эффекты. В современных процедурных языках любое изменение может иметь непредсказуемые последствия, даже если применяемая методология программирования и предусматривает определенную защиту (структурное программирование, модульное программирование, абстрактные типы данных).
б) Вносимые в программы изменения могут на самом деле привести к существенным изменениям в структуре данных и в алгоритме решения задачи. Так, в книгах обычно приводятся академические примеры программ, а каждый реальный случай не соответствует этому идеалу и требует перепрограммирования.
2. Все современные языки программирования являются императивными (т. е. приказными). Это означает, что нужно шаг за шагом сообщать машине, что она должна делать. Но для программиста единственно важными вещами являются формулировка задачи и результат ее решения, а постоянное отслеживание всех промежуточных этапов по существу излишне. Другими словами, наиболее приемлемым был бы такой метод обработки информации, при котором формулировка задачи была полностью отделена от ее решения. В идеальном случае пользователь смог бы ввести свою формулировку задачи, разговаривая с машиной на описательном языке, близком к естественному. После этого ЭВМ в реальном времени получает решение, которое пользователь анализирует и в случае необходимости исправляет первую
формулировку и решает задачу еще раз. Время полного решения уменьшается от нескольких недель (или нескольких месяцев) до нескольких минут. Такой подход заложен при разработке системы ALICE.
В действительности эти соображения диктуют использование описательного (декларативного) языка для формулировки произвольных задач чисто формальным образом и достаточно общей системы решения, способной удовлетворить все пожелания пользователя и учесть все особенности решаемой задачи, связанные с ее формальным определением, объемом выполняемой работы и имеющимися ресурсами. Первое соображение связано с работами по описательным языкам, второе — с методологией программирования и общего решения задач.
Система ALICE понимает формально заданную задачу и доводит ее до окончательного решения. Кроме того, в разд. 8.9 показано, как в определенных случаях решаются задачи, сформулированные прямо на французском языке.
Замечание. Описание системы ALICE состоит из двух частей. Первая часть излагается в разд. 8.1 и 8.2 и представляет круг задач, решаемых системой, входной язык, используемые методы решения, примеры решения трех задач. Вторая часть изложена в разд. 8.3-8.5 и содержит описание процедур, критериев, используемых представлений, управления перебором и возникающих ограничений, которое носит более технический характер. В разд. 8.8 обсуждаются результаты, а в разд. 8.9 приводятся результаты исследований ввода формулировок задач на французском языке.
8.1. Общее описание системы
Человек является специалистом по неспециальному.
Конрад Лоренц (1950 г.)
К особенностям данной системы относятся, во-первых, способность воспринимать чисто декларативные формулировки, что делает ненужным использование алгоритмов и инструкций, и, во-вторых, возможность решения довольно общего класса задач, не исключая трудных и требующих больших машинных ресурсов задач.
Язык, на котором формулируется задача, должен только ее определить. Его основу составляет язык обычной математики.
Для разработки системы решения можно было выбрать два пути. Первый состоит в жестком переводе исходной формулировки
в специальный алгоритм, предназначенный для решения поставленной задачи, а второй — в интеллектуальной интерпретации формулировки и данных с помощью некоторого общего модуля. Второй путь, в тех случаях когда он возможен, оказывается значительно более эффективным, потому что система, подобно человеку, становится способной постоянно приспосабливаться к конкретной задаче и учитывать ее особенности. В этом случае не создается единственный и заранее выбранный алгоритм, а на каждом шаге обработки используется соответствующая процедура.
При этом достигается удивительный результат. Оказывается, что во многих случаях при решении трудных задач такая общая программа является более производительной, чем лучшие специальные программы, доступные в настоящее время. С помощью этой системы уже успешно решено более сотни задач из различных областей (разд. 8.7).