web-dev-qa-db-fra.com

Quels sont les algorithmes importants pour l'humanité au cours des dernières décennies?

Quels algorithmes les plus importants mondiaux ont contribué la plus à l'humanité au cours des dernières décennies?

Je pensais que ceci est une bonne connaissance générale pour un développeur à connaître.

Mise à jour :
[.____] Si possible, veuillez conserver la réponse à un algorithme de programmation spécifique.
[.____] J'aimerais obtenir une liste des plus importants, un seul algorithme par réponse.
[.____] S'il vous plaît considérez pour indiquer pourquoi l'algorithme est important et important ...

40
Amir Rezaei

Le cryptage clé publique/privé est assez important important. Le commerce de l'Internet serait nulle part comme omniprésent sans cela.

59
Jeremy

Algorithme de Dijkstra

L'algorithme existe dans chaque routeur dans le monde, pour identifier le meilleur itinéraire entre deux nœuds Dans un réseau.

37
Amir Rezaei

transformer rapide Fourier (FFT)

La FFT est une méthode extrêmement importante et largement utilisée de extraction Informations utiles de Signaux échantillonnés.

Une transformée de Fourier rapide (FFT) est un algorithme efficace pour calculer la transformée de Fourier (DFT) discrète et son inverse.

30
Amir Rezaei

Pagerank

Pagerank est un algorithme d'analyse de liaison, nommé d'après la page Larry, utilisé par le Google Moteur de recherche Internet qui attribue une pondération numérique à chaque élément d'un ensemble hyperliété de documents, tels que le World Wide Web, tels que le World Wide Web, dans le but de "mesurer" son importance relative dans l'ensemble.

26
Amir Rezaei

algorithmes de compression de données

En informatique et en théorie de l'information, la compression de données ou le codage de la source est le processus d'encodage des informations à l'aide de moins de bits (ou d'autres unités portant l'information) qu'une représentation non accoûtée utiliserait, grâce à des systèmes de codage spécifiques.

22
Amir Rezaei

Smith-Waterman (et aiguille-Wunsch)

Cela peut être trop éloigné, alors veuillez commenter.

Smith-Waterman: Algorithme d'alignement de la séquence

Je pense que l'un de ces exemples est l'algorithme Smith-Waterman et Wunsch-Wunsch et leurs approximations. Tous font essentiellement la même chose: ils alignement deux ou plus chaînes (séquences). Il y a une signification en biologie. Lorsque des séquences d'ADN ou de protéines sont alignées - les régions de similitude structurelle, fonctionnelle et évolutive sont révélées.

Souffle comme un descendant de Smith-Waterman

Une heuristique qui se rapproche de Smith-Waterman est explosée. Il permet de rechercher des séquences de grandes bases de données pour une similitude biologique. La popularité de l'explosion est vraiment géniale - c'est très probablement l'algorithme le plus utilisé en biologie. Les domaines plus récents de la bioinformatique et de la génomique ont des approximations plus récentes et meilleures des algorithmes Smith-Waterman/Wunsch-Wunsch plus précis que Blast.

L'assemblée du génome comme un descendant de Smith-Waterman

Les approximations à haut débit de Smith-Waterman et des aiguilles-Wunsch qui sont plus rapides que l'explosion sont utilisées pour assembler des génomes à partir de séquençage de fusil de chasse - où le produit de la machine à séquenceurs est une énorme quantité d'ADN lit (milliards) de parties arbitraires du génome qui sont très court (50 à 100 nucléotides). L'approche a été utilisée pour compléter le projet du génome humain. Tout le séquençage moderne est fait de cette façon.

Alignement de la séquence multiple une extension de Smith-Waterman

De nombreux algorithmes d'alignement de séquences multiples existent - ils se rapprochent d'une version multi-séquence du Smith-Waterman/Needleman-Wunsch. Plusieurs séquences sont alignées simultanément en groupe. C'est un problème beaucoup plus difficile que celui des homologues, mais les solutions fournissent beaucoup plus de perspicacité à la fonction biologique, à la structure et à l'histoire évolutive des séquences associées.

14
Aleksandr Levchuk

Siam a nommé ce qui suit comme les algorithmes les plus importants du 20ème siècle:

