Рус Eng Cn Перевести страницу на:  
Please select your language to translate the article


You can just close the window to don't translate
Библиотека
ваш профиль

Вернуться к содержанию

Кибернетика и программирование
Правильная ссылка на статью:

Принципы интерпретации программ языка программирования, ориентированного на обработку баз знаний

Шункевич Даниил Вячеславович

ассистент, кафедра Интеллектуальных информационных технологий, Белорусский государственный университет информатики и радиоэлектроники

220013, Беларусь, г. Минск, ул. П. Бровки, 6

Shunkevich Daniil Vyacheslavovich

assistant, Department of Intelligent Information Technologies, Belarusian State University of Informatics and Radio Electronics

22013, Belarus, Minsk, ul. P. Brovki, 6

shu.dv@tut.by
Другие публикации этого автора
 

 

DOI:

10.7256/2306-4196.2014.5.13300

Дата направления статьи в редакцию:

02-10-2014


Дата публикации:

16-10-2014


Аннотация: В данной статье рассмотрена унифицированная логико-семантическая модель машины интерпретации программ базового языка программирования, ориентированного на обработку sc-моделей баз знаний. Указанная модель основана на многоагентном подходе. Данная статья посвящена базовому языку программирования технологии проектирования интеллектуальных систем OSTIS, а конкретнее, модели его интерпретатора, основанной на многоагентом под-ходе к проектированию машин обработки знаний, лежащем в основе указанной технологии. Базовые понятия данной работы, такие как sc-агент, абстрактный sc-агент и т.д., рассмотрены в работе и на сай-те технологии. Рассматриваемый язык является базовым для технологии проектирования интеллектуальных систем OSTIS. В данной работе описываются сами sc-агенты абстрактной scp-машины, а также sc-язык их взаимодействия. В работе рассмотрены принципы интерпретации программ базового языка программирования, ориентированного на обработку sc-моделей баз знаний. Разработанная модель основана на многоагентом подходе, что позволяет эффективно использовать возможности асинхронного и параллельного программирования, а также делает разработанную мо-дель открытой, то есть присутствет возможность добавления в нее но-вых агентов.


Ключевые слова:

интеллектуальная система, машина обработки знаний, база знаний, многоагентная система, язык программирования, интерпретируемый язык, OSTIS, многоагентный подход, sc-агент, sc-модель

УДК:

004.822:514

Abstract: The article reviews a unified logic-semantic model of an interpreter for basic programming languages oriented on the processing of sc-models of knowledge database. The mentioned above model is based on a multi-agent approach. The article is dedicated to a basic language of programming a technology of designing OSTIS intelligent systems, and more specifically, to a model of interpreter underlying this technology based on a multi-agent approach to designing knowledge processing machines. Basic concepts of this article such as sc-agent, abstract sc-agent and so on are reviewed in this article and on the web-site of this technology. The programming language discussed is basic for OSTIS intelligent systems developing technology. The article describes both sc-agents of abstract scp-machine and sc-language of their interaction. The author discusses principles of interpretation of software written on a basic programming language oriented on processing of sc-models of knowledge database. The developed model is based on a multi-agent approach that allows to effectively use the abilities of asynchronous and parallel programming and makes designed model open, that is, there is the possibility of adding new agents into it.


Keywords:

intelligent system , knowledge processing machine, knowledge base , multi-agent system, programming language , interpreted language, OSTIS, multi-agent approach , sc-agent, sc-model

Введение

Данная статья посвящена базовому языку программирования технологии проектирования интеллектуальных систем OSTIS [1],[2], а конкретнее, модели его интерпретатора, основанной на многоагентом подходе к проектированию машин обработки знаний, лежащем в основе указанной технологии [3]. Базовые понятия данной работы, такие как sc-агент, абстрактный sc-агент и т.д., рассмотрены в работе [4] и на сайте технологии [1].

Унифицированная логико-семантическая модель машины интерпретации программ базового языка программирования, ориентированного на обработку sc-моделей баз знаний (т.е. Языка SCP) [5] рассматривается как множество sc-агентов абстрактной scp-машины, т.е. атомарных sc-агентов, реализуемых на платформенно-зависимом уровне и взаимодействующих между собой через sc-память при помощи определенного sc-языка (т.е. набора ключевых узлов). В данной работе описываются сами sc-агенты абстрактной scp-машины, а также sc-язык их взаимодействия.

Абстрактная scp-машина

Вся абстрактная scp-машина рассматривается как целостный абстрактный sc-агент, который может иметь несколько вариантов декомпозиции, один из которых принят за эталонный и описан в данном разделе. При этом одним из возможных вариантов, хоть и не самым приемлемым, является вариант реализации всей абстрактной scp-машины как одного атомарного sc-агента.

