Was ist die tatsächliche zeitliche Komplexität der Gaußschen Eliminierung?

72

In einer Antwort auf eine frühere Frage erwähnte ich die verbreitete, aber falsche Annahme, dass die „Gaußsche“ Eliminierung in Zeit abläuft . Während es offensichtlich ist, dass der Algorithmus -Arithmetikoperationen verwendet, kann eine unachtsame Implementierung Zahlen mit exponentiell vielen Bits erzeugen. Nehmen wir als einfaches Beispiel an, wir möchten die folgende Matrix diagonalisieren:O(n3)O(n3)

[2000120011201112]

Wenn wir eine Version des Eliminierungsalgorithmus ohne Division verwenden, bei der nur ganzzahlige Vielfache einer Zeile zu einer anderen hinzugefügt werden, und wir immer an einem diagonalen Eintrag der Matrix drehen, hat die Ausgabematrix den Vektor entlang der Diagonale.(2,4,16,256,,22n1)

Aber wie hoch ist die tatsächliche zeitliche Komplexität der Gaußschen Eliminierung? Die meisten Autoren der kombinatorischen Optimierung scheinen mit „starkem Polynom“ zufrieden zu sein, aber ich bin gespannt, was das Polynom eigentlich ist.

Eine Veröffentlichung von Jack Edmonds aus dem Jahr 1967 beschreibt eine Version der Gaußschen Eliminierung („möglicherweise aufgrund von Gauß“), die in stark polynomieller Zeit abläuft. Die wichtigste Erkenntnis von Edmonds ist, dass jeder Eintrag in jeder Zwischenmatrix die Determinante eines Minors der ursprünglichen Eingangsmatrix ist. Für eine Matrix mit -Bit ganzzahlige Einträge erweist sich , dass seine Edmonds Algorithmus ganze Zahlen mit höchstens erfordert Bits. Unter der „vernünftigen“ Annahme, dass , läuft der Edmonds-Algorithmus in der -Zeit, wenn wir eine ganzzahlige Lehrbucharithmetik verwenden, oder in der -Zeit, wenn wir FFT-basierte Multiplikation für einen Standard-Integer-RAM verwenden, der ausführen kannn×nmO(n(m+logn))m=O(logn)O(n5)O~(n4)O(logn)-Bit-Arithmetik in konstanter Zeit. (Edmonds hat diese Zeitanalyse nicht durchgeführt; er hat lediglich behauptet, sein Algorithmus sei „gut“.)

Ist dies immer noch die beste bekannte Analyse? Gibt es eine Standardreferenz, die eine bessere explizite Zeitbegrenzung oder zumindest eine bessere Begrenzung der erforderlichen Genauigkeit bietet?

Allgemeiner: Wie lang ist die Laufzeit (auf dem Integer-RAM) des schnellsten bekannten Algorithmus zum Lösen beliebiger linearer Gleichungssysteme?

Jeffε
quelle
2
(Einfügen einer heftigen Handwelle) Konnten Sie das Problem der großen Ganzzahlen in diesem speziellen Fall nicht mit Hashing Modulo Small Prime-Tricks umgehen? Der Algorithmus wäre randomisiert, aber immer noch .. Zugegeben, dies beantwortet nicht die Frage, die Sie gestellt haben ...
Suresh Venkat
1
Vielleicht würden die folgenden Referenzen helfen? Lovaszs Vorlesungsskript , Yaps Kapitel über Determinanten (Yap gibt die Bitkomplexität für die Determinantenberechnung über den Bareiss-Algorithmus an). Aus Yaps Buch (Übung 10.1.1 (iii)) ging hervor, dass es nicht bekannt war, ob die Gaußsche Reduktion Zwischenwerte ergab, deren Bitgröße exponentiell anstieg, aber jetzt bin ich mir nicht sicher. O(n3MB[n(logn+L)])
User834
1
Der standardmäßige Gaußsche Eliminierungsalgorithmus teilt die Pivot-Reihe durch das Pivot-Element, bevor spätere Reihen reduziert werden. Die offene Frage bezieht sich auf diese Standardversion. Das Beispiel, das ich zu Beginn meiner Frage gegeben habe, verwendet eine andere Variante, die sich NICHT durch das Pivot-Element teilt.
Jeffs
3
Neugierig. Yaps Zeitbegrenzung für Bereiss 'Algorithmus ist identisch mit der Zeitbegrenzung, die durch Edmonds' Analyse der Gaußschen Elimination impliziert wird.
Jeffs
1
rjlipton untersuchte kürzlich das Gebiet und zitiert die Doktorarbeit von Kannan zu diesem Thema. Ein wesentlicher Bestandteil der Analyse ist die Normalform von Smith
vzn

Antworten:

35

Ich denke, die Antwort lautet , wobei wir die (poly) logarithmischen Faktoren weglassen. Die Bindung wird in "W. Eberly, M. Giesbrecht, P. Giorgi, A. Storjohann, G. Villard. Lösen spärlicher ganzzahliger linearer Systeme. Proc. ISSAC'06, Genua, Italien, ACM Press, 63-70, Juli 2006 ", aber es basiert auf einer Arbeit von Dixon:" Exakte Lösung linearer Gleichungen unter Verwendung von P-adischen Expansionen, John D. Dixon, NUMERISCHE MATHEMATIK, Band 40, Nummer 1, 137-141 ".O~(n3log(A+b))

Elias
quelle
Danke für den Hinweis! Dies beantwortet meine zweite Frage, aber nicht meine erste.
Jeffs
3
Wenn Sie die Pivot-Funktion verwenden, ist die Bitgröße der Zwischenergebnisse für die Gaußsche Eliminierung (GE) polynomisch, es gibt keine exponentielle Explosion. Ich denke das ist Bareiss Ergebnis. Bezüglich der Komplexität von GE gibt es im Buch von Gathen und Gerhard, "Modern Computer Algebra", einen Algorithmus zur Berechnung der Determinante einer Matrix , die auf GE, modularer Arithmetik und chinesischem Restsatz basiert (Abschn. 5.5, S. 101-105). Die Komplexität ist . Ich denke, ein Faktor von könnte mit schneller Arithmetik gespeichert werden. Wenn ich mich nicht irre, ist dies die Grenze, die user834 genannt hat. AO(n4log2A)n
Elias
@ Elias, wie lautet die Definition der Norm in diesem Ausdruck? Ist es der größte absolute Koeffizient? Ist es die Bitgröße? Auch ist dieses Ergebnis für beliebige rationale Matrizen?
Juan Bermejo Vega
13

Ich denke, die Antwort auf Ihre erste Frage lautet auch aufgrund der folgenden Argumente: Edmonds 'Artikel beschreibt keine Variante der Gaußschen Eliminierung aber es beweist, dass jede Zahl, die in einem Schritt des Algorithmus berechnet wird, eine Determinante einer Submatrix von A ist. Nach Schrijvers Buch über die Theorie der linearen und ganzzahligen Programmierung wissen wir, dass, wenn die Codierung von A b Bits benötigt, b inO~(n3log(A+b))O~(log(A)) dann benötigt jede ihrer Subdeterminanten höchstens 2b Bits (Satz 3.2). Um die Gaußsche Elimination zu einem polynomiellen Zeitalgorithmus zu machen, müssen wir uns um die berechneten Quotienten kümmern: Wir müssen gemeinsame Faktoren aus jedem Bruch, den wir in einem Zwischenschritt berechnen, auslöschen, und dann haben alle Zahlen eine lineare Codierungslänge in der Codierungslänge von A.

Matthias Walter
quelle