0
我在使用python求解最大布尔可满足性问题的算法时遇到了一些麻烦。我应该实现一个求解函数,它使用一个参数f(对应于公式的python函数),它返回一个满足f且具有最大可能数目的True值的值列表。 我得到了下面的辅助函数:求python中最大布尔可满足性问题的算法
def count(values):
return len([v for v in values if v == True])
可以以这种方式使用:
count([True, False, True, False])
2
这是确切的问题给出:
实现递归函数解决(F ),它将第一个参数作为单个函数f(即对应于公式的Python函数)。函数f可以采用任何非零数量的参数。函数solve(f)应该返回一个满足f且具有最大可能数量的True值的值列表(与满足f的任何其他值列表一样多)。
这是我到目前为止有:
def solve(f, values = []):
if (len(values) == len(variables(f))):
if(f(*values) == True):
return values
这基本上是基本情况。但现在我完全卡住了。
如果有人能为我完成这件事,并解释他们做了什么,我会永远感激!
非常感谢!
编辑1: 这里的函数变量(F)
def variables(f):
return list(f.__code__.co_varnames)
小撇:'[True,False,True,False] .count(True)'也返回2,内置于:) – mhlester
什么是变量(f)? f总是返回一个布尔值吗?我不明白这个问题。 – RemcoGerlich
什么是函数f的域和共域?如果域是无限的,那么解的数量也可能是无限的。什么时候“满意”? – Hyperboreus