Block Wiedemann-algoritmen

Block Wiedemann-algoritmen för att beräkna kärnvektorer för en matris över ett ändligt fält är en generalisering av Don Coppersmith av en algoritm som beror på Doug Wiedemann.

Wiedemanns algoritm

Låt vara en kvadratisk matris över något ändligt fält F, låt vara en slumpmässig vektor av längden , och låt . Betrakta sekvensen av vektorer som erhålls genom att upprepade gånger multiplicera vektorn av matrisen ; låt vara vilken annan vektor som helst med längden , och betrakta sekvensen av finita-fältelement

Vi vet att matrisen har ett minimalt polynom ; genom Cayley–Hamilton-satsen vet vi att detta polynom är av grad (som vi kommer att kalla ) inte mer än . Säg . Då ; så det minimala polynomet i matrisen utplånar sekvensen och därmed .

Men Berlekamp–Massey-algoritmen tillåter oss att relativt effektivt beräkna någon sekvens med . Vår förhoppning är att denna sekvens, som genom konstruktion förintar , faktiskt förintar ; så vi har . Vi drar då fördel av den initiala definitionen av för att säga och så är en förhoppningsvis icke-noll kärnvektor av .

Block Wiedemann (eller Coppersmith-Wiedemann) algoritm

Den naturliga implementeringen av gles matrisaritmetik på en dator gör det enkelt att beräkna sekvensen S parallellt för ett antal vektorer som är lika med bredden på ett maskinord – i själva verket tar det normalt inte längre tid att beräkna för så många vektorer än för ett. Om du har flera processorer kan du beräkna sekvensen S för en annan uppsättning slumpmässiga vektorer parallellt på alla datorer.

Det visar sig, genom en generalisering av Berlekamp–Massey-algoritmen för att tillhandahålla en sekvens av små matriser, att du kan ta sekvensen som produceras för ett stort antal vektorer och generera en kärnvektor av den ursprungliga stora matrisen. Du måste beräkna för vissa , måste uppfylla och är en serie vektorer med längden n; men i praktiken kan du ta som en sekvens av enhetsvektorer och helt enkelt skriva ut de första posterna i dina vektorer vid varje gång t .

Wiedemann, D., "Lösa glesa linjära ekvationer över ändliga fält," IEEE Trans. Inf. Theory IT-32, s. 54-62, 1986.

D. Coppersmith, Lösa homogena linjära ekvationer över GF(2) via block Wiedemann-algoritm, Math. Comp. 62 (1994), 333-350.

Villards forskningsrapport från 1997 ' A study of Coppersmith's block Wiedemann algorithm using matrix polynomials ' (omslagsmaterialet är på franska men innehållet på engelska) är en rimlig beskrivning.

Thomés artikel ' Subquadratic computation of vektorgenererande polynom och förbättring av block Wiedemann-algoritmen ' använder en mer sofistikerad FFT -baserad algoritm för att beräkna vektorgenererande polynom, och beskriver en praktisk implementering med i max = j max = 4 som används för att beräkna en kärna vektor av en 484603×484603 matris av poster modulo 2 607 −1, och därmed för att beräkna diskreta logaritmer i fältet GF (2 607 ).