Hi yzwsf,
yzfwsf wrote:Hi:SpAce
Thank you for pointing out the typo.BTW:My chain is a DNL,It's true that AIC will be shorter.
Well, it's not a valid DNL either, most importantly because of the non-linking branching part (makes it an invalid AIC of any kind) and because the end links don't match (makes it an invalid DNL). A DNL is actually a valid AIC that just starts and ends in the same node with the same type of link at both ends -- either with two weak links (Type 1) or two strong links (Type 2). The same exact linking rules govern all types of AICs, including DNLs and the "Wannabe-DNLs", too. (That's why your chain wasn't a valid AIC of any kind, because the branching part couldn't link properly.)
There are two types of DNL:
- Code: Select all
DNL Type 1: [a - b = c - d = e - a] => -a
DNL Type 2: [a = b - c = d - e = a] => +a
This is not a DNL (though it's a valid AIC):
- Code: Select all
"Wannabe-DNL": [a - b = c - d = e] => -a (if e sees a)
Yes, I understand that it's a shortened version of DNL Type 1, but it's still not a proper DNL as written. Personally I think it's the worst style of writing AICs because of the non-matching end links, which makes it both redundant and hard to understand. It has all the downsides of DNLs but no upsides at all. The normal DNL is even more redundant but it's the easiest form to understand and to build for beginners, because it actually forms a full (discontinuous) loop as the name suggests. Thus it has at least that one good quality, while the other style has none.
The best style is obviously the idiomatic AIC with strong links at both ends (and not linking to the same candidate, except in rare cases when it simplifies things):
- Code: Select all
Idiomatic AIC: [b = c - d = e] => -a (if both b and e see a)
All of those styles are actually valid AICs, if written correctly, because the AIC spec doesn't specify any particular end-link configuration. Yet, the "Idiomatic AIC" style should be used almost exclusively, unless there's a particularly overwhelming reason to write a DNL (and there almost never is). There's
never a valid reason to use the "Wannabe-DNL" style, as far as I'm concerned.
PS. Technically this could be a valid style to write discontinuous loops, though I've never seen it used:
- Code: Select all
DL Type 1: [a - b = c - d = e - loop] => -a
DL Type 2: [a = b - c = d - e = loop] => +a
That way the looping nature is explicit without repeating the start node. However, the problem with that is that it's easy to confuse with the actually important continuous loops that are traditionally marked with the '- loop' ending:
- Code: Select all
CL: [a = b - c = d - e = f - loop] => -anything seen by (b,c), (d,e), (a,f)
Of course the differences are obvious if one looks at both end links (the same in a DL, opposite in a CL) or counts the nodes (odd in a DL, even in a CL). In both types of loops the 'N' should really be dropped in an AIC context, because it's a remnant of the obsolete Nice Loop paradigm. Thus, I'd prefer just DL for "Discontinuous Loop" and CL for "Continuous Loop". Normally the latter is called just "Loop" or "AIC-Loop".
Most importantly, there's really no reason to use discontinuous loops in the first place. They're good training wheels for beginners, but no one else should need them except in some very rare circumstances (and even then it's almost always Type 2).