| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 28c4948 commit a574f97
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -254,6 +254,70 @@ def test_mrv(): | |||
| 254 | 254 | assert mrv(assignment, csp) == 'C' | |
| 255 | 255 | ||
| 256 | 256 | ||
| 257 | + def test_unordered_domain_values(): | ||
| 258 | + map_coloring_test = MapColoringCSP(list('123'), 'A: B C; B: C; C: ') | ||
| 259 | + assignment = None | ||
| 260 | + assert unordered_domain_values('A', assignment, map_coloring_test) == ['1', '2', '3'] | ||
| 261 | + | ||
| 262 | + | ||
| 263 | + def test_lcv(): | ||
| 264 | + neighbors = parse_neighbors('A: B; B: C; C: ') | ||
| 265 | + domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 5], 'C': [0, 1, 2, 3, 4]} | ||
| 266 | + constraints = lambda X, x, Y, y: x % 2 == 0 and (x+y) == 4 | ||
| 267 | + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) | ||
| 268 | + assignment = {'A': 0} | ||
| 269 | + | ||
| 270 | + var = 'B' | ||
| 271 | + | ||
| 272 | + assert lcv(var, assignment, csp) == [4, 0, 1, 2, 3, 5] | ||
| 273 | + assignment = {'A': 1, 'C': 3} | ||
| 274 | + | ||
| 275 | + constraints = lambda X, x, Y, y: (x + y) % 2 == 0 and (x + y) < 5 | ||
| 276 | + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) | ||
| 277 | + | ||
| 278 | + assert lcv(var, assignment, csp) == [1, 3, 0, 2, 4, 5] | ||
| 279 | + | ||
| 280 | + | ||
| 281 | + def test_forward_checking(): | ||
| 282 | + neighbors = parse_neighbors('A: B; B: C; C: ') | ||
| 283 | + domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 5], 'C': [0, 1, 2, 3, 4]} | ||
| 284 | + constraints = lambda X, x, Y, y: (x + y) % 2 == 0 and (x + y) < 8 | ||
| 285 | + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) | ||
| 286 | + | ||
| 287 | + csp.support_pruning() | ||
| 288 | + A_curr_domains = csp.curr_domains['A'] | ||
| 289 | + C_curr_domains = csp.curr_domains['C'] | ||
| 290 | + | ||
| 291 | + var = 'B' | ||
| 292 | + value = 3 | ||
| 293 | + assignment = {'A': 1, 'C': '3'} | ||
| 294 | + assert forward_checking(csp, var, value, assignment, None) == True | ||
| 295 | + assert csp.curr_domains['A'] == A_curr_domains | ||
| 296 | + assert csp.curr_domains['C'] == C_curr_domains | ||
| 297 | + | ||
| 298 | + assignment = {'C': 3} | ||
| 299 | + | ||
| 300 | + assert forward_checking(csp, var, value, assignment, None) == True | ||
| 301 | + assert csp.curr_domains['A'] == [1, 3] | ||
| 302 | + | ||
| 303 | + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) | ||
| 304 | + csp.support_pruning() | ||
| 305 | + | ||
| 306 | + assignment = {} | ||
| 307 | + assert forward_checking(csp, var, value, assignment, None) == True | ||
| 308 | + assert csp.curr_domains['A'] == [1, 3] | ||
| 309 | + assert csp.curr_domains['C'] == [1, 3] | ||
| 310 | + | ||
| 311 | + csp = CSP(variables=None, domains=domains, neighbors=neighbors, constraints=constraints) | ||
| 312 | + domains = {'A': [0, 1, 2, 3, 4], 'B': [0, 1, 2, 3, 4, 7], 'C': [0, 1, 2, 3, 4]} | ||
| 313 | + csp.support_pruning() | ||
| 314 | + | ||
| 315 | + value = 7 | ||
| 316 | + assignment = {} | ||
| 317 | + assert forward_checking(csp, var, value, assignment, None) == False | ||
| 318 | + assert (csp.curr_domains['A'] == [] or csp.curr_domains['C'] == []) | ||
| 319 | + | ||
| 320 | + | ||
| 257 | 321 | def test_backtracking_search(): | |
| 258 | 322 | assert backtracking_search(australia) | |
| 259 | 323 | assert backtracking_search(australia, select_unassigned_variable=mrv) | |
| Back | FazBrowse Home | New Git URL |
0 commit comments