Documente Academic
Documente Profesional
Documente Cultură
Author:
Michael Martis
School of Mathematics
and Statistics
Supervisor:
Dr. Gordon Royle
School of Mathematics
and Statistics
b
0
b
a
a, b
a
b
a
6
b
a
a
5
b
4
b
ii
iii
Abstract
Finite automata are combinatorial objects designed to model computations that
only use a finite number of states. A finite automaton is said to be synchronising if
there is a fixed input sequence (called a synchronising word ) by which it is reset
that is, taken to a known state, regardless of its current configuration. The study of
synchronising automata has applications in robotics, biocomputing, network security
and circuitry, and stands on its own as a fascinating combinatorial research topic.
In 1964, Jan ern constructed, for each natural number n, an n-state synchronising automaton requiring a word of length (n 1)2 to reset. It is conjectured that
these automata are maximally difficult to reset. That is, it is conjectured that no
n-state synchronising automata requires a word of length greater than (n 1)2 to
reset. Cernys conjecture, as this claim is known, remains open, and has received
extensive academic attention since its formulation.
For non-synchronising automata, the concept of a synchronising word is generalised to that of a terminal word. If a word w leaves an automaton in one of k
possible states, and k is the smallest such value achievable for , then is said to
have rank k, and w is said to be a terminal word of . For instance, a synchronising
automaton has rank 1, and its terminal and synchronising words coincide. Pins
conjecture, a generalisation of Cernys conjecture proposed in 1978, claims that if
an automaton has rank k, then it admits a terminal word of length (n k)2 or less.
While other such generalisations have been disproven, Pins conjecture remains open.
This dissertation involves an extensive computational search for counter-examples
to Pins conjecture, and for other automata of theoretical interest.
We show that there are no counter examples, and no significant non-synchronising
edge cases, to Pins conjecture among arity-2 automata of size greater than 2 and
less than 9. We also extend a number of known results and algorithms to operate on
non-synchronising automata, identify new families of slowly-converging automata
and provide the research community with the tools developed for this dissertation.
iv
v
Acknowledgements
I must thank, first and foremost, Professor Gordon Royle, without whose vision and
guidance this dissertation would not be possible. I am also, as always, indebted to
my family, whose love and support I cherish above all else. Lastly, I thank the other
denizens of the Honours Room, with whom shared laughter kept me sane this year.
vi
Contents
Abstract
Acknowledgements
iii
v
List of Figures
ix
List of Tables
2 Relevant Literature
3 Elementary Results
11
15
17
26
30
8 Results
40
9 Concluding Remarks
50
Appendices
54
55
vii
A.1.3 Slowly-converging automata of size 5 . . . . . . . . . . . . . . 56
A.1.4 Slowly-converging automata of size 6 . . . . . . . . . . . . . . 57
A.1.5 Slowly-converging automata of size 7 . . . . . . . . . . . . . . 60
A.1.6 Slowly-converging automata of size 8 . . . . . . . . . . . . . . 63
A.2 Large slowly-converging automata . . . . . . . . . . . . . . . . . . . . 64
A.2.1 Slowly-converging automata of size 9 . . . . . . . . . . . . . . 65
A.2.2 Slowly-converging automata of size 10
. . . . . . . . . . . . . 69
. . . . . . . . . . . . . 75
. . . . . . . . . . . . . 81
B Terminal-Threshold Histograms
88
97
viii
C.1.1 The gena method . . . . . . . . . . . . . . . . . . . . . . . . . 97
C.1.2 The GAP method . . . . . . . . . . . . . . . . . . . . . . . . . 105
C.2 Canonicalising automata . . . . . . . . . . . . . . . . . . . . . . . . . 106
C.3 Analysing automata
Index
. . . . . . . . . . . . . . . . . . . . . . . . . . . 115
133
ix
List of Figures
1.1
1.2
2.1
2.2
2.3
3.1
4.1
The shortest path between a state P of P() and a smaller state (P )v. 16
5.1
5.2
7.1
7.2
7.3
The graph of the DFA A, its corresponding graph GA , the canonicalised graph G0A , and the canonicalised DFA A0 . . . . . . . . . . . . 38
8.1
The graph of the DFA E0,n for an even, natural number n with n > 4. 45
8.2
The graph of the DFA E1,n for an odd, natural number n with n > 3.
8.3
45
List of Tables
2.1
2.2
The number Nsc (`) of synchronising, strongly-connected, arity-2, size11 automata with reset threshold `, for 76 ` 100. . . . . . . . . .
4.1
8.1
8.2
8.3
8.4
8.5
8.6
8.7
8.8
CHAPTER 1
b
a
a, b
2
b
3
The automaton in Figure 1.1 is synchronising, with synchronising word w =
ba3 ba3 b and synchronising state 0. That is, (0, w) = (1, w) = (2, w) = (3, w) =
0. Synchronising DFAs have been studied implicitly since the inception of automata
theory, but the notion was first explicitly considered in 1964 by ern [7]. His paper
gave the construction, for any integer n > 2, of an n-state synchronising DFA Cn
with shortest reset word of length (n 1)2 . Furthermore, he conjectured that no
n-state synchronising DFA requires a longer word to reset. That is:
Conjecture 1.3 (The ern conjecture). If is an n-state synchronising DFA, then
has a reset word of length (n 1)2 or less.
The DFA in Figure 1.1 is the ern automaton for n = 4; erns original
proof establishes that the word ba3 ba3 b of length 9 = (4 1)2 is the shortest word
that resets C4 . We use, as in Volkovs 2008 survey of the subject [36], the ern
function C(n) to denote the maximum length of a shortest reset word on an nstate DFA, for any integer n > 2. The existence of erns family of automata
implies that C(n) (n 1)2 for any n > 2. erns conjecture, then, is that the
equality C(n) = (n 1)2 holds. It is not known whether the ern conjecture is
true or false, and answering this question has emerged as a major open problem in
automata theory.
We associate, with each word w in the alphabet of a DFA = hQ, , i,
the natural transformation of w on Q, also denoted by w. That is, we define the
function w : Q Q to be q 7 (q, w) for each word w of . To maintain
notational consistency between transformation composition and word concatenation,
we write transformations in postfix notation. For instance, a : Z4 Z4 given by
(q)a = (q + 1) mod 4, b : Z4 Z4 given by (q)b = q mod 3, and ba3 ba3 b :
Z4 Z4 given by (q)ba3 ba3 b = 0 are all transformations that arise from words of
C4 . Note that the transformation associated with word uv is the composition of
the transformations associated with u and v. The set of all such transformations,
along with the composition operation, forms a semigroup; analysis can proceed
algebraically from this construction, and results have been proven for DFAs with
semigroups satisfying various properties [1, 33].
The rank of w is defined as |(Q)w|, i.e. the number of distinct states could be
in after the application of w. For instance, the word b of C4 has rank |{0, 1, 2}| = 3,
while the word ba3 ba3 b has rank 1. Synchronising words, then, are characterised by
having rank 1. The rank of a DFA is defined to be the minimum rank of a word
constructed from its alphabet, with words of this rank called terminal words. We
also define the terminal threshold of a DFA as the length of its shortest terminal
word. This generalisation of synchronising words suggests a natural generalisation
of the ern conjecture, first formulated by Pin [24]:
Conjecture 1.4 (Pins conjecture). If is an n-state DFA of rank k, then has a
terminal word of length (n k)2 or less.
CHAPTER 2
Relevant Literature
The concept of synchronising automata, and the ern conjecture itself, are both
long-standing topics of research in the field of automata theory. A wealth of relevant
literature regarding both subjects is available indeed, many of the fundamental
concepts and results in these areas have been independently rediscovered multiple
times [36]. In the years since its formulation, combinatorial, algebraic, probabilistic
and computational strategies have been used to approach the ern conjecture.
As well as incrementally improving the best known upper bound on the length of
shortest reset words, researchers have found success in proving the ern conjecture
for certain classes of DFAs, and in answering related conjectures.
Volkov [36] traces discussion of synchronising DFAs back to the 1956 book Introduction to Cybernetics, by English psychiatrist and cyberneticist William Ross
Ashby. Ashby [4] wrote of a comically haunted house, in which two ghostly noises
singing and laughing respond, in a convoluted manner, to the burning of incense
and the playing of an organ. The behaviour of the poltergeists can be naturally
encoded into an automaton, which happens to be synchronising. To find a sequence
of actions that silences the ghosts, then, is to find a reset word of the corresponding
automaton. Throughout the 1950s, Moores [22] Gedankenexperiments on sequential machines, and Ginsburgs [12] uniform experiments paved the way to erns
1964 paper, and to the study of synchronising automata in general.
erns original paper [7] did not, in fact, formulate the conjecture that now
bears his name [36]. The paper instead gave the construction of an infinite family
of automata. The general form of a ern automaton is depicted in Figure 2.1.
The ern automaton Cn is an n-state synchronising DFA that requires a word
of length (n 1)2 to reset. It has arity two, admitting input symbols a and b. The
input symbol a acts as a cyclic permutation on the states of the DFA. The input
symbol b fixes all but the last state of the DFA, which it maps back to state 0. More
precisely, we have Cn = hZn , {a, b}, i, with:
(q + 1) mod n if = a
(q, ) =
q mod (n 1) if = b
The DFA Cn has shortest reset word (ban1 )n2 b, of length (n 1)2 , with reset
state 0. erns original paper proved this fact, thus placing a lower bound on
the ern function C(n). In the same paper, ern established an exponentialorder upper bound on C(n), noting that future researchers could expect improvement mainly for the upper bound. Only two years later, Starke [28] published a
German-language paper providing the first polynomial upper bound on C(n), which
was incrementally improved upon, during the subsequent decades, by a number of
mathematicians [8, 17] including ern himself. In 2012, Trahtman [35] claimed to
have proved the ern conjecture. This proof appears to be incorrect; over the next
6
b
b
a
a, b
1
a
b
2
n1
n2
two years, a number of revisions to the paper were published, culminating in its
revocation from arXiv.org in March, 2014.
Pin [25] deduced, in 1983, the most well-known upper bound on C(n): 16 (n3 n).
His paper detailed a straightforward algorithm to generate a short (though not
necessarily optimal) reset word for a DFA, and placed a bound on the length of the
resultant word by analogy to a known, purely combinatorial problem. Combinatorial
results by Frankl [11] were then leveraged to complete the proof. This upper bound
stood unimproved for almost 30 years, until a separate argument by Trahtman [34]
established a new cubic upper bound (with lower constant factor) on C(n), in 2011.
erns bound, or stronger bounds, have been proven to hold for numerous
subclasses of automata. Many of these classes arise from placing restrictions on
the graph of a DFA. For example, consider circular automata: automata in which
some input symbol cyclically permutes the state set. Each of erns automata,
for example, are circular, as are many of the known individual edge-cases to the
ern conjecture. Pin [23] proved, in 1978, that a synchronising circular automaton
with prime number of states must conform to erns conjecture. In a significant
paper published twenty years after Pins original work, Dubuc [9] generalised this
result to all synchronising circular automata. In 2011, Pins original result was
also generalised to apply to all synchronising one-cluster automata with prime cycle
order, by Steinberg [30]. An automaton is said to be one-cluster if some input symbol
acts as a transformation containing (though not necessarily consisting entirely of)
7
a single cycle. Equivalently, an automaton is one-cluster if the graph of one of its
input symbols is connected. See Figure 2.2 for an example of such a DFA.
7
4
6
a
a
2
5
a
8
Figure 2.2: A graph depicting the pertinent input symbol of a one-cluster DFA.
In 2009, Carpi and dAlessandro [5] provided a quadratic order bound on the
reset threshold of strongly-transitive automata a different generalisation of circular
automata and less than one year later, generalised this result to include locally
strongly-transitive automata [6]. These results mirrored Rystsovs [27] treatment
of regular automata, a closely related concept. Future researchers in this area may
benefit from the work done by Steinberg [29], which elucidates a common strategy
used to prove many of these results. It appears that analogous work, proving Pins
conjecture for certain classes of automata, has not been performed.
Computational tools are widely used to analyse automata. A number of efficient
algorithms exist to check whether a DFA is synchronising, and to generate reset
words. Trahtman and Eppstein appear to be the most prolific researchers in this
area. Eppstein [10] provides the most efficient known algorithm for generating reset
words , which requires O(|Q|3 + |Q|2 ||) time and O(|Q|2 + |Q|||) space to process
a DFA = hQ, , i. Trahtman [31] proposes modifications to this algorithm
designed to increase its average-case efficiency, and decrease the length of the reset
word returned as well as an alternate algorithm motivated by semigroup theory.
None of these algorithms, however, aim to generate a shortest reset word of a DFA.
In general, this task is NP-complete [10]. There are also known algorithms for finding
a terminal word of a DFA [26] , although this area of research appears less mature.
J. D. Mitchells GAP package Semigroups [21] provides numerous computational
tools for the analysis and manipulation of finite automata, and was used extensively
during the production of this dissertation.
Computational enumeration of small synchronising automata is also commonly
performed. Taken together, Trahtman [31], and Kisielewicz and Szykua [16], claim
to have exhaustively generated and examined all automata of size less than 8 and
arity less than 5, or size less than 12 and arity less than 3 a task involving the
generation of over one thousand trillion automata and purportedly requiring over 4
years of CPU time. Table 8.1 reveals the magnitude of the task; N (n), as proven
by Harrison [13] and listed in the Online Encyclopedia of Integer Sequences [20], is
the number of non-isomorphic arity-2, n-state automata that exist.
n
2
3
4
5
6
7
8
9
10
11
N (n)
4
67
1455
41829
1540566
68342769
3540690574
209612913688
13957423185476
1032436318249157
Table 2.1: The number N (n) of non-isomorphic arity-2, size-n automata, for 2
n 11.
While Trahtmans paper gives no indication as to the methods used to generate automata, Kisielewicz and Szykua provide an account of an efficient algorithm for generating automata, which was re-implemented and used for this dissertation (see Chapter 7 for details on this process). The algorithm generates all
automata of a given size, including some isomorphic automata, which must then be
removed through a canonicalisation process. The authors, however, purport that
modifications to the process can be used to generate only non-isomorphic, or only
strongly-connected, automata. Almeida, Moreira and Reis [2] describe a normal
form for the canonical representation of, and an algorithm for the generation of, all
non-isomorphic initially-connected DFAs (a class of DFAs containing all stronglyconnected automata). It should be noted that the computational enumeration of
even moderately sized automata (8 states and above) proves difficult, due to the
sheer number of such objects that exist.
Computational searches have revealed that no counter-examples to the ern
conjecture exist within the given parameter space, and that edge cases automata
with shortest reset word of length (n 1)2 are exceptionally rare; aside from
erns family, no infinite families of edge-case automata have been recognised, and
only eight individual edge-case automata (all either arity-2 or -3) are known [31]
to exist. Furthermore, it appears that edge cases become less frequent with an
increase in automaton size. The largest known sporadic edge case has only 6 states,
while slowly-synchronising automata automata requiring relatively long words to
reset have been observed to grow sparser as automaton size increases. Indeed,
Trahtman conjectures that all edge cases to the ern conjecture have been found.
It appears that the corresponding computational search for counter-examples to
Pins conjecture has yet to be performed, and hence the automata mentioned above
also serve as the only known edge cases to Pins conjecture. J. D. Mitchells online
9
home page [19] provides a collection of all arity-2 automata of size less than 8,
indexed by size, strongly-connectedness and synchronicity.
Notable slowly-synchronising automata have also been studied and categorised.
Ananichev, Gusev and Volkov [3] construct eight infinite families of automata with
reset threshold close to erns bound, through the labelling of primitive digraphs
with large exponents. It is within this context that the concepts of reset-threshold
gaps and islands appear. Consider Table 2.2, originally from Kisielewicz and
Szykuas paper on the computational enumeration of automata. Note that the
automata are clustered by reset threshold. Here, C11 is the ern construction for
n = 11, and the other classes of automata are defined by Ananichev, Gusev and
Volkov.
`
76 77 78 79 80 81 82 83 84 85 89 90 91 92 93 99 100
Nsc (`) 3 2 0 0 9 22 12 2 1 0 0 0 3
2 1 0 0 0 1
0
Classes
D11 H11 G11
E11 W11 D11
C11
00
H11
D11 F11
B11
Table 2.2: The number Nsc (`) of synchronising, strongly-connected, arity-2, size-11
automata with reset threshold `, for 76 ` 100.
This table exhibits four islands of automata (76 ` 77, 80 ` 84,
90 ` 92 and ` = 100), between which are three gaps containing no automata.
The single gap for size-7,-8,-9 and -10 automata was originally found by Trahtman
in 2006 [32], while the two gaps that occur for size 9 were first noted by Ananichev,
Gusev and Volkov in 2012 [3]. Kisielewicz and Szykuas third gap was found for
size 11 in 2013, and led them to formulate the following natural conjecture.
Conjecture (The gap conjecture). For any integer g 1, there exists a large enough
integer n 1 such that there are at least g gaps in the distribution of reset thresholds
among arity-2, size-n, synchronising automata.
It appears, once again, that the corresponding identification of what might be
called slowly-converging automata (not necessarily synchronising) automata with
terminal threshold close to Pins bound has not been performed. Similarly, the
distributions of shortest terminal word lengths are not known.
Pins conjecture itself was not formulated until more than 15 years after the
ern conjecture. It has its origin in another 1978 paper by Pin [24], wherein a
related conjecture was proposed.
Conjecture (The deficiency conjecture). If an n-state DFA admits a word of rank
no greater than k, then there exists such a word of length no greater than (n k)2 .
By setting k to 1, we see that the deficiency conjecture is (another) generalisation
of the ern conjecture. Note, however, that Pins conjecture is not equivalent to
10
the deficiency conjecture. In particular, Pins conjecture concerns only the shortest
terminal word of a DFA, whereas the deficiency conjecture concerns the shortest
word of each possible rank. In its paper of origin, Pin proved the conjecture for
k = n, n 1, n 2 and n 3, but no further progress was made. The conjecture
remained open for 20 years, until Jarkko Kari [15], in 2001, uncovered the automaton
depicted in Figure 2.3.
a
0
1
b
b
5
CHAPTER 3
Elementary Results
We begin by discussing elementary results relevant to ern and Pins conjectures.
While no original results are presented here, Appendix C contains implementations
of the concepts and algorithms discussed in this chapter. In particular, code written
for this dissertation bridges a number of holes in the existing functionality of the
GAP package Semigroups.
The standard notion of the power automaton proves a useful starting point.
Definition 3.1. The power automaton P() = hP 0 (Q), , 0 i of a DFA = hQ, , i
is the DFA with transition function 0 : P 0 (Q) P 0 (Q) given by
0 ({q1 , , qk }, ) = {(q1 , ), , (qk , )}
where P 0 (Q) is the set of all non-empty subsets of Q.
We illustrate the power automaton by example. Figure 3.1 depicts the power
automaton of C4 , the ern automaton illustrated in the introduction of this dissertation. Note that each state in P(C4 ) is a non-empty subset of Z4 , and that the
transitions of C4 , naturally extended to act on each element of a set, give rise to the
transitions of P(C4 ).
We now pause to make explicit some routine terminology.
Definition 3.2. In a DFA = hQ, , i, a state q Q is said to be reachable from
a state p Q if there is some word w such that (p, w) = q.
Definition 3.3. A state q Q of a DFA = hQ, , i is said to be a sink state if
it is reachable from all states in Q.
For example, state 0 of P(C4 ) is reachable from every state in the power automaton, as it is a reset state for C4 . Hence, state 0 is a sink of P(C4 ). Conversely, no
2-element state of P(C4 ) is reachable from a 1-element state (the power automaton
cannot transition from a smaller state to a larger state, by the definition of its transition function), so no 2-element state is a sink of P(C4 ). We require the concept of
reachability for the following proposition.
Proposition 3.4. Let = hQ, , i be a DFA, P() = hP 0 (Q), , 0 i be its power
automaton, and r be the size of the smallest set reachable from Q in P(). Then a
word of is terminal if and only if it takes the state Q of P() to a set of size r.
Proof. From the definition of reachability, a state S of P() is reachable from Q if
and only if 0 (Q, w) = (Q)w = S for some w . Then those sets reachable from
Q in P() are precisely the images of words of . So S is minimally sized if and
only if w has minimal rank in . Hence, a word w of takes the state Q of P() to
a set of size r if and only if w is terminal.
11
12
b
a
0, 1, 2, 3
0, 1, 2
1, 2, 3
b
b
b
0
b
a
0, 3
a, b
0, 1, 3
0, 2, 3
b
a
2, 3
1, 2
0, 1
1, 3
0, 2
a
13
this method remains viable for small automata, and was used in the computational
searches performed for this dissertation. In fact, as finding a shortest terminal word
of an automaton is NP-complete [10], it is unlikely that any efficient algorithm can
perform the same task. We provide the GAP function ShortestWordsByRank
(included in Appendix C) to calculate the shortest word of each rank admitted by
a DFA, using a breadth first search through the power automaton. An equally
simple, but much more efficient, algorithm exists to determine whether a DFA is
synchronising, if a reset word need not be produced. We say that a word w unifies
(or is a unifier for) two states u and v if (u)w = (v)w.
Proposition 3.6. A DFA is synchronising if and only if, for all states u and v, there
exists a word that unifies u and v.
Proof. Suppose is synchronising. Then there is some word w and state q0 such
that (q, w) = q0 for any q Q. Specifically, w unifies any pair of states, as
(u, w) = (v, w) for all u, v Q. Conversely, suppose there is some word-producing
function w : Q2 such that (u, w(u, v)) = (v, w(u, v)) for all u, v Q.
Consider any state Q0 in P(), and choose two distinct elements p, q Q0 . The
word w(p, q), then, maps Q0 to a smaller set in P(). Repeating this process, we
can construct a path from any state in P() to a singleton set. From Proposition
3.4, then, must be synchronising.
In practice, we can check this property via the analysis of another useful construction the pair automaton.
Definition 3.7. If P() = hP 0 (Q), , 0 i is the power automaton of a DFA =
hQ, , i, we define the pair automaton P [2] () by P [2] () = hM, , 0 |M i, where
M P 0 (Q) is the set of all 1- and 2-element subsets of Q.
The pair automaton is conceptually similar to the power automaton, but only
contains state sets of size 1 and 2. In particular, the graph of P [2] () is induced
on the graph of P() by the set of size-1 and -2 states. For example, considering
only the size-1 and -2 states in Figure 3.1 yields P [2] (C4 ). This notion is treated
more rigorously in Chapter 5. We provide the GAP function PairSemigroup for
generating the pair automaton, in Appendix C.
Observe that the words unifying the states p, q Q of a DFA = hQ, , i
are precisely the words taking the pair state {p, q} of P [2] () to a singleton state.
Hence a DFA can be checked for synchronicity by constructing the pair automaton and checking that some 1-element state is reachable from each 2-element state.
This approach yields an O(|Q|2 ||) algorithm, which is implemented in the PolyIsSynchronisingSemigroup 1 function in Appendix C. The following results relate
properties of an automaton to those of its pair automaton.
1
This function is named awkwardly in an attempt to avoid a collision with the exponential-time
IsSynchronisingSemigroup function provided by the Semigroups GAP package.
14
CHAPTER 4
15
16
P1
P2
q1
Pt1
0
qt1
q20
q2
qt0
qt1
(P )v
qt
t1
q10
Pt
t1
(qt )t
t
Figure 4.1: The shortest path between a state P of P() and a smaller state (P )v.
Rj 6 Pi for 1 i < j t, then how large can t be?
Frankls
1982 paper [11] answered this question, proving the tight bound t
. If the given DFA has rank r, then the while-loop in GreedyTerminalWord must execute at most r 1 times, and the algorithm will produce a terminal
word of length no greater than
r+1
r+2
n
1
+
+ +
= (n r)(n r + 1)(n r + 2)
6
2
2
2
nk+2
2
CHAPTER 5
17
18
19
procedure Nucleus(Q, , )
C StronglyConnectedComponents(Q, , )
N
for c C do
if {(q, ) : q c, } c then
N N c
end if
end for
return N
end procedure
The algorithm proceeds by finding the strongly-connected components of , and
taking the union of all such components that are also automata.
Proposition 5.6. The Nucleus procedure finds the nucleus of a DFA in O(|Q|||)
time.
Proof. The fact that the Nucleus procedure identifies all strongly-connected subautomata follows from Lemma 5.5. The specified time complexity follows from the
existence of linear-time algorithms for identifying strongly-connected components,
from the fact that each state transition is examined once, and from the fact that
each state is added to the nucleus set at most once.
This next procedure finds, for each state, a word taking that state to the nucleus.
We will see that a nuclear word can be constructed from the combination of such
words. We first require, however, the following result.
Lemma 5.7. If is a DFA with conucleus of size m, then any state in can be
taken to the nucleus by a word of length no greater than m.
Proof. First we show that there is a path from any conuclear state to a nuclear
state. Suppose q1 is a state in the conucleus of . As every state is part of some
strongly-connected component, q1 is a member of a strongly-connected component
C1 . By assumption, C1 is not also a subautomaton (otherwise, q1 would be in the
nucleus). So there is some state q2 reachable from q1 such that q2
/ C1 . Now, q2 is
part of some strongly-connected component C2 6= C1 . If C2 is also a subautomaton,
then we have found a path from q1 to a nuclear state and need not continue. Assume
this is not the case. Then, as before, we can find a state q3 reachable from q2 and
a strongly-connected component C3 6= C2 with q3 C3 . We can continue in this
manner until we select a state qk in a strongly-connected subautomaton, or until
we must select a state qk such that qk Cj for j < k. Note that there is no other
eventuality, as contains a finite number of strongly-connected components (i.e.
the sequence C1 , C2 , , Ck must contain a repeated element, if k is large enough).
Then qj+1 is reachable from any state in Cj (as qj+1 is reachable from qj Cj ), and
any state in Cj is reachable from qj+1 (as qk Cj is reachable from qj+1 ). Hence,
20
21
state can be taken to the nucleus by some word. Let q Q be the first-processed
state that is a direct successor to p on a shortest path from p to the nucleus. That
is, let q be the first-processed state such that q = (p), where w (with and
w ) is some shortest word taking p to the nucleus. Note, then, that q is closer
to the nucleus than p, and that w is a shortest word taking q to the nucleus. As
states are visited in increasing order of distance from a nuclear state, q is processed
before p in the execution of NucleusTransitions. From the inductive hypothesis,
before q is processed, P [q] contains a shortest word v taking q to the nucleus
(i.e. |v| = |w|).
Furthermore, before the processing of q, we must have P [p] undefined. For the
sake of contradiction, suppose this is not the case. Then there is some state q 0 Q,
processed before q, such that q 0 = (p) 0 for some symbol 0 . Inductively,
v 0 = P [q 0 ] is a shortest word taking q 0 to the nucleus. As q 0 is processed before
q, we must have that |v 0 | |v|. Hence the word 0 v 0 is a shortest word taking p to
the nucleus. This contradicts the assumption that q is the first-processed state that
is a direct successor to p on a shortest path from p to the nucleus.
So, during the processing of q, P [p] is undefined and is hence set to P [q] = v.
Note that (p)v = (q)v, so P [p] takes p to the nucleus. Furthermore, v is a shortest
word taking p to the nucleus, as |v| = |w|. No defined entry in P is every modified,
so P [p] still contains a shortest word taking p to the nucleus immediately before the
processing of state p. As proven in Lemma 5.7, each such word must be of length
less than m. Hence, the correctness of the algorithm follows inductively.
Before analysing the time efficiency of the algorithm, we pause to comment on
the implementation of word concatenation. In this dissertation, we assume that
concatenating two words u, v entails computing the transformation uv, that
is, the image (q)uv of each state q Q. This mirrors the implementations given
in Appendix C. So prepending an input symbol to a word is an O(|Q|) operation.
During execution of the algorithm, every transition from every state is examined
exactly once, every state is enqueued exactly once, and two words are composed (an
O(|Q|) operation) only when a state is enqueued. Hence, the time complexity of the
algorithm is O(|Q|2 ||).
22
23
Corollary 5.11. If = hQ, , i is a DFA with nucleus N , then every terminal
word of maps to N , and the rank of is equal to the rank of N .
Proof. Let w be a terminal word for , and suppose, for the sake of contradiction, that (Q)w 6 N . From Proposition 5.9, there exists a nuclear word w0
mapping every state to N . Then (Q)w0 w (Q)w a contradiction. So w maps
into N . Furthermore, w is a terminal word for N . If this was not the case, then
appending some terminal word of N to w would result in a lower rank word for
also a contradiction. Hence, the rank of is equal to the rank of N .
Rystsov notes that a short nuclear word can be generated in O(|Q|2 ||) time, and
justifies this claim with reference to a result in one of his earlier (Russian) papers.
The algorithm described above meets the specification given by Rystsov, but we do
not know whether the two algorithms coincide. Corollary 5.10 is required for the
following important theoretical result.
Theorem 5.12. If Pins conjecture holds for all strongly-connected DFAs, then it
holds for all DFAs.
Proof. Assume that Pins conjecture holds for all strongly connected DFAs, and
suppose = hQ, , i is a DFA, with nucleus N and conucleus of size m. We first
show that Pins conjecture holds for the nucleus of . Suppose N has size n, rank
r, and is the union of k strongly connected
Nk , where Ni has size ni
PkDFAs N1 , , P
and rank ri for i = 1, , k. Then n = i=1 ni and r = ki=1 ri . By assumption,
Ni admits a terminal word of length less than (ni ri )2 , for i = 1, , k. By
concatenating terminal words for each subautomaton, we obtain a terminal word
for N , of size
k
X
i=1
(ni ri ) =
k
X
i=1
n2i
k
X
i=1
ni ri +
k
X
i=1
24
q0
a, b
3
a
Figure 5.2: The graph of A \ A0 , the quotient automaton of the DFA A by the
subautomaton A0 with state set {1, 2}.
By way of example, Figure 5.2 depicts A \ A0 , the quotient of the automaton A,
from Figure 1.2, by the subautomaton A0 with state set {1, 2}. The states 1 and 2
of A have been collapsed into a new state q 0 , and all transitions into states 1 or 2
have been replaced with transitions into q 0 . Notice, in particular, that since A0 is a
subautomaton, there are no transitions from states 1 or 2 to any states outside of
A0 . Hence, we are faced with no dilemmas when defining transitions out of the new
state q 0 ; we may set each such transition to map to q 0 itself.
Suppose is a DFA, with pair automaton P [2] (). As stated above, is a
subautomaton of P [2] (). Further, the set of states in P [2] () from which all states
25
of are unreachable gives rise to another subautomaton D of P [2] (). Then the
subautomaton D of P [2] () contains the nucleus of P [2] (). To see why this
is the case, consider any strongly-connected subautomaton S of P [2] (). Suppose
firstly that S contains a 1-element state. Then, as S is strongly connected, and no
2-element state is reachable from a 1-element state, S may only contain 1-element
states. So S is contained in . Alternately, if S does not contain a 1-element state,
then no state of is reachable from any state in S. Hence, S is contained in D.
Define the quotient pair automaton as P [2] () \ ( D). From the discussion
above, it is clear that the nuclear words of the quotient pair automaton are precisely
those words that map every state of P [2] () into D. That is, the quotient pair
automaton has a single nuclear state. Furthermore, it exhibits the property we
desire.
Proposition 5.14. A word of a DFA is terminal if and only if it is nuclear in the
quotient pair automaton.
Proof. Let = hQ, , i be a DFA, w be a terminal word of , and p, q Q
be states of . Suppose firstly that w unifies p and q. Then w takes the state
{p, q} of P [2] () into the subautomaton . Alternately, suppose that (p)w 6= (q)w.
There can be no word, then, that unifies (p)w and (q)w; if there was such a word
w0 , then the word ww0 would have rank less than w, contradicting the fact that
w is terminal. Hence, no state in is reachable from the state ({p, q})w of P [2] (),
and so w takes {p, q} to a state in D. So w is a nuclear word of the quotient pair
automaton.
Conversely, suppose w is nuclear word of the quotient pair automaton. Then w
maps any state {p, q} of P [2] () to or D. Suppose, for the sake of contradiction,
that w is not terminal. That is, suppose there is a word w0 with rank less
than w. Then |(Q)ww0 | < |(Q)w|, and hence there must be two distinct states
(p)w, (q)w w(Q) that w0 unifies. However, as (p)w 6= (q)w, w must map the state
{p, q} of P [2] () to a state in D. Then, as D is a subautomaton containing only
2-element states, ww0 must also map {p, q} to a 2-element state in P [2] (). So we
have (p)ww0 6= (q)ww0 a contradiction. Therefore, no word can have rank less
than w and, hence, w is a terminal word of .
So we can compute a terminal word for a DFA = hQ, , i by using the algorithm described above to generate a nuclear word for its quotient pair automaton.
The quotient pair automaton can be constructed in O(|Q|2 ||) time, and has O(|Q|2 )
states. Hence, the final algorithm requires O(|Q|4 ||) time, and produces a terminal word of length less than |Q|4 . This also gives a (weak) upper bound on the
length of shortest terminal words. We provide, in Appendix C, a GAP implementation RystsovTerminalWordOfSemigroup of the procedure described in this
chapter.
26
CHAPTER 6
27
procedure UnifyingWords(Q, , )
hQ0 , , 0 i PairAutomaton(Q, , )
S queue containing {u} for u Q
U map undefined on all state sets
for u Q do
U [{u}]
end for
while not Empty(S) do
q Dequeue(S)
for q 0 Q0 , with 0 (q 0 , ) = q and U [q 0 ] undefined do
U [q 0 ] U [q]
Enqueue(S, q 0 )
end for
end while
return U
end procedure
Proposition 6.1. The UnifyingWords procedure returns, for each pair of distinct states {s, t} Q that can be unified, the shortest word U [{s, t}] unifying s
and t, in O(|Q|3 + |Q|2 ||) time.
Proof. The proof of this proposition proceeds in a manner similar to the proof of
Proposition 5.8. We verify that the following invariant holds during the execution
of the algorithm: immediately before state p Q0 is processed by an iteration of the
while-loop, U [p] contains a shortest word taking p to a singleton state of P [2] ().
Before continuing, we note that two distinct states s, t Q can be unified if
and only if there is some path from the state {s, t} of P [2] () to a singleton set.
As UnifyingWords performs a breadth-first search proceeding from the singleton
states in the transposition of P [2] (), a state p Q0 is eventually processed if an
only if there is a path from p to a singleton state. Furthermore, such states are
processed in increasing order of distance from a singleton state. Hence we prove the
above claim inductively, on distance from a singleton state.
Clearly, every singleton state {u} Q of P [2] () is mapped to a singleton state
by . Note that U [{u}] is set to for each u Q at the beginning of the algorithm,
and cannot be modified during the remaining steps (as only undefined entries in U
are updated). So the claim holds for all singleton states. Suppose, then, that p Q0
is a pair state of P [2] (), and that the given invariant holds for those states of P [2] ()
closer to a singleton state than p. Let q Q0 be the first-processed state that is a
direct successor of p on a shortest path from p to a singleton set. That is, let q be
the first-processed state such that q = (p), where w (with and w )
is some shortest word taking p to a singleton state. Then q is closer to a singleton
state than p, and w is a shortest word taking q to a singleton state. As states are
28
The main algorithm simply combines the unifying words together to create a
terminal word. Note, specifically, the method of state-pair selection within the
while-loop; while Eppsteins original algorithm unifies an arbitrary pair of states in
P , the algorithm detailed below attempts to find a unifying word for each possible
pair of states in P . This is because, in a non-synchronising DFA, not all pairs of
states can be unified. As long as there exists a pair of states in P that can be unified,
however, a smaller state set can still be reached.
procedure TerminalWord(Q, , )
U UnifyingWords(Q, , )
P Q
w
repeat
for each pair of distinct states {s, t} P do
if U [{s, t}] defined then
29
v U [{s, t}]
w wv
P (P )v
break
end if
end for
until |P | unchanged
return w
end procedure
Proposition 6.2. The TerminalWord procedure returns a terminal word of
length no greater than |Q|3 in O(|Q|3 + |Q|2 ||) time, for a DFA = hQ, , i.
Proof. In each iteration of the main loop, a unifier is appended to the word w,
and P is updated to the state (Q)w of P(). The loop exits, then, when there is
no possible word that takes (Q)w to a smaller set in P(). This can be verified by
noting that any word that takes (Q)w to a smaller set must necessarily unify two
states in (Q)w. Suppose w0 is a terminal word of . Then |(Q)ww0 | = |(Q)w|,
as no state smaller than (Q)w is reachable from (Q)w. Hence the rank of w0 is no
less than the rank of w. So w is terminal.
The main loop of the algorithm executes at most |Q| times (as the size of P
decreases during each iteration), and each iteration appends a word of length less
than |Q|2 to w (as a shortest path between states in P [2] () uses less than |Q|2
input symbols). Hence, the final length of w does not exceed |Q|3 . This proves the
correctness of the TerminalWord procedure.
A simple analysis of each step in the algorithm justifies the specified time complexity. The initial call to UnifyingWords requires O(|Q|3 + |Q|2 ||) time. This
is followed by at most |Q| iterations of the main loop. During each iteration of
the loop, O(|Q|2 ) constant-time map look-ups (one for each pair of states in P ) are
performed. If a useful state pair is found, then one word concatenation and one application of a state transformation occurs. The word concatenation requires O(|Q|2 )
time (as the length of each word stored in U is O(|Q|2 )), and the application of v
to P requires O(|Q|) time. Hence, the main loop runs in O(|Q|3 ) time, leaving the
O(|Q|3 + |Q|2 ||) time bound of the UnifyingWords procedure to dominate the
process.
The TerminalWord procedure given above is an efficient generalisation of
Eppsteins reset word algorithm to non-synchronising automata. It appears that the
given modification has not been previously considered, and the resulting algorithm
represents a new level of efficiency for computing terminal words. In particular, it is
a factor of |Q| faster than the algorithm proposed by Rystsov in 1992 [26], which was
detailed in Chapter 5. This algorithm has been implemented as the GAP function
TerminalWordOfSemigroup, and is available in Appendix C.
30
CHAPTER 7
31
properties pertinent to the ern and Pin conjectures. Hence, when enumerating
automata, we wish to only consider one DFA from each isomorphism class. To do
so, we use an algorithm guaranteed to generate at least one DFA from each such
class, then retain exactly one automaton from each class through a canonicalisation
process. The canonicalisation process assigns, to each DFA, a representative of that
DFAs isomorphism class, such that isomorphic DFAs are assigned the same representative. This is the standard notion of canonicalisation, as used in the influential
paper Practical graph isomorphism, II, for instance [18].
The algorithm referred to above involves the extension of a DFA A with the
transitions of a DFA B . We now precisely define this process.
Definition 7.2. If A = hQ, A , A i is some size-n, arity-k DFA, B = hQ, B , B i
is some size-n, arity-1 DFA with A B = , and is some permutation of Q,
then the union of A and B under , denoted A B , is the DFA hQ, A B , i,
where
A (q, )
if A
(q, ) =
1 (B ((q), )) if B
We can visualise the union process as gluing each state q of B on top of the
state 1 (q) of A . For example, consider the union in Figure 7.1, also depicted
in Kisielewicz and Szykuas original paper [16]. Note that, for instance, the edge
from state 0 to state 2 in B is transformed into an edge from state 1 = 1 (0) to
state 0 = 1 (2) in A B . In particular, we use the opposite meaning of that
conventionally signalled by the given notation. That is, what we denote by A B
1
might conventionally be written as A B . For the sake of brevity, when we
write A B , with A and B automata, and a permutation, we tacitly assume
that A and B share the same state set, that is a permutation of this state set,
and that B has an alphabet of size 1 that is disjoint from the alphabet of A .
We use the following notation in the proof of Proposition 7.4.
Definition 7.3. If = hQ, , i is a DFA, and 0 , then the DFA hQ, 0 , |Q0 i
is called the restriction of to 0 , and is denoted |0 .
In other words, |0 is the DFA that arises by discarding from all transitions
except those defined by symbols in 0 .
Proposition 7.4. If A is an ordered list of all pairwise non-isomorphic automata
with state set Q and alphabet A of size k1, B is an ordered list of all pairwise nonisomorphic automata with state set Q and alphabet B of size 1 (with B A = ),
and is a DFA with state set Q and alphabet A B , then ' A B for some
A A, B B, and permutation of Q.
Proof. Suppose = hQ, A B , i is a DFA. As |A is a DFA with state set Q and
alphabet A , there exists an isomorphism a from |A to some A = hQ, A , A i
32
0
a
1
b
1
a
a
a
2
2
a
A B
Figure 7.1: The graph of the union of A and B under = (0, 2, 1).
A. Similarly, there exists an isomorphism b from |B to some B = hQ, B , B i
B. Then let = b 1
a . Certainly is a permutation of Q, as both a and b are
bijective functions from Q to Q. We claim that a is a strong isomorphism from
to the DFA A B = hQ, A B , 0 i. So we must show that a satisfies the
definition of such an isomorphism. Suppose q Q and A . Then
0 (a (q), ) = A (a (q), )
= a (|QA (q, ))
= a ((q, ))
33
A B for each A A, B B and permutation of Q. This approach,
however, is non-optimal. In particular, there are |Q|! possible permutations of Q,
many of which generate isomorphic automata.
Kisielewicz and Szykuas algorithm is designed to generate all pairwise nonstrongly-isomorphic automata that arise from the union of a given A A and
B B, without requiring the examination of every possible permutation of Q.
To more closely mirror the included implementation of the procedure, all related
pseudo-code and analysis presented in this chapter assumes that A and B use the
state set Zn .
In order to avoid the examination of redundant permutations, we must precompute data about the structure of A and B . For each i Zn , we require (up to)
one state PrevA[i] Zn based on the structure of A and for each S Zn
and j Zn \ S, we require one boolean value PrevB[S][j] based on the structure
of B . The meaning of these data, and the manner in which they are computed,
will be elucidated shortly. Before doing so, however, we present the algorithm in its
entirety. The procedure accepts the required source automata, the data tables mentioned above, and a partial permutation i . A partial permutation i is an injective
map from Zi to Zn . We use S to denote the image set of i . During execution of the
algorithm, the empty partial permutation 0 is recursively extended to a number of
complete permutations (with some extensions possibly ignored, based on values in
the two data tables). For each complete permutation reached, the DFA A B
is output.
procedure PermutB(A , B , PrevA, PrevB, i , S)
if i = n then
output A B
else
m i (PrevA[i]) + 1 if PrevA[i] defined, otherwise 0
for j = m, , n 1 do
if j
/ S and not PrevB[S][j] then
i+1 the extension of i with i+1 (i) = j
PermutB(A , B , PrevA, PrevB, i+1 , S {j})
end if
end for
end if
end procedure
Consider, first, the unoptimised variant of the algorithm, by leaving PrevA[i]
undefined for all i Zn , and by setting PrevB[S][j] to false for each S Zn
and j Zn \ S. In this situation, a call to PermutB simply extends the partial
permutation i in every possible way (checking that the new image j is not in the
current image set S, to maintain injectivity), with each recursive call leading to a
complete permutation. Notice that permutations are constructed in lexicographical
(i.e. dictionary) order with respect to the image sequence (0), , (n 1).
34
a
4
35
Alternatively, suppose that B . Then
2 ((q), ) = 1 (B ((q), ))
= 1 1 (B ((q), ))
= ()1 (B ((q), ))
= (1 (q, ))
36
37
end for
end for
end procedure
Theorem 7.10. If A is an ordered list of all pairwise non-isomorphic automata with
state set Zn and alphabet A of size k 1, B is an ordered list of all pairwise nonisomorphic automata with state set Zn and alphabet B of size 1 (with A B =
), and is a DFA with state set Zn and alphabet A B , then an automaton
isomorphic to is output during execution of GenerateAutomata(A, B).
Proof. By Proposition 7.4, = A B for some A A, B B and permutation
of Zn . Let 0 be the lexicographically least permutation of Zn such that A B '
0
A B . Then, by Lemmas 7.7 and 7.9, neither Optimisation 1 nor Optimisation
0
2 prevent PermutB from outputting A B . Hence the theorem is proven.
We now pause to briefly discuss the implementation of the optimisations mentioned above. Each optimisation requires the computation and analysis of automorphisms of a DFA. These automorphisms can be computed with the help of existing
software tools (notably McKay and Pipernos nauty and Traces suite [18]), or directly, by searching for automorphisms among all state permutations. The latter
option was used in gena.cpp, and proved adequate for the generation of small automata. When taking this approach, we can reduce the number of permutations
that must be examined by considering the indegrees (that is, the number of incoming transitions) of each state. As an automorphism may only map between states
of equal indegree, we may construct each potential automorphism out of disjoint
permutations each one permuting only those states of a given indegree.
Note that the automorphisms of B fixing each of the 2n subsets of Zn must be
generated during the precomputation of the PrevB table. This requires significantly
more processing time than the precomputation of the PrevA table. Hence, in the
complete algorithm, the PrevB table is computed once per automaton B in list
B, after which all unions involving B are output. In contrast, the PrevA table is
computed multiple times for each automaton A in list A once for each automaton
B with which A is coupled. For a greater insight into the implementation of such
procedures, see the source code of gena, found in Appendix C.
As mentioned above, some isomorphic DFAs are output by the described algorithm. Specifically, some DFAs generated from the union of different source automata may be equivalent up to a permutation of alphabet symbols (i.e. isomorphic,
but not strongly isomorphic), and some DFAs generated from the union of the same
source automata may be isomorphic (i.e. the pruning defined above is not perfect).
We now detail a process by which output DFAs can be canonicalised. The process begins by constructing a coloured graph corresponding to a given DFA. This
graph is then canonicalised, using McKay and Pipernos nauty and Traces software
suite [18]. A canonicalised version of the original DFA is then recovered from the
canonicalised graph.
38
vb
GA
v1,b
b
v1
v0,a
v0
v3,b
v0,b
v2,a
v1,a
v3
v2
v3,a
v2,b
va
G0A
A0
va
v3,a
a
v0,b
v0
v3
v1,a
v2,b
v0,a
v3,b
v1
v2
v1,b
v2,a
vb
Figure 7.3: The graph of the DFA A, its corresponding graph GA , the canonicalised
graph G0A , and the canonicalised DFA A0 .
39
Given a DFA = hQ, , i, we construct the corresponding graph G as follows.
For each state q Q, we introduce one state vertex vq to G , for each q Q and
, we introduce one transition vertex vq, to G , and for each alphabet symbol
, we introduce one symbol vertex v to G . We colour all state vertices
one colour, all transition vertices a second colour, and all symbol vertices a third
colour. Lastly, for each q Q and , we introduce the directed edges (vq , vq, ),
(vq, , v(q,) ) and (v , vq, ) to G . We then compute G0 , the canonicalised version
of the graph G . A canonicalised DFA 0 is extracted from G0 in the natural way.
That is, the transition from q Q to q 0 Q by is included in 0 precisely when
the edges (vq , vq, ), (vq, , vq0 ) and (v , vq, ) are all present in G0 . This construction
is more easily understood by example. Consider, for instance, the DFA A, from
Figure 1.2. The canonicalisation of A proceeds as depicted in Figure 7.3.
We provide a C program canon_dfa in Appendix C, which implements the process described above. The program accepts the description of a DFA in the format
used by the Semigroups GAP package, and outputs a canonicalised version of the
DFA in the same format. Due to the efficiency of the nauty library, canon_dfa
can process arity-2 DFAs of up to 1000 states in less than a minute. It is one of
the only publicly available tools for the efficient canonicalisation of DFAs, and is
the only such tool (to the best of our knowledge) that can be easily used with the
Semigroups GAP package.
We also used a second, group-theoretic, method to generate DFAs for the purposes of this dissertation. This second method was primarily intended as a means of
verifying the correctness of the algorithms listed above, compared to which it proved
significantly less efficient. A GAP implementation of the procedure, along with a
discussion of its operation, is included in Appendix C. This implementation is simple and transparent, and its behaviour is almost completely dependent on existing,
tested code. Hence, we are very confident in its accuracy. Despite its simplicity, the
second method was efficient enough to enumerate automata of size less than 7. The
output of the GAP routine was canonicalised (also with GAP), and compared to the
corresponding output of gena and canon_dfa, for automata of size 4, 5 and 6. It was
verified that the number of automata returned by each process matched the value
in the OEIS [20], and that each process produced equivalent output. For reasons of
efficiency, however, and due to the fact that the second method was not designed to
generate automata of arity greater than 2, we chose to use the more sophisticated
combination of gena and canon_dfa as the primary method of automata generation
for this dissertation.
40
CHAPTER 8
Results
In this chapter, we detail the results of our computational enumeration of all arity-2
DFAs of size less than 9. No counter examples to either the ern or Pin conjectures were found among DFAs in this parameter space. Furthermore, it appears
that the task of computationally generating significant non-synchronising slowlyconverging automata is unfeasible. More information about the enumeration, including terminal-threshold histograms and notable slowly-converging automata, can
be found in Appendix A. In the following discussion, we use C(n, k) = (n k)2 (for
integers 1 k n) to denote Pins conjectured upper bound on the terminal
threshold of a size-n, rank-k DFA.
Table 8.1 lists the number of automata generated in our complete enumeration.
Harrison [13] used Plya enumeration to compute the number of arity-2 automata
of each size; we have verified that our results match this theoretical calculation.
As shown in the table, over 3 thousand million automata were generated. The
computational requirements for such a task were significant; weeks of computation
were performed, and terabytes of raw data were produced, by our 96-core cluster of
machines. In comparison, Kisielewicz and Szykua [16] claim to have enumerated
all arity-2 DFAs of size less than 12 (over one thousand trillion automata), and
Trahtman [31] claims to have generated all DFAs of size less than 8 and arity less
than 5 (a truly staggering number of automata).
n
k
Total
Table 8.1: The number of non-isomorphic arity-2, size-n, rank-k automata, for 3
n 8 and 1 k n.
We begin our analysis with Table 8.2. It lists the number of edge cases (that
is, automata with terminal threshold equal to Pins bound) among arity-2 DFAs of
size no greater than eight.
The information in this table is at once exciting and dispiriting. On one hand,
the relatively frequent rate at which edge cases occur (particularly for higher-rank
41
n
k
1
2
3
4
5
6
7
8
3 4
2 2 1
2
1
1
13 2 2
1
2
1
5 71 8
8
4
8
23 415 22
22
11
89 2795
86
86
484 21540
322
2904 189753
22002
Table 8.2: The number of non-isomorphic arity-2, size-n, rank-k automata with
terminal threshold of C(n, k) = (n k)2 for 3 n 8 and 1 k n.
DFAs) suggests that uncovering edge cases to Pins conjecture is significantly easier
than uncovering edge cases to erns conjecture. On the other hand, the sheer
number of such edge cases makes their analysis difficult it is a formidable task to
extract, from such a large set of candidate DFAs, patterns that could form the basis
of a counter example to, or even an infinite family of edge cases for, Pins conjecture.
n
T
C(n, 1) 0
C(n, 1) 1
C(n, 1) 2
C(n, 1) 3
C(n, 1) 4
C(n, 1) 5
C(n, 1) 6
C(n, 1) 7
C(n, 1) 8
C(n, 1) 9
C(n, 1) 10
< C(n, 1) 10
2 2
4 5
29 11
14 21
0 64
104
375
478
51
0
1
2
1
1
4
0
0
0
11
2
0
0
23
11
0
0
43
22
3
0
46
45
3
1
151
61
13
1
294
112
39
3
551
208
75
1
986
378
123
5
1855
718
203
12
30291 1317120 60477336 3210706586
Table 8.3: The number of arity-2, size-n, rank-1 DFAs with terminal threshold T ,
for 3 n 8.
We persist by restricting our attention to DFAs of rank 1 and 2, in the hope that
this proves instructive for the analysis of higher-rank automata. Listed in Table
8.3 is the number of rank-1 DFAs with reset threshold close to erns bound. To
account for the wide range of values exhibited, we denote reset thresholds by their
deficiency from erns bound. For example, the shaded row of the table lists edge
cases for the ern conjecture.
CHAPTER 8. RESULTS
42
This table confirms known facts about the distribution of rank-1 automata. In
particular, it verifies that the edge cases identified by Trahtman [31] are the only
arity-2 synchronising DFAs with reset threshold reaching erns bound. The first
gap (i.e. contiguous sequence of 0s in a column, as detailed in the discussion of
Table 2.2) is also verified to appear at T = C(n, 1) 1, for 6 n 8.
n
T
C(n, 2) 0 13 2
2
1
2
1
C(n, 2) 1
0 10
5
4
0
0
C(n, 2) 2
100 15
11
2
0
C(n, 2) 3
138 24
23
11
0
C(n, 2) 4
0 102
43
22
3
C(n, 2) 5
218
50
45
3
C(n, 2) 6
1154
157
63
13
C(n, 2) 7
3033
366
113
39
C(n, 2) 8
952
754
216
75
C(n, 2) 9
0 1519
410
123
C(n, 2) 10
3016
828
205
< C(n, 2) 10
159155 6000642 258434974
Table 8.4: The number of arity-2, size-n, rank-2 DFAs with terminal threshold T ,
for 3 n 8.
Table 8.4 contains analogous data for rank-2 automata. As existing literature
concerns only rank-1 automata, this table presents new information about the distribution of small DFAs. There are a number of interesting features to note. We immediately see that, as above, there appears to be significantly more slowly-converging
automata of rank-2 than there are slow-synchronising automata. We also see that
a gap is visible at T = C(n, 2) 1 for 7 n 8. The gaps that appear in this
table, however, are smaller than those in Table 8.3, and no gap appears in the n = 6
column. Indeed, this trend persists among automata of higher-rank: there is a single
one-symbol-long gap that appears at T = C(8, 3) 1 for size-8, rank-3 DFAs. In
general, it appears that the frequency and size of terminal-threshold-histogram gaps
decrease as the rank of the DFAs in question increase. We may suggest, then, that
the gap conjecture be generalised to automata of all ranks. That is, we may make
the following claim: for any integers g 1 and k 1, there exists a large enough
integer n 1 such that there are at least g gaps in the distribution of terminal
thresholds among arity-k, size-n automata. While the breadth of the data collected
may be insufficient to convincingly justify this claim, it certainly seems reasonable.
It is natural to be particularly interested in the 21 (shaded) automata from Table
8.4 with terminal threshold reaching Pins bound. Unfortunately, these automata
prove to be uniformly uninteresting. Each such automaton of size n > 3 consists of a
synchronising DFA of size n1 coupled with a single isolated state. As disconnected
43
automata, these DFAs are not significant a disconnected DFA that is an edge
case for (or counter example to) Pins conjecture must necessarily contain a smaller,
connected DFA that is also an edge case for (or counter-example to) Pins conjecture,
for reasons similar to the those used in the proof of Theorem 5.12. This pattern
also persists for higher-rank automata there is no size-n, rank-k edge case to Pins
conjecture that is connected, for 4 n 8 and 1 < k < n 1. The fact that
all edge cases take on this form is a testament to the primacy of erns family of
automata, and of the ern conjecture, even in the context of non-synchronising
automata.
We have reason, then, to generalise the conjecture made by Trahtman in his
2006 computational survey of synchronising automata [31] that the eight known
sporadic examples of edge-case automata, along with erns infinite family, are the
only edge cases to the ern conjecture of any size or arity. Taking into account
our computational findings (and pending the analysis of higher-arity automata),
we may offer the following modification: the known sporadic edge-case automata,
and erns infinite family of automata, are the only connected edge cases to Pins
conjecture, among automata of size n > 3 and rank k with 1 k < n 1.
So we must instead turn our attention to connected slowly-converging automata.
Even this restriction, however, proves inadequate; it appears that the connected
automata that converge most slowly do so by virtue of containing a large, slowlysynchronising (i.e. rank-1) subautomaton. Hence, we consider only strongly-connected
slowly-converging automata. This is consistent with the approach used in Trahtmans [31], and also Kisielewicz and Szykuas [16], papers on the enumeration of
small DFAs, in which only strongly-connected automata are considered for the sake
of computational efficiency. Table 8.5 gives the maximum terminal threshold among
arity-2, strongly-connected DFAs of size-n and rank-k.
It appears, then, that most strongly-connected automata converge significantly
more quickly than Pins upper bound. Based on these results, we are not confident
that computational methods can be used to find a non-synchronising counter example to Pins conjecture. We also suggest that rank-1 DFAs remain the focus of
future work, on account of the slow rate at which they synchronise, in comparison
to Pins bound. These results also serve as a strong indicator that Pins conjecture
is true, at least for automata of rank greater than 1.
We now examine the most slowly-converging strongly-connected, rank-2 automata identified in the course of our computational enumeration. Extrapolating
from the edge cases of size 6 and 8, we find that automata of the form E0,n (for
4 < n and n even), depicted in Figure 8.1, are among the most slowly-converging.
Specifically, E0,8 is found to be the unique arity-2, size-8, rank-2, strongly-connected
automaton with reset threshold no less than 25, and E0,6 is found to be the equal
sixth slowest-converging arity-2, size-6, rank-2, strongly-connected automaton.
Extrapolating from the edge cases of size 5 and 7, we find that automata of
CHAPTER 8. RESULTS
44
n
k
1
2
3
4
5
6
7
8
9
4
16
9
3
1
1
0
16
25
25
9
9
3
1
0
36
15
16
4
1
49
25
12
9
49
36
19
6
4
36
25
11
3
1
25
16
1
0
16
6
4
1
9
3
1
0
4
1
1
0
0
the form E1,n (for 3 < n and n odd), depicted in Figure 8.2, are among the most
slowly-converging. Specifically, both E1,5 and E1,7 are the arity-2, rank-2, stronglyconnected automata of equal largest terminal threshold for their respective sizes.
Experimental analysis of these automata suggests an unusual fact: both families have a linear-order terminal threshold (see Table 8.6 for confirmation of this
fact). Given that the families E0,n and E1,n comprise many of the slowest-converging
strongly-connected, rank-2 automata generated, we may suspect that there is no
family of such automata requiring a quadratic order terminal word. This conjecture, however, is not correct. Define the automaton Cn,k = hZn , {a, b}, i by
if = a
q + 1 mod n
q
if = b and q Zn1
(q, ) =
k
otherwise
We have, for instance, that Cn = Cn,0 and Fn = Cn,1 , where Fn is described
in Ananichev, Gusev and Volkovs paper on slowly-synchronising automata [3].
Then, for even n > 2, Cn,1 is an experimentally-verified family of rank-2 DFAs with
quadratic-order terminal threshold. Our enumeration did not identify the automata
in this family, on account of the small coefficients in the polynomial describing their
terminal thresholds. Specifically, it is not until n = 16 that Cn,1 has a larger terminal
threshold than En,0 . This fact does not bode well for the computational identification
45
b
2
a
a
b
1
b
b
b
a
3
a
b
n2
n1
Figure 8.1: The graph of the DFA E0,n for an even, natural number n with n > 4.
a
2
b
0
b
1
3
a
a
b
5
b
a
6
n2
n1
Figure 8.2: The graph of the DFA E1,n for an odd, natural number n with n > 3.
of slowly-converging automata, as it suggests that the slowest-converging families
of automata only distinguish themselves at sizes for which complete enumeration is
implausible.
n 5 6 7 8 9 10 11 12 13 14 15 16
E0,n
9
25
41
57
73
89
E1,n 7
19
31
43
55
67
Cn,1
9
19
33
51
73
99
n
8n 39
6n 23
1
n 2n + 3
2
Table 8.6: The observed (for 5 n 16) and extrapolated terminal thresholds of
three slowly-converging families of strongly-connected automata.
While it is possible that the methods described in this dissertation could be used
to completely enumerate larger automata, time, space, and computational resource
constraints made this task unfeasible. In an attempt to combat this fact, we chose
CHAPTER 8. RESULTS
46
to generate a subset of all size-n automata, for 9 n 12, in the hope of identifying
some automata from which slowly-converging families could be extrapolated. We
were required to choose, then, some subset of automata in which the most slowlyconverging examples could be found. Based on an examination of known edge
cases to erns conjecture, we chose to enumerate those automata that are the
union of a cyclic transformation, and a deficiency-1 transformation. Recall that
a cyclic transformation cyclically permutes the state set of a DFA. A deficiency-1
transformation is a transformation : Q Q where |(Q)| = |Q| 1. It seems,
intuitively, that the union of such transformations must be slow to converge.
We now present the results of this restricted enumeration. Slowly-synchronising
(i.e. rank-1) automata have been studied by Ananichev, Gusev and Volkov [3], and
are hence not considered here. Listed in Table 8.7 is the distribution of terminal
thresholds for the non-synchronising automata generated in the manner specified
above.
We first note that, due to the block structure of an automaton with a cyclic
transformation, a size-n, rank-k automaton is generated only if k divides n. Secondly, we note that the terminal thresholds of the automata generated fall well
below Pins bound. This is consistent with the results established for smaller automata, as each generated automaton contains a cyclic transformation, and is hence
strongly-connected .
As the edge-cases for higher-rank automata are too numerous to analyse, we
consider only the slowest-converging rank-2 and -3 automata of size 9 through 12.
We immediately find that the rank-2 automata of size 10 and 12 share a common
form: the most slowly-converging automaton is Cn,1 , and the two second-mostslowly-converging automata belong to the families which we will denote Sn,1 and
Sn,2 , and define below. Herein, we focus our attention on these two families. The
important edge-cases are depicted in Figure 8.3, at the end of the chapter.
Based on the common form of rank-2 edge-cases of size 10 and 12, we define
Sn,1 = hZn , {a, b}, 1 i and Sn,2 = hZn , {a, b}, 2 i, for n 4 and n even, as follows:
q + 1 if q < 2 or q even
q 1 if q > 2 and q odd
1 (q, a) = q + 1 mod n
and 1 (q, b) =
2 (q, a) = q + 1 mod n
q 1 mod n if q even
if q = n 1
and 2 (q, b) = 2
q+1
if q =
6 n 1 and q odd
Table 8.8 lists experimental data collected about the families defined above.
These data verify that the families Sn,1 and Sn,2 have a quadratic order terminal
threshold that is always one less than the terminal threshold of Cn,1 .
Observing the data in Table 8.7 (particularly the size-12 rank-2 histogram), we
may be tempted to claim that we have identified the slowest-converging families
47
Size-9, rank-3 (C(9, 3) = 36)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
N9,3 (`) 0 0 0 0 0 0 144 36 274 186 86 142 102 104 112 76 24 8 2
Size-10, rank-2 (C(10, 2) = 64)
< 21 21 22 23 24 25 26 27 28 29 30 31 32 33
N10,2 (`) 50766 2924 1505 949 575 394 267 132 57 19 5 4 2 1
Size-10, rank-5 (C(9, 5) = 25)
`
0 1 2 3 4 5 6 7 8 9 10 11 12
N10,5 (`) 0 0 0 0 0 384 256 432 336 192 160 64 96
Size-12, rank-2 (C(12, 2) = 100)
< 35
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
N12,2 (`) 2574059 2664 1530 692 266 79 21 3 4 2 4 1 0 0 0 0 2 1
Size-12, rank-3 (C(12, 3) = 81)
< 20 20 21 22 23 24 25 26 27 28 29 30 31 32 33
N12,3 (`) 95175 5504 6018 4199 4443 3824 2038 857 431 202 127 39 19 3 1
Size-12, rank-4 (C(12, 4) = 64)
`
< 12 12 13 14 15 16 17 18 19 20 21 22 23 24
N12,4 (`) 11062 3480 2970 2916 2756 1466 2022 1566 910 700 960 228 32 36
Size-12, rank-6 (C(12, 6) = 36)
012345 6
7
8
9
10 11 12 13 14 15
N12,6 (`) 0 0 0 0 0 0 3840 2464 4864 4896 2272 1472 1120 960 384 768
Table 8.7: The number Nn,k (`) of size-n, rank-k automata constructed from a cyclic
transformation and a transformation of deficiency 1, with terminal threshold `.
CHAPTER 8. RESULTS
48
n
Sn,1
Sn,2
Cn,1
r
w
T
r
w
T
r
w
T
10
12
14
16
n
2
2
2
2
2
2 8 3 2
2 10 4 2
2 12 5 2
2 14 6 2
2 n2 n/22 2
b
(b a ) b
(b a ) b
(b a ) b
(b a ) b
(b a )
1 2
32
50
72
98
n
2n
+
2
2
2
2
2
2
2
2 8 3 2
2 10 4 2
2 12 5 2
2 14 6 2
2 n2 n/22 2
b
(b a ) b
(b a ) b
(b a ) b
(b a ) b
(b a )
1 2
32
50
72
98
n
2n
+
2
2
2
2
2
2
2
7 3
9 4
11 5
13 6
n3 n/22
(baba ) bab (baba ) bab (baba ) bab (baba ) bab (baba )
bab
1 2
33
51
73
99
n
2n
+
3
2
Table 8.8: The observed (for 10 n 16) and extrapolated rank r, shortest
terminal word w, and terminal threshold T of automata from the families Sn,1 ,
Sn,2 and Cn,1 .
tograms of the synchronising automata generated, are included. We note that this
enumeration is the first in the study of either the ern or Pin conjectures that
considers any number of size-12 automata, with Trahtman [31] and Kisielewicz and
Szykua [16] considering automata of size up to 9 and 11, respectively. No counter
examples to ern or Pins conjectures were found in this parameter space, and the
most slowly-synchronising size-12 automata generated were those already identified
by Ananichev, Gusev and Volkov [3].
While not treated in this dissertation, the results of our restricted enumeration
leave open a number of questions that deserve attention. To begin with, an attempt
to place the rank-3 automata S9,1 , S9,2 and U12 into slowly-converging families
proves to be an interesting challenge. In particular, the natural family arising from
S9,1 appears to have an anomalous sequence of terminal thresholds, and it is not
immediately clear how to extend S9,2 and U12 into automata of larger size. Also
outside the scope of this dissertation, but obviously desirable, is a combinatorial
proof of the terminal thresholds listed in Table 8.8.
To summarise, our enumeration has elucidated the following facts:
There are no arity-2 counter examples to Pins conjecture of size greater than
2 and less than 9, but there are many edge cases in this range
For n > 3, such edge cases are all constructed from an edge case to the ern
conjecture coupled with a single isolated state
There are no significant (i.e. strongly-connected) non-synchronising automata
in this range with terminal threshold close to Pins bound
The families Cn,1 , Sn,1 and Sn,2 are likely among the slowest-converging
strongly-connected arity-2, rank-2 families of automata that exist
49
0
a
8
a
1
8
a
7
a
6
a
a, b
1
a, b
1
b
b
2
a
b
3
b
a
4
a
5
S10,2
S10,1
a
a
11
10
a
b
b
6
3
a
a
7
T9,2
T9,1
a
1
b
a
8
b
a
b
U12
50
CHAPTER 9
Concluding Remarks
As one of the oldest unresolved conjectures in automata theory, the ern conjecture has stood the test of time as a fascinating combinatorial problem. As part of
this dissertation, we have reviewed the wealth of literature written about erns
conjecture, and understood some of the most fundamental results in the study of
synchronising automata.
In many ways, Pins conjecture appears to be the right generalisation of erns
conjecture. Specifically, results and algorithms related to erns conjecture tend
to naturally extend to Pins conjecture. Chapters 5 and 6 are two striking examples
of this fact.
While computation has been routinely used to approach erns conjecture, it
appears that Pins conjecture had not been exposed to a similar level of computational analysis. The work in this dissertation represents the first concerted effort to
computationally attack Pins conjecture, including the extension of known results
and algorithms to operate on non-synchronising automata, and the development of
a number of tools for the generation and analysis of automata.
Our enumeration has revealed that there are no arity-2, size-n counter examples
to Pins conjecture for 3 n 8. Moreover, an analysis of our results has reinforced
the primacy of the ern conjecture every observed edge case for Pins conjecture
consists of an edge case for the ern conjecture, coupled with a single isolated
state. This result inspired us to examine strongly-connected non-synchronising automata, from which a number of slowly-converging families were identified. The
relative rate at which these examples converge, however, suggests that significant
non-synchronising edge cases for Pins conjecture do not exist.
For the benefit of future researchers, the appendices of this document list the
code developed in the course of this dissertation, along with more results from
our enumeration, including full terminal-threshold histograms and many edge-case
automata.
Beyond the results presented in this dissertation, there are numerous avenues
available for further research into Pins conjecture. To begin with, automata of
arity greater than 2 could be enumerated and examined in the manner described
by this dissertation. In the same vein as the work done by Ananichev, Gusev and
Volkov [3], the experimentally-verified terminal thresholds of families identified in
this dissertation could be proven using combinatorial arguments. Similarly, Pins
conjecture could be proven for families of automata for which the ern conjecture is
known to hold. Lastly, group theoretic results could be applied to Pins conjecture,
as they have been applied to erns conjecture in existing literature.
51
Bibliography
[1] Jorge Almeida, Stuart Margolis, Benjamin Steinberg, and Mikhail Volkov. Representation theory of finite semigroups, semigroup radicals and formal language
theory. Trans. Amer. Math. Soc., 361(3):14291461, 2009.
[2] Marco Almeida, Nelma Moreira, and Rogrio Reis. Enumeration and generation
with a string automata representation. Theoret. Comput. Sci., 387(2):93102,
2007.
[3] D. S. Ananichev, M. V. Volkov, and V. V. Gusev. Primitive digraphs with
large exponents and slowly synchronizing automata. Zap. Nauchn. Sem. S.Peterburg. Otdel. Mat. Inst. Steklov. (POMI), 402(Kombinatorika i Teoriya
Grafov. IV):939, 218, 2012.
[4] W.R. Ashby. An Introduction to Cybernetics. University paperbacks. J. Wiley,
1956.
[5] Arturo Carpi and Flavio DAlessandro. Strongly transitive automata and the
ern conjecture. Acta Inform., 46(8):591607, 2009.
[6] Arturo Carpi and Flavio DAlessandro. The synchronization problem for locally
strongly transitive automata. In Mathematical foundations of computer science
2009, volume 5734 of Lecture Notes in Comput. Sci., pages 211222. Springer,
Berlin, 2009.
[7] Jn ern. A remark on homogeneous experiments with finite automata. Mat.Fyz. asopis Sloven. Akad. Vied, 14:208216, 1964.
[8] Jn ern, Alica Pirick, and Blanka Rosenauerov. On directable automata.
Kybernetika (Prague), 7:289298, 1971.
[9] L. Dubuc. Sur les automates circulaires et la conjecture de ern. RAIRO
Inform. Thor. Appl., 32(1-3):2134, 1998.
[10] David Eppstein. Reset sequences for monotonic automata. SIAM J. Comput.,
19(3):500510, 1990.
[11] P. Frankl. An extremal problem for two families of sets. European J. Combin.,
3(2):125127, 1982.
[12] Seymour Ginsburg. On the length of the smallest uniform experiment which
distinguishes the terminal states of a machine. J. Assoc. Comput. Mach., 5:266
280, 1958.
[13] Michael A. Harrison. A census of finite automata. Canad. J. Math., 17:100113,
1965.
52
BIBLIOGRAPHY
[14] Helmut Jrgensen. Synchronization. Inform. and Comput., 206(9-10):1033
1044, 2008.
[15] Jarkko Kari. A counter example to a conjecture concerning synchronizing words
in finite automata. Bull. Eur. Assoc. Theor. Comput. Sci. EATCS, (73):146,
2001.
[16] Andrzej Kisielewicz and Marek Szykua. Generating small automata and the
ern conjecture. In Implementation and application of automata, volume 7982
of Lecture Notes in Comput. Sci., pages 340348. Springer, Heidelberg, 2013.
[17] Zvi Kohavi. Switching and finite automata theory. McGraw-Hill Book Co., New
York-Dsseldorf-London, 1970. McGraw-Hill Computer Science Series.
[18] Brendan D. McKay and Adolfo Piperno. Practical graph isomorphism, {II}.
Journal of Symbolic Computation, 60(0):94 112, 2014.
[19] J. D. Mitchell. j.d. mitchell - semigroups data. http://www-groups.mcs.
st-andrews.ac.uk/~jamesm/data.php. Accessed: 2014-08-06.
[20] J. D. Mitchell. The on-line encyclopedia of integer sequences, sequence a225772.
https://oeis.org/A225772. Accessed: 2014-08-06.
[21] J. D. Mitchell. Semigroups - GAP package, Version 2.0, April 2014.
[22] Edward F. Moore. Gedanken-experiments on sequential machines. In Automata
studies, Annals of mathematics studies, no. 34, pages 129153. Princeton University Press, Princeton, N. J., 1956.
[23] J.-E. Pin. Sur un cas particulier de la conjecture de Cerny. In Automata,
languages and programming (Fifth Internat. Colloq., Udine, 1978), volume 62
of Lecture Notes in Comput. Sci., pages 345352. Springer, Berlin-New York,
1978.
[24] J.-E. Pin. Le problme de la synchronisation et la conjecture de ern. In
Noncommutative structures in algebra and geometric combinatorics (Naples,
1978), volume 109 of Quad. Ricerca Sci., pages 3748. CNR, Rome, 1981.
[25] J.-E. Pin. On two combinatorial problems arising from automata theory. In
Combinatorial mathematics (Marseille-Luminy, 1981), volume 75 of NorthHolland Math. Stud., pages 535548. North-Holland, Amsterdam, 1983.
[26] I. K. Rystsov. On the rank of a finite automaton. Kibernet. Sistem. Anal.,
(3):310, 187, 1992.
[27] I. K. Rystsov. Quasioptimal bound for the length of reset words for regular
automata. Acta Cybernet., 12(2):145152, 1995.
BIBLIOGRAPHY
[28] Peter H. Starke.
Abstract automata.
North-Holland Publishing Co.,
Amsterdam-London; American Elsevier Publishing Co., Inc., New York, 1972.
Translated from the German by I. Shepherd.
[29] Benjamin Steinberg. The averaging trick and the ern conjecture. Internat.
J. Found. Comput. Sci., 22(7):16971706, 2011.
[30] Benjamin Steinberg. The ern conjecture for one-cluster automata with prime
length cycle. Theoret. Comput. Sci., 412(39):54875491, 2011.
[31] A. N. Trahtman. An efficient algorithm finds noticeable trends and examples
concerning the erny conjecture. In Mathematical foundations of computer
science 2006, volume 4162 of Lecture Notes in Comput. Sci., pages 789800.
Springer, Berlin, 2006.
[32] A. N. Trahtman. Notable trends concerning the synchronization of graphs
and automata. In CTW2006Cologne-Twente Workshop on Graphs and Combinatorial Optimization, volume 25 of Electron. Notes Discrete Math., pages
173175. Elsevier Sci. B. V., Amsterdam, 2006.
[33] A. N. Trahtman. The ern conjecture for aperiodic automata. Discrete Math.
Theor. Comput. Sci., 9(2):310, 2007.
[34] A. N. Trahtman. Modifying the upper bound on the length of minimal synchronizing word. In Fundamentals of computation theory, volume 6914 of Lecture
Notes in Comput. Sci., pages 173180. Springer, Heidelberg, 2011.
[35] A. N. Trahtman. The erny conjecture. CoRR, abs/1202.4626, 2012.
[36] Mikhail V. Volkov. Synchronizing automata and the ern conjecture. In
Language and automata theory and applications, volume 5196 of Lecture Notes
in Comput. Sci., pages 1127. Springer, Berlin, 2008.
53
54
Appendices
CHAPTER A
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t121113312
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1321113312
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1313213211
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1321113311
abba
4
{1}
1
abba
4
{1}
1
b
1
{1, 2}
2
a
1
{1, 2}
2
55
56
A.1.2
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t144123144234
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t14424313312
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t142143144324
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t142413144234
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t142413144324
A.1.3
baaabaaab
9
{4}
1
abbababba
9
{4}
1
bab
3
{2, 4}
2
bab
3
{3, 4}
2
bab
3
{2, 4}
2
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t15523451551234
abbbbabbbbabbbba
16
{5}
1
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1553254144213
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t15545231531254
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1555234142431
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t15552341524513
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1552354142413
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1553254142413
A.1.4
abbabba
7
{4, 5}
2
abbabba
7
{3, 5}
2
abbabba
7
{4, 5}
2
abbabba
7
{4, 5}
2
aba
3
{3, 4, 5}
3
aba
3
{2, 4, 5}
3
Automaton
t1656123416623465
57
58
baabababaabbabaabaababaab
25
{6}
1
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1661234516623456
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1621634516653624
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1626431516623546
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1625613416643265
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1626134516632456
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
t1626413516623546
baaaaabaaaaabaaaaabaaaaab
25
{6}
1
babaaabaaab
11
{3, 6}
2
baaabaaabab
11
{4, 6}
2
babaaaabab
10
{2, 6}
2
babaaaabab
10
{5, 6}
2
babaaaabab
10
{4, 6}
Rank
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1623164516642536
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1623614516642536
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1624163516632546
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1624613516632546
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1636214516632546
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1636214516652346
Automaton
t1665234616312645
baabab
6
{3, 5, 6}
3
baabab
6
{3, 5, 6}
3
baabab
6
{4, 5, 6}
3
baabab
6
{4, 5, 6}
3
baabab
6
{4, 5, 6}
3
baabab
6
{4, 5, 6}
3
59
60
A.1.5
abaaba
6
{4, 5, 6}
3
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177123456177234567
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177452376176231745
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177752346172634715
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t174213765177327456
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177327456144213
baaaaaabaaaaaabaaaaaabaaaaaabaaaaaab
36
{7}
1
abbabbababababbabba
19
{6, 7}
2
abbabbaaabababbabba
19
{6, 7}
2
baabaabababbaabaab
18
{6, 7}
2
abbabbabababbabba
17
{6, 7}
2
Automaton
t17745237616623145
Shortest terminal word abbbabbbabbbabbba
Terminal threshold
Terminal subset
Rank
17
{6, 7}
2
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t17732547616624315
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177326745173254176
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t17747235616326541
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t173127465177472356
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177325476176271345
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t175321476177243765
abbababbabbababba
17
{5, 7}
2
abaabbabaabbababa
17
{4, 7}
2
abbababbabbababba
17
{6, 7}
2
baabaababaabbbaab
17
{6, 7}
2
abbababbabbababba
17
{4, 7}
2
baabaababaab
12
{4, 6, 7}
3
61
62
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t175712346177243765
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177273465173452176
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177273465173752146
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t176721345177543276
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177452376176321745
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t177752346172643715
baabaababaab
12
{2, 3, 7}
3
abbababbabba
12
{5, 6, 7}
3
abbababbabba
12
{3, 6, 7}
3
baabaababaab
12
{2, 4, 7}
3
abbababbabba
12
{3, 6, 7}
3
abbababbabba
12
{3, 6, 7}
3
Automaton
t177762435172573146
Shortest terminal word abbababbabba
Terminal threshold
12
Terminal subset
Rank
A.1.6
{2, 3, 7}
3
Automaton
t18812345671882345678
Shortest terminal word baaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaa
aab
Terminal threshold
49
Terminal subset
{8}
Rank
1
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1878583762174436715
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18784783621555314
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18264315871882354876
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18825438761826134587
abbbaabbabbbaabbabbbabbba
25
{3, 7}
2
abbbabbbabbabbabbbabbba
23
{6, 7}
2
baaabaaabababaaabaaabab
23
{7, 8}
2
ababbbaabaabbababbbaaba
23
{3, 8}
2
Automaton
t188743785616513264
Shortest terminal word abbbabbbabbabbabbbabbba
Terminal threshold
23
63
64
Terminal subset
Rank
{5, 7}
2
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18866543871871746825
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1721374561884523687
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1882436587172735416
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18371248561883265487
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t18216534871884328756
A.2
abbbabbabbbabbbabbabbba
23
{7, 8}
2
babaaabaaabaaab
15
{2, 7, 8}
3
abbbabbbabbbaba
15
{5, 7, 8}
3
babaaabaaabaaab
15
{4, 5, 8}
3
babaaabaaabaaab
15
{2, 5, 8}
3
This section lists the slowly-converging automata found during the enumeration
of all n-state automata arising from the union of a cyclic transformation and a
deficiency-1 transformation, for 9 n 12 (see Chapter 8 for more details on this
endeavour).
`
36 37 38 39 40 43 50 51 52 57 58 64
N (`) 22 5 3 1 5 0 1 0 1 0 1 0 2 1 0 1
Classes C9,4
C9,3
G9
W9 D90
C9
F9
The number N (`) of synchronising, size-9 automata constructed from a cyclic
transformation and a transformation of deficiency 1 with reset threshold `, for
36 ` 64.
Automaton
t1991234567819923456789
Shortest terminal word baaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaab
aaaaaaaabaaaaaaaab
Terminal threshold
64
Terminal subset
{9}
Rank
1
Automaton
t1929134567819992345678
Shortest terminal word baaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaa
aaabaaaaaaab
Terminal threshold
58
Terminal subset
{9}
Rank
1
Automaton
t1999234567819912345678
Shortest terminal word abaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaa
abaaaaaaaaba
Terminal threshold
57
Terminal subset
{9}
Rank
1
Automaton
t1992345678919291345678
65
66
t1949231567819923456789
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1999732465819239145867
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1939527496819241638597
Automaton
t1949239567819482395671
baaaaabaaaaabaaaaabaaaaabaaaaabaaaaabaaaaab
43
{9}
1
abbaaabbbaaabbbaaabbbaaabbbaaabbbaaabbba
40
{9}
1
abbbbbaaaaaabbbbbaaaaaabbbbbaaaaaabbbbba
40
{9}
1
aaaabaaabaaaabaaabaaaabaaabaaaabaaabaaaa
40
{9}
1
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1989234756119699235478
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1993254896719719324658
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1991234567819923456879
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1931527496819249638597
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1991234567819932456789
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
t1993124567819924356789
babbbabbbbbbabbabbbbbbbababbbbbbbbaabbbb
40
{9}
1
abbbbabbbbabbbbabbbbbabbbbbabbbbbabbbbba
40
{9}
1
baabaabaaababaaaabaabaaaaaaaabaaaaaaaab
39
{9}
1
bbbbbaaaaaabbbbbaaaaaabbbbbaaaaaabbbbb
38
{9}
1
baabaabaabaababaabaaabbaaabaaaababaaab
38
{9}
1
baaaabaabaaaabaaabaaaababaabaaaabaaaab
38
{9}
67
68
Rank
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1993245678919291345678
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1929634157819923548769
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1992347856919912364578
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1993246578919319524678
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1943297659819492315678
Automaton
Shortest terminal word
Terminal threshold
Terminal subset
Rank
t1993246587919317524968
Automaton
t1995672349819238914567
abbbababbbbabbbababbbbabbbabbabbabbba
37
{9}
1
baaabbabaaaababbaaababaaaabbaabaaaaab
37
{9}
1
abbababbabbbabbbaabbbbbabbbbaababbbba
37
{9}
1
abbbabaabbbabbbabbabbbabbbbababbbbbba
37
{9}
1
aabababaabbbbabbaabbabbbbbbababbbbbaa
37
{9}
1
abaabaabbbbaabaaba
18
{5, 7, 9}
3
A.2.2
abaabaabbbbaabaaba
18
{3, 7, 9}
3
`
43 44 45 46 47 48 49 57 60 65 73 74 81
N (`) 5 5 3 4 1 0 2 0 1 0 1 0
1
0 1 1 0 1
0
Classes
C10,2
W10 D10
C10
The number N (`) of synchronising, size-10 automata constructed from a cyclic
transformation and a transformation of deficiency 1 with reset threshold `, for
43 ` 81.
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
t2101010 2 3 4 5 6 7 8 921010 1 2 3 4 5 6 7 8 9
Automaton
baaaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaaabaaaa
aaaaabaaaaaaaaabaaaaaaaaabaaaaaaaaab
81
{10}
1
baaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaa
abaaaaaaaabaaaaaaaabaaaaaaaab
74
{10}
1
abaaaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaaabaaa
aaaaaabaaaaaaaaabaaaaaaaaaba
73
{10}
1
69
70
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
baaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaa
aabaaaaaaabaaaaaaab
65
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
{10}
1
baaaaaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaab
aaaaaabaaaaaab
60
{10}
1
baaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaa
aaabaaaaaab
57
{10}
1
aaaaabaaaabaaaaaabaaabaaaaaaabaabaaaaaaaababaa
aaa
49
{10}
1
aaaaabaaabaaaaaaababaaaaaaaaabaaaabaaaaaabaaba
aaa
49
{10}
1
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
abbbbabbabbbbbbbbababbbbabbaabbbabbbbabbbabbbba
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
47
{10}
1
baaaabbaaaabbaaaabbaaaabbaaaabbaaaabbaaababaab
46
{10}
1
abbbbabbbbabbbbabbbbbabbbbbabbbbbabbbbbabbbbba
46
{10}
1
baabbbbaabbbbaabbbbaabbbbaabbbbaabbbbaabbbbaab
46
{10}
1
abbbbabababbbbbbabbabbbbbabbbbbbbbababbabbbbba
46
{10}
1
71
72
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
abbbbabbbbabbbbabbbbabbbbbabbbbbabbbbbabbbbba
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
45
{10}
1
baabbbbaabbbbaabbbbaabbbbaabbbbaabbbbaabbbbab
45
{10}
1
baaaaaabaaababaabaabaaababaaaaabaabaaaaaaaaab
45
{10}
1
baaaababaaaababaaaababaaaaabaabbaababaaaaaab
44
{10}
1
baaaabaabaabaaabaaaaabaaaaabaaaababaabaaaaab
44
{10}
1
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
baabaabaabaabaaababaabaaabaaaabaaaabababaaab
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
t21010 2 4 3 5 6 9 8 71021010 3 1 2 4 5 6 7 8 9
44
{10}
1
baaaaabaabaaabaabaaabaabaaababaabaaaaabaaaab
44
{10}
1
baaaaaababaabbaabaaaaababaaaababaaaababaaaab
44
{10}
1
baaaaaabaabaaaabaabaaaabaabaaaaaaabaaaaaaab
43
{10}
1
babaaaaaabbaaaaaabbaaaaaabbaaaaaabbaaaaaabb
43
{10}
1
73
74
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
abbababbabbbabbbabbbaababbbbabbbaababbbabba
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
43
{10}
1
bababbaaaaaabababaaaaaaabaaabaaaabaaabaaaab
43
{10}
1
baabaabaabbaaabaababaaaaabaababbbabaaaaaaab
43
{10}
1
babaaaaaaababaaaaaaababaaaaaaabab
33
{9, 10}
2
bbaaaaaaaabbaaaaaaaabbaaaaaaaabb
32
{9, 10}
2
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
A.2.3
aabbbbbbbabbabbbbbbabbabbbbbbbaa
32
{8, 10}
2
`
60 64 68 73 76 82 83 84 91 92 100
N (`) 5 0
2
0 1 0
2
0 1 0
2 0 1 0 2 1 0 1
0
Classes
C11,4
C11,3
C11,2
G11
W11 D11
C11
F11
The number N (`) of synchronising, size-11 automata constructed from a cyclic
transformation and a transformation of deficiency 1 with reset threshold `, for
60 ` 100.
Automaton
Shortest
terminal word
baaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaab
aaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaaba
aaaaaaaaab
100
Terminal
threshold
Terminal subset {11}
Rank
1
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
abbaaaaaaaaabbaaaaaaaaabbaaaaaaaaabbaaaaaaaaab
baaaaaaaaabbaaaaaaaaabbaaaaaaaaabbaaaaaaaaabba
92
{11}
1
abbbbbbbbbabbbbbbbbbabbbbbbbbbabbbbbbbbbabbbbbbbbbabbb
bbbbbbabbbbbbbbbabbbbbbbbbabbbbbbbbba
91
{11}
75
76
Rank
Automaton
Shortest
terminal word
abaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaa
baaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaab
a
91
Terminal
threshold
Terminal subset {11}
Rank
1
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
aababaaaaaaaababaaaaaaaababaaaaaaaababaaaaaaaa
babaaaaaaaababaaaaaaaababaaaaaaaababaa
84
{11}
1
baaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaab
aaaaaaaabaaaaaaaabaaaaaaaabaaaaaaaab
82
{11}
1
aabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaa
abaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaa
82
{11}
1
baaaaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaa
aaaaabaaaaaaabaaaaaaabaaaaaaab
76
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
baaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaa
aabaaaaaaabaaaaaaabaaaaaaab
73
{11}
1
aaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaa
aabaaaaaaaaaabaaaaaaaaaabaaa
73
{11}
1
aaaabaaabaaaaaabaaabaaaaaabaaabaaaaaabaaabaaaa
aabaaabaaaaaabaaabaaaa
68
{11}
1
baaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaa
aaabaaaaaabaaaaaab
64
{11}
1
baaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaa
aaabaaaaaabaaaaaab
64
77
78
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
abbbbbbaaaaaaabbbbbbaaaaaaabbbbbbaaaaaaabbbbbbaaa
aaaabbbbbba
60
{11}
1
baaaaaaaaaabaaaaabaaaaabaaaaabaaaaabaaaaabaaaa
abaaaaabaaaaab
60
{11}
1
aaaaabbaaaaaaaaaababaaaaaaaaabaabaaaaaaaabaaab
aaaaaaabaaaaba
60
{11}
1
baaabbbbaaabbbbaaabbbbaaabbbbaaabbbbaaabbbbaaabbbb
aaabbbbaab
60
{11}
1
abbbbbabbbbbabbbbbabbbbbabbbbbbabbbbbbabbbbbbabbbbbba
bbbbbba
60
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
bbbbbbaaaaaaabbbbbbaaaaaaabbbbbbaaaaaaabbbbbbaaaa
aaabbbbbb
58
{11}
1
baaaaabaaaaabaaaaabaaaaabaaaaabaaaaabaaaaabaaa
aabaaaaab
55
{11}
1
ababbbaabbbbaabbbbaabbbbaabbbbaabbbbaabbbbaabbbbaab
bbba
55
{11}
1
aaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaa
aaaabaaaaa
55
{11}
1
abbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbbbabbbb
ba
55
79
80
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
baaaabaabbaabbaaaabaaaabaaaabaaaabaaaaaabaababa
aabaaaab
55
{11}
1
baabaaaaabababaaaaaaaababaabaaaaaabaaabaaaaabaa
abaaaaab
55
{11}
1
abaabbbbababbbbabbbbbbabbabbbbbabbbbabbbbbabbbabbbbb
a
53
{11}
1
baaabbaabaaabbaabaaaaabaabaaaaaaababaaaabaabaab
aaaaab
53
{11}
1
babbaabaaaaabababbaaaaabaabaaaaaababaaabaaaabaa
aaaaab
53
A.2.4
`
61 62 63 66 67 71 76 81 111 112 121
N (`)
3 3 1 0 2 3 0 5 0 1 0
1
0 1 1 0 1
0
Classes C12,6
C12,4
W12 D12
C12
The number N (`) of synchronising, size-12 automata constructed from a cyclic
transformation and a transformation of deficiency 1 with reset threshold `, for
61 ` 121.
Automaton
t21212 1 2 3 4 5 6 7 8 9101121212 2 3 4 5 6 7 8 9101112
Shortest
baaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaab
terminal word aaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaaba
aaaaaaaaaabaaaaaaaaaaab
Terminal
121
threshold
Terminal
{12}
subset
Rank
1
Automaton
t212 212 1 3 4 5 6 7 8 910112121212 2 3 4 5 6 7 8 91011
Shortest
baaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaa
terminal word aaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaa
aabaaaaaaaaaab
Terminal
112
threshold
Terminal
{12}
subset
Rank
1
Automaton
t21212 1 2 3 4 5 6 7 8 910112121212 2 3 4 5 6 7 8 91011
Shortest
baaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaa
terminal word aaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaaabaaaaaaaaa
abaaaaaaaaaab
Terminal
111
threshold
Terminal
{12}
subset
81
82
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
baaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaabaaaaaaab
aaaaaaabaaaaaaabaaaaaaabaaaaaaab
81
{12}
1
aaaaabaaaabaaaaaabaaaabaaaaaabaaaabaaaaaabaaaabaa
aaaabaaaabaaaaaabaaaabaaaaa
76
{12}
1
aaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaaaaaabaaaaaaa
aaaabaaaaaaaaaaabaaaaa
71
{12}
1
aabbbbbaabbbbbaabbbbbaabbbbbaabbbbbababbbbaabbbbbaabbbbb
aabbbbbaabbbbba
71
{12}
1
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
aaaaaabaaaaabaaaaaaabaaaabaaaaaaaabaaabaaaaaaaaab
aabaaaaaaaaaababaaaaaa
71
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
{12}
1
aaaaabbaaaaaaaaaabaabaaaaaaaabaaaabaaaaabbaaaaaaa
aaaababaaaaaaaaabaaaba
71
{12}
1
baaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaabaaaaaa
baaaaaabaaaaaabaaaaaab
71
{12}
1
abbbbbabbbbbabbbbbabbbbbabbbbbbabbbbbbabbbbbbabbbbbbabbbb
bbabbbbbba
67
{12}
1
baabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbb
baabbbbbaab
67
83
84
Terminal
subset
Rank
{12}
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
aaaaaabbbbbbbbaaaaaabbbbbbbbaaaaaaaaaaabbbbbbbbaaaaa
abbbbbbbbaaaaaa
67
{12}
1
abbbbbabbbbbabbbbbabbbbbabbbbbabbbbbbabbbbbbabbbbbbabbbbb
babbbbbba
66
{12}
1
baabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbbbaabbbb
baabbbbbab
66
{12}
1
babaaaaaaaaababaaaaaaaaababaaaaaaaaababaaaaaaaaaba
b
51
{11, 12}
2
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
aabbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbaabbbbbbbbbbaa
50
{11, 12}
2
aabbbbbbbbbabbabbbbbbbbabbabbbbbbbbabbabbbbbbbbbaa
50
{10, 12}
2
ababbbaaaabaaaabbbaaaabaaaabbbaaaabaaaabbbaba
45
{11, 12}
2
babaaaabababaaaaaaababbabaaaaabbabaabbabaaab
44
{6, 12}
2
Automaton
t212 212 1 9 6 4 3 5 7 8101121212 3 2 4 5 8 7 61110 912
Shortest
baaababbaababbaaaaababbabaaaaaaabababaaaabab
terminal word
Terminal
44
threshold
85
86
Terminal
subset
Rank
{9, 12}
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
aabbbbaaaaaaaabbbbaaaaaaaabbbbaaaaaaaabbbbaa
44
{11, 12}
2
aabbbababbababbbbababbababbbbababbababbbbbaa
44
{10, 12}
2
babaaaababaaaaaaababaaababaaaabab
33
{9, 10, 12}
3
baaaababaabbaaaababbabaaaaaabaab
32
{4, 5, 12}
3
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
Automaton
Shortest
terminal word
Terminal
threshold
Terminal
subset
Rank
abaaabbabbbbababaaabbabbbbabbaba
32
{10, 11, 12}
3
baaaabbaababaaaaaababbabaaaaabab
32
{5, 10, 12}
3
87
88
CHAPTER B
Terminal-Threshold Histograms
This appendix lists the histograms of terminal thresholds created during our computation enumeration of all arity-2, size-n automata, for 3 n 8. The tables in
this section list the number of size-n automata of rank k with terminal threshold T .
B.1
1 2 3
0 0 05
1 14 13
2 29
3 4
4 2
B.1.2
3 4
0
0 0 0 23
1 51 138 71
2 478 100
3 375 10
4 104 2
5 64
6 21
7 11
8
5
9
2
B.1.3
k
T
0
0
0
0 0 89
1
174 952 1019 415
2 7003 3033 499
3 12229 1154 38
4 7350 218
8
5 3535 102
6 1855 24
7
986 15
8
551
5
9
294
2
10
151
11
46
12
43
13
23
14
11
15
4
16
1
B.1.4
1
0
570
103769
363010
350652
217845
118630
71184
40956
23098
12677
6494
4096
2714
1425
718
378
208
0
0
0
0 484
6585 12129 8708 2795
71230 22481 2805
54306 5714 164
19565 917 22
7469 386
3016 107
1519
48
754
20
366
8
157
50
43
23
11
4
1
89
90
18
19
20
21
22
23
24
25
B.1.5
112
61
45
22
11
2
0
2
0
0
0
0
0
0
0 2904
1
1837 41565 128457 148320 80332 21540
2 1625796 1533823 735711 185959 18750
3 10816132 2214125 349514 31925 882
4 15553259 1188288 96471 4046
86
5 12573692 533341 31815 1350
6 7908014 232278 12782
341
7 4875236 123488 5760
137
8 3004633 64881 2896
55
9 1749654 33912 1408
22
10
985608 16869
632
11
551444
8171
188
12
327420
5023
180
13
210221
3245
92
14
123451
1633
44
15
69507
828
16
16
41203
410
4
17
24608
216
18
14131
113
19
8291
63
20
5738
45
21
3536
22
22
2047
11
23
1006
2
24
479
0
25
393
2
26
203
27
123
28
75
29
30
31
32
33
34
35
36
B.1.6
k
T
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
91
39
13
3
3
0
0
0
1
0
5833
27368343
333762012
695438027
716459494
531635252
351545569
225016129
137371011
79514375
45572201
26404390
16197318
9716381
5689365
3442881
2123727
1271965
782029
521917
342692
209699
120956
68917
47757
30582
19624
12377
0
259162
33046085
86484027
65012120
35558128
17313391
9329153
5208031
2827812
1486177
789205
457898
289937
161976
90061
50949
29704
16560
9731
6636
4000
2264
1057
482
428
205
123
75
0
1266793
21387325
18312915
7027155
2588790
1051071
518132
264120
135214
67422
31603
20380
12739
6502
3203
1601
843
449
246
180
88
44
8
0
8
0
0
0
0 22002
2223237 1875604 821669 189753
8208652 1726812 144346
2613233 219006 5558
536201 23110
322
144647
6450
50599
1576
20182
517
9416
215
4438
86
1733
522
481
253
121
44
11
92
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
B.2
7103
3833
2070
1524
901
516
364
222
92
39
12
5
1
3
1
1
0
0
0
0
1
39
13
3
3
0
0
0
1
1 23
0 004
1 32
2 14
3 3
4 2
2 3 4
0
0 0 0 15
1
4 21 8
2 115 17
3 146 3
4 49
5 44
6 18
7 10
8
5
9
2
B.2.3
3 4 5
0
0 0
1
4 26
2 536 122
3 1880 77
4 1991 15
5 1162 18
6 782 0
7 494 4
8 310
9 196
10 123
11
38
12
37
13
19
14
11
15
4
16
1
B.2.4
0 0 55
50 49
24
2
93
94
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
B.2.5
0
5
4204
30315
49765
46174
29487
21650
13370
8128
4569
3103
1993
1433
756
442
275
165
94
47
40
18
11
2
0
2
0
84
1190
1301
621
296
121
106
45
26
3
2
0 0 0 330
219 315 299
387 93
147 8
18
18
7
0
0
0
0
0
0
0 2100
1
7 100 557 1253 1853 2022
2
30956 6851 3538 1463 447
3 457530 18413 2212 366 32
4 1149576 13132 815 33
5 1466376 8499 213 16
6 1238981 3232 179
7
7 881418 2369 89
8 618764 999 67
9 390284 814 10
10 229088 322 14
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
B.2.6
136729
82188
51980
34012
21605
14623
9086
5533
3333
2437
1660
1011
556
331
243
157
96
62
33
10
3
3
0
0
0
1
293
80
95
15
34
9
7
1
2
0
8
0
0
270155
7620491
28686239
47993654
51103869
42504761
30501056
20731218
12731689
0
113
49713
259616
285052
223497
113114
68984
32199
20845
10878
0
1220
27119
32499
17456
7037
3088
1706
977
475
336
0
5487
17679
7641
2210
536
251
114
54
27
0
0
0 16423
9918 14523 15956
8330 2693
1449 185
119
50
17
95
96
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
7611127
4383243
2587263
1542258
939234
589899
386141
248803
169184
112995
78121
50282
32393
22100
15098
10463
7090
4608
2836
1814
1269
1000
638
373
279
136
68
32
9
4
1
3
1
1
0
0
0
0
1
7151
3585
2434
1275
1136
432
340
117
102
31
23
7
5
0
1
147
121
41
26
4
CHAPTER C
Source Code
Listed in this appendix is the source code of the programs written and used for this
dissertation.
C.1
C.1.1
Generating automata
Here we present the source code for the C++ program gena, which implements
a method of automata generation originally described by Kisielewicz and Szykua
[16]. For more information on this process, see Chapter 7.
1
2
// compile with
// g++ -std=c++11 gena.cpp -o gena
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iomanip>
#include <vector>
#include <algorithm>
#include <fstream>
#include <sstream>
#include <cstdio>
#include <cstring>
using namespace std;
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
97
98
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
return i >= 0;
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
public:
aut_iter(const automaton& atm, int fixes = 0) :
atm(atm), fixes(fixes), indeg(atm[0].size()),
pos(atm[0].size()) {
// calculate indegrees for non-fixed states
int maxindeg = 0;
for(const trans& t : atm) {
for(int i : t) {
if((fixes & (1<<i)) == 0) {
maxindeg = max(maxindeg, ++indeg[i]);
}
}
}
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
99
100
return false;
120
121
122
};
123
124
125
126
127
128
129
130
131
132
133
134
135
prev_a.resize(n);
fill(prev_a.begin(), prev_a.end(), -1);
136
137
138
aut_iter aut(a);
139
140
do {
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
}
while(aut.next());
156
157
158
159
160
161
162
163
164
prev_b.resize(1<<n);
165
166
167
168
169
do {
170
171
172
173
174
175
176
177
178
179
}
while(aut.next());
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
return atoi(tmp);
205
206
207
208
209
101
102
atm.clear();
210
211
212
213
214
215
line_ss.ignore();
while(!line_ss.eof()) {
const int m = read_chars(line_ss, 1);
const int n = read_chars(line_ss, m);
216
217
218
219
220
atm.emplace_back();
for(int i = 0; i < n; ++i) {
atm.back().push_back(read_chars(line_ss, m) - 1);
}
221
222
223
224
225
226
227
228
229
230
231
return !atm.empty();
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
out << t;
for(const trans& t : atm) {
out << m;
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
if(i == n) {
automaton c;
union_automata(a, b, pi, c);
write_automaton(c, out);
}
else {
const int m = prev_a[i] >= 0 ? pi[prev_a[i]]+1 : 0;
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
// Returns the offset in the file of the start of the given line
int line_offset(istream& in, int line) {
in.clear();
in.seekg(0);
292
293
294
295
296
297
298
299
string dump;
int i = 1;
while(in.peek() != EOF && i != line) {
getline(in, dump);
i++;
}
103
104
300
301
302
303
304
305
306
307
308
309
310
311
312
313
bf.clear();
bf.seekg(b_start_pos);
314
315
316
317
318
319
320
vector<vector<bool>> prev_b;
gen_prev_b(b, prev_b);
321
322
323
af.clear();
af.seekg(a_start_pos);
324
325
326
327
328
329
330
vector<int> prev_a;
gen_prev_a(a, prev_a);
331
332
333
334
335
336
337
338
339
340
341
342
343
344
105
345
346
347
if(!af.good()) {
cout << "error: reading " << argv[2] << "" << endl;
return 1;
}
348
349
350
351
352
if(!bf.good()) {
cout << "error: reading " << argv[3] << "" << endl;
return 1;
}
353
354
355
356
357
358
359
360
if(argc > 4) {
a_start_line = atoi(argv[4]);
a_end_line = a_start_line + 1;
}
361
362
363
364
365
if(argc > 5) {
a_end_line = atoi(argv[5]);
}
366
367
368
369
if(argc > 6) {
b_start_line = atoi(argv[6]);
b_end_line = b_start_line + 1;
}
370
371
372
373
374
if(argc > 7) {
b_end_line = atoi(argv[7]);
}
375
376
377
378
379
380
381
return 0;
382
383
}
C.1.2
106
the GAP code of this secondary routine, which accepts two state transformations
(each representing an arity-1 DFA), and outputs every possible arity-2 DFA arising
from their combination. The argument n is the number of states in each arity-1
DFA, f is the name of a file containing the list of input transformations, and first
and second are the indices of the desired input transformations (representing DFAs
A and B , respectively) in the file f.
1
2
3
4
5
6
7
8
sym := SymmetricGroup(n);
cand := strans^sym;
9
10
11
12
Canonicalising automata
Here we present the source code for the C program canon_dfa, which was used
to canonicalise automata output by gena. Compilation of the program requires
107
the nauty package[18]. For more information on the canonicalisation process, see
Chapter 7.
1
2
3
/* compile with
* gcc canon_dfa.c nautinv.o nausparse.c nauty.a -o canon_dfa
*/
4
5
6
#include <stdio.h>
#include <string.h>
7
8
9
#include "nausparse.h"
#include "nautinv.h"
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
const char* c;
for(c = str; *c != \0; ++c) {
if(*c != && *c != \t &&
*c != \n && *c != \r) {
return FALSE;
}
}
32
33
34
35
36
37
38
39
return TRUE;
40
41
42
108
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
cur_pos += n * m;
76
77
78
79
80
81
82
83
84
85
86
87
91
92
93
94
95
96
97
if(g->d != NULL) {
free(g->d);
}
98
99
100
101
if(g->e != NULL) {
free(g->e);
}
102
103
104
105
if(*lab != NULL) {
free(*lab);
}
106
107
108
109
if(*ptn != NULL) {
free(*ptn);
}
110
111
112
113
return FALSE;
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
109
110
133
134
135
136
}
for(i = 0; i < orig_nde; ++i) {
g->d[orig_nv + i] = 1;
}
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
/* read in edges */
160
161
162
163
164
165
cur_pos = 1;
int ei;
for(ei = 0; ei < arity; ++ei) {
const int m = line[cur_pos] - 0;
cur_pos++;
166
167
168
169
170
171
172
173
174
175
176
177
111
int vi = 0;
for(vi = 0; vi < orig_nv; ++vi) {
/* if enough images are not specified, extend
with id transformation */
int dest;
if(vi < n) {
/* each image stored in a block of m chars */
strncpy(tmp_str, line + cur_pos, m);
tmp_str[m] = \0;
dest = atoi(tmp_str) - 1;
cur_pos += m;
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
}
else {
dest = vi;
}
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
return TRUE;
214
215
216
217
218
219
220
221
222
112
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
if(out_order == NULL) {
free(out_order);
}
247
248
249
250
return FALSE;
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
/* output to string */
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
/* write line */
out[0] = t;
int str_pos = 1;
for(i = 0; i < arity; ++i) {
str_pos += sprintf(out + str_pos, "%d", m);
str_pos +=
sprintf(out + str_pos, "%*d", m, orig_nv);
308
309
310
311
312
113
114
}
out[str_pos] = \0;
313
314
315
free(edge_trans);
free(out_order);
return TRUE;
316
317
318
319
320
321
322
323
324
325
326
327
328
if(argc != 2) {
printf(usage);
return 1;
}
329
330
331
332
333
334
335
336
337
338
339
340
341
DEFAULTOPTIONS_SPARSEDIGRAPH(options);
statsblk stats;
options.defaultptn = FALSE;
options.getcanon = TRUE;
options.invarproc = adjacencies_sg;
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
115
358
359
360
361
362
363
364
365
366
free(g.v);
free(g.d);
free(g.e);
free(cg.v);
free(cg.d);
free(cg.e);
free(lab);
free(ptn);
free(orbits);
367
368
369
370
371
372
373
374
375
376
377
return 0;
378
379
}
C.3
Analysing automata
Here we present the GAP source code for a suite of utilities, designed to assist with the analysis of automata. These tools were used extensively during our
enumeration of small automata. The code listed here builds on top of, and hence
requires, J. D. Mitchells Semigroups GAP package.
1
LoadPackage("semigroups");
2
3
4
5
6
7
8
9
10
11
12
13
14
116
15
16
17
18
19
20
visited := [];
visited[SetToIndex([1..n])] := true;
21
22
words := [];
23
24
25
26
27
28
29
30
31
32
for k in [1..Length(gens)] do
c := OnSets(q, gens[k]);
33
34
35
36
37
38
39
od;
40
41
od;
42
43
44
return words;
end;
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
gens := [];
for v in [1..n] do
for pair in adj[v][2] do
# first time weve seen this transition
if not IsBound(gens[pair[2]]) then
gens[pair[2]] := [1..n];
fi;
67
gens[pair[2]][v] := pair[1];
68
od;
69
70
od;
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
gens := GeneratorsOfSemigroup(s);
adj := List([1..n], i -> [i, []]);
89
90
91
92
for t in [1..Size(gens)] do
for i in [1..n] do
Append(adj[i][2], [[i^gens[t], t]]);
93
if undir then
Append(adj[i^gens[t]][2], [[i, t]]);
fi;
94
95
96
od;
97
98
od;
99
100
101
return adj;
end;
102
103
104
117
118
105
106
StateSetToPairIndex := function(st)
local i, j;
107
108
109
110
111
112
113
i := st[1];
if Size(st) > 1 then
j := st[2];
else
j := i;
fi;
114
115
116
return j * (j - 1) / 2 + i;
end;
117
118
119
120
121
122
123
124
125
126
127
128
j := 1;
while i > j do
i := i - j;
j := j + 1;
od;
129
130
131
132
133
134
135
136
137
138
139
140
141
142
gens := GeneratorsOfSemigroup(s);
143
144
145
pn := n*(n+1)/2;
adj := List([1..pn], i -> [PairIndexToStateSet(i), []]);
146
147
148
149
150
151
od;
152
153
od;
154
155
156
return adj;
end;
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
st := [];
j := 1;
172
173
174
175
176
while i <> 0 do
if i mod 2 <> 0 then
st[Size(st) + 1] := j;
fi;
177
i := Int(i / 2);
j := j + 1;
178
179
180
od;
181
182
183
return st;
end;
184
185
186
187
188
189
190
191
192
193
194
119
120
195
196
gens := GeneratorsOfSemigroup(s);
197
198
199
pn := 2^n-1;
adj := List([1..pn], i -> [PowerIndexToStateSet(i), []]);
200
201
202
203
204
205
206
od;
207
208
od;
209
210
211
return adj;
end;
212
213
214
215
216
217
218
219
PairSemigroup := function(s, n)
return AdjacencyListToSemigroup(
SemigroupToPairAdjacencyList(s, n));
end;
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
end;
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
od;
282
283
284
od;
121
122
285
286
AppendTo(f, "}\n");
end;
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
n := Size(adj);
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
vis[v] := true;
330
331
332
333
334
335
336
337
338
339
340
341
342
343
od;
344
345
comp := comp + 1;
346
347
od;
348
349
350
return comp;
end;
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
n := Size(adj);
indices := List([1..n], i -> 0);
lowlink := List([1..n], i -> 0);
onstack := List([1..n], i -> false);
373
374
index := 1;
123
124
375
stack := [];
376
377
scc := [];
378
379
380
381
382
383
384
StrongConnect := function(v)
# set the depth index for v to the smallest
# unused index
indices[v] := index;
lowlink[v] := index;
index := index + 1;
385
386
387
stack[Size(stack) + 1] := v;
onstack[v] := true;
388
389
390
391
# consider successors of v
for pair in adj[v][2] do
w := pair[1];
392
393
394
395
396
397
398
399
400
401
402
403
od;
404
405
406
407
408
repeat
w := stack[Size(stack)];
Unbind(stack[Size(stack)]);
onstack[w] := false;
409
410
411
412
413
Append(curcomp, [w]);
until v = w;
414
415
416
Append(scc, [curcomp]);
417
418
419
fi;
end;
for v in [1..n] do
if indices[v] = 0 then
StrongConnect(v);
fi;
od;
426
427
428
return scc;
end;
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
for v in curcomp do
for pair in adj[v][2] do
if not pair[1] in curcomp then
good := false;
fi;
od;
od;
450
451
452
453
454
455
456
457
if good then
Append(nucleus, curcomp);
fi;
458
459
460
461
od;
462
463
464
return nucleus;
end;
125
126
465
466
467
468
469
470
471
472
473
n := Size(adj);
tadj := List([1..n], i -> [adj[i][1], []]);
474
475
476
477
478
479
for v in [1..n] do
for pair in adj[v][2] do
Append(tadj[pair[1]][2], [[v, pair[2]]]);
od;
od;
480
481
482
return tadj;
end;
483
484
485
486
487
488
489
490
491
492
493
494
495
adj := arg[1];
dest := arg[2];
496
497
498
499
500
501
502
if IsBound(arg[3]) then
trans := arg[3];
else
trans := GeneratorsOfSemigroup(
AdjacencyListToSemigroup(adj));
fi;
503
504
tadj := TransposedAdjacencyList(adj);
505
506
507
508
509
#
#
#
#
words := [];
511
512
513
514
for v in dest do
words[v] := [[], Transformation([])];
od;
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
od;
533
534
535
return words;
end;
536
537
538
539
540
541
542
543
544
545
546
547
548
549
n := Size(adj);
550
551
552
553
554
127
128
555
556
557
558
559
for v in [1..n] do
Append(nucword, words[v^nuctrans][1]);
nuctrans := nuctrans * words[v^nuctrans][2];
od;
560
561
562
return nucword;
end;
563
564
565
566
567
568
569
570
571
572
573
574
575
n := Size(adj);
qn := n - Size(subatma) + 1;
qadj := [];
576
577
sortatma := Set(subatma);
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
for v in [1..n] do
if vmap[v] <> qn then
qadj[vmap[v]] := [adj[v][1], []];
fi;
598
599
600
601
od;
602
603
od;
604
605
606
return qadj;
end;
607
608
609
610
611
612
613
n := Size(adj);
614
615
616
617
618
619
queue := List(start);
pos := 1;
620
621
622
623
624
625
626
627
628
629
630
631
od;
632
633
634
return vis;
end;
635
636
637
638
639
640
641
642
643
644
129
130
645
646
647
648
649
650
651
652
653
654
655
656
n := Size(adj);
onestate := Filtered([1..n], i -> Size(adj[i][1]) = 1);
657
658
659
660
661
662
663
664
665
666
return Concatenation(onestate,
Filtered([1..n], i -> not vis[i]));
end;
667
668
669
670
671
672
673
674
675
676
677
678
679
680
return NuclearWord(qadj);
end;
681
682
683
684
685
686
687
688
689
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
repeat
stop := true;
allpairs := Combinations(curstate, 2);
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
return termword;
end;
727
728
729
730
731
732
733
734
131
132
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
return words[rank];
end;
133
Index
ern
ern, 3, 5
ern automaton, 3, 5
ern conjecture, 3
ern function, 3
edge cases to erns conjecture,
41
algorithms
automata generation, 36, 97, 106
canonicalisation, 37, 107
short reset word, 7, 26
short terminal word, 7, 24, 26, 28
shortest terminal word, 12, 25
synchronisation check, 13
utilities, 115
automata
circular automata, 6, 46
locally strongly-transitive automata,
7
one-cluster automata, 6
regular automata, 7
strongly-transitive automata, 7
automorphism, 30, 37
block structure, 46
canonicalisation, 31, 37
conjugate automata, 34
connected automata, 43
conucleus, 18, 19
counting automata, 8, 40
deficiency-1 transformation, 46
deterministic finite-state automaton, 1
disconnected automata, 43
edge cases to erns conjecture, 8
enumeration, 30, 40
GAP, 7, 11, 13, 29, 39, 106
gap, 9, 42
generating automata, 8
indegree, 37
island, 9
isomorphism, 30, 37
lexicographical order, 33, 35, 36
nauty, 37, 39
nuclear state, 18
nuclear word, 18, 21, 25
nucleus, 1720, 22
number of automata, 8, 40, 42
orbit, 106
pair automaton, 13, 24, 26
permutation, 31, 106
Pin
edge cases to Pins conjecture, 40,
42, 43, 46, 48
Pins conjecture, 3, 9, 10
Pins cubic bound, 6, 15
power automaton, 11
pruning, 34
quotient automaton, 24
quotient pair automaton, 25
rank, 3, 22
rank-2, 42, 44, 46, 48
rank-3, 46
reachability, 11
reset threshold, 2, 41
restriction of an automaton, 31
semigroup, 3
sink state, 11
slowly-converging, 9, 40, 4346, 48
slowly-synchronising automata, 8
stabiliser, 106
strong isomorphism, 30
strongly-connected automata, 24, 43,
46, 48
strongly-connectedness, 17, 18, 23
subautomaton, 17, 24
synchronising, 2
synchronising state, 2
134
synchronising word, 2
terminal threshold, 3, 43, 44, 46
terminal word, 3, 25, 26
the deficiency conjecture, 9
the gap conjecture, 9, 42
transformation, 3
transition alphabet, 1
transition function, 1
transposition, 20
unifying word, 13, 26
union, 31
word, 1
word concatenation, 21
Index