Il est dit quun programme inclut des algorithmes, mais si nous nous référons à leur définition, un algorithme est une séquence dinstructions écrites sur effectuer une tâche spécifiée et un programme informatique est aussi une séquence dinstructions pour effectuer une (certaines) tâches avec un ordinateur.
Alors quest-ce qui différencie un programme dun algorithme? est-ce aussi un type dalgorithme?
En fait, je cherche des définitions formelles pour un algorithme et un programme informatique afin de pouvoir les distinguer les uns des autres ou identifier les algorithmes dans un programme.
Mise à jour : Jai remarqué dans Wikipedia par une définition informelle (au moins syntaxiquement) tout programme est un algorithme.
Une définition informelle pourrait être « un ensemble de règles définissant précisément une séquence dopérations. » qui inclurait tous les programmes informatiques , y compris les programmes qui neffectuent pas de calculs numériques. Généralement, un programme nest quun algorithme sil sarrête finalement .
Réponse
Je vais donner la même réponse que celle que jai donnée la dernière fois que cette question a été posée.
Tout dabord, comprenez quil ny a pas de bonne définition formelle du terme « algorithme » au moment de la rédaction. Le mot clé ici est « formel ».
Cependant, il y a des gens intelligents qui travaillent dessus.
Ce que nous savons, cest que quel que soit un «algorithme», il se situe quelque part entre «fonction mathématique» et «programme informatique».
Une fonction mathématique est notion formelle dun mappage des entrées aux sorties. Ainsi, par exemple, « tri » est un mappage entre une séquence déléments pouvant être commandés et une séquence déléments pouvant être commandés du même type, qui mappe chaque séquence à sa séquence ordonnée. Cette fonction pourrait être implémenté en utilisant différents algorithmes (par exemple, tri par fusion, tri par tas). Chaque algorithme, à son tour, pourrait être implémenté en utilisant différents programmes (même avec le même langage de programmation).
Donc, la meilleure façon de gérer ce quest un « algorithme » est quil sagit dune sorte de classe déquivalence sur les programmes, où deux les programmes sont équivalents sils font «essentiellement la même chose». Deux programmes qui implémentent le même algorithme doivent calculer la même fonction, mais linverse nest pas vrai.
De même, il existe une classe déquivalence entre les algorithmes, où deux algorithmes sont équivalents sils calculent la même fonction mathématique .
Le plus difficile dans tout cela est dessayer de saisir ce que nous entendons par «essentiellement la même chose».
Il y a des choses évidentes que nous devrions inclure. Par exemple, deux programmes sont essentiellement les mêmes sils ne diffèrent que par le renommage des variables. La plupart des modèles de langages de programmation ont des notions natives d «équivalence» (par exemple, la réduction bêta et la conversion eta dans le calcul lambda), nous devrions donc les ajouter aussi.
Quelle que soit la relation déquivalence que nous choisissons, cela nous donne une structure . Les algorithmes forment une catégorie du fait quils sont la catégorie quotient des programmes. Certaines relations déquivalence intéressantes sont connues pour donner lieu à des structures catégoriques intéressantes; par exemple, la catégorie des algorithmes récursifs primitifs est un objet universel dans la catégorie des catégories. Chaque fois que vous voyez une structure intéressante comme celle-là, vous savez que cette ligne denquête sera probablement utile.
Commentaires
- Merci pour votre réponse précise, juste une autre question. Si nous considérons un programme, quoi quil fasse, il obtient toujours des entrées et suit certaines instructions, et donne des résultats au fur et à mesure de son exécution. Ils peuvent même ne ‘ résoudre aucun problème (comme nous lappelons), mais il sagit toujours dun mappage. pourraient-ils être un algorithme connu, je veux dire nimporte quel programme?
- Si je ‘ vous lis correctement, vous ‘ demande si une définition formelle dun » algorithme » doit ou ne doit pas comporter la condition quil doit être » utile « . Je dirais » non « , ne serait-ce que parce quil ‘ est impossible de formaliser cela notion.
- désolé! mon anglais nest pas bien, alors vous dites » non » à quoi? vous admettez quil est ‘ impossible de formaliser lutilité dun programme, et par définition, tout programme est un algorithme? ou vous dites quil ‘ est nécessaire que nous considérions lutilité à côté de lalgorithme?
- Je ne ‘ Je pense qu’une définition formelle d’un algorithme » » devrait exiger quil soit utile, car » utile » peut ‘ t être formellement défini.
- Votre réponse est la plus utile dans ce fil +1. Je crois que par » essentiellement la même chose « , vous voulez dire » sémantiquement équivalent « . De plus, je pense que tous les programmes sont essentiellement des algorithmes (comme le dit OP), puisque tous les programmes sont des implémentations qui mappent une entrée à une sortie, même si ce mappage est implicite. Comme vous lavez dit, tout dépend de la perspective.
Réponse
En fin de compte, la différence est la perspective . Un programme est un programme: une séquence dinstructions dans un langage, peut-être un langage de programmation ou des instructions au niveau de la machine. Les algorithmes sont généralement décrits à un niveau plus élevé que les instructions machine ou les instructions de langage de programmation, mais à quel point un niveau est assez flexible. Par exemple, dans certaines circonstances, « Trier le tableau, puis regarder lélément $ k $ th » est une très bonne description dun algorithme pour trouver le $ k $ th plus grand objet dun tableau; dans dautres circonstances, vous voudrez peut-être spécifier beaucoup plus de détails sur la façon dont le tri a lieu.
Comme vous le dites, un algorithme est quelque chose comme « un processus ou un ensemble de règles à suivre dans les calculs ou tout autre problème -solution dopérations, notamment par ordinateur. » Donc, littéralement, chaque programme est un algorithme. Cependant, nous parlons généralement de programmes implémentant des algorithmes. Habituellement, lors de la description dun algorithme, nous évitons les détails de bas niveau sur la manière exacte dont les choses sont implémentées, en supposant quun programmeur compétent serait capable de limplémenter dans la langue de son choix.
Commentaires
- Je pense que lalgorithme précis est lié au concept mathématique, au lambda-calcul ou à la machine de Turing, je ne sais toujours pas ‘ ce que cest langage dabstraction? les mathématiques ou un langage naturel avec de nombreuses déclarations floues
- @Ahmad Algorithm est un concept informel. Il na pas de définition formelle. Dans un sens, cela ‘ est comme une preuve mathématique, ce qui est différent dune preuve formelle dans un système de preuve formel. Nous pensons que les preuves informelles peuvent être » étoffées » en preuves formelles dans nimporte quel système de preuve formel choisi (suffisamment fort), comme tout Lalgorithme peut être entièrement implémenté dans nimporte quel langage de programmation (Turing-complete).
Answer
Algorithmes dans le Turing – létat desprit complet est généralement spécifié par lentrée et la sortie. Les vrais programmes font plus; ils
- communiquent avec lutilisateur,
- communiquent avec dautres machines,
- réagissent à lenvironnement,
- ne se terminent pas et sont toujours utiles,
et plus encore. Ces choses ne sont généralement pas prises en compte dans les algorithmes ou la théorie du calcul, mais sont essentielles pour la plupart des programmes.
Commentaires
- Cest un très bon point. Mais voulez-vous dire quelque chose comme » généralement spécifié comme moyen de mapper lentrée à la sortie « ? Il suffit de spécifier lentrée et la sortie ‘ t: par exemple, le tri par fusion et le tri rapide produisent la même sortie à partir de nimporte quelle entrée mais ne sont ‘ considérés être le même algorithme.
- @DavidRicherby Je pensais à la spécification au sens PL; nous ne spécifions ‘ rien dautre, donc les algorithmes ne peuvent rien faire dautre. Bien sûr, nous devons donner plus que la spécification pour décrire un algorithme concret.
- Bons points, mais si nous admettons qu’au bout du compte tout programme est un algorithme, je ne ‘ t savoir comment ces questions que vous avez abordées sont mesurées sur un algorithme. Peut-être un sujet sur lIA?!
- Qui ladmettrait, et pourquoi? Et quentendez-vous par mesure ici? (Et je ne vois certainement pas ‘ langle AI ici.)
- @Raphael Je peux ladmettre (en regardant la syntaxe, tous les programmes se ressemblent, ce sont des séquences dinstructions, ou des mappages dentrée-sortie), je ne sais ‘ pas comment dautres fonctionnalités dun programme (celles que vous avez adressées) peuvent être extraites de cette définition. par exemple la différence entre le tri rapide et MATLAB ou Windows Media Player !!
Answer
-
Un algorithme est une approche systématique pour résoudre un problème spécifique.
-
Un programme est un ensemble dinstructions quun ordinateur doit suivre.
Un programme na donc même pas besoin de résoudre un problème.Je suis sûr que nous pouvons tous penser à plusieurs programmes qui ont causé plus de problèmes quils nen ont résolus. Un programme peut être une implémentation de nombreux algorithmes, ou un algorithme peut être implémenté en patchant ensemble de nombreux programmes. Un programme peut même ne contenir aucun algorithme. Par exemple, le programme vide qui sort simplement, ou peut-être même un Hello World, pourrait être considéré comme un programme sans algorithme.
Puisquun algorithme résout un problème spécifique, il se concentre sur un concept global spécifique. Un algorithme fournit donc des étapes abstraites pour traiter un ensemble dinformations associées en un ensemble différent dinformations dérivées. Un programme nexige pas que ses constituants soient liés du tout conceptuellement. Par exemple, un programme peut avoir un œuf de Pâques, mais une chose correctement appelée algorithme ne devrait pas. Vous pouvez avoir un virus ou un cheval de Troie caché dans un programme, mais pas dans un algorithme. Le plus proche quun algorithme puisse y parvenir serait quelque chose comme une porte dérobée dans un algorithme de chiffrement, où la faille planifiée fait partie de la relation dinformation établie par lalgorithme.
Et enfin, un programme, tel quel court pour un programme informatique, nécessite tautologiquement un ordinateur. Un algorithme ne le fait pas. Si je sépare systématiquement les chemises, pantalons et chaussettes de mon linge avant de les ranger, cest un algorithme. Il traite des entrées et sorties associées, peut être décrit dans un organigramme et a des conséquences calculables en termes defficacité (par exemple, le nombre de vêtements à comparer pour trouver des chaussettes assorties).
Réponse
Un algorithme est un concept ou une idée. Cest une approche formelle pour résoudre un problème. Les algorithmes peuvent être exprimés, ou mis en œuvre, dans une variété de langage de programmation (généralement, presque nimporte quel langage peut implémenter nimporte quel algorithme). Pour quelques exemples, vous devriez lire les Algorithmes de tri sur Wikipedia.
Un programme informatique est une séquence spécifique dinstructions dans un langage de programmation spécifique . Un programme peut contenir limplémentation de nombreux algorithmes. Excel est un programme, mais ses capacités de tri sont la manifestation dun algorithme.
Réponse
Un algorithme est un ensemble dopérations étape par étape autonome à effectuer pour résoudre un problème spécifique ou une classe de problèmes.
Un programme informatique est une séquence de des instructions conformes aux règles dun langage de programmation spécifique, écrites pour effectuer une tâche spécifiée avec un ordinateur.
Les algorithmes sont généraux et doivent être traduits en langage de programmation spécifique (implémenté).
Commentaires
- Mais tout lintérêt de la question est quun programme (soit son code source, soit le binaire compilé ) est » un ensemble dopérations étape par étape autonome à effectuer pour résoudre un problème ou une classe de problèmes spécifique. »
- Mais ce nest pas ‘ t. Un programme nest pas e ose opérations, mais une implémentation de celles-ci: quelque chose qui les exécute dans un contexte particulier. Par exemple. lutilitaire Unix
sort
nest pas un algorithme de tri, il utilise un algorithme de tri.
Réponse
Un algorithme exprime notre idée ou notre solution pour un problème spécifique dans une approche étape par étape. Il ne sagit que de résolution de problèmes et dapproche compréhensible par lhomme, pas pour un système informatique
Le programme est des instructions étape par étape qui sont implémentées pour résoudre le problème par le système informatique. Il doit être compréhensible non seulement par le programmeur, mais aussi par lordinateur.
Commentaires
- Bienvenue dans Computer Science Stack Exchange. Veuillez lire cs.stackexchange.com/tour.if ce nest pas encore fait.
Répondre
Les autres réponses ici, je pense, manquent un point important. La définition de « algorithme » qui ma été enseignée comprenait lexigence que la procédure sarrête sur toutes les entrées . Naturellement, cela fait de « programme » une classe de procédures plus large que « algorithme », puisque certains programmes sarrêtent sur toutes les entrées et dautres pas.
Commentaires
- Ce nest pas universel. La définition qui ma été enseignée ne ‘ pas inclure cette exigence.
Réponse
Voici quelques façons de tracer la ligne entre un algorithme et un programme:
Objectif significatif
Les programmes sont écrits avec un objectif et représentent une tentative objectif. Les algorithmes peuvent être considérés comme des outils pour atteindre cet objectif.
Par exemple. un tournevis est un algorithme pour modifier létat dune vis mais le tournevis lui-même na pas pour but de le faire.Le but est dans la tête de lopérateur tournevis qui tient le programme comme pour mettre en place des étagères.
Logique métier
Ce point est fortement lié à lobjectif dun programme. Étant donné que les programmes ont des objectifs, ils contiennent inévitablement des éléments du monde réel tels que des dates, des mesures, des technologies, des noms spécifiques, etc.
Les algorithmes, en revanche, ne contiennent ni logique métier ni bits de monde réel et au lieu de fonctionner sur des valeurs spécifiques agissent sur des variables.
Par exemple en ce sens, vous pouvez comparer une fonction mathématique comme f(x) = x^2
qui est abstraite et opère sur des variables à une recette de cuisine qui contient des valeurs précises (au moins une pour référence).
Résultat
Ce point est fortement lié à la logique métier dun programme. Un agent (comme un utilisateur de navigateur Web) consomme le résultat dun programme et non le résultat dun algorithme.
Par exemple. le consommateur dune recette de cuisine consomme le gâteau et non le résultat dune crème à fouetter ou dun four chauffant.
Commentaires
- Il vaudrait peut-être mieux dire que le tournevis na pas ‘ lintention de tourner les vis? Dans langlais ordinaire, nous dirions certainement quun tournevis a pour but de tourner des vis: tourner des vis est exactement ce pour quoi il a été conçu.
- Aussi, je ‘ Je ne sais pas trop ce que vous entendez par » logique métier » (de nombreux programmes nont rien à voir business) ou en disant qu’un algorithme » ne contient ni logique métier ni bits du monde réel « . Par exemple, je pourrais parfaitement formuler un algorithme de chemin le plus court en termes de villes et de routes plutôt que de sommets et darêtes. Lalgorithme ‘ n » contient-il pas … bits du monde réel » ?
- @DavidRicherby, vous avez raison, ma formulation est ambiguë. Ce que je voulais dire, cest un objectif significatif . Tourner des vis pour tourner des vis est inutile, tout comme trier un tableau qui nest jamais utilisé. Par logique métier, jentends toute la logique du programme à lexception de la logique utilitaire et de la pile technologique standard, cest-à-dire toute la logique qui met en œuvre réellement le but du programme, cest-à-dire que la logique métier de la cuisson dun gâteau consiste à mélanger les ingrédients et la cuisson et ninclut pas lapprentissage du mélange ou de la cuisson ( qui est la logique utilitaire réutilisée dans ce cas).
- @DavidRicherby, comme pour bits du monde réel , je veux dire actualisation cest-à-dire quun programme contrairement à un algorithme doit communiquer dune certaine manière avec le monde physique. Un algorithme, par contre, peut être un concept purement mathématique.
Answer
I je suis presque sûr que les autres réponses sont assez bonnes pour prendre les devants, mais voici comment je vois la différence entre un algorithme et un programme
-
Un algorithme consiste simplement en les étapes (indépendantes de la machine) à suivre dans un certain ordre pour résoudre un problème.
-
Un programme est un jeu dinstructions pour un type spécifique de machine pour mettre en pratique un algorithme .
Par exemple.
Disons que vous avez un algorithme qui a une étape pour atteindre un endroit particulier avant de faire une autre étape.Maintenant, la façon dont cette étape sera effectuée nest pas exactement définie.Vous pouvez choisir de marcher ou de courir ou de prendre un bus pour le faire, mais cela dépend de la façon dont vous choisissez de le mettre en œuvre (quel est votre prog ram).
Vous pouvez dire quun algorithme est une abstraction dun programme, cest-à-dire quil manque les détails exacts mais présente un plan pour faire quelque chose .