Inverse une matrice dans la classe Complexity ?
À partir de l'exécution, je dirais oui mais la matrice inversée peut contenir des entrées où la taille n'est pas limitée polynomialement par l'entrée?
Inverse une matrice dans la classe Complexity ?
À partir de l'exécution, je dirais oui mais la matrice inversée peut contenir des entrées où la taille n'est pas limitée polynomialement par l'entrée?
Réponses:
Oui, cela peut se faire en temps polynomial, mais la preuve est assez subtile. Ce n'est pas simplementtemps, car l'élimination gaussienne implique la multiplication et l'ajout de nombres, et le temps pour effectuer chacune de ces opérations arithmétiques dépend de leur taille. Pour certaines matrices, les valeurs intermédiaires peuvent devenir extrêmement grandes, donc l'élimination gaussienne ne s'exécute pas nécessairement en temps polynomial.
Heureusement, il existe des algorithmes qui ne fonctionnent en temps polynomial. Ils nécessitent un peu plus de soin dans la conception de l'algorithme et l'analyse de l'algorithme pour prouver que le temps d'exécution est polynomial, mais cela peut être fait. Par exemple, le temps d'exécution de l'algorithme de Bareiss est quelque chose comme [en fait, c'est plus complexe que cela, mais prenez cela comme une simplification pour l'instant].
Pour beaucoup plus de détails, voir le blog de Dick Lipton Forgetting Results et Quelle est la complexité temporelle réelle de l'élimination gaussienne? et le résumé de Wikipedia .
Enfin, un mot de prudence. La durée de fonctionnement précise dépend exactement du domaine sur lequel vous travaillez. La discussion ci-dessus s'applique si vous travaillez avec des nombres rationnels. D'un autre côté, si, par exemple, vous travaillez sur le champ fini(les entiers modulo 2), puis élimination de Gauss naïf n'exécuté entemps. Si vous ne comprenez pas ce que cela signifie, vous pouvez probablement ignorer ce dernier paragraphe.
Il existe une formule pour les entrées de la matrice inverse qui donne chaque entrée en tant que rapport de deux déterminants, l'un d'une mineure de la matrice d'origine et l'autre de la matrice d'origine entière. Cela devrait vous aider à limiter la taille des entrées dans la matrice inverse, si vous faites attention, étant donné une notion raisonnable de "taille" (notez que même si vous commencez avec une matrice entière, l'inverse peut contenir des entrées rationnelles).
Cela dit, souvent l'inverse de la matrice est étudié du point de vue de la théorie de la complexité algébrique, dans laquelle vous comptez les opérations de base indépendamment de leur ampleur. Dans ce modèle, on peut montrer que la complexité de la matrice inverse est équivalente à la complexité de la multiplication matricielle, jusqu'aux termes polylogarithmiques; cette réduction peut peut-être aussi vous aider à limiter la taille des coefficients.
Étant donné l'algorithme efficace dans le modèle de théorie de la complexité algébrique, on se demande s'il implique un algorithme tout aussi efficace dans le modèle habituel; se peut-il que, bien que les entrées finales soient de taille polynomiale, le calcul en implique de plus grandes? Ce n'est probablement pas le cas, et même s'il l'était, le problème pourrait peut-être être évité en utilisant le théorème du reste chinois.