Использование алгоритма Rete при выводе геометрических соотношений в графических редакторах
Внедрение прикладных компьютерных программ в практику работы технологических служб. Оперативный ввод и редактирование графических объектов типа эскизов. Алгоритм Rete, позволяющий осуществлять вывод геометрических соотношений в графических редакторах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 15.08.2020 |
Размер файла | 22,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Использование алгоритма Rete при выводе геометрических соотношений в графических редакторах
Митин А.А.
The article describes a declarative means of specifying relationships. Interactive graphical applications give the rise to varying kinds of constraints, and researchers. Several approaches have been proposed for inferring constraints from unfinished drawing.
Внедрение прикладных компьютерных программ в практику работы технологических служб предприятий часто сдерживается трудностями, связанными с необходимостью оперативного ввода и редактирования графических объектов типа эскизов, несмотря на их простоту. Пользователи указанных программ обычно не владеют компьютерной графикой, а если и знакомы с системами Компас, AutoCAD и им подобным, то не имеют их в своем распоряжении. Такие системы ориентированы на разработку чертежей сложных изделий машиностроения, их установка на автоматизированные рабочие места стоит немалых затрат, которые окупаются лишь при интенсивном и полноценном использовании. Перечисленные обстоятельства служат аргументами в пользу разработки графических редакторов с ограниченным набором функций, приемлемых по стоимости и простоте освоения для широкого круга технических специалистов. Пользователь, в соответствии со спецификой своей деятельности, должен иметь возможность самостоятельно устанавливать соотношения, влияющие на функционирование редактора.
Одним из алгоритмов, позволяющих осуществлять вывод геометрических соотношений в графических редакторах, является алгоритм Rete [1,2].
Алгоритм Rete использует для представления модели граф или сеть. В контексте прямой цепочки рассуждений, алгоритм Rete определяет процедуру, которая работает путем перемещения каждого нового факта через узлы сети, каждый из которых представляет операцию реляционной алгебры на одном или нескольких отношениях.
В качестве фактов рассматриваются атрибуты графических объектов редактора. Имея в своем распоряжении словарь символов и грамматику, регламентирующую порождение символических структур, можно представить в машинном виде исходное состояние графических объектов. Эти представления соответствуют аксиомам канонической системы - они представляют собой некоторую символическую структуру, которую нужно преобразовывать, применяя имеющиеся правила в определенном порядке [3]. В правилах условия должны соответствовать допустимым символическим структурам, а действия - содержать специальные операторы манипулирования такими структурами[4].
При формировании нового факта (утверждения) он становится отношением с единственной записью. Данное отношение далее тестируется рядом операций SELECT, каждая из которых является специфичной для каждого условия правила.
Затем, когда запись в отношении проходит операцию SELECT, отношение подвергается операции PROJECT, которая выделяет поле или поля, содержащие соответствия или связывания.
После прохождения записи через операции SELECT, PROJECT и операцию переименования, она добавляется к отношению, связанному с условием правила.
Альфа-узел в сети Rete - узел, в котором хранится отношение для определенного условия каждого правила. Отношение каждого альфа-узла накапливает все факты или утверждения, формирующиеся посредством операции SELECT.
Каждое добавление к отношению альфа-узла вызывает попытку объединить добавленную запись, представленную в виде отношения с единственной записью, с другим отношением. Необходимо отметить, что операция JOIN выполняется совместно с определением, является ли связывание переменной, выраженное в добавляемой записи, соответствующим связыванию переменной, уже установленному в другом отношении.
Бета-узел сети Rete - узел, хранящий результат объединения отношений. Отношение, хранящееся в бета-узле, включает записи пар связываний для переменных, которым удовлетворяют условия правила.
Так, пополнение отношения А1 или отношения А2 (рисунок 1) влечет за собой операцию JOIN, которая может добавить одну или несколько записей в отношение B12, отражая связывания переменных, которые удовлетворяют первым двум условиям правила одновременно. При добавлении второй записи к отношению A2 происходит циклический процесс. Новая запись, представленная отношением, объединяется с отношением A1, формируя вторую запись для отношения B12. Далее следующий факт инициирует цикл добавления записей в узлы сети Rete и пополняет записью, например, отношение A3. Добавление записи в отношение A3 приводит к объединению добавленной записи с отношением B12 Операция JOIN выполняется совместно с определением того, является ли связывание переменной, выраженное в добавляемой записи, соответствующим связыванию переменной, уже установленному в отношении B12. Результат генерируется в отношении B23. Выполняя операцию PROJECT для записи по одной из переменных, в результате получается возможное связывание для переменной в выполняемой части правила.
Добавление нового отношения вызывает волнообразный эффект, циклический процесс, который проходит через сеть Rete по мере того, как в отношениях формируются новые записи.
Необходимо заметить, что все реляционные операции влекут только небольшие отношения, содержащие несколько фактов. Они никогда не вовлекают полную совокупную базу данных фактов.
Для формирования сети Rete используется следующий алгоритм:
1. Для каждого шаблона условия, которое содержится в правиле, сформировать операцию SELECT, которая проверяет новые факты.
2. Для каждого правила:
2.1 для каждого условия:
2.1.1 сформировать альфа-узел и связать его с соответствующей операцией SELECT, выполненной ранее.
3. Для каждого альфа-узла, за исключением первого:
3.1 cформировать бета-узел;
3.2 если бета-узел является первым бета-узлом, присоединить его к первому и второму альфа-узлам;
3.3 в противном случае, присоединить бета-узел к соответствующему альфа-узлу и предыдущему бета-узлу.
4. Применить операцию PROJECT к результирующему бета-узлу.
При использовании алгоритма Rete применяется следующая последовательность действий:
1. Для каждого факта выполнить операцию SELECT, проведя факт по сети Rete к соответствующему альфа-узлу.
2. Для каждого альфа-узла, получившего факт, использовать операцию PROJECT, чтобы выделить соответствующие связывания переменной. Провести эти новые связывания по сети Rete к соответствующим бета-узлам.
3. Для каждого бета-узла, получившего новые связывания переменной, применить операцию JOIN для формирования новых множеств связывания переменной. Провести эти новые множества связывания переменной к следующему бета-узлу или к заключительной операции PROJECT.
4. Для каждого правила использовать операцию PROJECT, чтобы выделить связывания переменной, необходимые для определения выполняемой части правила.
Для примера работы алгоритма Rete рассмотрим одно из используемых в системе правил, записанных на языке CLIPS. В частности, правило, отражающее соотношение длин между отрезками 1:2, выглядит следующим образом:
(defrule otr_proporc
(otrez ?Id ?x1 ?y1 ?x2 ?y2)
(newotrez ?Iden ?x3 ?y3 ?x4 ?y4)
(proporc_1_2 =(= (/ (sqrt (+ (** (- ?x2 ?x1) 2) (** (- ?y2 ?y1) 2))) (sqrt (+ (** (- ?x4 ?x3) 2) (** (- ?y4 ?y3) 2)))) 2.0))
=>
(bind ?len1 (sqrt (+ (** (- ?x2 ?x1) 2) (** (- ?y2 ?y1) 2))))
(bind ?len2 (sqrt (+ (** (- ?x4 ?x3) 2) (** (- ?y4 ?y3) 2))))
(printout t "The line " ?Iden " in 2 times is more than a line " ?Id crlf)
(printout t "The length of line " ?Id "=" ?len1 " and the length of line " ?Iden "=" ?len2 crlf crlf))
Имея в распоряжении факты или утверждения, можно представить их в табличном виде. На языке отношений факты записаны в отношение, названное “Данные”, где столбцы обозначены как Field1, Field2, Field3, Field4, Field5, Field6.
Таблица 1 - Отношение «Данные», представляющее множество фактов
Field1 |
Field2 |
Field3 |
Field4 |
Field5 |
Field6 |
|
Otrez |
3 |
2.0 |
2.0 |
5.0 |
2.0 |
|
Newotrez |
8 |
2.0 |
9.0 |
8.0 |
9.0 |
|
Otrez |
4 |
5.0 |
9.0 |
3.0 |
4.0 |
|
Newotrez |
9 |
11.0 |
6.0 |
7.0 |
17.0 |
|
Proporc_1_2 |
TRUE |
Чтобы определить, какие значения переменных активизируют правило, сначала необходимо определить, какие записи отношения соответствуют первому условию правила, otrez ?Id ?x1 ?y1 ?x2 ?y2. То есть, необходимо найти такие записи, в которых значение поля Field1 равно otrez. Таким образом, операция реляционной алгебры SELECT выделяет записи с заданным значением поля из одного отношения для формирования нового отношения с несколькими записями - SELECT from Данные where Field1=otrez. Результатом будет являться новое отношение:
Таблица 2 - Отношение, соответствующее первому условию правила
Field1 |
Field2 |
Field3 |
Field4 |
Field5 |
Field6 |
|
Otrez |
3 |
2.0 |
2.0 |
5.0 |
2.0 |
|
Otrez |
4 |
5.0 |
9.0 |
3.0 |
4.0 |
Теперь необходимо знать, какие связывания переменных формируют записи отношения. В соответствие с этим используется другая операция реляционной алгебры PROJECT, чтобы выделить соответствующие поля - PROJECT Result over Field2, Field3, Field4, Field5, Field6. В этот момент поля Field2, Field3, Field4, Field5, Field6 переименовываются соответственно в Id, x1, y1, x2,y2, чтобы определить соответствия для переменных. В результате получается такое отношение:
Таблица 3 - Отношение A1, определяющее соответствия для переменных
Id |
x1 |
y1 |
x2 |
y2 |
|
3 |
2.0 |
2.0 |
5.0 |
2.0 |
|
4 |
5.0 |
9.0 |
3.0 |
4.0 |
На следующем этапе необходимо определить, какие записи в отношении данных «Данные» соответствуют второму условию правила, newotrez ?Iden ?x3 ?y3 ?x4 ?y4. Для этого нужно выбрать те записи, у которых значение поля Field1 равно newotrez, SELECT from Данные where Field1=newotrez. Затем выполняя операцию PROJECT Result over Field2, Field3, Field4, Field5, Field6 получим следующую таблицу:
алгоритм rete геометрический графический
Таблица 4 - Отношение A2, соответствующее второму условию правила
Iden |
x3 |
y3 |
x4 |
y4 |
|
8 |
2.0 |
9.0 |
8.0 |
9.0 |
|
9 |
11.0 |
6.0 |
7.0 |
17.0 |
На следующем этапе определяется, какие записи отношения данных соответствуют третьему условию правила, proporc_1_2 =(= (/ (sqrt (+ (** (- ?x2 ?x1) 2) (** (- ?y2 ?y1) 2))) (sqrt (+ (** (- ?x4 ?x3) 2) (** (- ?y4 ?y3) 2)))) 2.0). Так как, в третьем условии правила вычисляется отношение пропорции, то из исходного отношения данных выбираются записи, у которых значение поля Field1 равно proporc_1_2 - SELECT from Данные where Field1=proporc_1_2. Получается отношение, представленное в таблице 5.
Таблица 5 - Отношение A3,соответствующее третьему антецеденту правила
proporc_1_2 |
true |
Так как в третьем условии правила используется логическое выражение, то из отношений A1 и A2 выбираются только те записи, в которых значения соответствующих переменных делают истинным логическое выражение, определенное в третьем условии правила. Сначала происходит объединение отношений A1 и A2. Результирующее отношение B12 имеет такой вид:
Таблица 6 - Отношение B12 как результат объединения отношений A1 и A2
Id |
x1 |
y1 |
x2 |
y2 |
Iden |
x3 |
y3 |
x4 |
y4 |
|
3 |
2.0 |
2.0 |
5.0 |
2.0 |
8 |
2.0 |
9.0 |
8.0 |
9.0 |
|
3 |
2.0 |
2.0 |
5.0 |
2.0 |
9 |
11.0 |
6.0 |
7.0 |
17.0 |
|
4 |
5.0 |
9.0 |
3.0 |
4.0 |
8 |
2.0 |
9.0 |
8.0 |
9.0 |
|
4 |
5.0 |
9.0 |
3.0 |
4.0 |
9 |
11.0 |
6.0 |
7.0 |
17.0 |
Полученное отношение объединяется с отношением A3. В результате получается такое отношение:
Таблица 7 - Отношение B23 как результат объединения отношений B12 и A3
Id |
X1 |
y1 |
x2 |
y2 |
Iden |
x3 |
y3 |
x4 |
y4 |
Proporc_1_2 |
|
3 |
2.0 |
2.0 |
5.0 |
2.0 |
8 |
2.0 |
9.0 |
8.0 |
9.0 |
True |
|
3 |
2.0 |
2.0 |
5.0 |
2.0 |
9 |
11.0 |
6.0 |
7.0 |
17.0 |
False |
|
4 |
5.0 |
9.0 |
3.0 |
4.0 |
8 |
2.0 |
9.0 |
8.0 |
9.0 |
False |
|
4 |
5.0 |
9.0 |
3.0 |
4.0 |
9 |
11.0 |
6.0 |
7.0 |
17.0 |
False |
Из полученного отношения можно видеть, что всем трем условиям правила удовлетворяет лишь единственная запись.
Из нее можно определить значения переменных - идентификаторов отрезков, координаты концевых точек отрезков. Соответственно в выполняемой части правила формируется заключение, что на отрезки с данными идентификаторами накладывается отношение пропорции их длин 1:2.
Сеть Rete, соответствующая данному правилу, представлена на рисунке 1.
Рисунок 1 - Сеть Rete для правила, проверяющего соотношение пропорции 1:2 между двумя отрезками
Одной из проблем рассмотренного алгоритма является большое количество вычислений. Так, если правило содержит n условий, то требуется n операций SELECT и PROJECT для формирования отношений A наряду с числом операций JOIN и PROJECT, равным n-1, формирующим отношения B. Если количество правил составляет m и правило проверяется каждый раз, когда новый факт добавляется к отношению данных, то необходимо выполнить m*n операций SELECT, m*(2*n-1) операций PROJECT и m*(n-1) операций JOIN каждый раз, когда добавляется новый факт.
ЛИТЕРАТУРА
1. Myers B.A. Creating Interaction Techniques by Demonstration //
2. IEEE Computer Graphics and Applications.-1987.- P.51-60.
3. Myers B.A. Creating User Interfaces by Demonstration. - Boston:
4. Academic Press. -1988.
5. Borning A., Duisberg. Constraint-Based Tools for Building User
6. Interfaces //ACM Transactions on Graphics,1986.-Vol.5.-N.4.-P.345-374.
7. Питер Джексон “Введение в экспертные системы”. Пер. с англ.: Уч. Пособие. - М.: Издательский дом “Вильямс”, 2001. - 624 с.
Размещено на Allbest.ru
...Подобные документы
Общие сведения о графических редакторах, понятия компьютерной растровой и векторной графики, форматов. Обзор и сравнительный анализ современных программ обработки и просмотра графических изображений: Paint, Corel Draw, Adobe Photoshop, MS PowerPoint.
дипломная работа [283,9 K], добавлен 09.08.2010Разработка факультативного курса по редактированию графических объектов в программе GIMP. Основные понятия растровой графики, интерфейс программы, окна, диалоги и панели. Добавление отсутствующих элементов, Создание из фотографии "карандашного рисунка".
дипломная работа [5,5 M], добавлен 17.12.2012Редактирование аналоговых и цифровых изображений. Описание графических форматов файла. Алгоритм отображения файла и реализации эффектов. Программа для работы с графическими форматами. Назначение и взаимодействие модулей. Перечень процедур и функций.
курсовая работа [516,8 K], добавлен 28.05.2013Практическое усвоение технологии вставки в текст документа разных графических объектов, созданных средствами Word и других дополнений MS Office. Схема алгоритма вычисления функции вида X=f(X)*E. Диалоговое окно. Вставка диаграммы.
лабораторная работа [162,8 K], добавлен 22.05.2007Виды графических редакторов. Форматы файлов для хранения растровых графических изображений. Среда графического редактора. Панели инструментов и режимы работы графических редакторов. Инструменты редактирования рисунка. Изменение шрифта текста на рисунке.
контрольная работа [246,6 K], добавлен 16.12.2010Программы компьютерной графики для рисования. Основные инструменты для создания рисунка в графических редакторах. Выделение объектов в векторном редакторе. Описание этапов создания текстового граффити на кирпичной стене с помощью программы Photoshop.
курсовая работа [2,1 M], добавлен 04.07.2014Понятие "компьютерная графика". Изучение графических редакторов в школьном курсе для 8-го класса. Способы создания цифровых графических объектов. Представление о цветовых моделях. Анализ программы Inkscape. Копирование файла в папку установки приложения.
курсовая работа [1,5 M], добавлен 17.05.2014Особенности формирования растрового изображения. Графические примитивы, которые используются наиболее часто в современных графических системах (линии и фигуры). Основные алгоритмы создания растровых изображений в графических компьютерных программах.
презентация [883,6 K], добавлен 26.01.2015Разработка программы с целью создания изображений графических примитивов на поверхности формы. Передача координат и плоскости рисования в функцию алгоритма разложения прямой линии. Расчет параметров для построения круга, особенности прорисовки эллипса.
контрольная работа [220,7 K], добавлен 27.04.2012Создание простейших рисунков, закраска объектов в CorelDraw. Работа с текстом в графических объектах в программе CorelDRAW. Использование кривых линий и ломаных. Упорядочивание, выравнивание и группировка объектов. Использование графических эффектов.
практическая работа [1,5 M], добавлен 19.04.2012История развития графических адаптеров и их характеристики. Конкуренция изготовителей ATI и NVIDIA как "двигатель прогресса" графических адаптеров. Обзор основных моделей: ATI Radeon, Nvidia GeForce FX. Критерии выбора графических адаптеров при покупке.
реферат [134,7 K], добавлен 14.11.2013Создание помещения галереи, установка параметров графических объектов и вывод на экран комнат фотогалереи, а также осуществление просмотра галереи в автоматическом режиме. Разработка алгоритма перемещения по фотогалерее. Структура модуля Gallery.pas.
курсовая работа [466,9 K], добавлен 07.06.2012Растровые и векторные графические редакторы. Формирование изображений, форматы графических файлов. Особенности векторной графики, ее достоинства. Построение треугольника и гиперболы по алгоритму Бразенхема. Математические модели поверхностей и объектов.
курсовая работа [769,5 K], добавлен 21.12.2013Эволюция технологий записи информации на оптические носители информации. Создание DVD приводов и дисков с возможностью записи большего количества информации. Работа в графических редакторах. Серийное производство записываемых дисков формата Blue Ray.
контрольная работа [739,0 K], добавлен 03.12.2010Описание математических методов представления и обработки графических изображений. Описание разработанного программного дополнения. Описание функций и их атрибутов. Представление и обработка графических изображений. Результаты тестирования программы.
курсовая работа [1,7 M], добавлен 27.01.2015Типы графических объектов в среде Mathlab. Команды и функции, которые предназначены для открытия графических окон (figure) и принципы управления ими. Структура и работа программы, ее структура и сферы применения. Анализ результатов работы программы.
реферат [182,2 K], добавлен 21.01.2015Общие сведения о графической информации. Характеристика растровой, векторной и демонстрационной графики. Обзор программ обработки и просмотра графических изображений Paint, Adobe Photoshop, MS Power Point, ACDSee. Возможности графических редакторов.
курсовая работа [55,7 K], добавлен 01.07.2010Растровая графика, составление графических изображений из отдельных точек (пикселей). Растровые графические редакторы. Векторная графика - построение изображения из простых объектов. Достоинства, недостатки и применение растровой и векторной графики.
презентация [7,8 K], добавлен 06.01.2014Базы данных, содержащие информацию о графических редакторах. Предметная область, словарь понятий и терминов. Построение функциональных зависимостей. Синтез схемы базы данных на основании функциональных зависимостей. Построение неизбыточного покрытия.
курсовая работа [190,8 K], добавлен 12.05.2009Понятие и особенности организации технологии CUDA, принципы реализации алгоритма с его помощью. Генерация случайных чисел. Оценка производительности исследуемой технологии, специфика построения графических программ на основе, преимущества использования.
контрольная работа [102,7 K], добавлен 25.12.2014