Quels algorithmes sont utilisés le plus souvent?
Veuillez écrire un seul algorithme par réponse, essayez de garder votre réponse courte (une ou deux lignes).
ds.algorithms
big-list
Kaveh
la source
la source
Réponses:
La transformation de Fourier rapide est-elle le problème algorithmique résolu la plupart du temps par des systèmes informatiques réels? Il faut que ce soit proche. Je proposerais donc l' algorithme FFT de Cooley-Tukey .
la source
Multiplication.
Peut-être l'un des plus anciens algorithmes pas tout à fait triviaux, et un problème qui est résolu plus souvent que la FFT.
la source
Algorithmes de chemin le plus court de Dijkstra et Bellman-Ford . Il y a au moins 35 000 systèmes autonomes (AS) actifs sur Internet en 2010. Chaque AS exécute soit un protocole de routage à état de liaison (Dijkstra), soit un protocole de routage à vecteur de distance (Bellman-Ford). Les routeurs d'un AS mettent généralement à jour leurs tables périodiquement toutes les quelques minutes, par exemple 10.
Ainsi, le nombre d'exécutions de Dijkstra & Bellman-Ford par jour s'élève à au moins 5 millions. Et cela vient uniquement des routeurs.
Nous n'avons pas compté les calculs de chemin les plus courts à partir de Google Maps et les goûts qui devraient facilement représenter 10 fois plus. Un demi-milliard d'exécutions par jour n'est pas exagéré.
la source
Tri rapide
la source
Recherche binaire
la source
Je pense que l'algorithme le plus utilisé est Parity Check (ou peut-être CRC ou une sorte de code correcteur d'erreurs), car ils apparaissent dans chaque accès RAM.
la source
Algorithme Simplex - n'est-ce pas encore compétitif avec les meilleures méthodes de point intérieur? Si c'est le cas, il doit être beaucoup utilisé.
la source
Plus généralement, vous devriez regarder les lauréats du prix Kanellakis pour des idées qui ont un poids théorique et pratique.
la source
Correspondance d'expressions régulières par conversion en automates finis - je crois que grep fonctionne dans ce sens.
la source
Profondeur en premier (DFS)
la source
Il est difficile de penser à des algorithmes plus largement utilisés que ceux des implémentations modernes de TCP : évitement de la congestion , retransmission rapide . Bien que cela dépende de la façon dont on détermine ce qui répond aux critères d'un algorithme ...
la source
Élimination gaussienne Ceci est toujours utilisé dans la pratique, n'est-ce pas? Sinon, remplacez-le par ce qui est le plus souvent utilisé pour résoudre les systèmes linéaires ...
la source
SHA-1 (et les fonctions de hachage en général). Probablement mieux que la plupart des autres algorithmes en termes de nombre d'exécutions.
la source
Des algorithmes liés à l'arbre B + sont utilisés pour les éléments de base de données
la source
Algorithmes de planification. Ils sont utilisés par tous les appareils et serveurs utilisateurs du monde entier. Un certain nombre de variantes sont utilisées, j'ai trouvé beaucoup de références pour la "file d'attente de rétroaction à plusieurs niveaux"
la source
Cette réponse interprète "le plus souvent" en termes de cycles CPU réels.
Lorsque j'apprenais l'informatique dans les années 70, je me souviens avoir lu que la grande majorité des cycles informatiques (lire: mainframe) étaient consacrés au tri. Les applications métier nécessitent un tri étendu pour l'analyse et le reporting. Je n'imagine pas que cela a beaucoup changé, mais bien sûr, la montée en puissance d'autres applications - e-mail, traitement de texte, etc. - a dû modifier le mélange. Ces tris sont généralement des tris stables (pas Quicksort) en raison de la nécessité de trier les successions de champs pour créer des sous-tris.
À strictement parler, cependant, l'algorithme le plus souvent utilisé est, sans aucun doute, tout ce qui est exécuté par le processus d'attente du système Windows lorsque rien d'autre ne se passe ;-).
la source
Sprase Matrix Vector Multiply
... est le cheval de bataille informatique derrière la solution de presque tous les systèmes linéaires. En conséquence, il est exécuté chaque fois
La plupart des FLOP sur n'importe quel supercalculateur ou cluster sont dépensés à l'intérieur d'un mat-vec clairsemé.
la source
La méthode de Newton. Il est utilisé pour calculer les racines carrées, pour calculer la division. Il peut être utilisé pour effectuer une programmation linéaire. Plus généralement, c'est le cheval de bataille de l'optimisation (convexe). Il peut être utilisé pour résoudre des équations différentielles en physique en minimisant l'action / l'énergie.
la source
Hachage et arbres rouge-noir.
Ils sont déjà implémentés en STL (hash_map, map), et chaque programmeur sait qu'un tel conteneur est incroyablement pratique lorsque vous souhaitez stocker des informations indexées par un type de données arbitraire.
la source
Algorithmes de correction d'erreurs, tels que 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
la source
Programmation dynamique .
Je pense que DP est utilisé "plus souvent" que les autres algorithmes cités dans l'enquête jusqu'à présent. Je déduis «plus souvent» dans le sens de la fréquence à laquelle un concept d'algorithme non trivial a été implémenté par le programmeur dans la vie réelle, plutôt que combien de fois une implémentation particulière d'un algorithme a été invoquée.
DP est polyvalent et a de nombreux visages. Parfois, je l'ai utilisé un peu inconsciemment, puis j'ai réalisé plus tard que je faisais du DP.
Bien sûr, il y a des choses qui sont encore plus courantes que Dynamic Program, mais ce sont principalement des structures de données (tableau, liste chaînée, hachage).
la source
String Matching, utilisé tout le temps dans les logiciels d'application et au niveau de la base de données.
Dans le cas exact, il existe plusieurs algorithmes assez impliqués (KMP, Boyer-Moore) dont certains atteignent un temps d'exécution sublinéaire attendu. Ils sont également intéressants à étudier d'un point de vue CS.
La correspondance approximative des chaînes, c'est-à-dire les alignements, est probablement encore plus intéressante. Vous connaissez les fonctionnalités de "correction automatique"? En outre, les recherches dans les données de chaîne bruyantes (par exemple, l'ADN) sont effectuées à l'aide d'alignements.
la source