Декомпозиция абстрактной scp-машины:

  • sc-агент погружения scp-программ в sc-память
  • sc-агент создания scp-процессов
  • sc-агент интерпретации scp-операторов
  • sc-агент синхронизации процесса интерпретации scp-программ
  • sc-агент уничтожения scp-процессов
  • sc-агент синхронизации событий в sc-памяти и ее реализации

Sc-агент погружения scp-программ в sc-память активизируется ограниченное число раз при появлении в sc-памяти ранее не присутствовавшей scp-программы, выполняет с ней определенные действия, после чего scp-программа становится доступной для интерпретации, либо помечается как некорректная scp-программа. После этого sc-агент погружения scp-программы в sc-память больше не работает с указанной scp-программой, т.е. процесс его работы с точки зрения процесса интерпретации может рассматриваться как однократная операция, выполняемая предварительно для каждой scp-программы и не оказывающая существенного влияния на производительность системы в целом.

Декомпозиция sc-агента погружения scp-программ в sc-память:

  • sc-агент собственно погружения scp-программ в sc-память
  • sc-агент верификации scp-программ
  • sc-агент предварительной обработки scp-программ

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

Sc-агент верификации scp-программ осуществляет автоматическую проверку корректности scp-программ. Данный sc-агент активируется при появлении в sc-памяти scp-программы, принадлежащей классу сформированных scp-программ. В результате работы данного sc-агента scp-программа попадает во множество корректных scp-программ в случае успешного прохождения процедуры верификации.

Можно выделить два типа для указанного агента:

  • sc-агент синтаксической верификации scp-программ
  • sc-агент семантической верификации scp-программ

Sc-агент синтаксической верификации scp-программ осуществляет автоматическую проверку синтаксической корректности scp-программ, например, проверку целостности scp-программы, проверку соответствия конкретных scp-операторов спецификации соответствующего класса scp-операторов, и т.д.

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

Sc-агент предварительной обработки scp-программ осуществляет генерацию дополнительных конструкций, описывающих корректную scp-программу и необходимых для оптимизации процедуры создания scp-процессов, соответствующих данной scp-программе.

Данный агент активируется при появлении в sc-памяти scp-программы, принадлежащей классу корректных scp-программ.

В результате работы данного sc-агента scp-программа попадает во множество подготовленных scp-программ.

Создание scp-процессов

Под scp-процессом понимается некоторая структура в sc-памяти, однозначно описывающая конкретный акт выполнения некоторой scp-программы для заданных исходных данных. Если scp-программа описывает алгоритм решения какой-либо задачи в общем виде, то scp-процесс описывает конкретную реализацию данного алгоритма для заданных входных параметров.

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

Задачей sc-агента создания scp-процессов является создание scp-процессов, соответствующих заданной scp-программе. Данный sc-агент активируется при появлении в sc-памяти инициированного вопроса, принадлежащего классу запросов интерпретации scp-программы.

После проверки sc-агентом условия инициирования выполняется создание scp-процесса с учетов конкретных параметров интерпретации scp-программы, после чего осуществляется поиск начального оператора' scp-процесса и его активизация. Пример формальной записи запроса инициирования scp-программы с указанием параметров представлен на рис. 1.

5

Рис. 1. Запрос интерпретации scp-программ

Создание уникальных копий выполняемой scp-программы при каждом ее запуске требует дополнительных затрат времени и памяти, однако такой подход имеет ряд существенных преимуществ:

  • созданный scp-процесс может быть реконфигурирован прямо в процессе выполнения, при этом нет опасности повреждения исходной scp-программы;
  • выполнение созданного scp-процесса не требует обращений к исходной scp-программе, таким образом, исключается необходимость синхронизации доступа scp-процессов, соответствующих одной и той же scp-программе как к разделяемому ресурсу;
  • выполнение созданных scp-процессов может физически осуществляться на разных устройствах параллельно, что существенно увеличивает эффект от наращивания аппаратной основы дополнительными ресурсами;
  • отсутствует необходимость указывать scp-процесс, в рамках которого некоторая scp-переменная' имеет заданное значение*, поскольку каждая scp-переменная' становится уникальной в рамках sc-памяти в результате копирования и может иметь только одно значение*;
  • при создании scp-процесса scp-переменные', соответствующие in-параметрам' scp-программы физически заменяются sc-элементами, указанными в качестве параметров интерпретации в соответствующем запросе. Такая замена позволяет исключить дополнительную операцию поиска значения* для указанных scp-переменных', поскольку они становятся scp-константами'
