Hi Phil,
Good of you to chime in.
pjb wrote:Your original question comes down to what you regard as an SK loop and what you regard as an MSLS.
Exactly. It's an unfortunate situation that exact definitions are lacking for some of the most important advanced patterns. That said, I actually found a relatively decent definition of
Multi-Fish, so I have to (at least partly) absolve
champagne In fact, I would suggest that you'd add that (or a similar definition) to your Multi-Fish help file, because now it only describes (and links to) David's search procedure (part of MSLS) which is not a definition of multi-fish at all. That's quite confusing, actually, because it mixes the concepts of multi-fish and MSLS without defining either. Besides, it kind of gives the false idea that David invented the multi-fish concept itself. Similarly, your help file for MSLS doesn't define it at all, but links to David's shark thread which must be the most confusing piece I've read on the forum. (Then again, I guess there's no good definition of MSLS anywhere to link to.)
I hope you take those comments as very friendly and constructive criticism! I'm sure we're all grateful for your awesome solver that has these patterns covered at all!
For example, I have found that all "vanilla" SK loops (all links double) have a corresponding MSLS.
They do, as far as I understand.
However, variant SK loops, a large number of which are on my website, mostly don't.
I would probably see it exactly the other way. Based on a very small sample size, many of them probably wouldn't make any sense to me as loops. On the other hand, I would probably see all of them as MSLS -- the way I understand that poorly defined concept. For example, if I take your first variant example:
- Code: Select all
....1.......234.....15.62....2.7.8...6.....9.4.......5..8.2.7...5.....6.3.......4
I really don't see any loop there (yes, I understand how you see it), but it's easy as a cell-based Rank 0 pattern:
16x16 Alien Fish (Rank 0): {47N1289 5689N37 \ 1r47 1c7 7c3 3b469 46b67 5b49 9b479} => 11 eliminations (same as your "variant SK Loop")
Now, is that not a Multi-Sector Naked Set (all base sets being cells), in other words one of the two types of MSLS patterns? Or is there a more restrictive definition somewhere?
In contrast, a great many of the MSLS's that I have documented do not have an SK loop.
That must certainly be true, SK-Loop being the rarest and the most specific named Rank 0 pattern.
I agree that MSLS's are not well defined
Glad to hear that I'm not alone with that view! Well, actually I'm not that glad, because I was hoping you'd have some insider information having personally discussed it with David when implementing your code. I've seen bits and pieces around the forum, and based on those I've tried to gain an idea, but it's far from clear. I really haven't seen anywhere any kind of a complete definition of MSLS, just examples of it. And, since I can't (under)stand David's "simplified" notations and the whole concept of "truth balancing" (supposedly simple too), I pretty much skip them unless I bother to convert them into standard truths and links (which I find easy to understand -- unless they're like totuan's example).
I'm thinking the whole idea probably started as David's private synonym for
DDS which he called
DLS (without really acknowledging they were the same thing -- only that his chosen
name was better). Then, at some unknown point in time he apparently extended it with multiple houses per digit (already envisioned and implemented by Obi-Wahn in the DDS thread), as well as the hidden side of things (also
not a new idea), and started calling it MSLS, including the complementary MSNS and MSHS points of view. Only there's no clear documentation of what they're supposed to mean and include exactly. One can only deduce from posts like
this,
this,
this, and
this, that the concept is pretty inclusive. Then came "sharks", and soon the whole MSLS thing started to revolve around them and "truth balancing" and search procedures for multi-fish, blurring any chance of clearer definitions for the actually included (and not included) patterns.
That's my biggest problem with the whole MSLS thing -- on the one hand it's supposedly a type of pattern but it's actually defined as a fuzzy (but apparently effective) search procedure only (as far as I know). They should be two completely separate things, each defined on its own -- especially since the search procedure probably doesn't find all types of patterns that apparently should be included under the MSLS umbrella (based on the observations above). One should be able to look for MSLS patterns any way they like and know with certainty when they've found one (or not), without needing to know anything about "home" and "away" sets etc. Similarly one should be able to use David's clever search algorithm and use any applicable name and notation for the found patterns. Now the two concepts are neatly mixed up, like good old spaghetti code.
Anyway, based on those little pieces, my current take is that MSNS is any Rank 0 pattern with only cells as base sets (and obviously houses as covers), i.e. extended DDS, while MSHS is any Rank 0 pattern with only houses as base sets (and anything as covers) -- including most (at least row/col-based) multi-fish without base-cells. Is that anywhere close to the truth? Who the hell knows, but I can't think of any other clear-cut definition that would make sense to me. Are there MSLS patterns with mixed sets as bases? I have no idea. I do know that champagne's multi-fish do include such things. Are they counted as MSLS patterns too? If so, then I don't think they can be purely MSHS types.
Based on those presumed definitions, it seems to me that your implementation covers most of the complicated MSNS types (as MSLS), while most of the complicated MSHS types are found as Multifish. What it probably doesn't cover is the simpler types that are usually seen as other patterns (such as Sue de Coq), and apparently also some more complicated types (that are for example found as "variant SK-Loops"). But, I could be completely wrong... That's just the way it seems to me based on a very small sample size and limited understanding.
Last but not least, I don't want this to sound like I'm bashing David. After all, I'm possibly the only avid and grateful user of GEM. His work on the JExocet is obviously extraordinary, and I'm sure his MSLS/multi-fish search procedure is very clever. He just didn't do a very good job of separating procedure from pattern, so now it seems that no one has a clear idea of what patterns are actually counted (and not) as MSLS.