Qu'est-ce qu'un algorithme, exactement, que signifie l'algorithme? Le peu que je comprends, c'est qu'il n'est pas spécifique à une langue particulière ou à un modèle de conception, mais plutôt l'un des principes les plus fondamentaux (donc je suppose que cette question me donne l'air stupide).
L'une des "options" que j'ai pour le comprendre, c'est que cela signifie la méthode pour faire quelque chose, qui pourrait être écrite comme une liste en pseudocode.
Quand j'écris du code plus compliqué, je pense ce qui doit être fait, avec quoi et comment j'y arriverais (pas dans un langage de programmation), puis j'écris cela en code. Est-ce une bonne façon de procéder et est-ce que cela a quelque chose à voir avec les algorithmes?
(Je voulais demander ici plutôt sur Stackoverflow, car il ne s'agit pas d'un problème / d'une langue spécifique et j'ai l'impression que la majorité des gens ici connaissent le `` pourquoi '', ou du moins les réponses ici sont plus détaillées, plutôt que sur Stackoverflow là où c'est différent, je suis désolé si j'aurais dû demander là-bas)
la source
Réponses:
Un algorithme est une séquence finie d'instructions bien définies pour calculer une fonction (ou exécuter une procédure) qui se termine dans un état final bien défini.
la source
C'est en fait une question assez intéressante, et en fait toujours une question de recherche ouverte.
Yuri Gurevich, l'un des géants de la théorie des algorithmes, donne actuellement une série de conférences vidéo sur le site Web communautaire de Channel9:
Comme vous pouvez le voir, votre question est en fait le titre de la deuxième conférence. Cependant, je vous suggère fortement de les regarder tous les trois.
Le premier, en particulier, contient quelques exemples d'algorithmes qui invalident à peu près toutes les définitions données dans la plupart des autres réponses ici.
la source
Un algorithme est comme une bonne recette de cuisine . Vous avez des entrées, des étapes intermédiaires bien définies et obtenez un résultat final.
Appliqué à la programmation, il s'agit d'une description non ambiguë des étapes à suivre pour résoudre un problème particulier. Tout ce que vous pouvez écrire dans le langage de programmation de votre choix peut être considéré comme un algorithme - mais le terme n'est généralement utilisé que pour des tâches logiques ou mathématiques courantes, telles que le tri ou la recherche.
la source
Un algorithme est un ensemble de règles ou de processus (dans un calcul) utilisé pour la résolution de problèmes. Fondamentalement, il y a un problème, vous voulez une solution, et le processus de cette solution est un algorithme. Un algorithme a un ensemble fini de règles / processus pour parvenir à une solution.
Si vous êtes comme Edsger W. Dijkstra , vous écrirez votre algorithme sur un morceau de papier et élaborerez / affinerez l'algorithme sur papier jusqu'à ce que vous soyez satisfait de vos algorithmes. Sinon (en particulier lors de l'écriture de documentations), un organigramme est utilisé pour représenter schématiquement le flux d'un algorithme / processus. Cela permet à d'autres de critiquer l'organigramme et de l'améliorer si besoin est (sans se soucier du langage de programmation nécessaire).
Je ne sais pas si cela répond à votre question.
la source
Algorithme: un ensemble d'opérations bien ordonnées qui sont 1) sans ambiguïté et 2) effectivement calculables de telle sorte que l'exécution des opérations à partir de la première produit un résultat après un nombre fini d'opérations.
la source
Algorithme Il s'agit de la combinaison d'étapes séquentielles (ces étapes peuvent être des tâches de calcul, de traitement de données et de raisonnement) utilisées pour résoudre un problème de manière très simple et efficace.
Il est conçu de la manière la plus efficace pour pouvoir s'exprimer dans un espace et un temps limités. nous pouvons l'implémenter dans n'importe quel langage de programmation.
Propriétés d'un algorithme: voici les principales propriétés d'un algorithme: -
Un algorithme doit avoir un nom unique. Il doit avoir des ensembles d'entrées et de sorties explicitement définis. Un algorithme doit être en ordre séquentiel avec des opérations sans ambiguïté. Il doit avoir un certain point final, c'est-à-dire qu'il s'arrête dans un laps de temps fini. cliquez ici pour en savoir plus sur la conception et l'analyse d'algorithmes
la source
J'utilise le terme pour décrire une formule pour résoudre un problème spécifique. La formule n'a pas nécessairement besoin d'être écrite en mathématiques ou d'avoir une relation 1: 1 avec une méthode. À l'école, les algorithmes et les structures de données sont étroitement liés et peuvent être écrits sous forme de formules mathématiques ou éprouvés à l'aide de preuves.
la source
Un algorithme est une abstraction d'un programme informatique et se compose d'un ensemble d'instructions pour réaliser une tâche bien définie en un nombre fini d'étapes, bien que la limite du nombre d'étapes puisse être très grande et les étapes individuelles peuvent être complexes ( finies) à part entière. Bien qu'il existe des programmes (corrects) globalement connus, non algorithmiques, ils fonctionnent tous en répétant des morceaux algorithmiques dans un certain modèle. (Les programmes dont le statut de terminaison n'est pas connu sont plus intéressants, mais la plupart des programmeurs ne traitent pas de telles choses intentionnellement; je sais que non!)
la source
OMI, personne ne le sait vraiment :) J'ai vu le terme appliqué uniquement aux fonctions de calcul mathématique, à toute fonction qui prend des entrées et produit des sorties, et à tout ce qui prend des entrées et effectue une sorte d'opération dessus.
Considérez-vous que tout ou partie des éléments suivants est un algorithme?
finder
fonction qui interroge une base de données pour un objet Clientla source
Un algorithme est une idée, une méthode, une technique, "intelligente" pour le calcul ou l'exécution d'une tâche qui est de nature abstraite, mais comme il s'exécute sur des ordinateurs dans le monde réel, nous aspirons à ce qu'il utilise le moins de ressources possible , qui sont, dans le monde informatique, le Temps et la mémoire.
la source
Un algorithme est une séquence d'étapes bien définies qui produisent un résultat en temps fini.
Étape bien définie: c'est quelque chose que vous pouvez faire, ou calculer, qui est défini avec précision. Juste en lisant l'étape, vous savez ce que vous avez à faire et comment le faire. Plus précisément, vous pouvez l'écrire dans un langage de programmation que vous connaissez et être sûr que le fragment de programme correspond exactement à l'étape.
Séquence: les étapes sont exécutées dans un ordre spécifié. Les étapes peuvent être exécutées plus d'une fois selon les données (boucles) ou ne pas être exécutées du tout selon les données (si les instructions). Les algorithmes parallèles n'imposent qu'un ordre partiel aux étapes, donc je simplifie trop ici. Il serait plus correct de le décrire comme un ensemble partiellement ordonné qu'une séquence, mais je voulais garder les mots un peu plus simples. En outre, il est facilement possible d'incorporer un ensemble partiellement commandé dans une commande complète.
Résultat: un état ou une valeur de fin. Il ne doit pas nécessairement être prévisible à l'avance, mais il doit être une fin définie satisfaisant à une condition. Cela signifie qu'un système d'exploitation n'est pas un algorithme, bien qu'il en utilise beaucoup.
Fini: Un algorithme est garanti de s'arrêter un jour, au moins sur une machine qui peut fonctionner assez longtemps. Il n'est pas nécessairement garanti de s'arrêter dans un délai prévisible, et il n'est pas garanti qu'il s'arrête avant que le soleil ne se dilate et ne vire au rouge sur une machine existante. Cela signifie également qu'un système d'exploitation n'est pas un algorithme, car il fonctionnera idéalement pour toujours. J'ai vu le mot «procédure» utilisé pour décrire quelque chose qui serait un algorithme si nous étions sûrs qu'il s'arrêterait un jour. (Il est possible d'avoir un algorithme qui s'arrêtera dans un laps de temps inconnu. Supposons, par exemple, que la conjecture de Goldbach ait été prouvée mathématiquement fausse, dans une preuve non constructive, donc il y avait un nombre pair> 2 qui n'était pas la somme de deux nombres premiers Un algorithme qui testait simplement les nombres pairs finirait alors par se terminer,
L'algorithme est une sorte de chose intentionnellement abstraite, donc nous ne considérons pas des questions comme "Est-il physiquement possible de l'exécuter avant la mort thermique de l'Univers?". Ils seraient trop difficiles à répondre. S'il s'agit d'opérations informatiques, il est facile de l'implémenter dans un langage de programmation.
la source
Si je devais donner une définition générale, je dirais qu'un algorithme est une formule pour résoudre un problème informatique qui est plus complexe que la solution évidente / force brute et qui finit par être plus efficace.
De plus, il est important de noter qu'un algorithme n'est pas un code source spécifique; c'est le calcul lui-même. Entre autres choses, cela signifie que tout langage Turing-complet peut implémenter n'importe quel algorithme que tout autre langage Turing-complete peut implémenter.
la source