Интерпретация операторов scp-процесса

Задачей sc-агента интерпретации scp-операторов является собственно интерпретация операторов scp-программы, то есть выполнение в sc-памяти действий, описываемых конкретным scp-оператором. Данный sc-агент активируется при появлении в sc-памяти scp-оператора, принадлежащего классу активных scp-операторов. После выполнения действий, описываемых scp-оператором, scp-оператор добавляется во множество выполненных scp-операторов. В случае, когда семантика действия, описываемого scp-оператором, предполагает возможность ветвления scp-программы после выполнения данного scp-оператора, то используется одно из подмножеств класса выполненных scp-операторов – безуспешно выполненный scp-оператор или успешно выполненный scp-оператор.

Во множество безуспешно выполненных scp-операторов попадают те выполненные scp-операторы, в процессе выполнения которых не выполнилось некоторое дополнительное условие, зависящее от конкретного класса оператора (например, попытка поиска заданной конструкции оказалась безуспешной). В таком случае будет осуществлен переход к scp-операторам, связанным с данным при помощи связок отношения следующий оператор при безуспешном выполнении.

Во множество успешно выполненных scp-операторов попадают те выполненные scp-операторы, в процессе выполнения которых выполнилось некоторое дополнительное условие, зависящее от конкретного класса оператора (например, попытка поиска заданной конструкции оказалась успешной). В таком случае будет осуществлен переход к scp-операторам, связанным с данным при помощи связок отношения следующий оператор при успешном выполнении.

Задачей sc-агента синхронизации процесса интерпретации scp-программ является обеспечение переходов между scp-операторами в рамках одной scp-программы. Данный sc-агент активизируется при добавлении некоторого scp-оператора во множество выполненных scp-операторов. Далее осуществляется переход по sc-дуге, принадлежащей отношению следующий scp-оператор (или более частным отношениям, в случае, если scp-оператор был добавлен во множество успешно выполненных scp-операторов или безуспешно выполненных scp-операторов). При этом очередной scp-оператор становится активным scp-оператором только в том случае, если все scp-операторы, связанные с ним входящими sc-дугами, принадлежащими отношению следующий scp-оператор (или более частным отношениям) стали элементами множества выполненных scp-операторов (или, соответственно, его подмножеств). В противном случае происходит ожидание завершения выполнения требуемых scp-операторов.

В соответствии со спецификацией языка SCP можно выделить следующий набор sc-агентов интерпретации конкретных scp-операторов:

  • sc-агент интерпретации scp-оператора генерации одноэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора генерации трехэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора генерации пятиэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора генерации sc-конструкции по произвольному образцу
  • sc-агент интерпретации scp-оператора поиска трехэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора поиска пятиэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора поиска трехэлементной sc-конструкции с формированием множеств
  • sc-агент интерпретации scp-оператора поиска пятиэлементной sc-конструкции с формированием множеств
  • sc-агент интерпретации scp-оператора поиска sc-конструкции по произвольному образцу
  • sc-агент интерпретации scp-оператора удаления одноэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора удаления трехэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора удаления пятиэлементной sc-конструкции;
  • sc-агент интерпретации scp-оператора удаления множества элементов трехэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора удаления множества элементов пятиэлементной sc-конструкции
  • sc-агент интерпретации scp-оператора проверки типа sc-элемента
  • sc-агент интерпретации scp-оператора проверки наличия значения у переменной
  • sc-агент интерпретации scp-оператора проверки наличия содержимого у sc-ссылки
  • sc-агент интерпретации scp-оператора проверки совпадения значений операндов
  • sc-агент интерпретации scp-оператора проверки равенства числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора сравнения числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора сложения числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора вычитания числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора умножения числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора деления числовых содержимых sc-ссылок
  • sc-агент интерпретации scp-оператора возведения числового содержимого sc-ссылки в степень
  • sc-агент интерпретации scp-оператора вычисления логарифма числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления синуса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления косинуса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления тангенса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления арксинуса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления арккосинуса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вычисления арктангенса числового содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора копирования содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора удаления содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора ожидания события
  • sc-агент интерпретации scp-оператора асинхронного вызова подпрограммы
  • sc-агент интерпретации scp-оператора ожидания завершения выполнения scp-программы
  • sc-агент интерпретации scp-оператора ожидания завершения выполнения множества scp-программ
  • sc-агент интерпретации scp-оператора завершения выполнения программы
  • sc-агент интерпретации scp-оператора присваивания значения переменной
  • sc-агент интерпретации scp-оператора удаления значения переменной
  • sc-агент интерпретации scp-оператора вывода содержимого sc-ссылки
  • sc-агент интерпретации scp-оператора вывода содержимого sc-ссылки с переходом на новую строку
  • sc-агент интерпретации scp-оператора распечатки семантической окрестности sc-элемента
