Welche Algorithmen werden am häufigsten verwendet?
Bitte schreiben Sie einen Algorithmus pro Antwort und versuchen Sie, Ihre Antwort kurz zu halten (ein oder zwei Zeilen).
ds.algorithms
big-list
Kaveh
quelle
quelle
Antworten:
Ist die schnelle Fourier-Transformation das algorithmische Problem, das von realen Computersystemen am häufigsten pro Tag gelöst wird? Es muss nah sein. Also würde ich den Cooley-Tukey-FFT-Algorithmus nominieren .
quelle
Multiplikation.
Vielleicht ist einer der ältesten nicht-ganz-trivialen Algorithmen, und ein Problem, das häufiger als FFT gelöst.
quelle
Dijkstra und Bellman-Ford kürzesten Weg Algorithmen. Im Internet sind ab 2010 mindestens 35.000 autonome Systeme (AS) aktiv. Auf jedem AS wird entweder ein Verbindungsstatus-Routing-Protokoll (Dijkstra) oder ein Entfernungsvektor-Routing-Protokoll (Bellman-Ford) ausgeführt. Die Router innerhalb eines AS aktualisieren normalerweise ihre Tabellen regelmäßig alle paar Minuten, z. B. 10.
Die Anzahl der Hinrichtungen von Dijkstra & Bellman-Ford pro Tag beträgt also mindestens 5 Millionen. Und das ist nur von den Routern.
Wir haben nicht kürzesten Weg Berechnungen von Google Maps und die Gleichen gezählt, die 10-mal so viele leicht bilanzieren soll. Eine halbe Milliarde Hinrichtungen pro Tag ist nicht weit hergeholt.
quelle
Schnelle Sorte
quelle
Binäre Suche
quelle
Ich denke, der am häufigsten verwendete Algorithmus ist Parity Check (oder vielleicht CRC oder eine Art fehlerkorrigierender Code), weil sie in jedem RAM-Zugriff erscheinen.
quelle
Simplex-Algorithmus - ist dies nicht immer noch konkurrenzfähig mit den besten Innenpunktmethoden? Wenn ja, muss es viel benutzt werden.
quelle
Im Allgemeinen sollten Sie sich die Kanellakis-Preisträger ansehen, um Ideen mit theoretischem und praktischem Gewicht zu erhalten.
quelle
Anpassung regulärer Ausdrücke durch Konvertierung in endliche Automaten - ich glaube, grep funktioniert in diesem Sinne.
quelle
Tiefensuche (DFS)
quelle
Es ist schwer, sich weiter verbreitete Algorithmen als jene in modernen Implementierungen von TCP vorzustellen : dh Vermeidung von Überlastungen , schnelle Neuübertragung . Das hängt jedoch davon ab, wie man bestimmt, was die Kriterien für einen Algorithmus erfüllt ...
quelle
Gaußsche Eliminierung Wird in der Praxis immer noch verwendet, oder? Wenn nicht durch das ersetzen, was am häufigsten zur Lösung linearer Systeme verwendet wird ...
quelle
SHA-1 (und Hash-Funktionen im Allgemeinen). Wahrscheinlich schlagen die meisten anderen Algorithmen in Bezug auf die Anzahl der Ausführungen.
quelle
B + tree-bezogene Algorithmen werden für die Datenbankinhalte verwendet
quelle
Scheduling-Algorithmen. Sie werden von jedem Benutzergerät und Server weltweit verwendet. Es wird eine Reihe von Variationen verwendet. Ich habe viele Referenzen für "Mehrebenen-Feedback-Warteschlange" gefunden.
quelle
Diese Antwort wird "am häufigsten" in Bezug auf die tatsächlichen CPU-Zyklen interpretiert.
Als ich in den 70er Jahren Computer lernte, habe ich gelesen, dass die überwiegende Mehrheit der Computerzyklen (read: mainframe) dem Sortieren gewidmet war. Geschäftsanwendungen erfordern eine umfassende Sortierung für Analyse und Berichterstellung. Ich kann mir nicht vorstellen, dass sich das sehr geändert hat, aber natürlich muss der Aufstieg anderer Apps - E-Mail, Textverarbeitung usw. - die Mischung verändert haben. Diese Sortierungen sind normalerweise stabile Sortierungen (keine Quicksort-Sortierungen), da zum Erstellen von Subsortierungen nach Feldfolgen sortiert werden muss.
Streng genommen ist der am häufigsten verwendete Algorithmus ohne Zweifel, was auch immer vom Windows-Systemwartevorgang ausgeführt wird, wenn nichts anderes läuft ;-).
quelle
Sprase-Matrix-Vektor multiplizieren
... ist das rechnerische Arbeitstier hinter der Lösung nahezu aller linearen Systeme. Infolgedessen wird es ausgeführt, wann immer
Die meisten FLOPs eines Supercomputers oder Clusters befinden sich in einem spärlichen mat-vec.
quelle
Newtons Methode. Es wird für die Berechnung von Quadratwurzeln und für die Berechnung von Divisionen verwendet. Es kann zur linearen Programmierung verwendet werden. Im Allgemeinen ist es das Arbeitspferd der (konvexen) Optimierung. Es kann verwendet werden, um Differentialgleichungen in der Physik zu lösen, indem die Aktion / Energie minimiert wird.
quelle
Hashing und rot-schwarze Bäume.
Sie sind bereits in STL (hash_map, map) implementiert, und jeder Programmierer weiß, dass ein solcher Container unglaublich praktisch ist, wenn Sie Informationen speichern möchten, die von einem beliebigen Datentyp indiziert wurden.
quelle
Fehlerkorrekturalgorithmen wie Reed-Solomon.
http://en.wikipedia.org/wiki/Error-correcting_code#List_of_error-correcting_codes http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction
quelle
Dynamische Programmierung .
Ich denke, dass DP "häufiger" verwendet wird als andere Algorithmen, die bisher in der Umfrage genannt wurden. Ich schließe "öfter" in dem Sinne, wie oft ein nicht-triviales Algorithmuskonzept vom Programmierer im wirklichen Leben implementiert wurde, anstatt wie oft eine bestimmte Implementierung eines Algorithmus aufgerufen wurde.
DP ist vielseitig und hat viele Gesichter. Manchmal habe ich es etwas unbewusst benutzt und später festgestellt, dass ich DP mache.
Natürlich gibt es Dinge, die noch häufiger vorkommen als Dynamic Program, aber es handelt sich meistens um Datenstrukturen (Array, verknüpfte Liste, Hash).
quelle
String Matching, wird ständig in der Anwendungssoftware und auf Datenbankebene verwendet.
Im genauen Fall gibt es mehrere ziemlich komplizierte Algorithmen (KMP, Boyer-Moore), von denen einige eine sublineare erwartete Laufzeit erreichen. Sie sind auch aus CS-Sicht interessant zu studieren.
Noch interessanter ist wahrscheinlich die ungefähre Zeichenfolgenübereinstimmung, d. H. Die Ausrichtung. Sie wissen, „autocorrecting“ Funktionen? Auch die Suche in verrauschten String-Daten (z. B. DNA) erfolgt mithilfe von Alignments.
quelle