-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmapcolor.py
More file actions
55 lines (47 loc) · 2.23 KB
/
mapcolor.py
File metadata and controls
55 lines (47 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Genera le 3 istanze di map coloring
from csp import CSP
def australia_csp():
"""
Mappa dell'Australia:
WA, NT, SA, Q, NSW, V, T con 3 colori
Le regioni sono: WA (Western Australia), NT (Northern Territory), SA (South Australia), Q (Queensland),
NSW (New South Wales), V (Victoria), T (Tasmania)
"""
variables = ['WA','NT','SA','Q','NSW','V','T']
domains = {v: ['R','G','B'] for v in variables}
# regioni adiacenti
edges = [
('WA','NT'),('WA','SA'),('NT','SA'),
('NT','Q'),('SA','Q'),('SA','NSW'),
('SA','V'),('Q','NSW'),('NSW','V')]
# vincolo: colori diversi se adiacenti
constraints = [((v1, v2), lambda c1,c2: c1 != c2) for v1,v2 in edges]
return CSP(variables, domains, constraints)
def europe_simplified_csp():
"""
Mappa semplificata dell'Europa centrale con 11 stati e 4 colori
I paesi sono: Portogallo (P), Spagna (S), Francia (F), Italia (I), Svizzera (SW), Germania (G), Belgio (B),
Paesi Bassi (NL), Austria (A), Repubblica Ceca (CZ), Polonia (PL)
Si possono usare 4 colori perchè secondo il teorema dei quattro colori, qualunque mappa piana può
essere colorata con al massimo 4 colori senza che due regioni adiacenti condividano lo stesso.
"""
variables = ['P','S','F','I','SW','G','B','NL','A','CZ','PL']
domains = {v: ['R','G','B','Y'] for v in variables}
edges = [('P','S'),('S','F'),('F','I'),('I','SW'),
('SW','G'),('G','CZ'),('CZ','PL'),('PL','G'),
('G','A'),('A','I'),('F','G'),('F','B'),
('B','NL'),('NL','G'),('SW','A'),('F','SW'),
('G','B'),('G','PL'),('CZ','A')]
constraints = [((v1, v2), lambda c1,c2: c1 != c2) for v1,v2 in edges]
return CSP(variables, domains, constraints)
def usa_simplified_csp():
"""
Mappa semplificata degli Stati Uniti con 5 stati e 3 colori
Gli stati sono: WA (Washington), OR (Oregon), CA (California), NV (Nevada), UT (Utah)
"""
variables = ['WA','OR','CA','NV','UT']
domains = {v: ['R','G','B'] for v in variables}
edges = [('WA','OR'),('OR','CA'),('CA','NV'),
('NV','UT'),('UT','OR'),('CA','UT')]
constraints = [((v1, v2), lambda c1,c2: c1 != c2) for v1,v2 in edges]
return CSP(variables, domains, constraints)