%=================================================================== % Sample problems; solutions give examples on using APL style in TeX % Taken from the course ``Mathematics on the Computer'', Fall 87 %=================================================================== \magnification = \magstep1 \advance\vsize by 3truecm \input mssymb % for some math symbols only! This is the new % symbol font for some standard and non-standard % mathematical symbols. It is only used here for % blackboard bold letters. If you dont have it, % just define \def\Bbb{} etc. \input aplstyle \choosett{apl} \font\sans = amss10 \font\sltt = amsltt10 \def\header{{\sans Sample problems 9.\ 10.\ 1987}} % some of them come from Sims' ``Abstract Algebra, A Computational Approach'' \def\APL{{\sltt APL}} \nopagenumbers \tolerance = 300 \noindent \header \vskip 2cm \item{1.} Let $N>1$ be an integer. Show that each of the following matrices represents a binary operation on $S(N)$ (we set locally \BX@IO_0@.) Which of them are associative, which commutative? \medskip \itemitem{a)} @(@\IO@N)@\SO@.@\CE\IO@N@ \itemitem{b)} \AB@(@\IO@N)@\SO@.-@\IO@N@ \itemitem{c)} @N@\AB@(@\IO@N)@\SO@.+@\IO@N@ \itemitem{d)} @N@\AB@(@\IO@N)@\SO@.#@\IO@N@ \medskip \item{} Here @x@\CE@y@ is $\max(x,y)$, @x@\AB@y@ is $y\bmod x$ and \AB@x@ is the absolute value of $x$. \bigskip \item{2.} Write an \APL\ function @GPOWER@ that computes for a group @G@ (global variable) the $n$-th power of a given element $x$. (If $S(M)$ is a representation vector of @G@, then @GPOWER@ is a map $S(M)\times \Bbb Z\to S(M)$. Simply use iteration.) \bigskip \item{3.} (Continuing problem 2.) A faster algorithm is obtained by decomposing $x^n$ into its 2--base form $x^n = x^{i_0}\times x^{2i_1}\times x^{4i_2}\times ... \times x^{{2^k}i_k}$, where $i_j\in\{0,1\}$. Show that the complexity of this algorithm is $O(\log_2(n))$. (Show that the number of necessary multiplications does not exceed $2\log_2(n)$). How would you write the corresponding function in \APL? (Note that the binary representation of $n$ can be obtained by applying iteratively the procedure $n\bmod 2$.) \bigskip \item{4.} Write an \APL\ function @GTSGP@ that computes for a given group @G@ (global variable) the subgroup generated by a given subset $A$. The function @GTSGP@ has one argument (the vector @A@) and returns a subset of the set $S(N)$ (as a vector). (Extend the set @A@ by the group operation until @A@ becomes closed with respect to the operation.) \bigskip \item{5.} Write an \APL\ function @INV@ that returns for a group @G@ the vector of inverse elements as a vector $S(N)\to S(N)$ so that the index of the inverse of $x_i$ is @(INV G)[I]@. \bigskip \item{6.} Let $(G,\theta)$ be a group and let $A$ be a subset of $G$. Program the following algorithm in \APL\ to find the subgroup @H@ generated by @A@. Compare the perfomance of this algorithm with the algorithm in Problem 4. \medskip \itemitem{a)} put $H$ and $Y$ equal to $\{e\}$. \itemitem{b)} let $Y$ be $YA\smallsetminus H$. \itemitem{c)} if $Y=\emptyset$, stop. \itemitem{d)} put $H$ equal to $H\cup Y$ and go to (b). \medskip \item{} ($e$ is the neutral element and $YA\smallsetminus H$ is the set--theoretical difference of $YA$ and $H$. The product $YA$ is the set $\{y\theta a: y\in Y, a\in A\}$.) \bigskip \item{7.} Write an \APL\ function @PROD@ that returns for given groups $(G_1,\theta_1)$ ja $(G_2,\theta_2)$ the {\sl direct product} $(G_1\times G_2,\theta_1\times\theta_2)$ as a group table. (The binary operation in the product is $(x,y)\theta_1\times\theta_2 (z,w) = (x\theta_1 z,y\theta_2 w)$). \bigskip \vfill\eject %========================================================================== % Solutions to above sample exercises %========================================================================== %\advance\vsize by 3truecm \choosett{apl} \noindent \header%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vskip 1cm \noindent As the index of the neutral element we use the index origin \BX@IO@ which usually has the value @0@. Then $S(N)= \{0,\dots,N-1\}$, given by the vector \IO@N@. An example on groups are the cyclic groups $({\bf Z}_n,+)$ the group tables of which are generated by the \APL\ function @ZNPLUS@: \hskip\parskip\vbox{\hsize=15truecm \begintt @DL Z_ZNPLUS N;@BXIO [1] @BXIO_0 [2] Z_N@AB(@ION)@SO.+@ION @DL \endtt }\smallskip \item{1.} The matrices represent binary operations of $S(N)$, since they are $N\times N$-matrices with elements from $S(N)$. They are all associative and also commutative except for the case (b). This can be seen by the function @TEST@: \hskip\parskip\vbox{\hsize=15truecm \begintt @DL Z_TEST B [1] " B IS A BINARY OPERATION. THE FUNCTION RETURNS A BOOLEAN 2-VECTOR [2] " (B ASSOCIATIVE, B COMMUTATIVE) [3] Z_(&/&/&/B[B;]=B[;B]),&/&/B=@TRB @DL \endtt }\smallskip \item{2.} \hskip\parskip\vbox{\hsize=15truecm \begintt @DL P_X GPOWER N;I [1] " G GLOBAL [2] P_@BXIO @DM I_0 [3] TEST:@GO(NJ_J+1)/CORE [6] @GO(N>I_I+1)/JLOOP @DL \endtt } Example: \hskip\parskip\vbox{\hsize=15truecm \begintt (ZNPLUS 2) PROD ZNPLUS 10 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 6 7 8 9 0 11 12 13 14 15 16 17 18 19 10 2 3 4 5 6 7 8 9 0 1 12 13 14 15 16 17 18 19 10 11 3 4 5 6 7 8 9 0 1 2 13 14 15 16 17 18 19 10 11 12 4 5 6 7 8 9 0 1 2 3 14 15 16 17 18 19 10 11 12 13 5 6 7 8 9 0 1 2 3 4 15 16 17 18 19 10 11 12 13 14 6 7 8 9 0 1 2 3 4 5 16 17 18 19 10 11 12 13 14 15 7 8 9 0 1 2 3 4 5 6 17 18 19 10 11 12 13 14 15 16 8 9 0 1 2 3 4 5 6 7 18 19 10 11 12 13 14 15 16 17 9 0 1 2 3 4 5 6 7 8 19 10 11 12 13 14 15 16 17 18 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 10 1 2 3 4 5 6 7 8 9 0 12 13 14 15 16 17 18 19 10 11 2 3 4 5 6 7 8 9 0 1 13 14 15 16 17 18 19 10 11 12 3 4 5 6 7 8 9 0 1 2 14 15 16 17 18 19 10 11 12 13 4 5 6 7 8 9 0 1 2 3 15 16 17 18 19 10 11 12 13 14 5 6 7 8 9 0 1 2 3 4 16 17 18 19 10 11 12 13 14 15 6 7 8 9 0 1 2 3 4 5 17 18 19 10 11 12 13 14 15 16 7 8 9 0 1 2 3 4 5 6 18 19 10 11 12 13 14 15 16 17 8 9 0 1 2 3 4 5 6 7 19 10 11 12 13 14 15 16 17 18 9 0 1 2 3 4 5 6 7 8 \endtt } \end