Quels sont les algorithmes efficaces connus pour calculer un déterminant d'une matrice entière à coefficients dans , l'anneau de résidus modulo . Le nombre peut ne pas être premier mais composite (donc les calculs sont effectués en anneau, pas dans un champ). mm
Pour autant que je sache (lire ci-dessous), la plupart des algorithmes sont des modifications de l'élimination gaussienne. La question porte sur l'efficacité de calcul de ces procédures.
S'il arrivait qu'il y ait une approche différente, je suis également curieux.
Merci d'avance.
Mise à jour:
Permettez-moi d'expliquer la source de cette question. Supposons que est un nombre premier. Donc est un champ. Et dans ce cas, nous pouvons effectuer tous les calculs en utilisant des nombres inférieurs à , nous avons donc une belle limite supérieure pour toutes les opérations sur les nombres: addition, multiplication et inversion --- toutes les opérations nécessaires pour exécuter l'élimination gaussienne.Z m m
En revanche, nous ne pouvons pas effectuer d'inversion pour certains nombres dans le cas où n'est pas un nombre premier. Nous avons donc besoin de quelques astuces pour calculer le déterminant.
Et maintenant, je suis curieux de savoir quelles sont les astuces connues pour faire le travail et si de telles astuces peuvent être trouvées dans les papiers des livres.
la source
Réponses:
Si vous connaissez la factorisation de vous pouvez calculer modulo chaque p e i i séparément puis combiner les résultats en utilisant le reste chinois. Si e i = 1 , le calcul du modulo p e i i est facile, car il s'agit d'un champ. Pour les plus grands e i , vous pouvez utiliser le levage Hensel.m=pe11⋯penn peii ei=1 peii ei
la source
Il existe un algorithme combinatoire de Mahajan et Vinay qui fonctionne sur des anneaux commutatifs: http://cjtcs.cs.uchicago.edu/articles/1997/5/contents.html
la source
Pour résoudre ce problème, il existe un algorithme déterministe rapide basé sur les formes normales de Smith dont la complexité dans le pire des cas est limitée par le coût de la multiplication matricielle sur les entiers modulo . Pour toute matrice A , l'algorithme génère sa forme normale de Smith, d'où det ( A ) peut être facilement calculé.m A det(A)
Plus concrètement, définissons sorte que deux n × n matrices avec des coefficients tirés de Z m puissent être multipliées en utilisant O ( n ω ) opérations arithmétiques de base sur Z m (addition entière, multiplication, exponentiation, etc.). Alors,ω n×n Zm O(nω) Zm
Quand cela a été écrit en 1996, il n'y avait pas d'alternative plus rapide asymptotiquement (l'article mentionne l'existence préalable d'algorithmes avec la même limite mais je ne sais pas lesquels, ni s'ils sont probabilistes).
Mise à jour (17 juillet 2013): une caractéristique intéressante de cet algorithme est qu'il s'exécute en temps polynomial pour un composite arbitraire sans connaître une factorisation en nombre premier de m ! C'est bien car il n'y a pas d'algorithmes efficaces (classiques) connus pour l'affacturage (bien sûr, si vous aviez un ordinateur quantique, alors vous pourriez appliquer l'algorithme de Shor ). Si vous n'avez la factorisation alors l'algorithme Markus suggéré semble plus simple à mettre en œuvre.m m
Notes: dans l'article, la complexité des "opérations arithmétiques de base" estO(log2m) O(M(logm)loglogm) M(t) t ω
la source