Представление булевых функций линейными программами — различия между версиями
(fix) |
|||
Строка 2: | Строка 2: | ||
Определения и основные понятия, связанные с булевыми функциями описаны в статье [[Определение булевой функции|"определение булевой функции"]].<br> | Определения и основные понятия, связанные с булевыми функциями описаны в статье [[Определение булевой функции|"определение булевой функции"]].<br> | ||
{{Определение | {{Определение | ||
− | |definition='''Линейная программа''' {{---}} последовательность строк вида <tex>{\{s_i\}}_{i=0}^t</tex>, в которой <tex>s_i</tex> имеет вид <tex>x_i = F(x_{a_1}, x_{a_2}, \ldots , x_{a_n})</tex>, где <tex>x_i, x_{a_1}, \dots , x_{a_n}</tex> {{---}} переменные, каждое из чисел <tex>a_i</tex> меньше <tex> | + | |definition='''Линейная программа''' {{---}} последовательность строк вида <tex>{\{s_i\}}_{i=0}^t</tex>, в которой <tex>s_i</tex> имеет вид <tex>x_i = F(x_{a_1}, x_{a_2}, \ldots , x_{a_n})</tex>, где <tex>x_i, x_{a_1}, \dots , x_{a_n}</tex> {{---}} переменные, каждое из чисел <tex>a_i</tex> меньше <tex>i</tex>, а <tex>F</tex> {{---}} <tex>n</tex>-местная базисная функция. |
}} | }} | ||
'''Пример'''<br> | '''Пример'''<br> |
Версия 21:41, 20 августа 2020
Содержание
Линейные программы
Определения и основные понятия, связанные с булевыми функциями описаны в статье "определение булевой функции".
Определение: |
Линейная программа — последовательность строк вида | , в которой имеет вид , где — переменные, каждое из чисел меньше , а — -местная базисная функция.
Пример
Для базиса линейная программа состоит из присваиваний вида:
- ;
- ;
- .
Линейная программа с выделенными переменными порождает для каждого набора значений входных переменных естественный процесс вычисления:
- Переменным присваиваются значения , соответственно, а каждой из остальных переменных присваивается значение ;
- Последовательно выполняются присваивания программы , в результате чего каждая из переменных программы получит итоговое значение .
Определение: |
Программа | со входными переменными вычисляет в выходной переменной функцию , если для любого набора значений входов после завершения работы .
Связь между схемами и линейными программами
Как известно, булевы функции представимы в виде схем из функциональных элементов. В данном пункте мы определим связь между такими схемами и линейными программами.
Теорема: |
|
Доказательство: |
(1)
|
Пример
Воспользуемся только что доказанной теоремой, и построим на основании этой схемы линейную программу.
Установим соответствие между вершинами схемы и переменными: .
Результатом топологической сортировки данного графа может стать последовательность вершин: . Тогда программа будет иметь следующий вид:
Утверждение: |
Число команд в линейной программе , т.е. время ее выполнения, совпадает со сложностью схемы . Глубина схемы также имеет смысл с точки зрения времени вычисления. Именно, — это время выполнения на многопроцессорной системе. Действительно, все команды, соответствующие вершинам одинаковой глубины, можно выполнять параллельно на разных процессорах, так как результаты любой из них не используются в качестве аргументов другой. |
См. также
- Определение булевой функции
- Реализация булевой функции схемой из функциональных элементов
- Использование обхода в глубину для топологической сортировки
Литература
- Дехтярь М.И. Реализация булевых функций с помощью логических схем // Введение в схемы, автоматы и алгоритмы, 2007. URL: https://www.intuit.ru/studies/courses/1030/205/lecture/5306