Was für Algorithmen haben die Leute, die eine erstaunliche (zähe, seltsame) Komplexitätsanalyse haben, sowohl in Bezug auf die resultierende O-Notation als auch in Bezug auf die Einzigartigkeit ihrer Analyse?
Ich habe (durchaus) ein paar Beispiele:
Das hier ist ziemlich einfach, aber Comb Sort macht mir ein bisschen weh.
Es ist so ein einfacher Algorithmus, der sich größtenteils wie eine übermäßig komplizierte Blasensortierung liest, aber es ist O (n * Log [n]). Ich finde das leicht beeindruckend.
Die Fülle von Algorithmen für schnelle Fourier-Transformationen ist auch beeindruckend, die Mathematik, die ihre Gültigkeit beweist, ist trippy und es hat Spaß gemacht, einige allein zu beweisen.
Ich kann ziemlich einfach die Primzahl-Radix-, Mehrfach-Primzahl-Radix- und Mixed-Radix-Algorithmen verstehen, aber eine, die an Sets arbeitet, deren Größe prim ist, ist ziemlich cool.
2D geordnete Suchanalyse ist ziemlich interessant. Sie haben ein zweidimensionales numerisches Array mit den Zahlen NxN, in dem jede Zeile von links nach rechts sortiert ist und jede Spalte von oben nach unten sortiert ist. Die Aufgabe besteht darin, eine bestimmte Nummer im Array zu finden.
Der rekursive Algorithmus: Wählen Sie das Element in der Mitte, vergleichen Sie mit der Zielzahl, verwerfen Sie ein Viertel des Arrays (abhängig vom Ergebnis des Vergleichs), wenden Sie rekursiv auf die verbleibenden 3 Viertel ist ziemlich interessant zu analysieren / p>
Nicht-deterministisch polynomiale Komplexität erhält meine Stimme, insbesondere mit der (zugegebenermaßen als unwahrscheinlich angesehenen) Möglichkeit, dass sie sich als Polynom herausstellen kann. In der gleichen Weise, alles, was theoretisch von Quanten-Computing profitieren kann (N.B. dieses Set ist keineswegs alle Algorithmen).
Der andere, der meine Stimme erhalten würde, wäre eine gewöhnliche mathematische Operation mit Zahlen mit beliebiger Genauigkeit - hier müssen Sie berücksichtigen, dass die Multiplikation großer Zahlen teurer ist als die Multiplikation kleinerer Zahlen. Es gibt eine Menge Analyse in Knuth (was für niemanden neu sein sollte). Karatsubas Methode ist ziemlich ordentlich: Schneiden Sie die zwei Faktoren durch die Ziffer (A1; A2) (B1; B2) und multiplizieren Sie A1 B1, A1 B2, A2 B1, A2 B2 und kombinieren Sie dann die Ergebnisse. Rekursiv, wenn gewünscht ...
Shell sortieren. Es gibt Unmengen an Varianten mit verschiedenen Inkrementen, von denen die meisten keinen Nutzen haben, außer dass sie Komplexitätsanalyse einfacher .
Tags und Links algorithm time-complexity complexity-theory space-efficiency