SPOTTING NRC(Z)(T)-CHAINS: NRC(Z)(T)-TAGGINGPrerequisites and references:
- my opening post in the "fully supersymmetric chains" thread
- my opening post in the "concept of a resolution rule…" thread
As I already indicated:
- there are
resolution rules, which are mathematical theorems in the "condition-action" form; these theorems guarantee that asserting a value or (more often) deleting of a candidate, is legitimate. As such, resolution rules are invaluable: without them (or any other form of formal theorem that might appear some day in their stead), Sudoku can only be ad hoc reasoning; as I already said also, but it is useful to repeat it, FOL is the ultimate scientifc form of this rules, but most of the time, using the auxiliary predicates that I have already be proven to be writtable as FOL formulæ, a non ambiguous English formulation guarantees that they can be expressed as resolution rules; There is another reason why resolution rules are invaluable: only precise formulations of such rules allow to prove subsumption relationships between different rules;
- and there are
resolution techniques associated to such rules, whose purpose is to answer the practical question: how do we apply the rules on a real grid, i.e. how do we find the patterns (defining the condition part of a rule) on a real grid; I already gave an example for which two different resolution techniques can be associated to a given resolution rule .
(There may also be resolution techniques that cannot be associated to a resolution rule, such as T&E or tabling, but I'm not considering them here).
As nrc-chains are "basic" AICs or "basic" NLs (viewed in a different perspective), I'll skip this case.
Let me consider the case of the nrcz, nrct and nrczt chains I introduced recently.
Notice that the first methods defined below are the straightforward transposition of the methods already introduced for xy(z)t chains and are also no more than an expansion of a short section in the introductory post. But nrc(z)(t) tagging is different.
Remember that I defined "nrc-conjugate" (or "nrc-bivalue", as you prefer - in 3D space these concepts are equivalent) as ordinary bivalue OR odinary bilocation.
Remember that an nrc(z)(t) chain is first a particular sequence of 2n candidates and that it can also be considered as a sequence of n cells. As these chains are 3D generalisations of xy-chains, odd candidates are named left-linking candidates, even candidates are named right-linking candidates.
nrc(z)t chains can be found by using two different methods, which both build the chain from first to last candidate and both start with two candidates that are linked by an nrc-bivalue link. Let's call these two candidates as the seed of the chain. In either method, the chain is progressively extended to the right, in steps that add two candidates. Suppose we already have an nrc(z)t chain on 2(n-1) candidates and let's try to extend it with two more candidates.
For simplicity, in case we deal with an nrczt chain, suppose a target candidate TC has been chosen.
FIRST RESOLUTION TECHNIQUE: SIMPLE ARROWSInitialisation:
- initialise the procedure by drawing a red arrow between the first and second candidates;
Next steps:
- find a candidate that is nrc-linked to candidate 2(n-1), it is the new left-linking candidate;
- draw a blue arrow from candidate 2(n-1) to this new candidate;
- find a candidate that is nrc-conjugate with the previous one modulo any previous right-linking (i.e. even) candidate in the chain in case the t-extension is used and modulo TC in case the z-extension is used); it is the new right-linking candidate; the fact that this candidate is OK is checked on the fly, noting that the previous right linking candidates are the arrival points of the red arrows;
- draw a red arrow from candidate 2(n-1)+1 to this new candidate.
(in folk language, red arrows support "strong inferences" and blue arrows support "weak" ones).
SECOND RESOLUTION TECHNIQUE: NRC(Z)(T)-COLOURING:(this method was inspired by the xyt-colouring algorithm first defined by John MacLeod to spot the xyt-chains, and was corrected by me).
Initialisation:
In case the z-extension is used, the algorithm must be initialised by colouring in blue any candidate that is nrc-linked to the target. In case the t-extension is used, the algorithm must be initialised by colouring in blue any candidate that is nrc-linked to the second candidate. These two colouring processes must be combined for nrczt-chains. The extension step is:
Next steps:
- find a candidate that is nrc-linked to candidate 2(n-1), it is the new left-linking candidate; notice that colouring MUST NOT BE TAKEN INTO ACCOUNT HERE (that was the bug in John's algorithm);
- draw an arrow from candidate 2(n-1) to this new candidate;
- find a candidate that is nrc-conjugate with the previous one modulo any candidate already coloured in blue (i.e. ignore any blue candidate); it is the new right-linking candidate;
- draw an arrow from candidate 2(n-1)+1 to this new candidate;
- colour in blue any candidate that is nrc-linked to this new candidate.
Notice that, in either of these techniques, no value is tentatively asserted and no candidate is tentatively eliminated (i.e. none of these techniques introduces anything that could reasonably be called T&E).
For either technique, after each such step,
- if the z-extension is used, eliminate TC if it linked to both first and current last candidates; (things could be made a little more general, but this is simpler for a beginner);
- if the z-extension is not used, eliminate any candidate that is nrc-linked to both first and current last candidates.
WHAT HAPPENS IF?- what happens if there is not target (or if the predefined target, in case the z-exetension is used)? Answer: nothing happens. You may continue extending your chain. BTW; if an elimination is done, you may also continue extending your chain (except if the z-extension is used: if TC is eliminated, there's no reason for wanting to eliminate it again

- waht happens if, at some point, the extension step cannot be done? First, this will occur mainly when looking for right linking candidates - but that's a secondary matter. At the levl of the values and the candidates present on the grid, NOTHING will happen. As for ANY type of chain, you'll just have to find a better one. How can this be done? The answer is very standard: go one step backwards in the chain and try another extension. Here the two methods behave very differently.
For the first method, you just have to erase the last arrow.
For the second method, you must erase all the colouring (and all the arrows) and restart from nought. This is
a debilitating point for nrc(z)(t)-colouring.
A NEW TECHNIQUE FOR SPOTTING NRC(Z)(T)-CHAINS: NRC(Z)(T)-TAGGINGCan nrc(z)(t) colouring be saved? Answer: yes, by nrc(z)(t) tagging.
Choose a sequence of letters.
Follow the same procedure as for nrc(z)(t) colouring, but, instead of colouring the candidates, tagg them with letters; a candidate needs be tagged with only one letter (if it is already tagged, don't tagg it again). Of course, in any new step of the technique described above for colouring, the next letter in the sequence must be used.
When you have to "backtrack" to the previous step, just erase the instances of the last letter used.