def __init__(self, vars, domains, neighbors, constraints):
vars = vars or list(domains.keys())<EOL>update(self, vars=vars, domains=domains,<EOL>neighbors=neighbors, constraints=constraints,<EOL>initial=(), curr_domains=None, nassigns=<NUM_LIT:0>)<EOL>
Construct a CSP problem. If vars is empty, it becomes domains.keys().