Graph Colouring Various Models
an obvious model SAT sets demo random graphs chromatic number maxCol phase transition
kCol We are given a graph G = (V,E) where V is set of vertices and E is set of edges G is simple, undirected graph Given k colours, can we label vertices with colours such that for all (i,j) E colour(i) ≠ colour(j)
A Graph G = (V,E)
Colour such that adjacent vertices are different
Model 1
kCol Model 1 Have a constrained integer variable v[i] for each vertex i V Domain of v[i] is {1..k} the set of avaliable colours For all for all (i,j) E v[i] ≠ v[j] Decision variable are v[0] to v[n-1] Heuristic, Brelaz
Model 2
kCol Model 2 SAT encoding Consider as an example a 3Col instance with 2 adjacent vertices, i and j boolean variable to represent a vertex x taking a specific colour k “at least one and at most one” constraint adjacent vertices take different colours
kCol Model 2 SAT encoding Heuristics?
Implementation … generate data and pass to minisat+
Model 3
kCol Model 3 Have a constrained set variable S[i] for each colour Colour Sets of Vertices Decision variables are S[0] to S[k-1] Heuristics? Where col is a set of colours An edge is not in a coloured set All vertices are coloured
an example
g10.txt
is red 2 is green 3 is blue g10.txt
A different colour with Colour02
Generating random graphs
Small demo with data directory
Chromatic NumberChromatic Number
Chromatic NumberChromatic Number
We want the minimum number of colours to colour G Chromatic NumberChromatic Number introduce a constrained integer variable maxCol maxCol has domain {1.. n} each vertex has a constrained integer variable v[i] v[i] has domain {1.. n} for (int i=0;i<n;i++) modl.addConstraint(leq(v[i],maxCol)) sol.minimise(maxCol)
Chromatic NumberChromatic Number
Chromatic NumberChromatic Number
Chromatic NumberChromatic Number
What should we do if there are not enough colours and we want to do the best that we can? That is, colour as many vertices as possible leaving some vertices uncoloured, or colour all vertices and minimise conflicts? MaxCol (min-conflicts)
associate a dummy colour into domains dummy colour doesn’t conflict with any other colours get occurrence of dummy colour and minimise that OR associate a penalty with a conflict for edge {i,j} have constrained integer variable P[i][j] domain P[i][j] is {0,1} modl.addConstraint(or(and(neq(v[i],v[j]),eq(P[i][j],0)), (and(eq(v[i],v[j]),eq(P[i][j],1))) minimise the sum of the penalty variables
Lassie, do you think we could have a look at the phase transition in kCol? Woof!
Lassie, remember the paper by Cheeseman, Kanefsky and Taylor, and that stuff on constrainedness? Woof!
Lassie, are you lying? Woof!
Constrainedness is expected number of solutions N is log_2 of the size of the state space k = 0, all states are solutions, easy, underconstrained k = k = 1, critically constrained, 50% solubility, hard, is zero, easy, overconstrained Applied to: CSP, TSP, 3-SAT, 3-COL, Partition, HC, …?
Random Graphs
Make Experiments as a Job
The Results File
Analyse Results
4Col n = 50 sample size = ≤ p ≤ 0.3
Check Out the Dates 1 day’s work
fin