Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
gordeev.doc
Скачиваний:
36
Добавлен:
17.08.2019
Размер:
1.42 Mб
Скачать

8.2.Оценки сложности сфэ.

Оценки функции Шеннона L(n) строятся из тех же соображений, что и оценки сложности задачи. Верхние оценки получаются путем построения конкретной СФЭ, реализующей функцию f(n). Для этого было разработано в 1950-е годя целое направление в дискретной математике – методы синтеза СФЭ. А вот нижние оценки получаются «из мощностных соображений».

Построим СФЭ, реализующую функцию f = . Перегруппируем множители, собрав в одном месте переменные с нулевыми степенями. Тогда, перенумеровав переменные, функцию можно переписать в виде

f = (xi & . .. & xk)& к+1 Vхк+2 V ...V хп).

Заметим, что в этой формуле не более n операций. Значит, сложность схемы данной функции не превосходит n.

Выше мы рассматривали очевидный метод построения СФЭ по совершенной ДНФ функции. Их него сразу следует

Утв. L(n) ≤(n +1) 2n.

Замечание. На самом деле легко доказать, что L(n)≤ (n + 1) 2n-1. Действительно, посмотрим на таблицу значений нашей функции и выясним, чего в ней больше: нулей или единиц. В зависимости от этого будем исполь­зовать, соответственно, СДНФ либо СКНФ. В самом худшем случае будет 2n-i дизъюнкций или коньюнкций.

Дальнейшее улучшение позволяет избавиться и от множителя n. Построим по индукции СФЭ, которая будет реализовывать множество функций Kn - все конъюнкции со сложностью C(n).

Обозначим через Kn множество всех функций вида . Сейчас мы будем строить схему, которая реализует все функции из Kn. Сложность такой схемы обозначим C(n). При n = 1 получается схема без элементов. Предположим, что мы уже построили схему для всех множеств с номерами меньше n. Зафиксируем число k < n. Построим схему, реализующую все функции из Kn, используя в качестве подсхем две схемы: для Kk и для Kn-k.

Рассмотрим произвольную конъюнкцию:

(xi & . .. & xk)& к+1 Vхк+2 V ...V хп).

Возьмём по одному выходу из схем для Kk и Kn-k, реализующие множители в скобках, и подключим их к конъюнктору. Получим схему, реализующую одну конъюнкцию от n переменных. Также поступим со всеми 2n конъюнкциями от n переменных, то есть будем строить их, используя соответствующие выходы в схемах Kk и Kn-k, связывая их конъюнктором. Итого получим схему для Kn, затратив C(k)+C(n — k)+2n элементов. Теперь возьмём к := n/2 и получим С(п) ≤2n +2С(n/2) = 2n(2n/2+2С(n/4))=2n+2n/2+1+4С(n/4)) .

Отсюда следует, что можно (асимптотически) улучшить оценку для L(n): реализовав все конъюнкции ценой ~ 2n элементов, склеим их не более чем 2n дизъюнкциями, в итоге получим схему сложности порядка 2n+1.

Дальнейшее улучшение в n раз дает метод Шеннона синтеза схем. Он просто использует разложение функции по k переменным

F(x1,…,xn) = .

Пусть k = n-q. Реализуем все конъюнкции Kk первых k переменных, при этом потратим 2k элементов. Кроме этого, может потребоваться реализовать все функции от q переменных, которых всего . Каждую из них можно реализовать со сложностью q2q. При склейке основной схемы по указанной выше формуле потребуется ещё 2k конъюнкторов (для вычисления слагаемых) и ещё 2k -1 дизъюнкторов. Итого

L(n) < 2k + 2k + (2k — 1) + q 2q < 3 • 2k + q 2q .

Положим q := [logn] — 1. Тогда

L(n) < 6•2n-[logn] + n•logn•2n/2-1 =12•2n / n + n•logn•2n/2-1 < 12•2n / n .

Наконец, следующая теорема О.Б.Лупанова дает окончательную неулучшаемую асимптотическую оценку. Само доказательство взято из лекций О.Б.Лупанова.

Теорема. Справедливо соотношение L(n) < 2n / n .

