web-dev-qa-db-fra.com

Qu'est-ce qu'un algorithme?

Quel est exactement un algorithme, comme dans ce que signifie l'algorithme? Le peu que je comprends le mot, c'est que ce n'est pas spécifique à une langue particulière, ni à une structure de conception, c'est-à-dire les principes les plus fondamentaux (donc je suppose que cette question me donne l'air stupide).

L'une des "options" que je me comprends, c'est que cela signifie la méthode d'obtenir quelque chose, qui pourrait être écrite comme une liste de pseudocode.

Lorsque j'écris plus de code compliqué, je pense que ce qui doit être fait, avec quoi, et comment j'y retournerais (pas dans un langage de programmation), puis écrivez cela dans le code. Est-ce bon moyen d'y aller, et c'est que quelque chose à faire avec des algorithmes?

(Je voulais demander ici plutôt sur Stackoverflow, car il ne s'agit pas d'un problème/langue spécifique plus, je reçois le sentiment que la majorité des gens ici connaissent la "Pourquoi", ou au moins les réponses ici sont plus détaillées, plutôt que sur Stackoverflow Où c'est différent, je suis désolé si j'aurais dû demander là-bas)

12
Jonathan.

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 de fin défini.

19
John Bode

C'est en fait une question assez intéressante et encore 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 de la communauté de Microsoft9:

Comme vous pouvez le constater, votre question même est en réalité 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.

15
Jörg W Mittag

n algorithme est comme une bonne recette de cuisson. 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 sans ambiguïté des étapes que vous devez faire résoudre un problème particulier. Tout ce que vous pouvez écrire dans le langage de programmation de votre choix pourrait être considéré comme un algorithme - mais généralement le terme n'est utilisé que pour les tâches logiques ou mathématiques communes, telles que le tri ou la recherche.

4
Alexander Gessler

Un algorithme est un ensemble de règles ou de processus (dans un calcul) utilisé pour la résolution de problèmes. Fondamentalement, vous avez 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 atteindre une solution.

Si vous êtes comme - Edsger W. Dijkstra , vous écrivez votre algorithme sur un morceau de papier et de travailler/affinera l'algorithme sur papier jusqu'à ce que vous soyez satisfait de vos algorithmes. Sinon (surtout lors de la rédaction de documentations), un organigramme est utilisé pour représenter schématiquement le flux d'un algorithme/processus. Cela permet aux autres de critiquer l'organigramme et d'améliorer si besoin d'être (sans vous soucier de ce que la langue de programmation est nécessaire).

Je ne sais pas si cela répond à votre question.

2
Buhake Sindi

Algorithme C'est la combinaison d'étapes séquentielles (ces étapes peuvent être des calculs, des tâches de traitement de données et de raisonnement) utilisent pour résoudre un problème de manière très simple et efficace.

Il est conçu plus efficacement qu'il peut être exprimé dans une quantité finie d'espace et de temps. Nous pouvons la mettre en œuvre 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 devrait avoir explicitement défini des ensembles d'entrées et de sorties. Un algorithme doit être en ordre séquentiel avec des opérations sans ambiguïté. Il doit avoir un point final, c'est-à-dire qu'il s'arrête dans une quantité de temps finie. Cliquez ici pour en savoir plus sur la conception et l'analyse de l'algorithme

1
Mohd Junaid

Algorithme: Un ensemble bien ordonné d'opérations qui sont 1) sans ambiguïté et 2) efficacement calculables, de sorte que l'exécution des opérations à partir du premier produit un résultat après un nombre fini d'opérations.

1
ThomasMcLeod

Imo personne ne sait tout à fait :) J'ai vu le terme appliqué uniquement aux fonctions de calcul mathématique, à toute Fonction qui prend des entrées et produit une sortie, et n'importe quoi qui prend une entrée et effectue une sorte de fonctionnement dessus.

Voulez-vous envisager de tout/tout ce qui suit comme un algorithme?

  1. Une fonction qui calcule le taux d'intérêt d'un prêt sur une période de 20 ans
  2. Logique commerciale qui vérifie si toutes les informations ont été entrées sur une demande de prêt
  3. Une fonction Finder qui interroge une base de données pour un objet client
  4. Une fonction "assistant" qui nettoie et formate la saisie de données
  5. Une fonction qui analyse un fichier XML et mappe des données sur des objets métier
  6. Une classe qui les apporte et les écrit dans un fichier texte
