В логическом подходе оперирует название неформальной процедуры. Неформальные процедуры – это один из способов приблизиться к человеческому способу представлению человеком функции.
Пример:
Описать неформальную процедуру, реализующую преобразование из именительного падежа в родительный для следующих существительных:
Дом, мама, вилка, кино, ночь, токарь, киль.
С точки зрения программирования не вызывает никаких затруднений перевести блок-схему в текст программы. Однако, составление подобных блок-схем, при появлении существительных новых типов становится сложно выполнимой задачей, поэтому на практике вместо указанных алгоритмов применяют так называемые продукционные модели.
Введем дополнительную задачу.
Расширить предыдущий алгоритм на 4 слова: Задача, акция, время, Вася.
Ситуация
Действие
Ситуация
Действие
КИНО
КИНО
-Ь
-И
-ча
-чи
-ие
-ия
-КА
-КИ
-мя
-мени
-А
-Ы
-я
-и
-АРЬ
-АРЯ
-
-А
-Ь & М:хЬ
-Я
В таблице решений слева приведена ситуация (условие), а справа соответственно действие, если условие выполняется.
Теперь значительно упрощается расширение на новые классы слов - необходимо лишь обеспечить внесение вставок на нужное место в таблице решений.
Таблицы решений представляют собой частный случай так называемых продукционных систем. В этих системах правила вычислений представляются в виде продукций. Продукции представляют собой операторы специального вида и состоят из двух основных частей, для краткости называемых обычно "ситуация - действие".
"Ситуация" содержит описание ситуации, в которой применима продукция. Это описание задается в виде условий, называемых посылками продукции. "Действие" - это набор инструкций, подлежащих выполнению в случае применимости продукции.
Приведенная таблица решений иллюстрирует безвозвратную процедуру. В общем случае неформальные процедуры являются многозначными, а правильность конкретного выбора, сделанного на некотором шаге проверяется на следующих шагах, при этом используется режим возвратов.
а.) МАТЬ ЛЮБИТ ?
б.) МАТЬ ЛЮБИТ ?
Лингвистический разбор предложения начинается со слов «мать любит», проанализировав эти слова в первоначальном предложении именительного падежа для слова «мать» система в праве построить структуру в случае а.
Если следующее слово после «любит» представить слово в винительном падеже (например, мать любит сына), то эта структура является окончательной. Если фраза имеет вид «мать любит сын», то возникает противоречие или сигнал неуспеха. Очередное слово «сын» противоречит ожиданию прямого дополнения. В этом случае система должна вернуться на ближайший из предыдущих шагов, где можно принять другую альтернативу анализа. Далее будет построена структура в случае б.
Логический вывод
Логический вывод позволяет расширять возможности продукционных систем и позволяет объяснить полученные решения. Для того, чтобы построить продукционную систему, определяющую родственные отношения достаточно будет сообщить системе три правила, содержащие понятия:
ДЕД, РОДИТЕЛЬ, ВНУК
1.) x – ДЕД – y если x – ОТЕЦ a и a – РОДИТЕЛЬ y
2.) x – РОДИТЕЛЬ y если x – ОТЕЦ y или x – МАТЬ y
3.) x – ВНУК y если y – ДЕД x
Продукционные системы содержащие аппарат логического вывода, отличает высокая степень общности правил обработки данных. Однако эта общность приводит к ухудшению динамических свойств соответствующих продукционных программ к трудностям их модификации и развития.
Практически при программировании неформальных процедур подобные таблицы можно вручную создавать и сопровождать максимально до 100-200 продукций.
Дальнейшее развитие продукционных систем лежит в автоматизированной функции распознавания, интерпретации, вставки новой продукции.