Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Todd–Coxeter algorithm
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Algorithm for solving the coset enumeration problem}} In [[group theory]], the '''Todd–Coxeter algorithm''', created by [[J. A. Todd]] and [[H. S. M. Coxeter]] in 1936, is an [[algorithm]] for solving the [[coset enumeration]] problem. Given a [[presentation of a group]] ''G'' by generators and relations and a [[subgroup]] ''H'' of ''G'', the algorithm enumerates the [[coset]]s of ''H'' on ''G'' and describes the [[Group_action_(mathematics)#Examples|permutation representation]] of ''G'' on the space of the cosets (given by the left multiplication action). If the [[order of a group]] ''G'' is relatively small and the subgroup ''H'' is known to be uncomplicated (for example, a [[cyclic group]]), then the algorithm can be carried out by hand and gives a reasonable description of the group ''G''. Using their algorithm, Coxeter and Todd showed that certain systems of relations between generators of known groups are complete, i.e. constitute systems of defining relations. The Todd–Coxeter algorithm can be applied to infinite groups and is known to terminate in a finite number of steps, provided that the [[index (group theory)|index]] of ''H'' in ''G'' is finite. On the other hand, for a general pair consisting of a group presentation and a subgroup, its running time is not bounded by any [[computable function]] of the index of the subgroup and the size of the input data. == Description of the algorithm == One implementation of the algorithm proceeds as follows. Suppose that <math> G = \langle X \mid R \rangle </math>, where <math> X </math> is a set of [[generating set of a group|generators]] and <math> R </math> is a set of [[relation (mathematics)|relations]] and denote by <math> X' </math> the set of generators <math> X </math> and their inverses. Let <math> H = \langle h_1, h_2, \ldots, h_s \rangle </math> where the <math> h_i </math> are words of elements of <math> X' </math>. There are three types of tables that will be used: a coset table, a relation table for each relation in <math> R </math>, and a subgroup table for each generator <math> h_i </math> of <math> H </math>. Information is gradually added to these tables, and once they are filled in, all cosets have been enumerated and the algorithm terminates. The coset table is used to store the relationships between the known cosets when multiplying by a generator. It has rows representing cosets of <math> H </math> and a column for each element of <math> X' </math>. Let <math> C_i </math> denote the coset of the ''i''th row of the coset table, and let <math> g_j \in X' </math> denote generator of the ''j''th column. The entry of the coset table in row ''i'', column ''j'' is defined to be (if known) ''k'', where ''k'' is such that <math> C_k = C_ig_j </math>. The relation tables are used to detect when some of the cosets we have found are actually equivalent. One relation table for each relation in <math> R </math> is maintained. Let <math> 1 = g_{n_1} g_{n_2} \cdots g_{n_t} </math> be a relation in <math> R </math>, where <math> g_{n_i} \in X' </math>. The relation table has rows representing the cosets of <math> H </math>, as in the coset table. It has ''t'' columns, and the entry in the ''i''th row and ''j''th column is defined to be (if known) ''k'', where <math> C_k = C_i g_{n_1} g_{n_2} \cdots g_{n_j} </math>. In particular, the <math>(i,t)</math>'th entry is initially ''i'', since <math> g_{n_1} g_{n_2} \cdots g_{n_t} = 1</math>. Finally, the subgroup tables are similar to the relation tables, except that they keep track of possible relations of the generators of <math> H </math>. For each generator <math> h_n = g_{n_1} g_{n_2} \cdots g_{n_t} </math> of <math> H </math>, with <math> g_{n_i} \in X' </math>, we create a subgroup table. It has only one row, corresponding to the coset of <math> H </math> itself. It has ''t'' columns, and the entry in the ''j''th column is defined (if known) to be ''k'', where <math> C_k = H g_{n_1} g_{n_2} \cdots g_{n_j} </math>. In particular, the last entry is ''H'', since <math> Hg_{n_1} g_{n_2} \cdots g_{n_t} = Hh_n=H</math>. When a row of a relation or subgroup table is completed, a new piece of information <math> C_i = C_j g </math>, <math> g \in X' </math>, is found. This is known as a ''deduction''. From the deduction, we may be able to fill in additional entries of the relation and subgroup tables, resulting in possible additional deductions. We can fill in the entries of the coset table corresponding to the equations <math> C_i = C_j g </math> and <math> C_j = C_i g^{-1} </math>. However, when filling in the coset table, it is possible that we may already have an entry for the equation, but the entry has a different value. In this case, we have discovered that two of our cosets are actually the same, known as a ''coincidence''. Suppose <math> C_i = C_j </math>, with <math> i < j </math>. We replace all instances of ''j'' in the tables with ''i''. Then, we fill in all possible entries of the tables, possibly leading to more deductions and coincidences. If there are empty entries in the table after all deductions and coincidences have been taken care of, add a new coset to the tables and repeat the process. We make sure that when adding cosets, if ''Hx'' is a known coset, then ''Hxg'' will be added at some point for all <math> g \in X' </math>. (This is needed to guarantee that the algorithm will terminate provided <math> |G : H| </math> is finite.) When all the tables are filled, the algorithm terminates. We then have all needed information on the action of <math> G </math> on the cosets of <math> H </math>. == See also == * [[Coxeter group]] ==References== * {{cite journal |last1=Todd |first1=J. A. | author1-link=J. A. Todd| last2=Coxeter |first2=H. S. M. |author2-link=Harold Scott MacDonald Coxeter|year= 1936 |title=A practical method for enumerating cosets of a finite abstract group |journal=[[Proceedings of the Edinburgh Mathematical Society]] |series=Series II |volume=5 |pages=26–34 | jfm = 62.1094.02 |zbl = 0015.10103 |doi=10.1017/S0013091500008221 |doi-access=free }} * {{cite book |last1=Coxeter |first1=H. S. M. |author1-link=Harold Scott MacDonald Coxeter|first2=W. O. J. |last2=Moser |year=1980 |title=Generators and Relations for Discrete Groups |edition=4th |series=[[Ergebnisse der Mathematik und ihrer Grenzgebiete]] |volume=14 |publisher=[[Springer-Verlag]] 1980 |isbn=3-540-09212-9 |mr=0562913 }} * {{cite journal |last=Seress |first=Ákos |year=1997 |title=An introduction to computational group theory|url=http://www.ams.org/notices/199706/seress.pdf |journal=[[Notices of the American Mathematical Society]] |volume= 44 |issue=6 |pages= 671–679|mr=1452069 }} {{DEFAULTSORT:Todd-Coxeter algorithm}} [[Category:Computational group theory]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Short description
(
edit
)