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