Numbering sequences under xd restriction
Let S be the set of nm distinct sequences where every sequence represents a possible arrangement of n objects in m spaces. The n objects are labeled from 0 to n-1. For example let n=2 and m=3, then:
S = {
{ 0, 0, 0 },
{ 1, 0, 0 },
{ 0, 1, 0 },
{ 1, 1, 0 },
{ 0, 0, 1 },
{ 1, 0, 1 },
{ 0, 1, 1 },
{ 1, 1, 1 } }
This article presents the numbering of sequences in the set S and in two subsets of S: denoted T1 and T2. These subsets are obtained by restricting sequences in S based on two values x and d. Precisely, a sequence in S is also in T1 if and only if its xth and (x+d)th elements are equal, otherwise it is in T2. This has been described as the xd restriction.
Contents:
- Numbering sequences in the set S
- Numbering sequences in the set T1
- Numbering sequences in the set T2
Numbering sequences in the set S
The sequences in S can be numbered (or indexed) from 0 to nm-1. Let s be a particular sequence of the form {s0, s1, s2, ..., sm-2, sm-1}. slevel in this sequence is an integer between 0 and n-1 inclusive. It is found at a certain level (there are m levels from 0 to m-1). s is numbered (or indexed) by the indexing number I. So I ranges from 0 to nm-1.
Below is an example of numbered (or indexed) sequences in order, for the case of n=2 and m=3:
index I | sequence S |
0 | 0 0 0 |
1 | 1 0 0 |
2 | 0 1 0 |
3 | 1 1 0 |
4 | 0 0 1 |
5 | 1 0 1 |
6 | 0 1 1 |
7 | 1 1 1 |
Essentially, this article deals with a new way of understanding the base-n numeral system. The sequence s is actually the equivalent of the indexing number I when this I is expressed in the base n. For example in base n=2, I=5 is represented as 101.
Given s and n, I is given by:
I = s0*n0 + s1*n1 + s2*n2 + ... + sm-2*nm-2 + sm-1*nm-1
Proof:
Prooving that the relationship between the set S, and the set of values of I under the equation above, is one-to-one.
First it should be noted that the largest computation of I with respect to the equation is for the sequence {n-1, n-1, n-1, ... m times}. In this case I evaluates to nm-1 (that is I = nm-1).
Now let any two sequences {sa,0 , sa,1 , sa,2 , ..., sa,m-2 , sa,m-1} and {sb,0 , sb,1 , sb,2 , ..., sb,m-2 , sb,m-1} be numbered Ia and Ib respectively, such that Ia=Ib. Then
Ia-Ib=0 => (sa,0 - sb,0)*n0 + (sa,1 - sb,1)*n1 + (sa,2 - sb,2)*n2 + ... + (sa,m-2 - sb,m-2)*nm-2 + (sa,m-1 - sb,m-1)*nm-1 = 0 .
It turns out that for the above equation to hold, every term must evaluate to zero. Consider the worst case scenario where the term (sa,m-1 - sb,m-1)*nm-1 becomes equal to (1)*nm-1, meanwhile the terms (sa,0 - sb,0)*n0, (sa,1 - sb,1)*n1, (sa,2 - sb,2)*n2 , ... and (sa,m-2 - sb,m-2)*nm-2 are all negative. The later all add up to form the most negative possible value of -(nm-1-1). In this worst case the value of I is equal to ( nm-1 - (nm-1-1) ) = 1 , which is different from 0.
Only the values in brackets can evaluate to zero. Consequently the only way for the equation to hold is that: sa,0=sb,0 , sa,1=sb,1 , sa,2=sb,2 , ... , sa,m-2=sb,m-2 and sa,m-1=sb,m-1. So the two sequences must be the same. It follows that the relationship is indeed one-to-one.
Given I and n, slevel in s is given by:
slevel = [ I / nlevel ] - [ I / nlevel+1 ]*n = [ (I mod nlevel+1) / nlevel ]
where [x] = floor(x) = largest integer smaller than or equal to x.
Proof:
Consider true that I = s0*n0 + s1*n1 + s2*n2 + ... + sm-2*nm-2 + sm-1*nm-1.
This represents computing the index I from the sequence s.
Now let y such that (substituting for slevel in the equation for I above):
y = ([ I / n0 ] - [ I / n1 ]*n)*n0 + ([ I / n1 ] - [ I / n2 ]*n)*n1 + ([ I / n2 ] - [ I / n3 ]*n)*n2 + ... + ([ I / nm-2 ] - [ I / nm-1 ]*n)*nm-2 + ([ I / nm-1 ] - [ I / nm ]*n)*nm-1
Simplifying the expression,
=> y = [ I / n0 ]*n0 - [ I / n1 ]*n1 + [ I / n1 ]*n1 - [ I / n2 ]*n2 + [ I / n2 ]*n2 - [ I / n3 ]*n3 + ... + [ I / nm-2 ]*nm-2 - [ I / nm-1 ]*nm-1 + [ I / nm-1 ]*nm-1 - [ I / nm ]*nm
After massive cancellation, only the first and last terms remain,
=> y = [ I / n0 ]*n0 - [ I / nm ]*nm
But I < nm,
=> y = I - 0
=> y = I
Since y=I, it follows that slevel = [ I / nlevel ] - [ I / nlevel+1 ]*n.
Numbering sequences in the set T1
The set T1 is made up of all sequences s that satisfy the xd restriction. This restriction is that the xth and (x+d)th elements must be equal, where d>0. There are a total of n(m-1) such sequences in T1. For n=m=3 the numbered sequences {s0, s1, s2} are as shown in the table below:
S | x=0 d=1 | x=1 d=1 | x=0 d=2 |
0 - 0 0 0 | 0 - 0 0 0 | 0 - 0 0 0 | 0 - 0 0 0 |
1 - 1 0 0 | | 1 - 1 0 0 | |
2 - 2 0 0 | | 2 - 2 0 0 | |
3 - 0 1 0 | | | 1 - 0 1 0 |
4 - 1 1 0 | 1 - 1 1 0 | | |
5 - 2 1 0 | | | |
6 - 0 2 0 | | | 2 - 0 2 0 |
7 - 1 2 0 | | | |
8 - 2 2 0 | 2 - 2 2 0 | | |
9 - 0 0 1 | 3 - 0 0 1 | | |
10- 1 0 1 | | | 3 - 1 0 1 |
11- 2 0 1 | | | |
12- 0 1 1 | | 3 - 0 1 1 | |
13- 1 1 1 | 4 - 1 1 1 | 4 - 1 1 1 | 4 - 1 1 1 |
14- 2 1 1 | | 5 - 2 1 1 | |
15- 0 2 1 | | | |
16- 1 2 1 | | | 5 - 1 2 1 |
17- 2 2 1 | 5 - 2 2 1 | | |
18- 0 0 2 | 6 - 0 0 2 | | |
19- 1 0 2 | | | |
20- 2 0 2 | | | 6 - 2 0 2 |
21- 0 1 2 | | | |
22- 1 1 2 | 7 - 1 1 2 | | |
23- 2 1 2 | | | 7 - 2 1 2 |
24- 0 2 2 | | 6 - 0 2 2 | |
25- 1 2 2 | | 7 - 1 2 2 | |
26- 2 2 2 | 8 - 2 2 2 | 8 - 2 2 2 | 8 - 2 2 2 |
A sequence in T1 can be numbered (or indexed) by an integer I, where 0 <= I <= n(m-1)-1.
Given:
- n >= 1
- m >= 2
- x where 0 <= x <= m-2
- d = any (equation does not depend on d)
- s = {s0, s1, s2, ..., sm-2, sm-1} ,
the equation below finds the corresponding value of I for the given sequence in T1. That is for example:
- if s={1, 1, 0}, n=m=3, x=0 and d=any, then I=1
- if s={0, 1, 1}, n=m=3, x=1 and d=any, then I=3
- if s={2, 1, 2}, n=m=3, x=0 and d=any, then I=7
Numbering sequences in the set T2
The set T2 is made up of all sequences s that do not satisfy the xd restriction. This restriction is that the xth and (x+d)th elements must be equal, where d>0. There are a total of (n-1)n(m-1) such sequences in T2. For n=m=3 the numbered sequences {s0, s1, s2} are as shown in the table below:
S | x=0 d=1 | x=1 d=1 | x=0 d=2 |
0 - 0 0 0 | | | |
1 - 1 0 0 | 0 - 1 0 0 | | 0 - 1 0 0 |
2 - 2 0 0 | 1 - 2 0 0 | | 1 - 2 0 0 |
3 - 0 1 0 | 2 - 0 1 0 | 0 - 0 1 0 | |
4 - 1 1 0 | | 1 - 1 1 0 | 2 - 1 1 0 |
5 - 2 1 0 | 3 - 2 1 0 | 2 - 2 1 0 | 3 - 2 1 0 |
6 - 0 2 0 | 4 - 0 2 0 | 3 - 0 2 0 | |
7 - 1 2 0 | 5 - 1 2 0 | 4 - 1 2 0 | 4 - 1 2 0 |
8 - 2 2 0 | | 5 - 2 2 0 | 5 - 2 2 0 |
9 - 0 0 1 | | 6 - 0 0 1 | 6 - 0 0 1 |
10- 1 0 1 | 6 - 1 0 1 | 7 - 1 0 1 | |
11- 2 0 1 | 7 - 2 0 1 | 8 - 2 0 1 | 7 - 2 0 1 |
12- 0 1 1 | 8 - 0 1 1 | | 8 - 0 1 1 |
13- 1 1 1 | | | |
14- 2 1 1 | 9 - 2 1 1 | | 9 - 2 1 1 |
15- 0 2 1 | 10- 0 2 1 | 9 - 0 2 1 | 10- 0 2 1 |
16- 1 2 1 | 11- 1 2 1 | 10- 1 2 1 | |
17- 2 2 1 | | 11- 2 2 1 | 11- 2 2 1 |
18- 0 0 2 | | 12- 0 0 2 | 12- 0 0 2 |
19- 1 0 2 | 12- 1 0 2 | 13- 1 0 2 | 13- 1 0 2 |
20- 2 0 2 | 13- 2 0 2 | 14- 2 0 2 | |
21- 0 1 2 | 14- 0 1 2 | 15- 0 1 2 | 14- 0 1 2 |
22- 1 1 2 | | 16- 1 1 2 | 15- 1 1 2 |
23- 2 1 2 | 15- 2 1 2 | 17- 2 1 2 | |
24- 0 2 2 | 16- 0 2 2 | | 16- 0 2 2 |
25- 1 2 2 | 17- 1 2 2 | | 17- 1 2 2 |
26- 2 2 2 | | | |
A sequence in T2 can be numbered (or indexed) by an integer I, where 0 <= I <= (n-1)n(m-1)-1.
Given:
- n >= 1
- m >= 2
- x where 0 <= x <= m-2
- d where 1 <= d <= m-1-x
- s = {s0, s1, s2, ..., sm-2, sm-1} ,
the equation below finds the corresponding value of I for the given sequence in T2. That is for example:
- if s={2, 0, 0}, n=m=3, x=0 and d=1, then I=1
- if s={1, 2, 0}, n=m=3, x=1 and d=1, then I=4
- if s={2, 1, 1}, n=m=3, x=0 and d=2, then I=9