En mathématiques, en informatique et dans d'autres doctrines connexes, l' algorithme est défini comme un ensemble de préceptes établis et sans ambiguïté, trouvés méthodiquement et de manière limitée qui permettent d'effectuer des calculs, de traiter certaines informations, de fournir des solutions à des problèmes et d'effectuer diverses activités.. Une fois que vous partez d'un état initial et d'une entrée, en suivant les procédures requises, l'état final est atteint et un résultat est obtenu. Les algorithmes font l'objet de recherches algorithmiques et bien que beaucoup ne le croient pas, ils peuvent également être utilisés dans tous les aspects de la vie quotidienne.
Qu'est-ce qu'un algorithme
Table des matières
En informatique, il est généralement défini comme une succession d' instructions séquentielles, dans lesquelles certains processus sont exécutés afin de répondre à certaines décisions ou besoins. De la même manière, les algorithmes sont fréquemment utilisés en logique et en mathématiques, en plus d'être à la base de l'élaboration de manuels d'utilisation, de brochures illustratives, entre autres. L'un des plus distingués en mathématiques est celui attribué au géométriste Euclide, pour atteindre le plus grand diviseur commun de deux entiers positifs, et la «méthode gaussienne» bien connue pour déterminer des systèmes d'équations linéaires.
En ce qui concerne l'informatique, ce calcul peut être connu comme la séquence de lignes directrices à suivre pour la détermination d'un problème à l'aide d'un ordinateur.
Par conséquent, l'algorithmique est comprise comme une discipline qui se concentre sur l'analyse et la conception d'algorithmes. En considérant le premier, il cherche à examiner des propriétés telles que sa justesse et son efficacité par rapport au temps et à l'espace, pour comprendre les problèmes qui peuvent être résolus de manière algorithmique. Quant au second, il cherche à étudier les paradigmes déjà établis et propose de nouveaux exemples.
L'algorithme est situé au centre de la progression du calcul et est important dans les différents domaines de celui-ci. De cette manière, il serait impossible pour des services aussi performants que Facebook et Google de gérer l'ampleur des informations dont ils disposent sans la collaboration d'algorithmes ou de structures de données spécialisées. Cependant, dans la vie quotidienne, des algorithmes sont également utilisés, un exemple en est l'allumage du poêle, car il commence au moment où la personne va à la cuisine, l'observe et a sa fin, lorsqu'elle procède à l'allumer.
Caractéristiques d'un algorithme
Malgré le fait que l'algorithme soit connu comme l'ensemble ordonné et fini des différentes étapes menant à la résolution d'un problème, on dit que la nature de ces difficultés varie en fonction du contexte dans lequel elles se trouvent, de cette manière, il y a des problèmes chimique, mathématique, philosophique, entre autres. Ainsi, on peut dire que sa nature est variée et que son exécution par ordinateur n'est pas nécessaire. Au-delà de tout ce qui a été expliqué précédemment, les algorithmes ont des caractéristiques élémentaires pour déterminer ce qu'ils sont aujourd'hui et seront mentionnés ci-dessous.
- Les directives contenues dans un algorithme doivent être spécifiques pour ne pas laisser de place à tout type de confusion, cela signifie que les instructions correspondantes doivent être suivies correctement ou, au contraire, la représentation graphique du flux dans lequel vous vous inscrivez ne facilitera pas la solution correct.
- Il doit être en parfaite définition, en essayant autant que possible de le suivre autant de fois que nécessaire, afin d'obtenir le même résultat et dans le cas où le contraire se produirait, l'algorithme ne sera pas fiable et ne servira pas de guide lors de la prise de décision.
- Ils sont connus pour la particularité d'être finis, ils se terminent généralement à un moment donné et plus tard ils lancent un résultat à la fin de chaque étape. Si l'algorithme s'étend indéfiniment, revenant à un point initial qui ne peut jamais être résolu, il y a présence d'un paradoxe ou de la fameuse «boucle» de répétitions.
- Enfin, on dit que la lisibilité des algorithmes est l'élément clé, car si son argument est inintelligible, les instructions correspondantes n'ont pas pu être suivies, en plus, cela implique une formulation directe, claire et laconique du texte que l'on retrouve dans chacun.
Parties d'un algorithme
Chaque opération algorithmique comporte trois parties différentes qui sont soumises à la structure de base d'un système et ce sont:
- Entrée: également appelée en-tête ou point de départ, c'est l'instruction initiale qui représente la genèse de l'algorithme et celle qui motive sa lecture.
- Processus: aussi appelé déclaration, c'est l'élaboration précise offerte par l'algorithme et c'est fondamentalement le tronc de ses clés pour la formulation des instructions.
- Sortie: dans cette dernière phase se trouvent les instructions spécifiques déterminées par l'algorithme, par exemple ses commandes ou résolutions.
Exemples d'algorithmes
Les exemples courants de calculs mathématiques incluent 2 + 3 = 5 pour l'addition et 15-9 = 6 pour la soustraction. Une autre façon de visualiser des algorithmes simples est dans les recettes de cuisine, car elles décrivent un processus spécifique et ordonné, par exemple, «vous devez d'abord placer une demi-casserole d'eau à chauffer, puis vous devez ajouter une pincée de sel et enfin le poivre sera divisé pour extraire les graines et les veines. " Dans ce modèle, un début, un processus et une fin sont présentés, qui sont essentiellement ce qui définissent les algorithmes.
Types d'algorithmes
Parmi les différents types d'algorithmes existant dans le monde, l'accent est mis sur ceux qui sont classés selon un système de signes et d'autres selon leur fonction. L'algorithme est fondamentalement la solution la plus connue pour la résolution de tout problème particulier et selon ses stratégies et ses fonctions, il existe différents types de ceux-ci, parmi lesquels se distinguent le marquage dynamique, inverse, brutal, opportuniste., aléatoire, etc. En plus des algorithmes mentionnés ci-dessus, il y en a des milliers qui conviennent pour résoudre des difficultés dans n'importe quel domaine.
Selon votre système de signalisation
Les qualitatifs et quantitatifs se situent dans cette catégorie.
- Les algorithmes qualitatifs se caractérisent par des éléments verbaux, comme par exemple les instructions ou le "pas à pas" reconnu qui sont conférés oralement, comme des recettes pour les arts culinaires ou des procédures pour effectuer un travail manuel.
- Les algorithmes quantitatifs sont tout le contraire des algorithmes qualitatifs, en raison de la présence de certains éléments numériques et de l'utilisation des mathématiques pour effectuer des calculs, par exemple, lorsque la racine carrée est trouvée ou que des équations sont résolues.
Dans cette classification, il existe également des algorithmes informatiques et non informatiques. Les calculs sont effectués au moyen d'un ordinateur et se caractérisent par leur complexité au point de nécessiter la réalisation d'une machine, en plus de cela, ce sont des algorithmes quantitatifs qui peuvent être optimisés. Les non-informatiques n'ont pas l'obligation d'être exécutés au moyen d'une machine ou d'un ordinateur; un exemple clair de ceci est la programmation d'une télévision.
Selon sa fonction
Les éléments suivants sont situés dans cette classification.
1. Algorithme de marquage
Cela se caractérise par l'utilisation de l' automatisation pour fixer les prix de manière diligente, en se concentrant sur des facteurs tels que le comportement des utilisateurs et est également connu comme la capacité à déterminer automatiquement les prix pour la dévaluation des composants, afin d'augmenter les bénéfices des utilisateurs. les vendeurs. Il joue un rôle très important dans les pratiques courantes des industries du transport aérien depuis le début des années 1990.
L'algorithme de marquage se distingue en étant l'une des pratiques les plus courantes dans les industries hautement concurrentielles, faisant référence aux agences de voyages ou à ces établissements en ligne. Ce type d'algorithme peut devenir extrêmement complexe ou relativement simple, car dans de nombreux cas on constate qu'ils sont optimisés ou autodidactes avec la continuité de certains tests. Au-delà de tout cela, les algorithmes de marquage peuvent également devenir impopulaires auprès de la clientèle, car les individus ont tendance à valoriser à la fois la stabilité et l'équité.
2. Algorithmes probabilistes
Ce sont ceux dans lesquels la manière dont les résultats sont obtenus dépend des probabilités, ceux-ci sont communément appelés algorithmes aléatoires.
Dans certaines applications, la gestion de ce type d'opération est courante, par exemple, lorsque le comportement de tout système existant ou imaginé est simulé dans le temps, ce qui permet d'obtenir une solution fortuite. Dans d'autres circonstances, le problème à résoudre est généralement déterministe mais il existe la possibilité de le transformer en un problème fortuit, afin de le résoudre en appliquant l'algorithme de probabilité. La chose positive à propos des aléatoires est que leur application ne nécessite pas d'études mathématiques très sophistiquées.
En outre, au sein de ce groupe, il existe trois types principaux connus sous le nom de numérique, Monte Carlo et Las Vegas.
- Les algorithmes numériques peuvent fournir un résultat approximatif du problème et sont généralement appliqués en ingénierie.
- Les algorithmes de Monte Carlo peuvent donner la bonne ou la mauvaise solution et avoir une certaine marge d'erreur et enfin.
- Les algorithmes de Las Vegas se distinguent en ne laissant jamais de réponse incorrecte, en fait, ils trouvent la bonne solution ou simplement vous informent de l'échec possible.
La programmation dynamique fait référence à la méthode dans laquelle l'algorithme calcule les résultats. Parfois, les solutions de certains éléments qui posent des problèmes dépendent des résultats d'autres problèmes plus petits. Donc, pour résoudre ces problèmes, les mêmes valeurs doivent être recalculées pour résoudre les plus petits sous-problèmes, mais cela peut créer un gaspillage de cycles. Pour résoudre ce problème, la programmation dynamique peut être utilisée et dans ce cas la solution de chaque sous-problème est rappelée, pour utiliser cette même valeur au lieu de la répéter plusieurs fois.
3. Algorithmes heuristiques
Ils se distinguent par la recherche de solutions et même ainsi ils ne garantissent pas que la meilleure des réponses sera trouvée, pour cette raison, ils peuvent être considérés comme des algorithmes approximatifs. Ceux-ci peuvent être utilisés lorsque trouver une solution par une voie normale est considérée comme impossible. Les heuristiques fournissent les utilisations qui seront expliquées ci-dessous. Dans la planification, ils sont utilisés pour planifier des activités dans un court laps de temps, dans la conception, ils sont utilisés pour délimiter les systèmes électriques ou numériques et dans la simulation, ils sont utilisés pour vérifier certaines procédures.
4. Algorithmes de retour en arrière
Ils sont connus comme des stratégies récursives qui résolvent des problèmes tels que des énigmes, des labyrinthes ou des pièces similaires, dans lesquelles une recherche approfondie est effectuée pour trouver une solution possible. Son nom fait référence au fait que dans les enquêtes faites pour trouver un résultat, il revient toujours au point précédent pour pouvoir tester des alternatives. Celles-ci sont généralement révoquées pour observer leur impact sur l'économie, sur les marchés, sur le marquage des prix, sur certaines opérations et même sur la société elle-même.
5. Algorithme gourmand
Il est connu sous le nom de destructeur ou de gourmand et il est applicable dans les problèmes d'optimisation, à chaque étape de cet algorithme un choix logique et optimal est fait pour aboutir à la meilleure des solutions globales. Cependant, il faut tenir compte du fait qu’une fois qu’un jugement est rendu, on ne peut absolument rien faire pour le corriger ou le changer à l’avenir. Cette opération porte ce nom car à chaque étape, la meilleure fraction capable «d'avaler» est choisie sans se soucier de ce qui se passe par la suite.
Propriétés d'un algorithme
Divers auteurs ont tenté de définir des algorithmes de manière formelle en utilisant des modèles mathématiques. Cependant, ces spécimens sont étroitement liés à un type particulier d'informations qui comprend des nombres, des symboles et certains graphiques, tout en fonctionnant sur une grande quantité de distribution de données. En général, la part commune de chacune des définitions est résumée dans les trois propriétés suivantes:
Énoncé du problème
La résolution de problèmes au moyen d'un ordinateur peut consister en un processus dans lequel un problème est décrit et un programme capable de le résoudre peut être développé. Ce processus nécessite l'analyse du problème, la conception d'un algorithme et sa transformation en programme, ainsi que ses performances et sa validation. Les deux premières étapes sont les plus complexes de ce processus, mais une fois que vous avez examiné le problème et obtenu un algorithme capable de le résoudre, votre tâche consiste principalement à le traduire dans le langage de programmation souhaité.
Analyse de la solution générale
Une fois le problème défini, il est temps d'analyser les éléments suivants:
- Les informations des billets qu'ils nous fournissent.
- Les résultats souhaités.
- Le domaine de travail, déclarations ou autres éléments nécessaires.
L'analyse des algorithmes est connue comme la partie la plus importante de la théorie plus large de la complexité de calcul, car elle fournit des calculs théoriques pour les ressources dont tout algorithme a besoin pour résoudre un problème de calcul donné. Lors d'une enquête théorique, il est courant de calculer ses complications dans un sens asymptotique pour obtenir une taille d'entrée suffisamment grande. La borne supérieure asymptotique ainsi que les notations thêta et oméga sont utilisées à cette fin et il convient de noter que la mesure non asymptotique peut être informatisée.
Des mesures d'efficacité précises sont vraiment utiles pour ceux qui utilisent réellement les algorithmes, car ils ont plus de précision et cela leur permet de déterminer le temps qu'il faudra pour s'exécuter. Pour certaines personnes comme les créateurs de jeux vidéo, la constante cachée peut faire une grande différence entre le succès et l'échec. Les évaluations de temps peuvent dépendre de la façon dont une certaine étape est définie et pour que l'analyse ait un sens, il faut garantir que le temps est nettement limité par une constante.
Elaboration de l'algorithme
Pour mener à bien le développement d'une opération, il est important qu'une série de procédures soit effectuée pour se conformer à la résolution d'un problème lui-même. Pour commencer, une analyse préalable de la difficulté doit être effectuée et cela se fait à travers une étude qui démontre le vrai fonctionnement du problème bien avant tout algorithme. Par conséquent, la définition des exigences est évaluée, dans cette étape, vous devez avoir une idée claire des problèmes à résoudre, qu'il s'agisse de la somme de deux nombres, de l'ordre d'une liste de nombres, etc.
Plus tard, l'identification respective des modules est exécutée, car la mise en œuvre correcte des algorithmes en dépend pour apporter des solutions possibles aux exigences identifiées ci-dessus.
Enfin, le calcul est mis en œuvre dans un langage de programmation compréhensible par un ordinateur afin qu'il soit capable de comprendre les instructions qu'il modélise et ainsi de les exécuter, obtenant le résultat attendu. Dans cette dernière procédure, il est possible de parler d'un programme qui est composé d'une série d'instructions qui s'ordonnent les unes après les autres et parviennent à résoudre des exigences établies.
Il est important de mentionner qu'en temps séquentiel, les algorithmes exécutent leur fonction dans un temps discrétisé et cherchent à définir les séquences d'états de calcul dans chaque entrée considérée comme valide. Dans l'état abstrait, ces opérations sont des éléments indépendants et on considère que chez elles les structures d'ordre primordial peuvent devenir invariantes sous isomorphisme. Dans l'exploration bornée, les transitions d'un état à un autre sont complètement établies par une explication permanente et finie, dans laquelle entre un état et le suivant, seul le nombre limité de termes de l'état courant est pris en compte.
Il ne faut pas non plus oublier que les algorithmes sont généralement exprimés à travers des langages de programmation «pseudo-codes» le langage habituel et même les organigrammes bien connus. De même, il est important de mentionner que les algorithmes jouent un rôle fondamental dans le calcul en raison de leur représentation des données sous forme de séquences de bits. Sous un autre angle, un programme est défini comme l'algorithme qui exprime à l'ordinateur les étapes spécifiques qu'il doit suivre pour mener à bien certaines activités. En revanche, apprendre à écrire un pseudocode facilite la programmation et sera donc expliqué plus loin.
Les langages de programmation sont connus comme un langage formel ou artificiel car ils ont des règles de grammaire bien définies, ils ont la capacité de fournir au programmeur la possibilité de textualiser une série d'instructions ou des successions de règlements sous forme d'algorithmes dans le but pour garder un contrôle sur le comportement physique et logique de l'ordinateur, de cette manière, les différents types d'informations peuvent être atteints. Cet ensemble de préceptes écrits au moyen d'un langage de programmation est désigné comme un programme.
Les langages de programmation sont généralement constitués d'un ensemble de symboles et de règles grammaticales et sémantiques qui définissent les structures actuelles du langage et leur signification. D'un autre point de vue, les langages informatiques incluent également les langages de programmation, un exemple clair en est le HTML, qui est celui qui remplit certaines instructions pour exécuter le contenu de différents documents. Le langage de programmation peut permettre la spécification précise des données qui doivent être exploitées par un logiciel spécifique dans un large éventail de circonstances.
D'autre part, le pseudocode est le langage de description algorithmique qui utilise les conventions élémentaires d'un vrai langage de programmation, mais qui est conçu pour la lecture humaine au lieu de la lecture à travers une machine, en maintenant l'indépendance de tout autre type de langage de programmation. Le pseudo-code ignore les détails qui ne sont pas considérés comme essentiels à la compréhension humaine de l'algorithme, tels que les codes système, les déclarations de variables et même certains sous-programmes. De cette manière, le langage de programmation cherche à se compléter avec des descriptions précises en langage naturel ou avec des notations mathématiques compactes.