A few strategies for the nrczt- theoriesThe purpose of this post is not to tell any human player how to use the various resolution rules I've been considering: they can be used freely, in any order. And they can be mixed with any other rule you like.
The purpose of this post is to define a few formal strategies that can be used by either a human or a computer solver. This is very far from being exhaustive.
Such strategies will seldom be used in a strict manner by a human solver, which tends to be more opportunistic; but they may somehow guide his search. Contrary to a human solver, a computer solver needs to make systematic choices and will have to choose some predefined strategy (it may have several, but it can use only one at a time).
1) Strategies based on rules prioritiesAs chains are the main solving tool for hard puzzles, they can be considered as the backbone of a hierarchy.
As chains have both a type and a length, chain rule priorities can be based on both.
Type component:
Consider the following partial ordering of the various types of chains I've been considering:
- Code: Select all
xy hxy : xyz hxyz : xyzt hxyzt : nrczt
: nrc : nrcz : nrczt
: xyt hxyt : nrczt
: nrc : nrct : nrczt
As this partial ordering is based on subsumption relations, defining priorities that do not respect it would be equivalent to de-activating some of the rules. E.g. if nrczt is given the highest priority, then no other type of chain will be found.
Length component: shorter length gives higher (at least not lower) priority. Any other choice would be irrational (not as an opportunistic choice but) as a systematic preference.
Given these two basic components, there remain many ways of combining them into chain rule priorities. Indded, any full ordering compatible with the mathematical product of these two partial orderings is valid.
Other patterns (not chains): insert them in the chain hierarchy. There may be lots of ways to do so. In SudoRules default strategy, the insertion of Subset rules (Naked, Hidden and Super-Hidden) is done just before the xy-chains on the same number of cells.
example 1 (type preference): all the xy and hxy before all the nrc, before all the nrct, before all the nrczt (the length is not taken into account).
example 2 (length preference, which is the default ordering in SudoRules):
- all chains of any type of length n before all chains of any type of length n+1
- for a given length: xy before hxy before xyt before hxyt before xyzt before hxyzt before nrc before nrct before nrczt
example 3 (3D penalty):
- Code: Select all
xy before hxy before xyt before hxyt before xyzt before hxyzt and any 2D chain of length n before any 2D chain of length n+1
nrc before nrct before nrczt and any 3D chain of length n before any 3D chain of length n+1
for the 3D chains of length n, put them all after all the 2D cahins of length n+P (P is the 3D-penalty) and before all those of length n+p+1
example 4 (t penalty and z penalty) :
- Code: Select all
xy before hxy before nrc of the same length
xyt before hxyt before nrct of the same length
xyz before hxyz before nrcz of the same length
xyzt before hxyzt before nrczt of the same length
any chain of length n with the t-exetnesion between any chain of length n+tP without it and any chain of length n+tP+1 without it
any chain of length n with the z-exetnesion between any chain of length n+zP without it and any chain of length n+zP+1 without it
any chain of length n with the t- and z- exetensions between any chain of length n+ztP without it and any chain of length n+ztP+1 without it
tP, zP and ztP are the z-, t- and ztP penalties, with ztP > tP and ztP > zP.
example 5 (t penalty, z penalty and 3D penalty) :
Combine examples 3 and 4.
All these strategies can be applied in SudoRules.
Notice that, if instead of considering a backbone built on the xy-to-nrczt family, one tried to define a backbone based on ALS and their Hidden counterparts (HALS or AHS) and their Super-Hidden counterparts (SHALS, not currently used in AICs, AFAIK), one should also introduce two parameters (length of the chain and size of the ALSs) and define how they should be combined.
2) Strategies based on focusing on some candidateBasic principle: choose a candidate, say z, and try to eliminate it by all available means before you try something else
Notice that this can be combined with any of the previous strategies, restricted to patterns with z as a target.
The main difficulty here is, how to choose the focus on a candidate?
I've already given an example: focus on candidates that are bivalue in either of the rc rn cn or bn spaces (i.e. bivalue or bilocation).
Notice that,although it seems natural, this may not be a very good strategy. Sometimes it is easier to eliminate candidates that are not bivalue.
Merely focusing on candidates would be easy in SudoRules. But what's missing is heuristic rules saying on which candidate(s) it is interesting to focus.
3) Strategies based on symmetriesOne can also try to exploit symmetries in the entries.
As this is very specific and I have no experience with this, I just mention it as a possibility.