我这里有一个有趣的算法问题。问题在于与电子设计的模拟有关。
比如说,我有一个包含一些门的结构。说一个3输入AND门。 有8种可能的输入,即
000
001
...
111
在这8个输入中,如果我只输入两个输入(000)
和(111)
,我会得到两个可能的输出,即0
和1
。
因此,在输出上产生状态'0'和'1'的最小输入向量集是{000,111}。
给出了一个设计,一些门的排列,给出了一个算法来找到最小输入向量集,在最终输出上产生两种状态(即0和1)。
答案 0 :(得分:13)
您的问题等同于解决boolean satisfiability problem问题。因此它是NP完全的。
要获得其中一个输入,您可以选择任意输入并查看是否给出0或1.要查找提供其他输出的输入,您需要SAT求解器。
维基百科建议可以使用一些algorithms:
如果您不想实现它,有些工具可以随时使用SAT求解器:
答案 1 :(得分:5)
这是通过Quine McCluskey算法解决的。还有一些JavaScripts和工具可以解决您的问题。