Bratko I. (1982). Knowledge-based problem solving in AL3. In:
Bratko I. (1984). Advise and planning in chess end-games. In:
Bratko I. (1985). Symbolic derivation of chess patterns. In:
Bratko I. and Michie D. (1980a). A representation of pattern-knowledge in chess end-games. In:
Bratko I. and Michie D. (1980b). An advice program for a complex chess programming task.
Frey P. W. (1983, ed.).
Knuth D. E. and Moore R. W. (1975). An analysis of alpha-beta pruning.
Pearl J. (1984). Heuristics: Intelligent Search Strategies for Computer Problem Solving. Addison- Wesley.
Pitrat J. (1977). A chess combination program which uses plans
Shannon C.E. (1950). Programming a computer for playing chess.
van Emden M. (1982). Chess end-game advice: a case study in computer utilisation of knowledge. In:
Wilkins D.E. (1980). Using patterns and plans in chess.
Глава 16
Программирование в терминах типовых конфигураций
В этой главе мы будем заниматься системами, ориентированными на типовые конфигурации ('образцы'), рассматривая их как некоторый специальный подход к программированию. Языком, ориентированным на образцы, можно считать и сам Пролог. Мы реализуем небольшой интерпретатор для простых программ этого типа и постараемся передать дух такого 'конфигурационной' программирования на нескольких примерах.
16.1. Архитектура, ориентированная на типовые конфигурации
16.1.1. Основные понятия
Под
В противоположность этому организация, ориентированная на образцы, не предполагает прямого обращения из одних модулей к другим. Модули запускаются
(1) образцом, соответствующим предварительному условию запуска, и
(2) тем действием, которое следует выполнить, если информационная среда согласуется с заданным образцом.
Запуск модулей на выполнение происходит при появлении тех или иных конфигураций в информационной среде системы. Такую информационную среду обычно называют
Рис. 16.1. Система, управляемая типовыми конфигурациями (образцами)
Следует сделать несколько важных замечаний относительно рис. 16.1. Совокупность модулей не имеет иерархической структуры. Отсутствуют явные указания на то, какие модули могут обращаться к каким-либо другим модулям. Модули связаны скорее с базой данных, чем непосредственно друг с другом. В принципе такая структура допускает параллельное выполнение сразу нескольких модулей, поскольку текущее состояние базы данных может прийти в соответствие сразу с несколькими предварительными условиями, а следовательно, в принципе могут запуститься несколько модулей одновременно. В связи с этим, подобную организацию можно рассматривать как естественную модель параллельных вычислений, имея в виду, что каждый модуль физически реализован на отдельном процессоре.
Архитектура, ориентированная на образцы, обладает рядом достоинств. Одно из ее главных преимуществ состоит в том, что, разрабатывая подобную систему, мы не должны тщательно продумывать и заранее определять все связи между модулями. Следовательно, каждый модуль может быть разработан и реализован относительно автономно. Это придает системе высокую степень модульности, проявляющуюся, например, в том, что удаление из системы какого-либо модуля не обязательно приводит к фатальным последствиям. После удаления модуля система во многих случаях сохранит свою способность к решению задач, измениться может только
Высокая степень модульности особенно желательна в системах со сложными базами знаний, поскольку очень трудно предсказать заранее все возможные взаимодействия между отдельными фрагментами знаний. Архитектура, ориентированная на образцы, обеспечивает простое решение этой проблемы: каждый фрагмент знаний, представленный в виде 'если-то'-правила, можно считать отдельным модулем, запускаемым своим собственным образцом.
Перейдем теперь к более детальной проработке нашей базовой схемы для систем, ориентированных