<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Felix&#039; Math Place &#187; finite abelian group</title>
	<atom:link href="http://math.fontein.de/tag/finite-abelian-group/feed/" rel="self" type="application/rss+xml" />
	<link>http://math.fontein.de</link>
	<description>Focussed on, but not limited to Computational Number Theory</description>
	<lastBuildDate>Sat, 30 Jul 2011 12:35:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Finding Lattice Points, Finite Abelian Groups, and Explaining Algorithms.</title>
		<link>http://math.fontein.de/2010/01/29/finding-lattice-points-finite-abelian-groups-and-explaining-algorithms/</link>
		<comments>http://math.fontein.de/2010/01/29/finding-lattice-points-finite-abelian-groups-and-explaining-algorithms/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 10:20:34 +0000</pubDate>
		<dc:creator>Felix Fontein</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Computational Number Theory]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[finite abelian group]]></category>
		<category><![CDATA[group structure]]></category>
		<category><![CDATA[lattice determination]]></category>

		<guid isPermaLink="false">http://math.fontein.de/?p=627</guid>
		<description><![CDATA[We compare the tasks of finding points of a lattice, computing the structure of finite abelian groups and explaining algorithms. We show up relations between these three topics and, as an example, depict the baby-step giant-step algorithm for order computation, as well as Terr's modification of this algorithm.]]></description>
			<content:encoded><![CDATA[<p>In this article, I want to discuss three questions, which turn out to be closely related. The first question is,</p>
<blockquote><p>&ldquo;Given a lattice <img src='http://math.fontein.de/wp-content/latex/84c/84c6b06508e5935e9c33248dc8a7d3cb-T-000000-0.png' alt='\Lambda \subseteq \R^n' title='\Lambda \subseteq \R^n' class='latex-inline' />. How do I find a basis of this lattice?&rdquo;</p></blockquote>
<p>(Note that this question is far from being well-posed.) The second question is,</p>
<blockquote><p>&ldquo;If <img src='http://math.fontein.de/wp-content/latex/dfc/dfcf28d0734569a6a693bc8194de62bf-T-000000-0.png' alt='G' title='G' class='latex-inline' /> is a finite abelian group and <img src='http://math.fontein.de/wp-content/latex/f17/f17e7dec61272f8beca1d2b590453d27-T-000000-0.png' alt='g_1, \dots, g_n \in G' title='g_1, \dots, g_n \in G' class='latex-inline' />, how do I compute the structure of <img src='http://math.fontein.de/wp-content/latex/52a/52a37df685c65d74f3f98cc2e5c23f57-T-000000-0.png' alt='\langle g_1, \dots, g_n \rangle' title='\langle g_1, \dots, g_n \rangle' class='latex-inline' />, the subgroup generated by these elements?&rdquo;</p></blockquote>
<p>The third question comes up in the description of algorithms, for example of the <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Baby-step_giant-step">baby-step giant-step</a> algorithm by D. Shanks, an optimization by D. Terr, and more general algorithms, like the <a href="http://math.fontein.de/forward.php?r=http://www.ams.org/mcom/2005-74-252/S0025-5718-05-01740-0/home.html">Buchmann-Schmidt</a> algorithm. These algorithms can be described in terms of the first question, making them easier to understand.</p>
<p>We begin with sketching the relation between lattices and finite abelian groups. If <img src='http://math.fontein.de/wp-content/latex/dfc/dfcf28d0734569a6a693bc8194de62bf-T-000000-0.png' alt='G' title='G' class='latex-inline' /> is a finite abelian group, and <img src='http://math.fontein.de/wp-content/latex/f17/f17e7dec61272f8beca1d2b590453d27-T-000000-0.png' alt='g_1, \dots, g_n \in G' title='g_1, \dots, g_n \in G' class='latex-inline' /> some elements, for example, a set of generators, consider the map <img src='http://math.fontein.de/wp-content/latex/2f5/2f5fdfce04daf61e8089083b4e307d3d-T-000000-0.png' alt='\displaystyle  \Psi_{(g_1, \dots, g_n)} : \Z^n \to G, \qquad (\lambda_1, \dots, \lambda_n) \mapsto \sum_{i=1}^n \lambda_i g_i. ' title='\displaystyle  \Psi_{(g_1, \dots, g_n)} : \Z^n \to G, \qquad (\lambda_1, \dots, \lambda_n) \mapsto \sum_{i=1}^n \lambda_i g_i. ' class='latex-displaystyle' /> This turns out to be a group homomorphism onto <img src='http://math.fontein.de/wp-content/latex/52a/52a37df685c65d74f3f98cc2e5c23f57-T-000000-0.png' alt='\langle g_1, \dots, g_n \rangle' title='\langle g_1, \dots, g_n \rangle' class='latex-inline' />. The kernel of <img src='http://math.fontein.de/wp-content/latex/3ea/3eaa2834f9099fa44579c36b5394cb99-T-000000-0.png' alt='\Psi_{(g_1, \dots, g_n)}' title='\Psi_{(g_1, \dots, g_n)}' class='latex-inline' />, which we will denote by <img src='http://math.fontein.de/wp-content/latex/81f/81f48659c64fdae6101495d50b2282f5-T-000000-0.png' alt='\Lambda_{(g_1, \dots, g_n)}' title='\Lambda_{(g_1, \dots, g_n)}' class='latex-inline' />, is called the <i>relation lattice</i>. This is in fact a lattice in <img src='http://math.fontein.de/wp-content/latex/bc1/bc11cf658715d130a37ac60ac17afb52-T-000000-0.png' alt='\R^n' title='\R^n' class='latex-inline' /> of volume <img src='http://math.fontein.de/wp-content/latex/c62/c623db37c5d3ce7e55f5eceacd400231-T-000000-0.png' alt='\displaystyle  \det \Lambda_{(g_1, \dots, g_n)} = \abs{\Z^n / \Lambda_{(g_1, \dots, g_n)}} = \abs{\langle g_1, \dots, g_n\rangle}; ' title='\displaystyle  \det \Lambda_{(g_1, \dots, g_n)} = \abs{\Z^n / \Lambda_{(g_1, \dots, g_n)}} = \abs{\langle g_1, \dots, g_n\rangle}; ' class='latex-displaystyle' /> note that by the Homomorphism Theorem, <img src='http://math.fontein.de/wp-content/latex/d31/d31840f5c50bbb8a64ff23b5c3b64659-T-000000-0.png' alt='\langle g_1, \dots, g_n \rangle \cong \Z^n / \Lambda_{(g_1, \dots, g_n)}' title='\langle g_1, \dots, g_n \rangle \cong \Z^n / \Lambda_{(g_1, \dots, g_n)}' class='latex-inline' />. On the other hand, if <img src='http://math.fontein.de/wp-content/latex/988/988ff617b34da610134b40b43485ba9c-T-000000-0.png' alt='\Lambda \subseteq \Z^n' title='\Lambda \subseteq \Z^n' class='latex-inline' /> is a lattice, then <img src='http://math.fontein.de/wp-content/latex/0a5/0a5206de58e67ac8d639eb0d1ec8cfed-T-000000-0.png' alt='G := \Z^n / \Lambda' title='G := \Z^n / \Lambda' class='latex-inline' /> is a finite abelian group of <img src='http://math.fontein.de/wp-content/latex/0ae/0ae540f73bef792cc9a12983573b4805-T-000000-0.png' alt='\det G' title='\det G' class='latex-inline' /> elements. Moreover, if the residue class of <img src='http://math.fontein.de/wp-content/latex/8de/8dec559e201a7b6a0f99baeaa1731051-T-000000-0.png' alt='e_i' title='e_i' class='latex-inline' />, the vector consisting of zeroes except a one at the <img src='http://math.fontein.de/wp-content/latex/865/865c0c0b4ab0e063e5caa3387c1a8741-T-000000-0.png' alt='i' title='i' class='latex-inline' />-th position, in <img src='http://math.fontein.de/wp-content/latex/dfc/dfcf28d0734569a6a693bc8194de62bf-T-000000-0.png' alt='G' title='G' class='latex-inline' /> is denoted by <img src='http://math.fontein.de/wp-content/latex/91d/91d8947f9447751708c1f4107beb7ab3-T-000000-0.png' alt='g_i' title='g_i' class='latex-inline' />, then <img src='http://math.fontein.de/wp-content/latex/b7e/b7eaa5d7a6cb90b0a323bad1cd64238c-T-000000-0.png' alt='\Lambda = \Lambda_{(g_1, \dots, g_n)}' title='\Lambda = \Lambda_{(g_1, \dots, g_n)}' class='latex-inline' />. Therefore, lattices in <img src='http://math.fontein.de/wp-content/latex/2af/2afa72d9ef584a2535c844f1305558c4-T-000000-0.png' alt='\Z^n' title='\Z^n' class='latex-inline' /> and finite abelian groups with <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' /> generators are essentially the same thing.</p>
<p>How is this related to group structure computations? Recall the <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Smith_normal_form">Smith normal form</a>; this allows to convert a basis <img src='http://math.fontein.de/wp-content/latex/7dc/7dc04ce08f7195214b255d131b97da59-T-000000-0.png' alt='(v_1, \dots, v_n)' title='(v_1, \dots, v_n)' class='latex-inline' /> of a lattice <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' /> into another basis, such that if one applies an invertible linear transformation to <img src='http://math.fontein.de/wp-content/latex/2af/2afa72d9ef584a2535c844f1305558c4-T-000000-0.png' alt='\Z^n' title='\Z^n' class='latex-inline' />, this basis is sent to <img src='http://math.fontein.de/wp-content/latex/823/8231dc1ea1cf9ae18add84e5f7852b80-T-000000-0.png' alt='\lambda_1 e_1, \dots, \lambda_n e_n' title='\lambda_1 e_1, \dots, \lambda_n e_n' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/501/50150cdf9a292ac8f6b3aff4a6a75719-T-000000-0.png' alt='\lambda_i \in \N_{&gt;0}' title='\lambda_i \in \N_{&gt;0}' class='latex-inline' /> such that <img src='http://math.fontein.de/wp-content/latex/561/5614371f803f8a78b18b27391549a107-T-000000-0.png' alt='\lambda_i' title='\lambda_i' class='latex-inline' /> divides <img src='http://math.fontein.de/wp-content/latex/938/9387171fca5f36c535d4d928c4536aaf-T-000000-0.png' alt='\lambda_{i+1}' title='\lambda_{i+1}' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/f38/f3884b9b32cdea43076a4b98787df424-T-000000-0.png' alt='1 \le i &lt; n' title='1 \le i &lt; n' class='latex-inline' />; then, <img src='http://math.fontein.de/wp-content/latex/a90/a905519d0e10a2c7af468d1c4b309e3b-T-000000-0.png' alt='\Z^n / \Lambda \cong \prod_{i=1}^n \Z/\lambda_i \Z' title='\Z^n / \Lambda \cong \prod_{i=1}^n \Z/\lambda_i \Z' class='latex-inline' />. Hence, computing the structure of a finite abelian group generated by <img src='http://math.fontein.de/wp-content/latex/e49/e4903566c7e7f582f4c6c8e7aa9ab8c5-T-000000-0.png' alt='g_1, \dots, g_n' title='g_1, \dots, g_n' class='latex-inline' /> can be split up in the two parts, (a) computation of a basis of the relation lattice <img src='http://math.fontein.de/wp-content/latex/81f/81f48659c64fdae6101495d50b2282f5-T-000000-0.png' alt='\Lambda_{(g_1, \dots, g_n)}' title='\Lambda_{(g_1, \dots, g_n)}' class='latex-inline' /> and (b) computation of a Smith normal form of this basis. There exist a lot of algorithms for computation of Smith normal forms; usually, the bottleneck is finding a basis of <img src='http://math.fontein.de/wp-content/latex/81f/81f48659c64fdae6101495d50b2282f5-T-000000-0.png' alt='\Lambda_{(g_1, \dots, g_n)}' title='\Lambda_{(g_1, \dots, g_n)}' class='latex-inline' />.</p>
<p>Often, the process of finding a lattice equals determining the relation lattice of a finite abelian group, or something similar. One often has a way to test whether <img src='http://math.fontein.de/wp-content/latex/1af/1af084d2f3078407f9678dc8eae0fdbb-T-000000-0.png' alt='v + \Lambda = w + \Lambda' title='v + \Lambda = w + \Lambda' class='latex-inline' />, by computing a unique representation of the residue class <img src='http://math.fontein.de/wp-content/latex/563/56344e3f1feaa982223d23ff0d24ea88-T-000000-0.png' alt='v + \Lambda' title='v + \Lambda' class='latex-inline' />; then, one tries to find two ways <img src='http://math.fontein.de/wp-content/latex/1af/1af084d2f3078407f9678dc8eae0fdbb-T-000000-0.png' alt='v + \Lambda = w + \Lambda' title='v + \Lambda = w + \Lambda' class='latex-inline' /> of writing the same residue class, but with <img src='http://math.fontein.de/wp-content/latex/bbc/bbc4aed19d38ed56e86260163bca72fa-T-000000-0.png' alt='v \neq w' title='v \neq w' class='latex-inline' />: then <img src='http://math.fontein.de/wp-content/latex/695/69586cbe3cbaa617504e6e619cd78d83-T-000000-0.png' alt='v - w' title='v - w' class='latex-inline' /> is a non-trivial element of <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' />. If one sets <img src='http://math.fontein.de/wp-content/latex/0a5/0a5206de58e67ac8d639eb0d1ec8cfed-T-000000-0.png' alt='G := \Z^n / \Lambda' title='G := \Z^n / \Lambda' class='latex-inline' />, then this means that one seeks for pairs <img src='http://math.fontein.de/wp-content/latex/105/10539e3bb4b9ab6b9f2e125c91733397-T-000000-0.png' alt='(v, g)' title='(v, g)' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/92d/92d71b1d249541366785e004998ee690-T-000000-0.png' alt='(w, h)' title='(w, h)' class='latex-inline' />, where <img src='http://math.fontein.de/wp-content/latex/e8d/e8d538e8304838534e1edb0416c04576-T-000000-0.png' alt='g = v + \Lambda' title='g = v + \Lambda' class='latex-inline' /> and <img src='' alt='Formula does not parse: h = w + \Lamda' title='Formula does not parse: h = w + \Lamda' class='latex-inline' />, such that <img src='http://math.fontein.de/wp-content/latex/bf9/bf955f84dd7782f538cc8315d45b5d64-T-000000-0.png' alt='g = h' title='g = h' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/bbc/bbc4aed19d38ed56e86260163bca72fa-T-000000-0.png' alt='v \neq w' title='v \neq w' class='latex-inline' />.</p>
<p>More generally, assume that <img src='http://math.fontein.de/wp-content/latex/021/02129bb861061d1a052c592e2dc6b383-T-000000-0.png' alt='X' title='X' class='latex-inline' /> is a finite set and <img src='http://math.fontein.de/wp-content/latex/155/1556f171a0cc693c4eebbd7e6d6cc17f-T-000000-0.png' alt='\pi : \Z^n \to X' title='\pi : \Z^n \to X' class='latex-inline' /> is a map such that <img src='http://math.fontein.de/wp-content/latex/bc4/bc4573a2d8aea4271643c6cecb6f6bd5-T-000000-0.png' alt='\pi(x + \lambda) = \pi(x)' title='\pi(x + \lambda) = \pi(x)' class='latex-inline' /> for all <img src='http://math.fontein.de/wp-content/latex/00e/00ea34d26b099e9a8fcb9c46e0c53f85-T-000000-0.png' alt='\lambda \in \Lambda' title='\lambda \in \Lambda' class='latex-inline' />. Our above example, <img src='http://math.fontein.de/wp-content/latex/155/15554489a62db7df63d7d7b18c4d7192-T-000000-0.png' alt='G = \Z^n / \Lambda' title='G = \Z^n / \Lambda' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/f71/f71a7a7138efe8c76b25d8e32614a01d-T-000000-0.png' alt='\pi(x) = x + \Lambda' title='\pi(x) = x + \Lambda' class='latex-inline' /> satisfies this. Moreover, assume that <img src='http://math.fontein.de/wp-content/latex/692/692ba05d4c25459dc2e9c1e453efcedd-T-000000-0.png' alt='\pi : \Z^n / \Lambda \to X' title='\pi : \Z^n / \Lambda \to X' class='latex-inline' /> is &ldquo;mostly injective&rdquo;, i.e. that <img src='http://math.fontein.de/wp-content/latex/0af/0afb1eff29cbf8419559ce20d49ddc6c-T-000000-0.png' alt='\pi(v) = \pi(w)' title='\pi(v) = \pi(w)' class='latex-inline' /> implies that one can find <img src='http://math.fontein.de/wp-content/latex/722/7222f1d3ff92d183f482dc7a605027b6-T-000000-0.png' alt='\tilde{v}, \tilde{w} \in \Z^n' title='\tilde{v}, \tilde{w} \in \Z^n' class='latex-inline' /> such that <img src='http://math.fontein.de/wp-content/latex/517/517b8bcc918c8d442f5965c25225c232-T-000000-0.png' alt='\tilde{v} \approx v' title='\tilde{v} \approx v' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/dd2/dd2166507389a3f04ae517c9205aadda-T-000000-0.png' alt='\tilde{w} \approx w' title='\tilde{w} \approx w' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/0e5/0e57167507c9497580d4a24d95facf84-T-000000-0.png' alt='\tilde{v} - \tilde{w} \in \Lambda' title='\tilde{v} - \tilde{w} \in \Lambda' class='latex-inline' /> with very little effort. Then one can work with elements <img src='http://math.fontein.de/wp-content/latex/49b/49b311da0ed4baee4da4dd66e37ef59c-T-000000-0.png' alt='(x, y)' title='(x, y)' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/cb2/cb217f151e458a74691e2de080b692ad-T-000000-0.png' alt='y = \pi(x)' title='y = \pi(x)' class='latex-inline' />, and try to find two such pairs <img src='http://math.fontein.de/wp-content/latex/49b/49b311da0ed4baee4da4dd66e37ef59c-T-000000-0.png' alt='(x, y)' title='(x, y)' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/37b/37be7bebf68f86046aa0c7331f3a6ffd-T-000000-0.png' alt='(x&#039;, y&#039;)' title='(x&#039;, y&#039;)' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/600/6009c50590f25121dc944c3b84bb2873-T-000000-0.png' alt='y = y&#039;' title='y = y&#039;' class='latex-inline' />; then this gives rise to an element of <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' /> near to <img src='http://math.fontein.de/wp-content/latex/0e2/0e234d297927b828812bbf380b0b628d-T-000000-0.png' alt='x - x&#039;' title='x - x&#039;' class='latex-inline' />.</p>
<p>Which brings us to the subject of explaining algorithms. Consider, for example, Shanks&#8217; baby-step giant-step algorithm. You are given a group element of finite order <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' /> together with a bound <img src='http://math.fontein.de/wp-content/latex/746/746a7efa1a98de1a98cfc7d710b8f201-T-000000-0.png' alt='B &gt; 0' title='B &gt; 0' class='latex-inline' />. Then, for the algorithm, one computes <img src='http://math.fontein.de/wp-content/latex/7cf/7cf2fda0295dcbb130356e79ad17ecbf-T-000000-0.png' alt='g^0, g^1, \dots, g^{B-1}' title='g^0, g^1, \dots, g^{B-1}' class='latex-inline' />, as well as <img src='http://math.fontein.de/wp-content/latex/681/6819a8c1cf5c71202faafa91a9f2105d-T-000000-0.png' alt='g^B, g^{2 B}, g^{3 B}, \dots' title='g^B, g^{2 B}, g^{3 B}, \dots' class='latex-inline' />, and compares this elements with the first <img src='http://math.fontein.de/wp-content/latex/9d5/9d5ed678fe57bcca610140957afab571-T-000000-0.png' alt='B' title='B' class='latex-inline' /> elements. Any match will result in a multiple of the order of <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' />. But why is this the case? One can of course try to prove this; it is actually not very hard, in fact one just needs <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Fermat's_little_theorem">Fermat&#8217;s Little Theorem</a> as well as <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Long_division">long division</a>. But one can do better, by visualizing the algorithm in a way which makes the solution looking obvious, and which allows even people who have no understanding of formal mathematics or computer science to immediately realize that the algorithm produces the correct result.</p>
<p>Namely, you might have guessed it, the order of <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' /> generates the relation lattice <img src='http://math.fontein.de/wp-content/latex/008/0080487ef7b0fc81e3e3155fb2cfb6a8-T-000000-0.png' alt='\Lambda_{(g)}' title='\Lambda_{(g)}' class='latex-inline' />. Hence finding the order is equivalent to finding a the smallest positive element in <img src='http://math.fontein.de/wp-content/latex/4fe/4fe6a3ad99bf0d211d6a63d62a009afb-T-000000-0.png' alt='\Lambda_{(g)} \subseteq \Z' title='\Lambda_{(g)} \subseteq \Z' class='latex-inline' />. For this correspondence, we use the pairs <img src='http://math.fontein.de/wp-content/latex/ae0/ae00e90a1242efbaa105a2c90a130fc1-T-000000-0.png' alt='(n, g^n)' title='(n, g^n)' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/d6e/d6e49bd8411286f16dd3c4448b981ec9-T-000000-0.png' alt='n \in \Z' title='n \in \Z' class='latex-inline' /> as above. Two pairs <img src='http://math.fontein.de/wp-content/latex/d2d/d2d20eb61348436fb746bfc7c2287488-T-000000-0.png' alt='(n, g^n), (m, g^m)' title='(n, g^n), (m, g^m)' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/e53/e53a33bbca34af2427d04c7380cfff1b-T-000000-0.png' alt='g^n = g^m' title='g^n = g^m' class='latex-inline' /> gives a multiple <img src='http://math.fontein.de/wp-content/latex/88a/88a21e6a3e2ebbd7deb5212b0baa4058-T-000000-0.png' alt='n - m' title='n - m' class='latex-inline' /> of the order of <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' />. Now, the algorithm can be interpreted as translating the set of elements <img src='http://math.fontein.de/wp-content/latex/6fe/6fe969a9d3380dcc89d5121e00c0bea8-T-000000-0.png' alt='X_B := \{ -B+1, -B+2, \dots, -2, -1, 0 \}' title='X_B := \{ -B+1, -B+2, \dots, -2, -1, 0 \}' class='latex-inline' /> by <img src='http://math.fontein.de/wp-content/latex/9d5/9d5ed678fe57bcca610140957afab571-T-000000-0.png' alt='B' title='B' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/912/9126593c885ac8f753acd838a89a278d-T-000000-0.png' alt='2 B' title='2 B' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/eb3/eb3684274c69340531a1db4ecb14eec1-T-000000-0.png' alt='3 B' title='3 B' class='latex-inline' />, and checking if a lattice element is contained in any of these translates. If one visualizes this, one immediately sees that this method will eventually find the smallest non-zero element of the lattice. First, this depicts the lattice <img src='http://math.fontein.de/wp-content/latex/145/1458a437b3c6456f9ebf61d46c9ed13e-T-000000-0.png' alt='\Z' title='\Z' class='latex-inline' /> (gray dots) with its sublattice <img src='http://math.fontein.de/wp-content/latex/008/0080487ef7b0fc81e3e3155fb2cfb6a8-T-000000-0.png' alt='\Lambda_{(g)}' title='\Lambda_{(g)}' class='latex-inline' /> (black dots), with the set <img src='http://math.fontein.de/wp-content/latex/37b/37b6a03e7fabfdd6adc0ca58c472e3c8-T-000000-0.png' alt='X_B = \{ -B+1, \dots, 0 \}' title='X_B = \{ -B+1, \dots, 0 \}' class='latex-inline' /> drawn in for <img src='http://math.fontein.de/wp-content/latex/97f/97f51400775e422380f3b6ef85889c7a-T-000000-0.png' alt='B = 8' title='B = 8' class='latex-inline' />:<br />
<img src='http://math.fontein.de/wp-content/latex/721/7211a7495e7f751a70461587d86e65fe-T-000000-0.png' alt='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (-7.4,-0.4) to (-7.4,0.4) to (0.4,0.4) to (0.4,-0.4) to (-7.4,-0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' title='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (-7.4,-0.4) to (-7.4,0.4) to (0.4,0.4) to (0.4,-0.4) to (-7.4,-0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' class='latex-displaystyle' /><br />
The next figure depicts the translates of <img src='http://math.fontein.de/wp-content/latex/275/27537cd086a8e9f62bba71321bd87403-T-000000-0.png' alt='X_B' title='X_B' class='latex-inline' /> by <img src='http://math.fontein.de/wp-content/latex/c74/c74db970a45ec0f1735e37d093273006-T-000000-0.png' alt='B, 2 B, 3 B, \dots' title='B, 2 B, 3 B, \dots' class='latex-inline' />:<br />
<img src='http://math.fontein.de/wp-content/latex/f2a/f2a6c9742d1fdc0ccf1f4151365cf001-T-000000-0.png' alt='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (0.6,-0.4) to (0.6,0.4) to (8.4,0.4) to (8.4,-0.4) to (0.6,-0.4);      \filldraw[black!67, fill=black!20] (8.6,-0.4) to (8.6,0.4) to (16.4,0.4) to (16.4,-0.4) to (8.6,-0.4);      \filldraw[black!67, fill=black!20] (16.6,-0.4) to (16.6,0.4) to (24.4,0.4) to (24.4,-0.4) to (16.6,-0.4);      \filldraw[black!67, fill=black!20] (29.4,-0.4) to (24.6,-0.4) to (24.6,0.4) to (29.4,0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' title='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (0.6,-0.4) to (0.6,0.4) to (8.4,0.4) to (8.4,-0.4) to (0.6,-0.4);      \filldraw[black!67, fill=black!20] (8.6,-0.4) to (8.6,0.4) to (16.4,0.4) to (16.4,-0.4) to (8.6,-0.4);      \filldraw[black!67, fill=black!20] (16.6,-0.4) to (16.6,0.4) to (24.4,0.4) to (24.4,-0.4) to (16.6,-0.4);      \filldraw[black!67, fill=black!20] (29.4,-0.4) to (24.6,-0.4) to (24.6,0.4) to (29.4,0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' class='latex-displaystyle' /><br />
One directly sees that the translates <img src='http://math.fontein.de/wp-content/latex/63c/63c41b51395001a1e31aaabdeb4db89d-T-000000-0.png' alt='X_B + k B' title='X_B + k B' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/8d1/8d1ea70d1e425aabd7ee27c054ced9b6-T-000000-0.png' alt='k \in \N_{&gt;0}' title='k \in \N_{&gt;0}' class='latex-inline' /> cover all positive integers, and that every positive integer is contained in exactly one translate. Moreover, one sees that if the first translate contains at most one lattice element, the first translate which contains a lattice element uniquely determines the smallest positive integer. Note that in case <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' /> is the order of <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' />, then one can minimize the number of operations by chosing <img src='http://math.fontein.de/wp-content/latex/030/030111eac6f57661a116610afa4e4b32-T-000000-0.png' alt='B \approx \sqrt{n}' title='B \approx \sqrt{n}' class='latex-inline' />.</p>
<p>Now let us consider <a href="http://math.fontein.de/forward.php?r=http://portal.acm.org/citation.cfm%3Fid=343671">Terr&#8217;s modification</a> of the baby-step giant-step algorithm; there, the situation is a bit more complicated. In Terr&#8217;s algorithm, the bound <img src='http://math.fontein.de/wp-content/latex/9d5/9d5ed678fe57bcca610140957afab571-T-000000-0.png' alt='B' title='B' class='latex-inline' /> from above constantly changes, starting with <img src='http://math.fontein.de/wp-content/latex/985/985fde0688ce97bcc8a3c5f0172f6f9b-T-000000-0.png' alt='B = 1' title='B = 1' class='latex-inline' />. Written as pseudo-code, the algorithm looks like this:</p>
<ol>
<li>Let <img src='http://math.fontein.de/wp-content/latex/2e1/2e1b156f08242221e8c73cf7e15d8b86-T-000000-0.png' alt='a := g^1' title='a := g^1' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/395/3955eca2bfb8d2b915096c3f9727b713-T-000000-0.png' alt='b := g^1' title='b := g^1' class='latex-inline' />, and let <img src='http://math.fontein.de/wp-content/latex/0f8/0f85fa1166fb3fa5015d6b34281c050a-T-000000-0.png' alt='B := 1' title='B := 1' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/2fb/2fb2c4ce8cb9109420a0dd3938370b04-T-000000-0.png' alt='X_B := \{ (g^0, 0) \}' title='X_B := \{ (g^0, 0) \}' class='latex-inline' />.</li>
<li>If <img src='http://math.fontein.de/wp-content/latex/7fa/7fa7434d1f511a4f608064111a97ab27-T-000000-0.png' alt='(b, n) \in X_B' title='(b, n) \in X_B' class='latex-inline' /> for some <img src='http://math.fontein.de/wp-content/latex/72e/72e07933327508be8d2ca29128a878d7-T-000000-0.png' alt='n \in \N' title='n \in \N' class='latex-inline' />, return <img src='http://math.fontein.de/wp-content/latex/d35/d35abd92e50eadff732e1aa5a4fb60c2-T-000000-0.png' alt='\frac{B (B + 1)}{2} - n' title='\frac{B (B + 1)}{2} - n' class='latex-inline' />.</li>
<li>Set <img src='http://math.fontein.de/wp-content/latex/892/892b3178c6a9681cef821fa7cea944af-T-000000-0.png' alt='X_B := X_B \cup \{ (a, B) \}' title='X_B := X_B \cup \{ (a, B) \}' class='latex-inline' />, and set <img src='http://math.fontein.de/wp-content/latex/f79/f79efa25f5c4b29d92d13529c8ce3dd1-T-000000-0.png' alt='B := B + 1' title='B := B + 1' class='latex-inline' />.</li>
<li>Compute <img src='http://math.fontein.de/wp-content/latex/390/39036d88b21a08ee890b56a9d9b07227-T-000000-0.png' alt='a := a \cdot g' title='a := a \cdot g' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/f7d/f7d9c6979d1901dca4347b14f514992f-T-000000-0.png' alt='b := b \cdot a' title='b := b \cdot a' class='latex-inline' />.</li>
<li>Go back to Step 2.</li>
</ol>
<p>There is no obvious reason why this should work. Note that the test whether <img src='http://math.fontein.de/wp-content/latex/7fa/7fa7434d1f511a4f608064111a97ab27-T-000000-0.png' alt='(b, n) \in X_B' title='(b, n) \in X_B' class='latex-inline' /> means that one translates <img src='http://math.fontein.de/wp-content/latex/cb5/cb585485c168507878cb6a9e410ae4db-T-000000-0.png' alt='\{ -B + 1, \dots, 0 \}' title='\{ -B + 1, \dots, 0 \}' class='latex-inline' /> by the exponent <img src='http://math.fontein.de/wp-content/latex/4a8/4a8a08f09d37b73795649038408b5f33-T-000000-0.png' alt='c' title='c' class='latex-inline' /> of <img src='http://math.fontein.de/wp-content/latex/de4/de4711a4a0b4d6614ff73455ea83fb7f-T-000000-0.png' alt='b = g^c' title='b = g^c' class='latex-inline' />, which turns out to be <img src='http://math.fontein.de/wp-content/latex/ee4/ee4b25cfc76c3daac6fba351d066fb00-T-000000-0.png' alt='\frac{B (B + 1)}{2}' title='\frac{B (B + 1)}{2}' class='latex-inline' />. One immediately gets the idea if one draws the first few translates:<br />
<img src='http://math.fontein.de/wp-content/latex/aa3/aa30340532be15460694871edcae48ed-T-000000-0.png' alt='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (0.6,-0.4) to (0.6,0.4) to (1.4,0.4) to (1.4,-0.4) to (0.6,-0.4);      \filldraw[black!67, fill=black!20] (1.6,-0.4) to (1.6,0.4) to (3.4,0.4) to (3.4,-0.4) to (1.6,-0.4);      \filldraw[black!67, fill=black!20] (3.6,-0.4) to (3.6,0.4) to (6.4,0.4) to (6.4,-0.4) to (3.6,-0.4);      \filldraw[black!67, fill=black!20] (6.6,-0.4) to (6.6,0.4) to (10.4,0.4) to (10.4,-0.4) to (6.6,-0.4);      \filldraw[black!67, fill=black!20] (10.6,-0.4) to (10.6,0.4) to (15.4,0.4) to (15.4,-0.4) to (10.6,-0.4);      \filldraw[black!67, fill=black!20] (15.6,-0.4) to (15.6,0.4) to (21.4,0.4) to (21.4,-0.4) to (15.6,-0.4);      \filldraw[black!67, fill=black!20] (21.6,-0.4) to (21.6,0.4) to (28.4,0.4) to (28.4,-0.4) to (21.6,-0.4);      \filldraw[black!67, fill=black!20] (29.4,-0.4) to (28.6,-0.4) to (28.6,0.4) to (29.4,0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' title='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \filldraw[black!67, fill=black!20] (0.6,-0.4) to (0.6,0.4) to (1.4,0.4) to (1.4,-0.4) to (0.6,-0.4);      \filldraw[black!67, fill=black!20] (1.6,-0.4) to (1.6,0.4) to (3.4,0.4) to (3.4,-0.4) to (1.6,-0.4);      \filldraw[black!67, fill=black!20] (3.6,-0.4) to (3.6,0.4) to (6.4,0.4) to (6.4,-0.4) to (3.6,-0.4);      \filldraw[black!67, fill=black!20] (6.6,-0.4) to (6.6,0.4) to (10.4,0.4) to (10.4,-0.4) to (6.6,-0.4);      \filldraw[black!67, fill=black!20] (10.6,-0.4) to (10.6,0.4) to (15.4,0.4) to (15.4,-0.4) to (10.6,-0.4);      \filldraw[black!67, fill=black!20] (15.6,-0.4) to (15.6,0.4) to (21.4,0.4) to (21.4,-0.4) to (15.6,-0.4);      \filldraw[black!67, fill=black!20] (21.6,-0.4) to (21.6,0.4) to (28.4,0.4) to (28.4,-0.4) to (21.6,-0.4);      \filldraw[black!67, fill=black!20] (29.4,-0.4) to (28.6,-0.4) to (28.6,0.4) to (29.4,0.4);      \draw (-5,0) to (-5,-0.75);      \node[empt] (gm5) at (-5,0) [label=below: \footnotesize \( g^{-5} \)] {};      \draw (0,0) to (0,-0.75);      \node[gelt] (g0) at (0,0) [label=below: \footnotesize \( g^0 \)] {};      \draw (5,0) to (5,-0.75);      \node[empt] (g5) at (5,0) [label=below: \footnotesize \( g^5 \)] {};      \draw (10,0) to (10,-0.75);      \node[empt] (g10) at (10,0) [label=below: \footnotesize \( g^{10} \)] {};      \draw (23,0) to (23,-0.75);      \node[gelt] (g23) at (23,0) [label=below: \footnotesize \( g^{23} \)] {};      \foreach \i in {-9,-8,-7,-6,-4,-3,-2,-1} \node[empt] at (\i,0) {};      \foreach \i in {1,2,3,4,6,7,8,9,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,0) {};      \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,0) {};  \end{tikzpicture}}' class='latex-displaystyle' /><br />
This is another tiling of <img src='http://math.fontein.de/wp-content/latex/ff1/ff1c5a8ec16ccfcbff28cb86159edadc-T-000000-0.png' alt='\N_{&gt;0}' title='\N_{&gt;0}' class='latex-inline' />, where every positive integer is contained in exactly one translate. This tiling has the property that the first time <img src='http://math.fontein.de/wp-content/latex/7fa/7fa7434d1f511a4f608064111a97ab27-T-000000-0.png' alt='(b, n) \in X_B' title='(b, n) \in X_B' class='latex-inline' /> occurs for some <img src='http://math.fontein.de/wp-content/latex/72e/72e07933327508be8d2ca29128a878d7-T-000000-0.png' alt='n \in \N' title='n \in \N' class='latex-inline' /> is when the order of <img src='http://math.fontein.de/wp-content/latex/b2f/b2f5ff47436671b6e533d8dc3614845d-T-000000-0.png' alt='g' title='g' class='latex-inline' /> is found, and one no longer has to fix a bound <img src='http://math.fontein.de/wp-content/latex/9d5/9d5ed678fe57bcca610140957afab571-T-000000-0.png' alt='B' title='B' class='latex-inline' /> before. The asymptotic complexity of this method is the same as the previous method in case <img src='http://math.fontein.de/wp-content/latex/030/030111eac6f57661a116610afa4e4b32-T-000000-0.png' alt='B \approx \sqrt{n}' title='B \approx \sqrt{n}' class='latex-inline' />, but in case <img src='http://math.fontein.de/wp-content/latex/9d5/9d5ed678fe57bcca610140957afab571-T-000000-0.png' alt='B' title='B' class='latex-inline' /> is chosen the wrong way, the first algorithm will perform worse than the second. Another way to visualize the second agorithm is to depict the set <img src='http://math.fontein.de/wp-content/latex/a3a/a3ac9014a073838aaa692b85c81bab0d-T-000000-0.png' alt='\{ -B+1, \dots, 0 \}' title='\{ -B+1, \dots, 0 \}' class='latex-inline' /> together with <img src='http://math.fontein.de/wp-content/latex/ee4/ee4b25cfc76c3daac6fba351d066fb00-T-000000-0.png' alt='\frac{B (B + 1)}{2}' title='\frac{B (B + 1)}{2}' class='latex-inline' />, where <img src='http://math.fontein.de/wp-content/latex/acb/acb3e67ac59e8e6606e92f4d16d2262d-T-000000-0.png' alt='a = g^B' title='a = g^B' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/f07/f0728af3e7036b6df3579a2f48946b3c-T-000000-0.png' alt='b = g^{B (B + 1)/2}' title='b = g^{B (B + 1)/2}' class='latex-inline' />, for <img src='http://math.fontein.de/wp-content/latex/97e/97e9e525417b1dafbe2aa2c428862d1a-T-000000-0.png' alt='B = 1, 2, \dots, 7' title='B = 1, 2, \dots, 7' class='latex-inline' />:<br />
<img src='http://math.fontein.de/wp-content/latex/d87/d87b46997ea0b21e9cb9199b6b535448-T-000000-0.png' alt='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \foreach \B in { 1, 2, 3, 4, 5, 6, 7 }      {        \filldraw[black!20, fill=black!67] (-\B+0.6,-\B-0.4) to (-\B+0.6,-\B+0.4) to (0.4,-\B+0.4) to (0.4,-\B-0.4) to (-\B+0.6,-\B-0.4);        \filldraw[black!67, fill=black!20] (\B*\B/2-\B/2+0.6,-\B-0.4) to (\B*\B/2-\B/2+0.6,-\B+0.4) to (\B*\B/2+\B/2+0.4,-\B+0.4)                                              to (\B*\B/2+\B/2+0.4,-\B-0.4) to (\B*\B/2-\B/2+0.6,-\B-0.4);        \filldraw[black!20, fill=black!67] (\B*\B/2+\B/2-0.4,-\B-0.4) to (\B*\B/2+\B/2-0.4,-\B+0.4) to (\B*\B/2+\B/2+0.4,-\B+0.4)                                              to (\B*\B/2+\B/2+0.4,-\B-0.4) to (\B*\B/2+\B/2-0.4,-\B-0.4);        \foreach \i in {-9,-8,-7,-6,-5,-4,-3,-2,-1} \node[empt] at (\i,-\B) {};        \node[gelt] at (0,-\B) {};        \foreach \i in {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,-\B) {};        \node[gelt] at (23,-\B) {};        \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,-\B) {};      }  \end{tikzpicture}}' title='\fbox{\begin{tikzpicture}[scale=0.3, node distance=0mm]      \tikzstyle{gelt} = [draw, shape = circle, fill=black, inner sep=0pt, minimum size = 0.2cm];      \tikzstyle{empt} = [draw, shape = circle, inner sep=0pt, minimum size = 0.2cm];      \foreach \B in { 1, 2, 3, 4, 5, 6, 7 }      {        \filldraw[black!20, fill=black!67] (-\B+0.6,-\B-0.4) to (-\B+0.6,-\B+0.4) to (0.4,-\B+0.4) to (0.4,-\B-0.4) to (-\B+0.6,-\B-0.4);        \filldraw[black!67, fill=black!20] (\B*\B/2-\B/2+0.6,-\B-0.4) to (\B*\B/2-\B/2+0.6,-\B+0.4) to (\B*\B/2+\B/2+0.4,-\B+0.4)                                              to (\B*\B/2+\B/2+0.4,-\B-0.4) to (\B*\B/2-\B/2+0.6,-\B-0.4);        \filldraw[black!20, fill=black!67] (\B*\B/2+\B/2-0.4,-\B-0.4) to (\B*\B/2+\B/2-0.4,-\B+0.4) to (\B*\B/2+\B/2+0.4,-\B+0.4)                                              to (\B*\B/2+\B/2+0.4,-\B-0.4) to (\B*\B/2+\B/2-0.4,-\B-0.4);        \foreach \i in {-9,-8,-7,-6,-5,-4,-3,-2,-1} \node[empt] at (\i,-\B) {};        \node[gelt] at (0,-\B) {};        \foreach \i in {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22} \node[empt] at (\i,-\B) {};        \node[gelt] at (23,-\B) {};        \foreach \i in {24,25,26,27,28,29} \node[empt] at (\i,-\B) {};      }  \end{tikzpicture}}' class='latex-displaystyle' /></p>
]]></content:encoded>
			<wfw:commentRss>http://math.fontein.de/2010/01/29/finding-lattice-points-finite-abelian-groups-and-explaining-algorithms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infrastructures and Global Fields.</title>
		<link>http://math.fontein.de/infrastructures/</link>
		<comments>http://math.fontein.de/infrastructures/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 05:59:40 +0000</pubDate>
		<dc:creator>Felix Fontein</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[baby steps]]></category>
		<category><![CDATA[discrete logarithm]]></category>
		<category><![CDATA[f-representation]]></category>
		<category><![CDATA[finite abelian group]]></category>
		<category><![CDATA[finite cyclic groups]]></category>
		<category><![CDATA[function field]]></category>
		<category><![CDATA[giant steps]]></category>
		<category><![CDATA[global field]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[number field]]></category>

		<guid isPermaLink="false">http://math.fontein.de/?page_id=259</guid>
		<description><![CDATA[The following posts give an introduction to infrastructures and how to obtain these from global fields: The Discrete Logarithm Problem and Generalizations. One-dimensional Infrastructures. Interpreting One-dimensional Infrastructures as Groups: f-Representations. n-dimensional Infrastructures. How to Obtain Reduction Maps for n-dimensional Infrastructures. Obtaining Infrastructures from Global Fields. See also my article on infrastructures at Wikipedia.]]></description>
			<content:encoded><![CDATA[<p>The following posts give an introduction to infrastructures and how to obtain these from global fields:</p>
<ol>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/the-discrete-logarithm-problem-and-generalizations/">The Discrete Logarithm Problem and Generalizations.</a></li>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/one-dimensional-infrastructures/">One-dimensional Infrastructures.</a></li>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/interpreting-one-dimensional-infrastructures-as-groups-f-representations/">Interpreting One-dimensional Infrastructures as Groups: f-Representations.</a></li>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/n-dimensional-infrastructures/">n-dimensional Infrastructures.</a></li>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/21/how-to-obtain-reduction-maps-for-n-dimensional-infrastructures/">How to Obtain Reduction Maps for n-dimensional Infrastructures.</a></li>
<li><a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/21/obtaining-infrastructures-from-global-fields/">Obtaining Infrastructures from Global Fields.</a></li>
</ol>
<p>See also my <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Infrastructure_(number_theory)">article on infrastructures</a> at <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/">Wikipedia</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://math.fontein.de/infrastructures/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>n-dimensional Infrastructures.</title>
		<link>http://math.fontein.de/2009/07/20/n-dimensional-infrastructures/</link>
		<comments>http://math.fontein.de/2009/07/20/n-dimensional-infrastructures/#comments</comments>
		<pubDate>Mon, 20 Jul 2009 08:40:46 +0000</pubDate>
		<dc:creator>Felix Fontein</dc:creator>
				<category><![CDATA[Algebra]]></category>
		<category><![CDATA[Number Theory]]></category>
		<category><![CDATA[f-representation]]></category>
		<category><![CDATA[finite abelian group]]></category>
		<category><![CDATA[giant steps]]></category>
		<category><![CDATA[infrastructure]]></category>
		<category><![CDATA[n-dimensional]]></category>

		<guid isPermaLink="false">http://math.fontein.de/?p=195</guid>
		<description><![CDATA[We will introduce n-dimensional infrastructures and briefly discuss reductions, f-representations and giant steps. We will also discuss how infrastructures can be obtained from finite abelian groups.]]></description>
			<content:encoded><![CDATA[<p>For <a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/one-dimensional-infrastructures/">one-dimensional infrastructures</a>, we have a circle <img src='http://math.fontein.de/wp-content/latex/53d/53dc442d7f128388d1022722a9fb1699-T-000000-0.png' alt='\R/R\Z' title='\R/R\Z' class='latex-inline' /> together with a finite, non-empty set <img src='http://math.fontein.de/wp-content/latex/021/02129bb861061d1a052c592e2dc6b383-T-000000-0.png' alt='X' title='X' class='latex-inline' /> and an injective map <img src='http://math.fontein.de/wp-content/latex/f0f/f0f2a25bb090add1980a3f5b57a78eb8-T-000000-0.png' alt='d : X \to \R/R\Z' title='d : X \to \R/R\Z' class='latex-inline' />. Now <img src='http://math.fontein.de/wp-content/latex/34b/34b0c423a0f9fb437478fc90ff9356ad-T-000000-0.png' alt='\R/R\Z = \R^n / \Lambda' title='\R/R\Z = \R^n / \Lambda' class='latex-inline' />, where <img src='http://math.fontein.de/wp-content/latex/ab7/ab78ccfbcd04b1ba22eb9427251cb20d-T-000000-0.png' alt='n = 1' title='n = 1' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' /> is the one-dimensional <a href="http://math.fontein.de/forward.php?r=http://en.wikipedia.org/wiki/Lattice_(group)">lattice</a> <img src='http://math.fontein.de/wp-content/latex/2d2/2d299348f1466afe4cfbbf6560fdf0e4-T-000000-0.png' alt='\Lambda = R \Z' title='\Lambda = R \Z' class='latex-inline' />. Hence, one could say that an <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructure is a torus <img src='http://math.fontein.de/wp-content/latex/f23/f23ca1b6cb26dfe9fb0c6b492abee2b0-T-000000-0.png' alt='\R^n/\Lambda' title='\R^n/\Lambda' class='latex-inline' /> together with <img src='http://math.fontein.de/wp-content/latex/021/02129bb861061d1a052c592e2dc6b383-T-000000-0.png' alt='X' title='X' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/383/383ac48d2b05312cad03e27386435e60-T-000000-0.png' alt='d : X \to \R^n/\Lambda' title='d : X \to \R^n/\Lambda' class='latex-inline' /> as above. From the discussion in the remarks of <a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/one-dimensional-infrastructures/">this post</a> we see that we need some kind of reduction map to define giant steps (and also <img src='http://math.fontein.de/wp-content/latex/8fa/8fa14cdd754f91cc6554c9e71929cce7-T-000000-0.png' alt='f' title='f' class='latex-inline' />-representations) in the one-dimensional case, even though there a pretty canonical reduction map is given. In the case of <img src='http://math.fontein.de/wp-content/latex/f23/f23ca1b6cb26dfe9fb0c6b492abee2b0-T-000000-0.png' alt='\R^n/\Lambda' title='\R^n/\Lambda' class='latex-inline' />, we do not have something similar to a given positive direction. Moreover, definiting the &ldquo;nearest&rdquo; element of a finite subset of <img src='http://math.fontein.de/wp-content/latex/f23/f23ca1b6cb26dfe9fb0c6b492abee2b0-T-000000-0.png' alt='\R^n/\Lambda' title='\R^n/\Lambda' class='latex-inline' /> to some <img src='http://math.fontein.de/wp-content/latex/091/091f4770e73b32c034443bd6658ec60a-T-000000-0.png' alt='t \in \R^n/\Lambda' title='t \in \R^n/\Lambda' class='latex-inline' /> is even more complicated and offers more choices which appear more or less obvious. Only the selection of different norms on <img src='http://math.fontein.de/wp-content/latex/bc1/bc11cf658715d130a37ac60ac17afb52-T-000000-0.png' alt='\R^n' title='\R^n' class='latex-inline' /> lead to several possible definitions of such a map. Hence, we should require such a map in the definition:</p>
<blockquote class='theorem'><div class='theoremtitle'>Definition.</div> <div class='theoremmain'>
Let <img src='http://math.fontein.de/wp-content/latex/84c/84c6b06508e5935e9c33248dc8a7d3cb-T-000000-0.png' alt='\Lambda \subseteq \R^n' title='\Lambda \subseteq \R^n' class='latex-inline' /> be a lattice. Then, an <i><img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructure</i> is a non-empty finite set <img src='http://math.fontein.de/wp-content/latex/021/02129bb861061d1a052c592e2dc6b383-T-000000-0.png' alt='X' title='X' class='latex-inline' /> together with an injective map <img src='http://math.fontein.de/wp-content/latex/124/124d2018d4b09896eb41a0bd427893a6-T-000000-0.png' alt='d : X \to \R^n / \Lambda' title='d : X \to \R^n / \Lambda' class='latex-inline' /> and another map <img src='http://math.fontein.de/wp-content/latex/993/9938768e422a628d2f1d88de33a42f7d-T-000000-0.png' alt='red : \R^n/\Lambda \to X' title='red : \R^n/\Lambda \to X' class='latex-inline' /> satisfying <img src='http://math.fontein.de/wp-content/latex/aa4/aa46e0cac552a0744c0ae6e450e49a30-T-000000-0.png' alt='red \circ d = \id_X' title='red \circ d = \id_X' class='latex-inline' />.
</div></blockquote>
<p>Again, as in the one-dimensional case, one can define giant steps: <img src='http://math.fontein.de/wp-content/latex/75c/75cd397a9e887074d7d8621e21e67f3d-T-000000-0.png' alt='\displaystyle  \gs(x, x&#039;) := red(d(x) + d(x&#039;)), \quad x, x&#039; \in X. ' title='\displaystyle  \gs(x, x&#039;) := red(d(x) + d(x&#039;)), \quad x, x&#039; \in X. ' class='latex-displaystyle' /> Moreover, one gets the same relation between reduction maps and <img src='http://math.fontein.de/wp-content/latex/8fa/8fa14cdd754f91cc6554c9e71929cce7-T-000000-0.png' alt='f' title='f' class='latex-inline' />-representations, whence we define <img src='http://math.fontein.de/wp-content/latex/ad1/ad1327ddc75b9e3dcfc340c39045f677-T-000000-0.png' alt='\displaystyle  \fRep := \fRep(X, d, red) := \{ (x, f) \in X \times \R^n \mid red(d(x) + f) = x \}. ' title='\displaystyle  \fRep := \fRep(X, d, red) := \{ (x, f) \in X \times \R^n \mid red(d(x) + f) = x \}. ' class='latex-displaystyle' /> Then the map <img src='http://math.fontein.de/wp-content/latex/b6b/b6b22ae8437cdfc0b970b3c0094a3054-T-000000-0.png' alt='\displaystyle  \Psi : \fRep(X, d, red) \to \R^n/\Lambda, \quad (x, f) \mapsto d(x) + f ' title='\displaystyle  \Psi : \fRep(X, d, red) \to \R^n/\Lambda, \quad (x, f) \mapsto d(x) + f ' class='latex-displaystyle' /> is a bijection, and we can use this bijection to equip <img src='http://math.fontein.de/wp-content/latex/5d0/5d0772f88ac15d10398d367c6d0142e3-T-000000-0.png' alt='\fRep(X, d, red)' title='\fRep(X, d, red)' class='latex-inline' /> with a group law by <img src='http://math.fontein.de/wp-content/latex/c99/c99942ee2ec82873b1c1a32de6e70232-T-000000-0.png' alt='\displaystyle  (x, f) + (x&#039;, f&#039;) = \Psi^{-1}(\Psi(x, f) + \Psi(x&#039;, f&#039;)), \quad (x, f), (x&#039;, f&#039;) \in \fRep. ' title='\displaystyle  (x, f) + (x&#039;, f&#039;) = \Psi^{-1}(\Psi(x, f) + \Psi(x&#039;, f&#039;)), \quad (x, f), (x&#039;, f&#039;) \in \fRep. ' class='latex-displaystyle' /></p>

<h3>Discrete Infrastructure.</h3>
We say that an <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructure <img src='http://math.fontein.de/wp-content/latex/240/240d947d431135da3b5728642a17aea6-T-000000-0.png' alt='(X, d, red)' title='(X, d, red)' class='latex-inline' /> with lattice <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' /> is <i>discrete</i> if <img src='http://math.fontein.de/wp-content/latex/988/988ff617b34da610134b40b43485ba9c-T-000000-0.png' alt='\Lambda \subseteq \Z^n' title='\Lambda \subseteq \Z^n' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/66c/66c360849f0298dd4a81b42b0e3aaae5-T-000000-0.png' alt='d(X) \subseteq \Z^n/\Lambda' title='d(X) \subseteq \Z^n/\Lambda' class='latex-inline' /> and if <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' /> does not depends on fractions. To make the last part more precise, define <img src='http://math.fontein.de/wp-content/latex/4fc/4fc7d50065613731fbf523065b23f95c-T-000000-0.png' alt='\displaystyle  floor : \R^n \to \Z^n, \quad (x_1, \dots, x_n) \mapsto (\floor{x_1}, \dots, \floor{x_n}); ' title='\displaystyle  floor : \R^n \to \Z^n, \quad (x_1, \dots, x_n) \mapsto (\floor{x_1}, \dots, \floor{x_n}); ' class='latex-displaystyle' /> if <img src='http://math.fontein.de/wp-content/latex/988/988ff617b34da610134b40b43485ba9c-T-000000-0.png' alt='\Lambda \subseteq \Z^n' title='\Lambda \subseteq \Z^n' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/751/7515875808ef6219fa6fd725e2105588-T-000000-0.png' alt='floor' title='floor' class='latex-inline' /> induces a map <img src='http://math.fontein.de/wp-content/latex/d06/d069ed2fed1bced1177ae65afae80ff9-T-000000-0.png' alt='\R^n/\Lambda \to \Z^n/\Lambda' title='\R^n/\Lambda \to \Z^n/\Lambda' class='latex-inline' />. Now, that <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' /> does not depends on fractions simply means that <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' /> factors through <img src='http://math.fontein.de/wp-content/latex/751/7515875808ef6219fa6fd725e2105588-T-000000-0.png' alt='floor' title='floor' class='latex-inline' />, i.e. that we can write <img src='http://math.fontein.de/wp-content/latex/1a5/1a52f18ff04ea8f59c7f72df39eb60be-T-000000-0.png' alt='red = red&#039; \circ floor' title='red = red&#039; \circ floor' class='latex-inline' /> with <img src='http://math.fontein.de/wp-content/latex/51c/51ce1387e2771d00ed6ee0eb56b87e2f-T-000000-0.png' alt='red&#039; : \Z^n/\Lambda \to X' title='red&#039; : \Z^n/\Lambda \to X' class='latex-inline' />.

Moreover, if in the following we specify discrete infrastructures, we often just define <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' /> for values in <img src='http://math.fontein.de/wp-content/latex/9f8/9f8255d42c7c3c7051915ddd79663ae3-T-000000-0.png' alt='\Z^n/\Lambda' title='\Z^n/\Lambda' class='latex-inline' />. In that case, for elements <img src='http://math.fontein.de/wp-content/latex/267/2678d26528eb605a243dfaef01cb6bcd-T-000000-0.png' alt='v \in \R^n/\Lambda \setminus \Z^n/\Lambda' title='v \in \R^n/\Lambda \setminus \Z^n/\Lambda' class='latex-inline' />, define <img src='http://math.fontein.de/wp-content/latex/c45/c45b18c84ba4a098b56425e0ccc5dad6-T-000000-0.png' alt='red(v) := red(floor(v))' title='red(v) := red(floor(v))' class='latex-inline' />.

In case <img src='http://math.fontein.de/wp-content/latex/240/240d947d431135da3b5728642a17aea6-T-000000-0.png' alt='(X, d, red)' title='(X, d, red)' class='latex-inline' /> is discrete, consider the subset <img src='http://math.fontein.de/wp-content/latex/51e/51e123ab52bb965b18a60765090262c3-T-000000-0.png' alt='\displaystyle  \fRep_{disc} := \fRep_{disc}(X, d, red) := \{ (x, f) \in \fRep \mid f \in \Z^n \}. ' title='\displaystyle  \fRep_{disc} := \fRep_{disc}(X, d, red) := \{ (x, f) \in \fRep \mid f \in \Z^n \}. ' class='latex-displaystyle' /> Then <img src='http://math.fontein.de/wp-content/latex/533/533574c197c4ad43478d5aca74b01cdd-T-000000-0.png' alt='\displaystyle  \Psi|_{\fRep_{disc}} : \fRep_{disc} \to \Z^n/\Lambda ' title='\displaystyle  \Psi|_{\fRep_{disc}} : \fRep_{disc} \to \Z^n/\Lambda ' class='latex-displaystyle' /> is an isomorphism.

<h3>Finite Abelian Groups as Infrastructures.</h3>
Let <img src='http://math.fontein.de/wp-content/latex/dfc/dfcf28d0734569a6a693bc8194de62bf-T-000000-0.png' alt='G' title='G' class='latex-inline' /> be a finite abelian group, generated by <img src='http://math.fontein.de/wp-content/latex/e49/e4903566c7e7f582f4c6c8e7aa9ab8c5-T-000000-0.png' alt='g_1, \dots, g_n' title='g_1, \dots, g_n' class='latex-inline' />. Consider the <i>relation lattice</i> <img src='http://math.fontein.de/wp-content/latex/988/988ff617b34da610134b40b43485ba9c-T-000000-0.png' alt='\Lambda \subseteq \Z^n' title='\Lambda \subseteq \Z^n' class='latex-inline' /> for <img src='http://math.fontein.de/wp-content/latex/e49/e4903566c7e7f582f4c6c8e7aa9ab8c5-T-000000-0.png' alt='g_1, \dots, g_n' title='g_1, \dots, g_n' class='latex-inline' />, defined by <img src='http://math.fontein.de/wp-content/latex/075/07553e15cc9cdaa46490362c372ee13c-T-000000-0.png' alt='\displaystyle  (v_1, \dots, v_n) \in \Lambda \Leftrightarrow \prod_{i=1}^n g_i^{v_i} = 1. ' title='\displaystyle  (v_1, \dots, v_n) \in \Lambda \Leftrightarrow \prod_{i=1}^n g_i^{v_i} = 1. ' class='latex-displaystyle' /> Then <img src='http://math.fontein.de/wp-content/latex/781/781ff4289c6cc5fc2973b7a57791e0e2-T-000000-0.png' alt='\Lambda' title='\Lambda' class='latex-inline' /> is the kernel of <img src='http://math.fontein.de/wp-content/latex/02d/02d41510d10d482130c1f82d7f968129-T-000000-0.png' alt='\Z^n \to G' title='\Z^n \to G' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/8a9/8a941c9278bdb750627fd4cad04807f6-T-000000-0.png' alt='(v_1, \dots, v_n) \mapsto \prod_{i=1}^n g_i^{v_i}' title='(v_1, \dots, v_n) \mapsto \prod_{i=1}^n g_i^{v_i}' class='latex-inline' />, and <img src='http://math.fontein.de/wp-content/latex/68f/68ff1c600828d676f3a1caf67007c768-T-000000-0.png' alt='\displaystyle  \varphi : \Z^n/\Lambda \to G, \quad (v_1, \dots, v_n) + \Lambda \mapsto \prod_{i=1}^n g_i^{v_i} ' title='\displaystyle  \varphi : \Z^n/\Lambda \to G, \quad (v_1, \dots, v_n) + \Lambda \mapsto \prod_{i=1}^n g_i^{v_i} ' class='latex-displaystyle' /> is a group isomorphism. Define <img src='http://math.fontein.de/wp-content/latex/2c0/2c0ed30d17ec2db42fa41f1b049d2ee9-T-000000-0.png' alt='X := G' title='X := G' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/d03/d03507a817fca15e947047fad102db2f-T-000000-0.png' alt='d := \varphi^{-1}' title='d := \varphi^{-1}' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/c67/c6743b2ef8e9fd6b23612f6a936a4374-T-000000-0.png' alt='red := \varphi' title='red := \varphi' class='latex-inline' /> (or, more precisely, <img src='http://math.fontein.de/wp-content/latex/437/4374bf6bd8190f275b230b4277416147-T-000000-0.png' alt='red := \varphi \circ floor' title='red := \varphi \circ floor' class='latex-inline' />); then <img src='http://math.fontein.de/wp-content/latex/240/240d947d431135da3b5728642a17aea6-T-000000-0.png' alt='(X, d, red)' title='(X, d, red)' class='latex-inline' /> is an <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructure. Moreover, for <img src='http://math.fontein.de/wp-content/latex/08f/08feec06eac9c579ca536cca328950eb-T-000000-0.png' alt='g, g&#039; \in G' title='g, g&#039; \in G' class='latex-inline' />, we have <img src='http://math.fontein.de/wp-content/latex/bb9/bb989bd5fc13dbff5d68cf0cab1fb633-T-000000-0.png' alt='\gs(g, g&#039;) = g g&#039;' title='\gs(g, g&#039;) = g g&#039;' class='latex-inline' />, whence <img src='http://math.fontein.de/wp-content/latex/520/52045a9aaf166813b2afe664a170dac9-T-000000-0.png' alt='\gs' title='\gs' class='latex-inline' /> equals the group operation of <img src='http://math.fontein.de/wp-content/latex/dfc/dfcf28d0734569a6a693bc8194de62bf-T-000000-0.png' alt='G' title='G' class='latex-inline' />. Hence, every finite abelian group can be seen in a natural way as an infrastructure.

Moreover, this shows that <img src='http://math.fontein.de/wp-content/latex/827/8277e0910d750195b448797616e091ad-T-000000-0.png' alt='d' title='d' class='latex-inline' /> can be thought of as an analogue to the discrete logarithm map, and <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' /> is an analogue of the power map <img src='http://math.fontein.de/wp-content/latex/3d1/3d11e271491a167413e954b3caabeff0-T-000000-0.png' alt='n \mapsto g^n' title='n \mapsto g^n' class='latex-inline' />. In particular, we obtained the goal described in <a href="http://math.fontein.de/forward.php?r=http://math.fontein.de/2009/07/20/the-discrete-logarithm-problem-and-generalizations/">the first post of this series</a>: we found a generalization of the discrete logarithm problem to a non-associative algebraic structure. In the next post, I will how such infrastructures can be obtained from global fields; this gives a rich source of examples for <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructures.

<h3>What about baby steps?</h3>
Note that in the above discussion, I simply ignored baby steps. In the one-dimensional case, <img src='http://math.fontein.de/wp-content/latex/7b0/7b09fea775960abce9cd821eb6ee9ef7-T-000000-0.png' alt='\R' title='\R' class='latex-inline' /> has a canonical direction (namely the positive one) and so has <img src='http://math.fontein.de/wp-content/latex/53d/53dc442d7f128388d1022722a9fb1699-T-000000-0.png' alt='\R/R\Z' title='\R/R\Z' class='latex-inline' />, whence saying &ldquo;go to the next element&rdquo; makes sense. Opposed to that, in <img src='http://math.fontein.de/wp-content/latex/bc1/bc11cf658715d130a37ac60ac17afb52-T-000000-0.png' alt='\R^n' title='\R^n' class='latex-inline' />, there are infinitely many directions, no one better than another. Even if we fix a direction, &ldquo;go to the next element in that direction&rdquo; seems to not really make sense. So far, I have not seen any definition of baby steps in this case which works for <i>all</i> <img src='http://math.fontein.de/wp-content/latex/7b8/7b8b965ad4bca0e41ab51de7b31363a1-T-000000-0.png' alt='n' title='n' class='latex-inline' />-dimensional infrastructures.

Note that in the case of infrastructures obtained from global fields, one has some kind of canonical baby steps (even though there are still some choices left). In fact, there are <img src='http://math.fontein.de/wp-content/latex/488/488968c8363007fe20e033f70ad0b931-T-000000-0.png' alt='n + 1' title='n + 1' class='latex-inline' /> of them. To define them, though, one needs more information than just <img src='http://math.fontein.de/wp-content/latex/021/02129bb861061d1a052c592e2dc6b383-T-000000-0.png' alt='X' title='X' class='latex-inline' />, <img src='http://math.fontein.de/wp-content/latex/827/8277e0910d750195b448797616e091ad-T-000000-0.png' alt='d' title='d' class='latex-inline' /> and <img src='http://math.fontein.de/wp-content/latex/bda/bda9643ac6601722a28f238714274da4-T-000000-0.png' alt='red' title='red' class='latex-inline' />: one needs information about a <img src='http://math.fontein.de/wp-content/latex/235/23551d9275207a0c4f90c339d14d8fc2-T-000000-0.png' alt='(n + 1)' title='(n + 1)' class='latex-inline' />-st dimension, both for constructing the reduction map and for defining baby steps.
]]></content:encoded>
			<wfw:commentRss>http://math.fontein.de/2009/07/20/n-dimensional-infrastructures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

