Boolean functions can be represented in many ways including logical forms, truth tables, and polynomials. Additionally, Boolean functions have different canonical representations such as minimal disjunctive normal forms. Other canonical representation is based on the polynomial representation of Boolean functions where they can be written as a nested product of canalizing layers and a polynomial that contains the noncanalizing variables. In this paper we study the problem of identifying the canalizing layers format of Boolean functions. First, we show that the problem of finding the canalizing layers is NP-hard. Second, we present several algorithms for finding the canalizing layers of a Boolean function, discuss their complexities, and compare their performances. Third, we show applications where the computation of canalizing layers can be used for finding a disjunctive normal form of a nested canalizing function. Another application deals with the reverse engineering of Boolean networks with a prescribed layering format. Finally, implementations of our algorithms in Python and in the computer algebra system Macaulay2 are available at https://github.com/ckadelka/BooleanCanalization.
翻译:布尔函数可以以多种方式表现, 包括逻辑形式、 真相表格和多元面体 。 此外, 布伦函数有不同的罐头表达方式, 如最小的分解正常形式。 其他库伦函数的表达方式基于布伦函数的多元面表, 可以在其中写成, 作为运河层的嵌套产物, 以及包含非扫描变量的多元面体 。 在本文中, 我们研究如何确定布伦函数的罐头层格式 。 首先, 我们显示找到运河层的问题是 NP- 硬的 。 其次, 我们提出几种算法, 寻找布伦函数的罐头层, 讨论其复杂性, 比较其性能。 第三, 我们显示可使用罐头层的计算方法, 以寻找嵌套的罐子功能的不相容正常形式 。 另一个应用程序涉及布伦网络的逆向工程, 使用一种规定的分层格式 。 最后, 我们在 Python 和计算机代数系统应用了我们的算法 。 Comebrabka2 。 可以在 http:// cankakaan/ Cankalayka2 上 。 。