Here, is fixed and contains the CSP instances whose constraint relations belong to . Moreover, the languages yielding problems in P can be characterised exactly; every other finite language yields an NP-complete problem.
Formerly the Feder–Vardi dichotomy conjecture, the theorem was proved independently by Bulatov and Zhuk.
The graph isomorphism problem is the decision problem of determining whether two finite graphs have the same structure up to a relabelling of their vertices.
Instance: two finite graphs and .
Question: does there exist a bijection such that, for every ,
Equivalently, the question is whether under a graph isomorphism. The corresponding language is
Graph Isomorphism is in NP, but it is not known whether it is in or NP-complete. The theorem of Ladner says only that, if , some NP-intermediate problem exists; it does not show that Graph Isomorphism is such a problem.
Graph Isomorphism now has a quasipolynomial-time algorithm, but whether it has a polynomial-time algorithm remains open. Its structure gives reasons to doubt that it is merely another undiscovered NP-hard problem: a simple local algorithm rejects almost all non-isomorphic graph pairs.
Colour refinement
Colour refinement starts by assigning every vertex the same colour. At each round, a vertex receives a new colour determined by its current colour and the multiset of colours in its neighbourhood:
Run the refinement on both graphs using shared colour identifiers, and compare their final colour signatures
If the signatures differ, the graphs cannot be isomorphic. Equal signatures mean only that colour refinement did not distinguish them; they may still be non-isomorphic.
The algorithm is therefore a sound rejection test, not a complete isomorphism test. Each round sees one more layer of local structure. In fact, captures the isomorphism type of the rooted neighbourhood tree revealed around to depth . Local agreement can nevertheless hide a global difference.
For example, the cycle and the disjoint union are not isomorphic, but every vertex in both graphs has two neighbours. Colour refinement assigns the same colour to every vertex at every round.
Colour refinement is also called 1-dimensional Weisfeiler–Leman refinement. It runs in polynomial time and distinguishes almost all large graphs, even though simple regular graphs can defeat it completely.