0
Wayne Molina

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, c'est précisément défini. Juste en lisant la marche, vous savez ce que vous devez faire et comment le faire. Plus précisément, vous pouvez l'écrire dans un langage de programmation que vous connaissez et assurez-vous que le fragment de programme correspond exactement à l'étape.

Séquence: Les étapes sont exécutées dans une commande spécifiée. Les étapes peuvent être exécutées plus d'une fois en fonction des données (boucles) ou non exécutées du tout en fonction des données (si les déclarations). Les algorithmes parallèles imposent un ordre partiel sur les étapes, donc je suis trop simplifiant ici. Il serait plus correct de le décrire comme un ensemble partiellement commandé qu'une séquence, mais je voulais garder les mots un peu plus simples. En outre, il est facilement possible d'intégrer un ensemble partiellement commandé dans une commande complète.

Résultat: un état de fin ou une valeur. Il ne faut pas être prévisible à l'avance, mais cela doit être une fin définitive satisfaisant à une condition. Cela signifie qu'un système d'exploitation n'est pas un algorithme, bien qu'il en utilise beaucoup d'entre eux.

Finit: Un algorithme est garanti d'arrêter de temps en temps, au moins sur une machine pouvant fonctionner assez longtemps. Ce n'est pas nécessairement garanti de s'arrêter d'un temps prévisible et il n'est pas garanti que cela s'arrête avant l'élargissement du soleil et devient rouge sur une machine existante. Cela signifie également qu'un système d'exploitation n'est pas un algorithme, comme 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 de temps en temps. (Il est possible d'avoir un algorithme qui s'arrête dans une durée inconnue. Supposons que la conjecture de Goldbach a été prouvée mathématiquement fausse, dans une preuve non constructive, il y avait donc un nombre pair> 2 ce n'était pas la somme de deux nombres premiers . Un algorithme qui a simplement testé les chiffres, même finirait éventuellement terminer, bien que personne ne sache quand.)

L'algorithme est un genre de chose intentionnellement abstraite, nous ne considérons donc pas des questions comme "est-elle physiquement possible d'exécuter cela avant la mort thermique de l'univers?". Ils seraient trop difficiles à répondre. S'il concerne les opérations informatiques, il est facile de le mettre en œuvre dans un langage de programmation.

0
David Thornley

Un algorithme est une idée, une méthode, une technique, des "intelligents" pour le calcul ou l'exécution d'une tâche de nature abstraite, mais comme il s'exécute sur des ordinateurs dans le monde réel, nous Aspire pour cela utiliser aussi peu de ressources que possible, qui sont, dans le monde informatique, le temps et la mémoire.

0
JasonGenX

Si je devais donner une définition générale, je dirais qu'un algorithme est une formule de résolution d'un problème de calcul plus complexe que et finit par être plus efficace que la solution de force évidente/brute.

En outre, 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 toute langue Turing-Complete peut mettre en œuvre n'importe quel algorithme que tout autre langage Turing-complet peut mettre en œuvre.

0
Mason Wheeler

J'utilise le terme pour décrire une formule pour résoudre un problème spécifique. La formule ne doit pas nécessairement être écrite en mathématiques ou avoir une relation 1: 1 avec une méthode. Dans les algorithmes scolaires et les structures de données sont étroitement liés et peuvent être écrits comme des formules mathématiques ou prouvées à l'aide de preuves.

0
P.Brian.Mackey

Un algorithme est une abstraction d'un programme informatique et consiste en un ensemble d'instructions permettant d'obtenir une tâche bien définie dans un nombre fini d'étapes, bien que la liaison sur le nombre de pas pourrait être très grande et que les étapes individuelles pourraient être complexes ( des tâches finies) à part entière. Bien qu'il existe des programmes (corrects) qui sont globalement connus non algorithmiques, ils fonctionnent tous en répétant des morceaux algorithmiques dans certains modèles. (Plus intéressant sont les programmes dont le statut de résiliation n'est pas connu, mais la plupart des programmeurs ne traitent pas de telles choses intentionnellement; je sais que je ne le fais pas!)

0
Donal Fellows