Wolfram Language

Die Komplexität eines Problems ermitteln

Wenn man die Komplexitätsklasse eines Algorithmus bezeichnen möchte, gibt man immer die einfachste Funktion an, die AsymptoticEqual (großes ) der exakten Laufzeitfunktion ist. Man kann dies auch so ausdrücken, dass jede Funktion sowohl AsymptoticLessEqual (großes ) als auch AsymptoticGreaterEqual (großes ) ist als die andere ist. Diese Konzepte veranschaulicht der Strassen-Algorithmus, der erste subkubische Algorithmus zur Matrizenmultiplikation.

Der Algorithmus besteht aus vier Schritten: jede der Matrizen wird in 4 Teilmatrizen zerlegt, und bildet 14 lineare Kombinationen aus den 8 Teilmatrizen. Es werden 7 Ziffernpaare multipliziert und deren Ergebnisse summiert. Die Laufzeit besteht also aus konstanter Zeit für die Matrixzerlegung, für die Bildung linearer Kombinationen in Schritt 2 und 4 und für den dritten Schritt.

Lösen Sie die Rekursionsgleichung:

Obwohl das Ergebnis kompliziert ist, gilt .

Dementsprechend gilt und .

Beachten Sie, dass , der Algoritmus ist daher subkubisch.

Vergleichen Sie die Wachstumsrate der Rechenzeit des naiven kubischen Algorithmus und des Strassen-Algorithmus.

Verwandte Beispiele

en es fr ja ko pt-br zh