Determinante modulo m


18

Quali sono gli algoritmi efficienti noti per calcolare un determinante di una matrice intera con coefficienti in , l'anello di residui modulo . Il numero potrebbe non essere primo ma composito (quindi i calcoli vengono eseguiti in anello, non in un campo). mmZmmm

Per quanto ne so (leggi sotto), la maggior parte degli algoritmi sono modifiche dell'eliminazione gaussiana. La domanda riguarda l'efficienza computazionale di queste procedure.

Se è successo che esiste un approccio diverso, sono anche curioso.

Grazie in anticipo.

Aggiornare:

Lasciami spiegare la fonte di questa domanda. Supponiamo che sia un numero primo. Quindi è un campo. E in questo caso possiamo eseguire tutti i calcoli usando numeri inferiori a , quindi abbiamo un bel limite superiore su tutte le operazioni sui numeri: addizione, moltiplicazione e inversione --- tutte le operazioni necessarie per eseguire l'eliminazione gaussiana.Z m mmZmm

D'altra parte non possiamo eseguire l'inversione per alcuni numeri nel caso non sia un numero primo. Quindi abbiamo bisogno di alcuni trucchi per calcolare il determinante.m

E ora sono curioso di sapere quali sono i trucchi noti per fare il lavoro e se tali trucchi possono essere trovati e documenti di libri.


3
Cosa intendi per `` efficiente ''? Il problema è chiaramente in . P
David,

2
è una costante fissa? Come viene dato? m
Michael Blondin,

2
Cosa intendi per piccolo? Potrebbero essere scritti in unario?
Michael Blondin,

5
Ancora non capisco la domanda. Il determinante di una matrice intera può essere calcolato in tempo polinomiale, quindi puoi prendere questo valore modulo . Non è necessario eseguire divisioni in Z mo trovare la fattorizzazione di m . mZmm
David,

2
@ValeriySokolov: questa è l'algebra lineare di base. Ad esempio, consultare il Problema 11.5.3 della complessità computazionale di Christos H. Papadimitriou.
Tsuyoshi Ito,

Risposte:


15

Se conosci la fattorizzazione di puoi calcolare il modulo ogni p e i i separatamente e quindi combinare i risultati usando il remaindering cinese. Se e i = 1 , quindi calcolare modulo p e i i è facile, poiché si tratta di un campo. Per e i più grandi , è possibile utilizzare il sollevamento Hensel. m=p1e1pnenpieiei=1pieiei


Grazie! È come qualcosa che stavo cercando. È una pratica comune per i determinanti? (i riferimenti sono benvenuti).
Valeriy Sokolov,

6
Queste sono tecniche standard dell'algebra di computer. Dai un'occhiata a Modern Computer Algebra di von zur Gathen e Gerhard o qualsiasi altro libro sull'algebra dei computer. Per il tuo problema specifico, vedi anche il seguente articolo di Pan, Yu & Stewart comet.lehman.cuny.edu/vpan/pdf/pan146.pdf
Markus Bläser,

17

Esiste un algoritmo combinatorio di Mahajan e Vinay che funziona su anelli commutativi: http://cjtcs.cs.uchicago.edu/articles/1997/5/contents.html


Grazie per la tua risposta con link a un documento molto interessante.
Valeriy Sokolov,

Inoltre credo che ci siano algoritmi più efficienti poiché gli autori di questo articolo hanno risolto un problema più generale (per qualsiasi anello commutativo).
Valeriy Sokolov,

per "ci sono" intendi "conosciuto" o "esiste" (ma non sono ancora stati trovati)? è una supposizione ragionevole, ma sono un po 'scettico sul fatto che la struttura dell'anello di intigri di un piccolo numero composto possa aiutarti tanto. se sbaglio, lo troverei interessante.
Sasho Nikolov,

1
@ValeriySokolov per essere onesti, poiché la risposta risponde alla tua domanda, potresti considerare di accettarla (o se desideri aspettare risposte forse migliori che non sarebbero irragionevoli)
Suresh Venkat,

@SashoNikolov Ho scoperto che Wolfram Mathematica in qualche modo lo calcola. Nelle "Note di implementazione" dicono: Det utilizza metodi modulari e riduzione delle righe, costruendo un risultato usando il teorema del resto cinese. Vorrei sapere cosa fanno esattamente, ma una rapida ricerca non mi ha dato nulla. Per quanto riguarda "piccolo composito " significa solo che voglio considerare la complessità di aggiunte e moltiplicazioni in questo anello come O ( 1 ) . Cioè tutti i fattori come O ( log m ) sono considerati come O ( 1 ) . mO(1)O(logm)O(1)
Valeriy Sokolov,

11

mAdet(A)

ωn×nZmO(nω)Zm

AZmn×ndet(A)O(nω)Zm

Quando questo è stato scritto nel 1996 non esisteva un'alternativa asintoticamente più rapida (il documento menziona l'esistenza precedente di algoritmi con lo stesso limite ma non so quali, o se siano probabilistici).

mm

O(log2m)O(M(logm)loglogm)M(t)tω


θω

Forse non conosco la notazione più comune per questo.
Juan Bermejo Vega,

Penso che tu abbia ragione, lo cambierò in "mainstream"
Juan Bermejo Vega,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.