Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции / Горбунов / УП_ОПТ2 / Р8_Проектир.doc
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
654.85 Кб
Скачать
    1. Ориентированные ациклические графы вывода.

«Назначение человека – в разумной деятельности.»

АРИСТОТЕЛЬ 384-322гг. до н.э.

Геометрический способ описания RAP-последовательностей вывода приводит нас к её модели в виде помеченного направленного графа (Directed Acyclic) или DA- графа. Такой граф не имеет циклов ни в одной вершине. ПомеченныйDA-граф имеет в каждой своей вершине некоторый элемент из множества имен (меток). СтроитсяDA-граф вывода над Ф, где Ф – множествоF–зависимостей по следующим правилам.

Пр1. Любое множество изолированных вершин с именами из схемы R (метками) является DA-графом вывода надF.

Пр2. Пусть Н есть DA –граф вывода над Ф, содержащий вершины v1, v2, ..., vK с метками А1, А2, ... , АКи {А1, А2, ... , АК}CZ есть F–зависимость в Ф. Построим Нс добавив к Н вершину u, помеченную какС, и дуги (v1,u), (v2,u), ..., (vK,u).Нс является DA-графом вывода над Ф.

Пр3. Никакой другой граф не является DA–графом вывода над Ф.

В дальнейшем DA–граф вывода мы будем называть DDA-графом над Ф (Derivation Directed Acyclic). Правило Пр1 всегда применяется однократно, а правило Пр2 многократно и гарантирует построение именно DDA-графа. Заметим, что порядок выбора функционнальных зависимостей из Ф не влияет на построениеDDA-графа.

Можно показать, что в выводе ФXY использующем В-аксиомы, будет возрастать правая часть в представленииF–зависимостей. Действительно, используя аксиому пополнения В2 мы всегда можем наращивать правую часть до тех пор, пока не исчерпаем все допустимые из Ф зависимости. Затем можно просмотретьRAP-последовательность в обратном направлении и удалить результаты применения В2, приводящие кF–зависимостям с левой частью не нужной для доказательста (т.е. не Х). При этом все случаи применения В1 (кроме первого) оказываются излишними. Последняя аксиома В3 используется для выделения в правой части необходимого нам подмножества (единственный раз). Очевидно, что В-аксиомы очень удобны для анализа семейства функциональных зависимостей Ф.

      1. Основные определения.

«...Тот, кто утверждает, что все истинно, делает истинным и противоположное утверждение.»

АРИСТОТЕЛЬ 384-322гг. до н.э.

Определение начальной вершины.

Если Н есть DDA–граф над Ф, тоначальной вершинойназывается вершина не имеющая входящих в неё дуг. Она появляется в Н по правилу Пр1.

Пусть Н есть DDA–граф над Ф. Граф Н называется DDA–графом для XY, если

  • X является множеством меток исходных вершин;

  • каждый атрибут в Y является меткой какой-либо вершины в Н.

Определение используемого множества.

Используемым множеством DDA-графа Н над Ф (обозначаемое как U(H)) называется множество всех F–зависимостей в Ф, использованных при применении правила ПР2 во время построения DDA-графа.

Эквивалентность В-вывода и DDA–графов.

Для данного множества F–зависимостей Ф над R иF-зависимости XY следующие утверждения эквивалентны.

  1. FXY.

  2. Существует последовательность вывода на Ф для XY.

  3. Существует DDA–граф над Ф для XY.

      1. Проверка принадлежности F-зависимости к Ф+.

«Ум заключается не только в знании, но и в умении прилагать знания на деле».

АРИСТОТЕЛЬ 384-322гг. до н.э.

Для доказательства выводимости ФXY можно построитьФ+, но этот путь очень трудоемкий. Алгоритм проверки принадлежностиF-зависимости XY к Ф+ строится на основе построения замыкания X над Ф. После того как найдено X+, можно проверить – следует ли зависимость XY из Ф.

Алгоритм построения замыкания CLOSURE.

Дано:Множество атрибутов X и множество F–зависимостей Ф.

Надо: Замыкание X+ над Ф.

CLOSURE(X,Ф) {

OLD = ; // переменное множество атрибутов

NEW = X ; // переменное множество атрибутов

while (NEW OLD) {

OLD = NEW;

for (<каждая F-зависимость WZ в Ф>) {

if (NEW W) NEW = NEW Z;

}

}

return NEW;

}

Для описания алгоритма мы использовали «псевдокод» на языке С/С++. Но это не программный код, а описание смыслового содержания функции CLOSUREдля других людей с использованием синтаксиса языка, что позволяет им понять её смысл (и потом написать функцию). Этот алгоритм строитDDA-граф над Ф дляXX+, используя модифицированную версию правила В2 в определении DDA-графа. При этом за один проход добавляется более чем одна вершина. Нет необходимости запоминать дуги этого графа, т.к. возможность использования очередной WZ зависит только от помеченности вершин графа.

Алгоритм проверки принадлежности замыканию MEMBER.

Дано: Множество F–зависимостей Ф и зависимость XY.

Надо: Истина, если ФXY, иначе ложь.

MEMBER(Ф, XY) {

if (Y CLOSURE(X,Ф)) return TRUE;

else return FAULSE;

}

Вычислительная сложностьэтого алгоритма такая же, как и у функцииCLOSURE. Мы будем использовать это понятие в смысле RAM-машины (как это сделал Д. Е. Кнут в фундаментальном труде «Искуство программирования»). Несложно оценить время выполнения этого алгоритма как О(аN2), где а-некоторая константа, а N – количество зависимостей в Ф. Но это не предел, можно построить алгоритм проверки принадлежности зависимости к замыканию Ф+ с оценкой сложности порядка О(N), где N – количество символов, необходимых для представления Ф иXY.

Следствие. Для функциональной зависимости XY её принадлежность к Ф+ размерности N можно проверить за время порядка О(N).

Соседние файлы в папке УП_ОПТ2