4 ms·
The operator defined is associative and commutative and doing it twice gives you the identity. So to me, it seems a strange choice to notate this as some kind
by csense 3y ago
The operator defined is associative and commutative and doing it twice gives you the identity. So to me, it seems a strange choice to notate this as some kind of word algebra; it feels much more natural to use binary vector notation.
In a later example, the post says ABD*BCE = ACDE. Let's translate this to binary vectors by putting a 1 when the letter is present, 0 when absent, and changing * to +. Then it becomes 11010 + 01101 = 10111. Clearly the * operator being discussed is XOR of binary vectors, which is why I choose to use + instead.
Now I'll attempt to translate the post into more standard linear algebra terminology. If you write the table rows as binary vectors, "setting up A and B and leaving C blank" is essentially setting up a 2x3 matrix (in general MxN) and leaving the third column blank, filling in the leftmost 2x2 (MxM) square with an identity matrix. Regardless of how you fill in C, this gives you a rank M matrix in reduced row echelon form.
Then "decide on a formula for how to set C’s value" is basically setting the remaining column(s) as some linear function of the original columns.
The alias is solving for the nullspace, the large example gives:
[1 0 0 1 0][x0] [0]
[0 1 0 1 1][x1] [0]
[0 0 1 0 1][x2] = [0]
[x3] [0]
[x4] [0]
So you get the system of equations:
x0 + x3 = 0
x1 + x3 + x4 = 0
x2 + x4 = 0
You can find all solutions by setting x3, x4 as free variables, and x0, x1, x2 are completely determined:
x0 = x3
x1 = x3 + x4
x2 = x4
(This looks like a sign mistake, but because + represents XOR, we can freely switch between negative and positive, as addition and subtraction are the same modulo 2.) You proceed by assigning all possible values to x3 and x4, obtaining a nullspace of {00000, 01101, 11010, 10111}, which matches the first row of the table (I, BCE, ABD and ACDE). The remaining rows of the table are obtained by adding that nullspace to every element of the span of the original matrix. (Of course this hits all 32 possible combinations, there is a fairly easy-to-prove linear algebra theorem guaranteeing this.)
These are some abstract computations on binary vectors, why are they relevant to the real world? It mystified me for a bit, but I think the answer is that if two vectors x, y are aliases, we've set things up so that y = x+z for some z in the nullspace of our matrix M, which represents some linear function f(). Then f(y) = f(x+z) = f(x)+f(z) = f(x). The function f() should be related to our experiment and the fact f(y) = f(x) should be related to the idea "our setup can't distinguish between x and y" but it's not 100% clear to me how this conclusion follows. Any stats experts care to chime in?
It didn't discuss at all how to pick generators, but I would guess (1) you want all variables to be varied at least once, and (2) you want alias classes to contain preferably at most one "low-entropy" entry (where "low-entropy" means combinatorially a low popcount, because a priori a simpler explanation is likelier than a complex one (Occam's Razor), and possibly some application-specific context.)