1946: L'algorithme Metropolis pour Monte Carlo. Grâce à l'utilisation de processus aléatoires, cet algorithme offre un moyen efficace de trébucher vers des réponses aux problèmes trop compliqués pour résoudre exactement.

1947: Méthode Simplex pour la programmation linéaire. Une solution élégante à un problème commun dans la planification et la prise de décision.

1950: Méthode d'itération de la sous-espace de Krylov. Une technique permettant de résoudre rapidement les équations linéaires qui abondent de calcul scientifique.

1951: L'approche décomposition des calculs matriciels. Une suite de techniques d'algèbre linéaire numérique.

1957 :Le ​​compilateur d'optimisation de la Fortran. Tournez le code de haut niveau en un code efficace sur ordinateur lisible.

1959 :Algorithme QR pour l'informatique Eigenvalues. Une autre opération de matrice cruciale faite Swift et pratique.

1962: Algorithmes Quicksort pour le tri. Pour la manipulation efficace des grandes bases de données.

1965: transformée rapide Fourier. Peut-être l'algorithme le plus omniprésent utilisé aujourd'hui, il décompose des formes d'onde (comme son) dans des composants périodiques.

1977 :Détection de la relation entière. Une méthode rapide pour repérer des équations simples satisfaites par des collections de nombres apparemment non liés.

1987 :Méthode Multiole rapide. Une avancée dans la gestion de la complexité des calculs N-corporels, appliquée dans des problèmes allant de la mécanique céleste au pliage des protéines.

Personnellement, je remplacerais Détection de la relation entière avec Pagerank .

13
jason

PageRank, l'aime ou la déteste, mais cela affecte les décisions et les actions de millions de personnes dans le monde entier chez Googling quotidiennement.

9
Maksee

Si je devais énumérer les 3 principaux algorithmes les plus importants utilisés aujourd'hui dans les ordinateurs, je dirais:

  1. Recherche binaire
  2. Quicksort
  3. Algorithme de Dijkstra

La recherche binaire L'algorithme est utilisée constamment pour affiner sur un élément dans une liste triée, la plupart des recherches de l'index utiliseront quelque chose sur ces lignes à un moment donné. Cet algorithme fournit une recherche d'une liste ordonnée dans O (journal N).

Le Quicksort L'algorithme a finalement réussi à obtenir de trier à O (n journal n) Case moyen et O (N ^ 2) Pire affaire. Le tri est l'une des tâches de données les plus courantes dans un ordinateur et l'un des plus coûteux et l'amélioration de la tri des cas moyen était un énorme pas en avant de l'efficacité.

Algorithme de Dijkstra Comme on a été dit produit un chemin le plus court entre les points dans un graphique. Ceci est largement utilisé pour toutes sortes d'applications de routage, plus largement en ce qui concerne Internet lui-même garantissant que le chemin le plus rapide grâce à la bande interconnectée des routeurs interconnectés est utilisé.

9
Orbling

Théorème de Bayes '

Il a probablement contribué le plus à maintenir la quantité de spam à gaspiller du temps dans ma boîte de réception à un niveau gérable.

Bien sûr, je suis qu'il a été utilisé dans de nombreuses autres applications intéressantes, mais le meurtre de spam est mon préféré.

8
JohnFx

Timsort

C'est l'algorithme de tri maintenant utilisé dans Python , Java 7 et Android

Essentiellement:

  • O(N log N) worst case (does not degenerate)
  • O (n) pour une liste presque triée (en fait N-1 exactement sur la liste déjà triée)

Et la beauté de ça? C'est Stable ! Et donc approprié pour le tri multipass selon divers critères.

Au fait, si quelqu'un a une implémentation C++ optimisée sur la main ...

7
Matthieu M.

Tous les algorithmes utilisés pour la résolution de problèmes de visibilité dans une animation d'ordinateur 3D me semblent cruciaux.

Algorithme de peintre

L'algorithme du peintre, également connu sous le nom de remplissage prioritaire, est l'une des solutions les plus simples au problème de la visibilité dans les graphiques de l'ordinateur 3D. Lors de la projection d'une scène 3D sur un plan 2D, il est nécessaire de décider quels polygones sont visibles et qui sont cachés.

z-tampon

