05.01.2013 Views

COMPUTATIONAL PROBLEMS IN ABSTRACT ALGEBRA.

COMPUTATIONAL PROBLEMS IN ABSTRACT ALGEBRA.

COMPUTATIONAL PROBLEMS IN ABSTRACT ALGEBRA.

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

196 A. L. Tritter<br />

a question is most straightforwardly answered by developing a triangular<br />

basis for the space spanned by the row vectors, and “pivoting” each basis<br />

vector in turn “out” of the target vector; if there appears no basis vector<br />

at all to correspond to some non-zero coordinate of the target vector then<br />

the answer is found to be “no”, if the target vector suddenly disappears<br />

then we know the answer is “yes”. Triangularizing a matrix is neither entertaining<br />

nor interesting.<br />

When interest is aroused, it is by one or other of the effects that scale<br />

can have on this problem. Most usually, the interest lies in problems of<br />

loss of significance caused by limitations on the accuracy with which matrix<br />

elements can be retained. But our problem is not of this kind; as our<br />

matrix is over a finite field, we necessarily retain absolute accuracy. Indeed,<br />

as the field is GF(2), each exact matrix element occupies only one bit in<br />

memory, vector addition is represented by the “exclusive-or” operation,<br />

and multiplication does not arise. In our problem, the sheer immensity<br />

of the data leads to a class of questions concerning the distribution in time<br />

of machine errors.<br />

Once we have said this, we have opened Pandora’s box. When a mathematical<br />

“proof” is based in part upon error-preventing, error-detecting,<br />

and error-correcting techniques whose reliability is statistical in character,<br />

the nature of proof is utterly unlike anything David Hilbert might have<br />

recognized as such. But this problem goes far beyond the scope of the<br />

present paper; we shall attempt to discuss it elsewhere. In this paper, we<br />

shall do no more than to look briefly at some of the methods actually<br />

employed in the computer program which makes the calculation.<br />

If the answer to our question is “yes”, if the target vector is a linear combination<br />

of the data vectors, then it is found to be so in an explicit way,<br />

and detailed record-keeping along the way should make it possible to say<br />

something like :<br />

The target vector is the sum of such and such basis vectors and, for<br />

each of them, this basis vector is the sum of that data vector and those<br />

earlier basis vectors.<br />

In this case we should have available an effective, and cheap, way of confirming<br />

that the answer is indeed “yes”.<br />

But suppose the answer to be “no”. Then we are asserting that there<br />

are 2s! linear combinations of the data vectors, and that the target vector<br />

is none of them. How can such an assertion be verified, except exhaustively<br />

(i.e. by doing it again)? Well, there is one thing available for us to<br />

try-if the matrix actually yielded 7! basis vectors, there has surely been<br />

an error. But if only a smaller number have appeared, we are on no surer<br />

ground than before.<br />

Let us recapitulate. An affiative answer would be verified if we were<br />

to maintain records from which the “pedigree” of the target vector and<br />

A module-theoretic computation 197<br />

every basis vector could be determined. A negative answer could be made<br />

marginally more convincing if we knew the rank of the data matrix. But,<br />

in general, to be justified in accepting a negative answer, we must repeat<br />

the entire calculation at least once.<br />

Suppose we do so. And suppose the answer is now “yes”. What do we do ?<br />

Or suppose the answer is again “no”. How reliable is a single bit? Should<br />

we try again ? Or what?<br />

What, in fact, we do is this. We do, of course, keep the pedigree records,<br />

and we always know how many basis vectors have been found. But, in<br />

addition, every operation (including the checking operations) is performed<br />

twice, and the results are compared, bit by bit. In a single magnetic tape<br />

pass, the data matrix is read in from two separate files assumed to hold<br />

identical data, and, for so long as that is true, the common value of the<br />

input data is accepted; as wide as possible a section of the data matrix<br />

is processed en passant and the result is written out as a data file. Then it is<br />

done again; the same two data files are read in and compared a second time,<br />

their common value processed a second time, and the result written out<br />

as a second file which should be identical to the first. These two data<br />

files are the input to the next tape pass, when they will be compared bit<br />

by bit (and each file consists of more than 200 million bits), twice, and so<br />

on. The basis vectors developed on the first run through a pass go onto<br />

an output tape, those from the second onto another, at the time; these<br />

are compared explicitly, twice (of course), after the second time through.<br />

If at any stage a discrepancy is discovered between tapes whose contents<br />

should be identical, elaborate signalling and recovery procedures are automatically<br />

put into operation; we shall say no more about these but that<br />

we have available, on a typical tape pass, three sets of tapes, called A, B,<br />

and C, such that if we are now reading data from B and writing it to C,<br />

then B was written on the previous pass and A was being read on that<br />

pass. That way, if we discover a discrepancy in the B tapes after having<br />

written upon the C tapes, the A tapes (from which B were made, and which<br />

have already satisfied two bit-by-bit comparisons) are still intact. When<br />

I say that the data matrix occupies a file taking up two reels of tape, you<br />

will see that this program keeps 14 tape drives busy - A, B, C, each 2<br />

reels long, + 1 reel output for basis vectors, X2 copies of everything.<br />

A magnetic tape pass takes about 18 minutes from beginning to end,<br />

of which the second half is a repetition of the first; the program can be<br />

interrupted under switch control, with effectively no wastage of machine<br />

time, at any such breakpoint. Another switch will cause the program to<br />

pause at the next breakpoint and await the instruction to interrupt or to<br />

proceed; yet another, inspected by the program three times per second of<br />

elapsed time, says to interrupt at once, discarding anything done since the<br />

last previous breakpoint. Other switches instruct the program whether<br />

to stop or to go on to get the rank of the data matrix in case the answer

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!