Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
FLIDE / PRESENT / MPEI_AN.ppt
Скачиваний:
9
Добавлен:
28.06.2014
Размер:
1.08 Mб
Скачать

Внутреннее представление сети

Визуальное представление

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),

Окно статистики

(отображает основные параметры процесса вычисления).

Соседние файлы в папке PRESENT