模块化域上的约束求解

计算科学 算法 表现 Python
2021-12-29 04:46:22

我对模块化域有一组约束,例如 for allaAi:xa(modni)i=0,,k

问题是,这样的存在吗?我已经指出了连续替换的方法,最终我实现了以下 python 代码。x

import fractions
def exist(ruleList, acc = [0,1]): # currentCandidate , currentDomain
  if len(ruleList) == 0:
    return True
  else:
    rule = ruleList[0]
    n = rule[1]/fractions.gcd(rule[1], acc[1])
    newDomain = acc[1] * n  
    for candidate in (acc[0] + acc[1] * i for i in xrange(n)): 
      if candidate % rule[1] in rule[0]:
        if exist(ruleList[1:], [candidate, newDomain]):
          return True
    return False

rules = [([0,1,2],5),   # A_1,n_1
         ([4,5,6],9),   # A_2,n_2
         ([0,3,6],10)]  # A_3,n_3

print (exists(rules),)  # True

rules = [([0,2,3],5),   # A_1,n_1
         ([1,2,8],9),   # A_2,n_2
         ([4,6,9],10)]  # A_3,n_3

print (exist(rules),)   # False

他们是实现这种更好的方法还是更好的算法方法?

0个回答
没有发现任何回复~