Доказательство. Рассмотрим произвольную булеву функцию n переменных. Отделим q := n-k первых переменных и рассмотрим таблицу, в которой 2k строк и 2q столбцов. Строки занумеруем всевозможными значениями послед­них k переменных, а столбцы — всевозможными значениями первых q переменных. Ячейки таблицы заполним значениями функции. Каждый столбец представляет собой значения функции, полученной подстановкой кон­стант в первые q переменных, то есть . Разрежем таблицу на горизонтальные полоски по s строк в каждой (последняя полоса будет, возможно, меньше; пусть в ней s' < s строк). Число полос будет равно p=[2k /s]< 2k /s+1.

Через Ii обозначим индикатор i-й полосы, то есть функцию, которая равна единице на строках этой полосы, и только на них. Обозначим теперь

= Ii.

. Такие функции называются обрезанными функциями. Ясно, что

= .

Тогда имеем

f(x1,…,xn) = .

Реализуем все конъюнкции первых q переменных, потратив 2q элементов. Кроме этого, реализуем все конъюнк­ции последних k переменных, потратив 2k элементов. Все обрезанные функции имеют не более s ненулевых значений, значит, их количество не превышает 2s. Поскольку все конъюнкции последних переменных уже есть, на изготовление СДНФ для каждой обрезанной функции уйдёт всего s дизъюнкций, значит, всего на реализацию обрезанных функций каждой полосы мы потратим не более s2s элементов, а всего — не более ps 2s.

На сборку каждой уйдёт ещё p дизъюнкций (поэтому всего на это уйдёт p 2q операций), а на сборку функции f уйдёт ещё 2q конъюнкций и 2q дизъюнкций.

Суммируя полученные оценки, имеем

L(f) < 2q + 2k + ps2s + p2q + 2q + 2q = 3 2q + ps 2s + p2q + 2k.

Вспоминая, что р< 2k /s+1, получаем

L(f) < 3 • 2q +(2k /s+ 1)(s2s + 2q) + 2k.

Видно, что s должно быть порядка п, но всё же чуть меньше его. Что касается к, то нужно, чтобы 2k /s→∞, чтобы нам не мешала единица в скобках. Положим k := [2 log n] и s := [n — 4 log n]. Подставляя эти значения, получаем оценку порядка 2n / n

Теорема доказана.

Чтобы доказать, что получена асимптотически неулучшаемая оценка, нужно аналогичную асимптотику L(n) > 2n / n снизу.

Пусть P* (n) — функции, существенно зависящие от n переменных. N(h, n) — число функций, существенно зависящих от n переменных, которые реализуются схемами слож­ности, не превосходящей h. N'(h, n) — число функций, существенно зависящих от n переменных, которые реализуются схемами слож­ности ровно h; N''(h, n) — число схем сложности h для функций, существенно зависящих от n переменных. Очевидно, что N' = N, потому что всегда можно дополнить схему ничего не делающими элементами. Оче­видно также, что N≤N'', так как одну функцию можно реализовать разными схемами, но не наоборот.

Покажем, что для любого ε>0, число функций, реализуемых схемами сложностью меньше (1 — ε ) 2n / n , гораздо меньше, чем всех функций. Итак, покажем, что для ho= (1 — ε ) 2n / n выполнено соотношение N(ho,n)<< |P*(n)|. Мы будем оценивать величину N, мажорируя её величиной N''.

Пусть y(p, q) — число графов с q ребрами и p= h + n вершинами (n входов и h элементов), N''(h, n, q) — число схем с q ребрами. Сколько схем можно сделать из одного графа? У нас имеется не более:

  • 2q способов выбрать ориентацию ребер;

  • ( h + n) n способов выбрать входы;

  • 3h способов присвоения вершинам различных ФЭ;

  • h + n способов выбора выхода.

Число γ(n,m) связных графов с n вершинами и m ребрами не превосходит

nm-nconstn+m. Действительно, чтобы из n-вершинного дерева сделать m-рёберный граф, нужно дополнительно провести ещё m—(n— 1)= k ребро. Из каждой вершины дерева можно выпустить куда-то ребро (так, чтобы второй конец пока не входил ни в какую вершину). Это можно сделать, очевидно, способами. Теперь эти концы надо как-то подсоединить к имеющимся вершинам. Это можно сделать mn способами. Значит, существует не более

mn mn способов получить из дерева граф. А поскольку количество деревьев не превосходит 4n-1, то в итоге имеем оценку сверху

4n-1mn 4n-1mn ≤4n-1 2mnpm-n8n8m npm-n . Таким образом, достаточно взять const = 8.

Отсюда получаем:

N(h, n, q) ≤ γ(n,m) 2q (h + n)n+1 3hconsth+n+q(h + n)qh+1 2q 3h. (15)

Вспоминая, что q ≤ 2h, и собирая константы в новую константуB , имеем:

N''(h, n, q)≤ B3h+n(h + n)h+1.

Теперь получим оценку для N''(n, h):

N''(h, n, q)≤ B3h+n(h + n)h+1.

N''(n,h)≤ N''(h,n,q)≤ B3h+n(h + n)h+1(h + 1) ≤ (C(h + n))h+n.

Нам нужно убедиться, что N''(ho,n) < |P*(n)| при достаточно больших n. Заметим, что|P*(n)| > 22" — n ≈ 22". Таким образом, требуемое неравенство будет выполнено, если при n→∞ будет выполняться

Далее для достаточно боль­ших n:

log N’’(ho,n) — 2n + o(1) ≤ (ho + n) log(C(ho + n)) — 2n + o(1)≤((1-ε)2n/n+n)n

-2n + o(l) = (1-ε)2n + n2 - 2n + o(l) = n2 + o(1) — ε2n →∞ при n→∞.

что и требовалось доказать.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]