- •FLIDE
- •Московский институт радиотехники, электроники и автоматики (МИРЭА ТУ)
- •Направленные отношения.
- •Свойства НО и представимые семантические объекты.
- •Сетевое представление НО
- •Сетевое представление семантических объектов
- •Программа
- •Вычисление
- •Подстановка
- •Редукция сетей
- •Вычисление в базисе конструкторов
- •Вычисление с разметкой
- •Вычисление с разметкой
- •Стратегии вычисления
- •Маски вычислимости
- •Маски вычислимости (продолжение)
- •Логический вывод
- •Реализация
- •Внутреннее представление КССГ
- •Внутреннее представление сети
- •Внутреннее представление сети (продолжение)
- •Оптимизация вычислений
- •Редукция «по фронту»
- •Редукция «по фронту» (продолжение)
- •Кольцевая подстановка
- •Кольцевая подстановка (докопирование контекста)
- •Системные типы данных и системные НО
- •Отладка программ
- •Импорт программ языка Пролог
- •Схема вычисления запроса в СФЛП
- •Интерфейсные
- •Технология графического построения программ (ТГПП)
- •Формирование сетей
- •Вид окна графического редактора
- •Автоматическая расстановка сетей
- •Автоматическая расстановка сетей
- •Основные результаты работы
- •Спасибо за внимание!
Внутреннее представление сети
Визуальное представление
Succ
Add
Succ
Внутреннее представление |
|
Succ |
|
Add |
Succ |
|
Внутреннее представление сети (продолжение)
Пример: удаление элемента сети. точек сети на удаляемый элемент.
Простое ссылочное представление
Null |
Succ |
- Необходимо просматривать список связей точки с элементами сети.
Требуется скорректировать ссылки |
|
Представление ПСИЗ СФЛП |
|
Null |
Succ |
+ Точно известно, какую связь |
|
необходимо скорректировать. |
B
Реализация подстановки
e |
A |
R |
e |
= |
A |
B |
|
|
|
|
|
|
Подстановка во внутреннем представлении: |
|
A |
B |
|
e |
A |
B |
|
e |
A |
B |
|
e |
A |
B |
|
e |
A |
B |
результат |
|
A B
Оптимизация вычислений
Реализованы следующие виды оптимизации:
редукция «по фронту»
(позволяет сократить область сети, анализируемую на применимость правил редукции используется «ленивый» принцип анализа сети);
кольцевая подстановка
(позволяет уменьшить количество элементов сети при ее копировании для выполнения подстановки за счет реализации копирования «по необходимости»);
оптимизация последнего вызова
(уменьшает вычислительные затраты за счет отказа от копирования исходной сети в том случае, если для замещаемого элемента осталось применить только одно правило);
оптимизация порядка применения правил
(позволяет повысить эффективность вычисления рекурсивных НО за счет применения сначала не рекурсивного, а затем рекурсивного правила, как правило, с оптимизацией последнего вызова);
Редукция «по фронту»
|
|
N |
S3 |
N |
F |
X |
|
|
H |
||
|
G |
|
|
|
|
|
|
C |
|
|
|
|
S |
|
|
[S1 / eX ]S3 |
|
|
|
N |
|
|
S3 |
F |
N |
|
|
|
|
||
|
G |
N |
|
C |
|
|
|
|
|
T |
|
|
|
|
|
|
F |
|
H |
|
|
|
|
D |
G |
F |
|
|
|
||
|
|
|
|
|
S |
|
|
X |
|
S1 |
X |
S2 |
|
|
|
||
|
|
F |
F |
|
|
D |
G |
|
|
|
|
|
|
|
|
|
N |
N |
S |
|
N |
S3 |
|
|
|
|
G |
|
C |
F |
|
|
N |
H |
|
|
|
D |
G |
|
|
|
|
|
S |
|
Редукция «по фронту» (продолжение)
|
N |
|
S3 |
|
N |
|
|
|
|
||
|
G |
|
|
|
G |
C |
F |
|
|
C |
|
|
|
N |
H |
|
|
|
|
Т |
|
|
|
|
|
|
|
|
|
D |
G |
|
|
D |
G |
|
|
|
|
||
|
S |
|
|
|
F |
|
|
|
|
S |
S3
N H
|
|
|
|
D |
|
|
|
|
D |
G |
N |
H |
Т |
N |
H |
N |
H |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
C |
|
|
|
C |
|
|
S |
|
|
Т |
|
|
Т |
|
|
|
|
|
S |
|
S |
|
|
|
Кольцевая подстановка
|
|
|
|
S3 |
A |
A |
|
S1 |
N |
S |
|
|
|
|
S2 |
S |
|
A |
|
|
|
N |
|
|||
|
|
S |
S |
|
|
|
||
|
|
|
|
|
|
|||
|
|
|
|
|
A |
|
||
N |
S |
|
|
|
|
|
S |
|
|
|
|
|
|
|
Обычная подстановка:
S3
N S
N
N |
S |
S |
S |
N |
S |
|
S3 |
|
|
||
|
|
N |
|
N |
S |
S |
S |
Кольцевая подстановка:
S3
S |
|
|
N |
S |
S |
|
S3 |
|
S |
|
N |
S |
S |
Кольцевая подстановка (докопирование контекста)
|
|
|
|
S3 |
A |
A |
|
S1 |
N |
S |
|
|
|
|
S2 |
S |
|
A |
|
|
|
N |
|
|||
|
|
S |
S |
|
|
|
||
|
|
|
|
|
|
|||
|
|
|
|
|
A |
|
||
N |
S |
|
|
|
|
|
S |
|
|
|
|
|
|
|
[S1 / eA ]S3 |
|
|
|
|
|
|
|
|
N |
S |
|
|
S4 |
|
|
|
S4 |
|
S |
|
|
N |
A |
|
|
|
|
|
|
|
S |
S |
S |
||
|
|
|
|
|
|
|||
|
A |
S |
|
N |
S |
|
|
|
|
S |
S |
|
|
|
|
||
N |
S |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
S4 |
|
|
|
|
S4 |
N |
A |
S |
S |
S |
N |
A |
S |
S |
S |
|
|
||||||||
|
|
|
|
||||||
N |
S |
|
|
|
N |
S |
|
|
|
Системные типы данных и системные НО
Для повышения производительности СФЛП и удобства ее использования введены системные типы данных и системные НО* для их обработки.
*Системные НО поддерживаются только в режиме вычисления с разметкой. Системные НО можно рассматривать как НО с внешней интерпретацией.
Системные типы данных:
натуральные числа,
Пример: 2
списки,
Пример: [A,B,C]
строки,
Пример: "TXT"
термы.
Пример: F(B,G(C,A))
|
Null |
Succ |
Succ |
C |
B |
A |
|
|
Cn |
Cn |
Cn |
Nil |
|
|
|
T |
X |
T |
|
|
Cn |
Cn |
Cn |
Nil |
|
|
|
|
|
B |
F |
|
C |
|
|
|
G |
|
|
|
|
|
|
|
A |
|
|
Системные НО:
Имя НО |
Комментарий |
|
|
123 |
Натуральные числа |
|
|
Генератор числа 123 |
|
||
Add |
Сложение |
|
|
Sub |
Вычитание |
|
|
Mult |
Умножение |
|
|
Div |
Деление |
|
|
> |
Оператор «больше» |
|
|
>= |
Оператор |
«больше |
либо |
равно» |
|
|
|
< |
Оператор «меньше» |
|
|
<= |
Оператор |
«меньше |
либо |
равно» |
|
|
|
== |
|
|
|
Оператор «равно» |
|
||
=/= |
Оператор «не равно» |
|
|
= |
Особые НО |
|
|
Унификация термов |
|
||
\\= |
Термы не унифицируемы |
||
is |
Предикат is Пролога |
|
|
write |
Выдача |
текстового |
|
сообщения |
|
|
|
flogol_spec |
|
|
|
Оптимизация компиляции |
Отладка программ
Для отладки программ в СФЛП предусмотрены следующие средства:
Дерево отладки
(отображает построение дерева вывода в процессе вычисления запроса),
Системное НО $Write
(отображает разметку входных точек элемента сети сорта $Write в специализированном окне редактора),
Системное НО $Show
(отображает сеть в момент начала вычисления элемента сети сорта $Show),
Окно статистики
(отображает основные параметры процесса вычисления).