Обсуждение участника:Sancho20021 — различия между версиями
(→Оценка на количество линейных программ над \{\downarrow\} длины r) |
|||
| (не показаны 3 промежуточные версии этого же участника) | |||
| Строка 12: | Строка 12: | ||
{{Определение | {{Определение | ||
|definition= | |definition= | ||
| − | '''Линейная программа''' {{---}} список строк вида <tex>(a, (i_1, \ldots, i_k))</tex>, где <tex>a \in B</tex> (базис), <tex>a: \mathbb B^k \rightarrow \mathbb B</tex>, <tex>i_j</tex> {{---}} индексы переменных. | + | '''[[Представление_булевых_функций_линейными_программами#Линейные_программы|Линейная программа]]''' {{---}} список строк вида <tex>(a, (i_1, \ldots, i_k))</tex>, где <tex>a \in B</tex> (базис), <tex>a: \mathbb B^k \rightarrow \mathbb B</tex>, <tex>i_j</tex> {{---}} индексы переменных. |
}} | }} | ||
'''Пример линейной программы''' | '''Пример линейной программы''' | ||
| Строка 30: | Строка 30: | ||
'''Длина''' линейной программы {{---}} количество строк. | '''Длина''' линейной программы {{---}} количество строк. | ||
{{Теорема | {{Теорема | ||
| − | |statement= Для булевой функции <tex>f | + | |statement= Для булевой функции <tex>f </tex> существует линейная программа длины <tex>r</tex> тогда и только тогда, когда существует схема, использующая <tex>r</tex> функциональных элементов. |
|proof=Чтобы построить по схеме программу, можно занумеровать элементы схемы в порядке [[Использование_обхода_в_глубину_для_топологической_сортировки#Топологическая_сортировка|топологической сортировки]], и для каждого элемента <tex>m</tex> с функцией <tex>a</tex> и входами <tex>i_1, \ldots, i_k</tex> сопоставить строчку линейной программы с номером <tex>m</tex> вида <tex>(a, (i_1, \ldots, i_k))</tex>. | |proof=Чтобы построить по схеме программу, можно занумеровать элементы схемы в порядке [[Использование_обхода_в_глубину_для_топологической_сортировки#Топологическая_сортировка|топологической сортировки]], и для каждого элемента <tex>m</tex> с функцией <tex>a</tex> и входами <tex>i_1, \ldots, i_k</tex> сопоставить строчку линейной программы с номером <tex>m</tex> вида <tex>(a, (i_1, \ldots, i_k))</tex>. | ||
| Строка 47: | Строка 47: | ||
{{Лемма | {{Лемма | ||
|id=Лемма1 | |id=Лемма1 | ||
| − | |statement= | + | |statement=Существует булева функция <tex>f: size_B(f) \geq \frac{2^n}{2n}</tex> |
|proof=Посчитаем число линейных программ длиной <tex>r < \frac{2^n}{2n} </tex> | |proof=Посчитаем число линейных программ длиной <tex>r < \frac{2^n}{2n} </tex> | ||
| Строка 62: | Строка 62: | ||
===Возвращение к теореме о нижней оценке=== | ===Возвращение к теореме о нижней оценке=== | ||
| − | <tex>|F_g| | + | <tex>|F_g| \leq 2^{\frac{2^n}{c}} \Rightarrow \frac{|F_g|}{2^{2^n}} \leq \frac{2^\frac{2^n}{c}}{2^{2^n}} = 2^{2^n (\overset{< 0}{\frac{1}{c}-1})}\rightarrow 0</tex> |
| + | = См. также = | ||
| + | * [[Определение булевой функции]] | ||
| + | * [[Реализация булевой функции схемой из функциональных элементов]] | ||
| + | * [[Представление булевых функций линейными программами]] | ||
Текущая версия на 00:57, 18 июня 2020
Содержание
Теорема о нижней оценке на число элементов в схеме
| Теорема: |
Большинство булевых функций требуют для реализации порядка функциональных элементов, где — количество аргументов функции.
Формальная запись теоремы: Тогда |
Для доказательства этой теоремы нам понадобится доказать несколько вспомогательных утверждений.
| Определение: |
| Линейная программа — список строк вида , где (базис), , — индексы переменных. |
Пример линейной программы
Линейная программа для функции над базисом
Длина линейной программы — количество строк.
| Теорема: |
Для булевой функции существует линейная программа длины тогда и только тогда, когда существует схема, использующая функциональных элементов. |
| Доказательство: |
|
Чтобы построить по схеме программу, можно занумеровать элементы схемы в порядке топологической сортировки, и для каждого элемента с функцией и входами сопоставить строчку линейной программы с номером вида . Построение функциональной схемы по линейной программе очевидно. |
Оценка на количество линейных программ над длины
— количество аргументов булевой функции.
— стрелка Пирса, является сама по себе базисом булевых функций.
В первой строчке мы можем выбрать одну из переменных () и применить к ней . Получим еще одну переменную . Во второй строчке программы нам на выбор доступны уже переменных (). В общем случае на -й строчке (нумерация с единицы) мы можем применить стрелку Пирса к одной из переменных. Из этого следует формула ниже.
Количество линейных программ
| Лемма: |
Существует булева функция |
| Доказательство: |
|
Посчитаем число линейных программ длиной
Теперь возьмем все булевы функции, размер которых не превышает для какого-то . Тогда |
Таким образом, количество линейных программ длины не больше
Возвращение к теореме о нижней оценке