Представление булевых функций линейными программами — различия между версиями
Cuciev (обсуждение | вклад) (Intro added) |
Cuciev (обсуждение | вклад) (Intro added) |
||
Строка 2: | Строка 2: | ||
= Линейные программы = | = Линейные программы = | ||
+ | Определения и основные понятия, связанные с булевыми функциями описаны в статье [[Определение булевой функции]].<br> | ||
{{Определение | {{Определение | ||
|definition='''Линейная программа''' {{---}} последовательность присваиваний вида <tex>x = F(x_1, x_2, \dots , x_n)</tex>, где <tex>x, x_1, \dots , x_n</tex> {{---}} переменные, а <tex>F</tex> {{---}} <tex>k</tex>-местная базисная функция. | |definition='''Линейная программа''' {{---}} последовательность присваиваний вида <tex>x = F(x_1, x_2, \dots , x_n)</tex>, где <tex>x, x_1, \dots , x_n</tex> {{---}} переменные, а <tex>F</tex> {{---}} <tex>k</tex>-местная базисная функция. | ||
Строка 18: | Строка 19: | ||
|definition='''Программа''' <tex>P</tex> со входными переменными <tex>x_1,\dots , x_n</tex> '''вычисляет''' в выходной переменной <tex>Z</tex> '''функцию''' <tex>F(x_1, \dots , x_n)</tex>, если для любого набора значений входов <tex>\sigma_1, \dots , \sigma_n</tex> после завершения работы <tex>P_Z(\sigma_1, \dots , \sigma_n) = F(\sigma_1, \dots , \sigma_n)</tex>. | |definition='''Программа''' <tex>P</tex> со входными переменными <tex>x_1,\dots , x_n</tex> '''вычисляет''' в выходной переменной <tex>Z</tex> '''функцию''' <tex>F(x_1, \dots , x_n)</tex>, если для любого набора значений входов <tex>\sigma_1, \dots , \sigma_n</tex> после завершения работы <tex>P_Z(\sigma_1, \dots , \sigma_n) = F(\sigma_1, \dots , \sigma_n)</tex>. | ||
}} | }} | ||
+ | |||
= Связь между схемами и линейными программами = | = Связь между схемами и линейными программами = | ||
Как известно, [[Реализация булевой функции схемой из функциональных элементов|булевы функции представимы в виде схем из функциональных элементов]]. В данном пункте мы определим связь между такими схемами и линейными программами.<br> | Как известно, [[Реализация булевой функции схемой из функциональных элементов|булевы функции представимы в виде схем из функциональных элементов]]. В данном пункте мы определим связь между такими схемами и линейными программами.<br> |
Версия 12:13, 3 июня 2020
Содержание
Линейные программы
Определения и основные понятия, связанные с булевыми функциями описаны в статье Определение булевой функции.
Определение: |
Линейная программа — последовательность присваиваний вида | , где — переменные, а — -местная базисная функция.
Пример
Для базиса линейная программа состоит из присваиваний вида:
- ;
- ;
- .
Линейная программа с выделенными переменными порождает для каждого набора значений входных переменных естественный процесс вычисления:
- Переменным присваиваются значения , соответственно, а каждой из остальных переменных присваивается значение ;
- Последовательно выполняются присваивания программы , в результате чего каждая из переменных программы получит итоговое значение .
Определение: |
Программа | со входными переменными вычисляет в выходной переменной функцию , если для любого набора значений входов после завершения работы .
Связь между схемами и линейными программами
Как известно, булевы функции представимы в виде схем из функциональных элементов. В данном пункте мы определим связь между такими схемами и линейными программами.
Теорема: |
|
Доказательство: |
(1)
|
Пример
Воспользуемся только что доказанной теоремой, и построим на основании этой схемы линейную программу.
Результатом топологической сортировки данного графа может стать последовательность вершин: . Тогда программа будет иметь следующий вид:
Утверждение: |
Число команд в линейной программе , т.е. время ее выполнения, совпадает со сложностью схемы . Глубина схемы также имеет смысл с точки зрения времени вычисления. Именно, — это время выполнения на многопроцессорной системе. Действительно, все команды, соответствующие вершинам одинаковой глубины, можно выполнять параллельно на разных процессорах, так как результаты любой из них не используются в качестве аргументов другой. |
См. также
- Определение булевой функции
- Реализация булевой функции схемой из функциональных элементов
- Использование обхода в глубину для топологической сортировки