Удаление информационного мусора и синхронизация событий

Задачей sc-агента уничтожения scp-процессов является уничтожение scp-процесса, то есть удаление из sc-памяти всех sc-элементов, его составляющих. Данный sc-агент активируется при появлении в sc-памяти scp-процесса, принадлежащего классу бесполезных scp-процессов.

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

Задачей sc-агента синхронизации событий в sc-памяти и ее реализации является обеспечение работы неатомарных sc-агентов, реализованных на языке SCP.

Задачей sc-агента трансляции первичного условия инициирования sc-агента в его внутреннее представление является трансляция бинарных ориентированных пар, описывающих первичное условие инициирования некоторого sc-агента, во внутреннее представление sc-событий на уровне реализации sc-памяти. Условием инициирования данного sc-агента является появление в sc-памяти нового элемента множества активных sc-агентов, для которого будет найдена и протранслирована соответствующая бинарная пара.

Задачей sc-агента обработки sc-события, инициирующего активный sc-агент является поиск агентной scp-программы, входящей во множество, программ sc-агента* для каждого sc-агента, первичное условие инициирования которого соответствует sc-событию, произошедшему в sc-памяти и генерация запроса на ее интерпретацию. В результате работы данного sc-агента в sc-памяти появляется инициированный вопрос, принадлежащий классу запросов интерпретации scp-программы.

Заключение

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

Библиография
1. Проект OSTIS [Электронный ресурс]. Минск, 2014. – Режим доступа: www/URL:http://ims.ostis.net/. – Дата доступа: 20.06.2014
2. Программирование в ассоциативных машинах / Голенков В. В. [и др.]; под ред. В. В. Голенкова – Минск, 2001.-412 c
3. Шункевич Д.В. Модели и средства компонентного проектирования машин обработки знаний на основе семантических сетей. / Д.В. Шункевич // Открытые семантические технологии проектирования интеллектуальных систем (OSTIS-2013): материалы Междунар.научн.-техн.конф. Минск, 21-23 февраля 2013 г. – Минск: БГУИР, 2013. – c. 269-280.
4. Шункевич Д.В. Машина обработки знаний интеллектуальной метасистемы поддержки проектирования интеллектуальных систем. / Д.В. Шункевич // От-крытые семантические технологии проектирования интеллектуальных систем (OSTIS-2014): материалы Междунар.научн.-техн.конф. Минск, 20-22 февраля 2014 г. – Минск: БГУИР, 2014. – c. 93-96.
5. Голенков, В.В. Представление и обработка знаний в графодинамических ассоциативных машинах / Голенков В.В. [и др.]; под ред. В.В. Голенкова – Минск, 2001.-276 c
References
1. Proekt OSTIS [Elektronnyi resurs]. Minsk, 2014. – Rezhim dostupa: www/URL:http://ims.ostis.net/. – Data dostupa: 20.06.2014
2. Programmirovanie v assotsiativnykh mashinakh / Golenkov V. V. [i dr.]; pod red. V. V. Golenkova – Minsk, 2001.-412 c
3. Shunkevich D.V. Modeli i sredstva komponentnogo proektirovaniya mashin obrabotki znanii na osnove semanticheskikh setei. / D.V. Shunkevich // Otkrytye semanticheskie tekhnologii proektirovaniya intellektual'nykh sistem (OSTIS-2013): materialy Mezhdunar.nauchn.-tekhn.konf. Minsk, 21-23 fevralya 2013 g. – Minsk: BGUIR, 2013. – c. 269-280.
4. Shunkevich D.V. Mashina obrabotki znanii intellektual'noi metasistemy podderzhki proektirovaniya intellektual'nykh sistem. / D.V. Shunkevich // Ot-krytye semanticheskie tekhnologii proektirovaniya intellektual'nykh sistem (OSTIS-2014): materialy Mezhdunar.nauchn.-tekhn.konf. Minsk, 20-22 fevralya 2014 g. – Minsk: BGUIR, 2014. – c. 93-96.
5. Golenkov, V.V. Predstavlenie i obrabotka znanii v grafodinamicheskikh assotsiativnykh mashinakh / Golenkov V.V. [i dr.]; pod red. V.V. Golenkova – Minsk, 2001.-276 c