DonM wrote:It is important to note that when searching out the components of ALS Chains of greater than 2 sets, the restricted commons in the chain must have different values for the chain to result in a valid elimination. For instance, it is easy to make the mistake of having a restricted common, say 5, between two sets in the first part of a chain and then find another apparent restricted common 5 between two sets later in the chain. However, such a chain will result in an invalid elimination.
PIsaacson wrote:On the testing front, I modified my ALS-chain method to either use the former "no RCD re-use" rule or the new and improved "no RCD adjacent" rule which allows a qualified re-use. The long and short seems to be that this works and provides (some) additional ALS chains that would have otherwise been invalid.
Since my understanding of ALS methods is not so good, I tried to study the underlying base/cover sets to see what I could learn. I made a brief posting yesterday which I pulled after Ronk's quick eye spotted an error, which actually helped with the answer. Lets see if I can get it right this time.
The answer is close to what PIssacson has postulated, that an ALS chain can always reuse restricted common digits as long as they are not adjacent. An ALS chain with two adjacent RCDs will not cause an elimination except under special conditions. 1) The set group between the adjacent RCDs is a locked set, LS, and not an ALS, or 2) there is one more additional RCD, i.e., one of the ALS links has 2 RCDs. In either of these cases the chain still works.
The reason can be seen in terms of base/cover sets. Ordinary chains have n bi-value base sets and n+1 cover sets, thus they are rank (n+1) - (n) = 1. They eliminate candidates by the overlap of any two cover sets.
An ALS has n cells and n+1 values that can always be covered by n+1 cover sets, and is thus rank 1. M independent ALSs will have a rank of m. When building an ALS chain, each adjacent ALS pair must share a digit covered by a single cover-set to maintain a rank of 1 for the chain.
This works as long as adjacent RCDs have different values. When two adjacent RCDs have the same value, their cover-sets cover only one of the common ALS's values, not two. This increases the rank to 2 preventing eliminations. However, the chain's rank will be 1 if the common "ALS" has one less digit, i.e., it is a locked set, or if one more RCD is present. The most general rule would be the ALS chain will work as long as it has a rank of 1. The role of an RCD is to lower the rank by 1.
Without puzzles, I tried some test cases in my simulator and they all seem to work. In all the examples als3_A = r246c2, als3_B = r5c146, als3_C = r368c5 and als3_D = r7c368. The examples are:
Ex 1(non adjcent): 1r2c8 - als3_A(1245) - 5 - als3_B(3567) - 3 - als3_C(3456) - 5 - als3_D(1589) - 1r2c8 => r2c8<>1
Ex 2(adjacent): 1r2c8 - als3_A(1245) - 5 - ls3_B(567) - 5 - als3_C(3456) - 3 - als3_D(1389) - 1r2c8 => r2c8<>1
Ex 3(adjacent +RCD): 1r2c8 - als3_A(1245) - 45 - als3_B(4567) - 5 - als3_C(3456) - 3 - als3_D(1389) - 1r2c8 => r2c8<>1
Other combinations of RCDs and LS/ALS/AALS should also work as long as the overall rank is 1. It should also be possible to make various ALS loops as long as they are rank 0. I imagine much of this is understood with different terminology, I thought I would present the base/cover set logic view.
Thumbs left to right ex1, ex2, ex3.
- Code: Select all
+-----------------------------------------------------------+
| . . . | . . . | . . . |
| . (124) . | . . . | . -1 . |
| . . . | . (46) . | . . . |
+-----------------------------------------------------------+
| . (245) . | . . . | . . . |
| (567) . . | (367) . (67) | . . . | <- B
| . (24) . | . (346) . | . . . |
+-----------------------------------------------------------+
| . . (89) | . . (589) | . (189) . | <- D
| . . . | . (456) . | . . . |
| . . . | . . . | . . . |
+-----------------------------------------------------------+
^A ^C
+-----------------------------------------------------------+
| . . . | . . . | . . . |
| . (124) . | . . . | . -1 . |
| . . . | . (46) . | . . . |
+-----------------------------------------------------------+
| . (245) . | . . . | . . . |
| (567) . . | (567) -6 (67) | . . . | <- B
| . (24) . | . (456) . | . . . |
+-----------------------------------------------------------+
| . . (89) | . . (389) | . (189) . | <- D
| . . . | . (346) . | . . . |
| . . . | . . . | . . . |
+-----------------------------------------------------------+
^A ^C
+-----------------------------------------------------------+
| . . . | . . . | . . . |
| . (12) . | . . . | . -1 . |
| . . . | . (46) . | . . . |
+-----------------------------------------------------------+
| . (245) . | . . . | . . . |
|(4567) . . | (567) -6 (67) | . . . | <- B
| . (24) . | . (456) . | . . . |
+-----------------------------------------------------------+
| . . (89) | . . (389) | . (189) . | <- D
| . . . | . (346) . | . . . |
| . . . | . . . | . . . |
+-----------------------------------------------------------+
^A ^C