En informatique, la mise en mémoire tampon Z est la gestion des coordonnées de profondeur d'image en graphiques tridimensionnels (3D), généralement effectuées dans du matériel, parfois dans des logiciels. C'est une solution au problème de la visibilité, qui est le problème de décider quels éléments d'une scène rendue sont visibles et qui sont cachés. L'algorithme du peintre est une autre solution commune qui, bien que moins efficace, peut également gérer des éléments de scène non opaques. La tampon z est également connue sous le nom de tampon de profondeur.

Détermination cachée de la surface

Dans les graphiques de l'ordinateur 3D, la détermination de surface cachée (également appelée élimination de la surface cachée (HSR), l'abattage d'occlusion (OC) ou la détermination de la surface visible (VSD) est le procédé utilisé pour déterminer quelles surfaces et parties de surfaces ne sont pas visibles d'un certain point de vue. . Un algorithme de détermination de surface caché est une solution au problème de la visibilité, qui était l'un des premiers problèmes majeurs dans le domaine des infographie 3D. Le processus de détermination de la surface cachée est parfois appelé cachette, et un tel algorithme est parfois appelé cible . L'analogue pour le rendu de ligne est l'élimination de la ligne cachée. La détermination de la surface cachée est nécessaire pour rendre une image correctement, de sorte qu'on ne puisse pas regarder à travers les murs de la réalité virtuelle, par exemple.

6
bman

Quel que soit celui dont vous avez besoin pour résoudre votre problème actuel.

3
mipadi

Soundex est un algorithme phonétique pour indexer des noms par son.

3
sal

(( Algorithme Viterbi

Utilisé à l'origine pour décoder des codes de correction d'erreur convolutionnelle, il est maintenant utilisé pour résoudre une large classe de problèmes de reconnaissance (allant de la reconnaissance vocale à la bioinformatique). Vous pouvez le trouver dans plusieurs périphériques de communication et de stockage.

3
Giacomo Verticale

Runge-kutta Intégration numérique. Sans cela, de nombreuses simulations ne seraient pas possibles. Pas de programme spatial, pas d'énergie nucléaire, pas de balistique, pas de simulation sportive, pas de gilets anti-bullet, aucune simulation de test de crash, aucune simulation de mouvement de fluide, aucune simulation d'interaction chimique, aucun bâtiment résistant au séisme ... La liste se passe.

3
ja72

MP

Bien qu'il s'agisse d'un terme plus général qu'un algorithme spécifique, j'avais mentionné des mp3 comme l'agrégation des différents algorithmes et techniques qui travaillent en coopération pour générer ce format audio à perte de temps.

Il a sûrement été très important de "l'ère numérique".

3
Jens Hoffmann

Tri de l'algorithme.

2
tia
2
ysolik

Tri par insertion

Facile à mettre en œuvre, très rapide sur de petites listes et utilisé dans la fusion des implémentations de tri/rapide pour les accélérer. C'est stable et fonctionne dans O(n) sur des listes triées (lorsqu'il est trié dans l'ordre croissant).

1
Oliver Weiler

Filtre Kalman

Il est fortement utilisé dans la navigation, le suivi ciblé (pour presque tous les capteurs: radar, sonar, flir, charar). Un manuel affiche une application dans un contrôleur de lecteur de disque. Les systèmes de contrôle robotiques utilisent fréquemment des filtres de Kalman.

1
John R. Strohm

Gauss-Jordan dans la matrice Computer

1
xport

Algorithmes d'indexation comme B-Tree, B + -TREE, Index de hachage, Index d'arborescence binaire, etc. Pour indexer une quantité énorme de données.

0
xyz

langue parlée et écrite.

Ils sont actuellement l'un des algorithmes les plus efficaces pour transférer des connaissances d'une chose à une autre. Sans langage, la société civile ne pouvait exister et les informations ne pouvaient pas être transmises.

0
Malfist

La structure de données tas et ses algorithmes associés pour la construction et la maintenance du tas.

Et montrez un certain respect pour Quicksort. Même si ce n'est pas toujours le genre de choix, c'est l'un des algorithmes fondamentaux du développement historique de l'informatique et constitue un excellent moyen de compréhension de la réursion et de l'analyse des algorithmes. C'est beau et oui, je l'aime.

Mapreduce comme moyen de diviser, de conquérir et de paralléler le traitement des grands ensembles de données.

0
Jay Elston