Qu'est-ce qu'un algorithme?
C'est une séquence de règles / instructions qui sont décrites avant de faire une approche pour résoudre un problème spécifique, une garantie pour résoudre le problème. Par exemple, prenez un exemple de point de passage ferroviaire.
Un algorithme devrait:
- Soyez bien défini et bien ordonné - Les instructions fournies dans un algorithme doivent être compréhensibles et bien définies.
- Avoir des opérations sans ambiguïté, c'est-à-dire que chacune des étapes d'un algorithme doit être suffisamment simple pour ne pas nécessiter de simplification supplémentaire
- Avoir une opération effectivement calculable.
Source de l'image: d262ilb51hltx0.cloudfront.net/
Comprendre l'algorithme
Source de l'image : goo.gl/images/u76bFe
Il y a un capteur qui détecte l'arrivée d'un train, dont la sortie pourrait être 2 résultats
- Le train arrive
- Le train n'arrive pas
Le résultat du premier résultat est transmis à une action où il conseille de fermer les portes tandis que le résultat du deuxième résultat est à nouveau mis à l'épreuve en l'envoyant à la déclaration initiale. De plus, la sortie d'action qui était le résultat de la première condition est mise à l'épreuve pour vérifier si le train est complètement parti. Si la réponse est oui, les portes sont ouvertes, tandis que si elle est négative, les portes restent fermées. Nous en discuterons davantage et travaillerons sur les sujets suivants (les sous-ensembles / blocs de construction et le fonctionnement d'un algorithme)
Comment l'algorithme facilite-t-il le travail?
Comme nous le savons, il s'agit d'un plan pour résoudre un problème. Eh bien, si nous n'avons pas de plan, notre approche pour résoudre un problème complexe pourrait échouer à la première tentative et même si cela résout le problème, les chances sont très moindres que ce soit une solution optimale à ce problème.
Alors que d'un autre côté, si nous créons un algorithme avant de résoudre un problème, disons que nous créons quelques algorithmes et les trions en fonction de la solution optimale qu'ils fournissent, cela garantirait de résoudre le problème donné. C'est la raison pour laquelle partout, avant de résoudre un problème, un algorithme est d'abord créé.
Meilleures sociétés de développement d'algorithmes
Construire un bon produit nécessite une très bonne conception bien que nous ne puissions pas comparer un algorithme pour deux problèmes différents, ce que nous pouvons faire est de lister les noms des entreprises qui ont livré d'excellents produits dans ce monde au cours du 21ème siècle:
- DeepMind
- Baidu
- Nvidia
- CloudWalk
- SenseTime
- Darktrace
- Cambrien
- IBM
- OpenAI
- ByteDance
- CrowdStrike
- Zebra Medical Vision
- Babylone
- Intel
- Flatiron Health
- Affirmer
- Parvenu
- Element AI
- CloudMinds
- DataRobot
- Anki
- Zymergen
- UBTECH
Source: algorithmxlab.com/
Les sous-ensembles / blocs de construction et le fonctionnement d'un algorithme
Toutes ces années, il a été prouvé qu'un algorithme peut être conçu à partir de seulement trois blocs de construction:
- Séquence
- Sélection
- Itération
Source de l'image : https://goo.gl/
Une séquence est une série d'instructions qui doivent être suivies pour résoudre un problème et les instructions doivent être exécutées dans l'ordre.
Exemples
1. Addition de deux nombres
Étape 1: Démarrer
Étape 2: obtenir deux nombres en entrée et les stocker dans une variable comme a et b
Étape 3: ajouter le nombre a & b et stocker dans la variable c
Étape 4: imprimer c
Étape 5: Arrêtez.
Une sélection est un programme qui nous permet de choisir la sortie de différentes actions. Comme nous l'avons vu précédemment dans l'exemple de la porte de chemin de fer, nous avions une boîte conditionnelle où il vérifiait si le train arrivait.
2. Trouvez le plus grand parmi 2 numéros
Étape 1: Démarrer
Étape 2: obtenir deux nombres en entrée et les stocker dans une variable comme a et b
Étape 3: si a est supérieur à b, alors
Étape 4: imprimer un est grand
Étape 5: sinon
Étape 6: L' impression b est grande
Étape 7: Arrêter
La répétition ou l'itération ou la boucle sont les petits programmes qui sont exécutés plusieurs fois jusqu'à ce que la condition soit remplie.
3. Si nous voulons calculer la factorielle d'un nombre
Étape 1 : commencer
Étape 2 : Déclarez les variables n, factorielles et i
Étape 3 : initialiser les variables, c.-à-d. Factorialß1 et iß1
Étape 4: lire les valeurs de n
Étape 5: répétez les étapes jusqu'à n itérations
factorielle <- factorielle * i
i <- i + 1
Étape 6: Affichage factoriel
Étape 7: Arrêtez
Que pouvez-vous faire avec un algorithme?
Il s'agit d'une fonction ou d'une série de fonctions qui résolvent un problème. Nous pouvons utiliser un algorithme pour résoudre le problème le plus simple ainsi que certains des problèmes les plus difficiles au monde. Nous décidons qu'elle est optimale à l'aide de la «complexité temporelle». En termes simples, la complexité temporelle est une façon de décrire la durée d'exécution d'un algorithme donné. Il y a le temps d'exécution minimum (appelé petit «O»), le temps d'exécution moyen et le pire temps d'exécution O (N) (également appelé grand «O»). Les informaticiens et les ingénieurs logiciels aiment penser aux algorithmes parce qu'ils sont intéressés à évaluer et à créer des collections de meilleures pratiques afin de ne pas avoir à recommencer à zéro sur chaque instance d'une classe de problèmes similaire. Vous trouverez ci-dessous un exemple des différentes complexités temporelles que l'on pourrait obtenir en résolvant un problème spécifique. Cela signifie également qu'il pourrait y avoir plusieurs solutions à un seul problème, mais nous devons choisir la plus optimale en calculant la complexité temporelle des algorithmes. Lors des entretiens, il vous sera demandé de résoudre un problème et de plus, il vous sera demandé de l'optimiser c'est-à-dire de réduire le temps d'exécution de votre algorithme. Par exemple, vous pouvez avoir écrit du code avec 2 boucles «pour» (itération), mais il est possible que le travail puisse être réalisé simplement en utilisant une seule boucle «pour» (itération) mais vous n'avez pas été à la hauteur de cette solution et vous devez en savoir plus!
Source de l'image: https://goo.gl/
Avantages de l'algorithme
- Il s'agit d'une représentation pas à pas d'une solution à un problème donné, ce qui le rend facile à comprendre.
- Il utilise une procédure définie.
- Il est indépendant de tout langage de programmation, il est donc facile à comprendre pour n'importe qui, même sans connaissances en programmation.
- Chaque étape a sa propre séquence logique, elle est donc facile à déboguer.
- En utilisant l'algorithme, le problème est décomposé en morceaux ou étapes plus petits, il est donc plus facile pour un programmeur de le convertir en un programme réel
Compétences requises
Afin de concevoir un algorithme de complexité temporelle robuste et optimal, il faut avoir une bonne pensée logique, être bon en mathématiques et connaître au moins un langage de programmation orienté objet. La connaissance de la structure des données est également nécessaire.
- Ordinateurs - Découvrez les tableaux, les listes liées, les arbres binaires, les tables de hachage, les graphiques, les piles, les files d'attente, les tas et d'autres structures de données fondamentales.
- Mathématiques - En savoir plus sur la théorie des ensembles, les machines à états finis, les expressions régulières, la multiplication matricielle, les opérations au niveau du bit, la résolution d'équations linéaires et d'autres concepts importants tels que les permutations, les combinaisons, le principe du pigeonhole.
- Big-O & Runtime - Découvrez ce qu'est Big-O et comment analyser les temps de fonctionnement des algorithmes.
Pourquoi devrions-nous utiliser et pourquoi avons-nous besoin d'un algorithme?
Il faut utiliser l'algorithme car il facilite notre travail et il nous fournit la solution la plus optimale. Si nous n'appliquons pas d'algorithme avant de résoudre un problème complexe, il y a de fortes chances que nous irions sans direction en termes de solution. Avec l'algorithme, nous économisons notre temps dans la résolution de problèmes et nous garantissons que l'optimalité de l'algorithme de la solution, comme dit précédemment, est indépendante de tout langage de programmation, donc tout le monde peut concevoir un algorithme, mais pour concevoir un très bon algorithme, il faut être bon en logique et en mathématiques. Il sert de prototype de solution.
Par exemple, imaginez que nous avons deux Rubik's Cubes devant nous. L'un d'eux vous permet d'utiliser des algorithmes (comme le nombre de fois ou la direction dans laquelle tourner un visage), et l'autre, vous devez trouver votre propre chemin. Quel chemin sera plus rapide? Ce sera certainement le premier.
Prenons un exemple intéressant:
Disons que nous avons un tableau d'éléments et que nous aimerions les trier par ordre croissant. Il y a maintenant une approche algorithmique différente à cela. Nous allons nous concentrer sur la complexité temporelle de 2 d'entre elles: Tri par insertion et Tri par fusion
Tri par insertion: Le tri par insertion est un tri simple.
(La complexité temporelle est O (N 2).)
Tri par fusion: dans le tri par fusion, nous trions les éléments à l'aide de la méthode Diviser et conquérir.
La complexité temporelle est O (N log N).
Cela pourrait être l'impact que vous pourriez rencontrer si vous ne suivez pas un et ne faites pas d'analyse à ce sujet.
Portée de l'algorithme
En apprenant et en maîtrisant l'algorithme, vous connaîtriez l'art de la «résolution de problèmes». Avec de bonnes pratiques et un apprentissage continu, vous devriez être en mesure de résoudre des problèmes complexes. C'est la base de la conception d'un logiciel ou d'un code, car le temps d'exécution du code est l'un des facteurs les plus importants pour déterminer l'exécution d'une tâche particulière. Les géants de la technologie du monde comme Google et Facebook évaluent vos compétences en résolution de problèmes et dans les entretiens, la plupart des questions sont liées à la conception d'algorithmes et à la résolution de problèmes. Il vous sera demandé de concevoir un algorithme et de l'optimiser au meilleur temps de complexité possible.
Quelques points:
- Cela améliorera vos compétences en résolution de problèmes, ce qui vous amènera à mieux concurrencer lors des entretiens ou des examens en ligne
- Vous réduirez votre temps à résoudre tout problème.
- Presque tous les géants de la technologie embauchent des candidats en fonction de leurs meilleures compétences en résolution de problèmes
- On peut tirer le meilleur parti d'un langage de programmation en apprenant à construire et à concevoir un algorithme
Quelle est la bonne audience pour l'apprentissage des technologies d'algorithmes?
Du point de vue informatique, toute personne qui fait peu ou plus de programmation devrait apprendre les algorithmes. Si vous écrivez du code qui ne résout pas votre problème, ou s'il résout le problème mais utilise les ressources de manière inefficace (par exemple, l'exécution prend beaucoup de temps ou utilise trop de mémoire de l'ordinateur), alors votre code n'est pas optimal. . Mais les entreprises voudraient que leurs logiciels ou produits répondent ou s'exécutent dans les plus brefs délais.
Quiconque développe quelque chose doit apprendre à faire une analyse sur un algorithme afin d'assurer un fonctionnement optimal du produit final.
Comment l'algorithme vous aidera-t-il dans la croissance de votre carrière?
La conception et l'analyse d'un algorithme n'est pas un rôle (spécifique) mais il fait partie de votre travail et cette partie joue un rôle vital dans le développement de code. Si vous concevez un bon algorithme, vous écrirez de bons codes avec une solution optimale et éventuellement votre produit final qui sera livré aux clients excellera. Donc, si vous concevez et / ou développez des logiciels, la connaissance et l'expérience des structures de données et des algorithmes sont essentielles. Supposons que vous travaillez sur un produit de développement logiciel, la réponse de celui-ci doit être testée de manière approfondie (bien sûr, vous souhaitez vérifier le temps d'exécution du processus avant de remettre le code à l'équipe de test logiciel) et ce n'est pas quelque chose que vous pourriez devinez presque avec précision au préalable, mais vous devez utiliser l'analyse d'un algorithme pour calculer la complexité temporelle.
Conclusion
Donc, comme nous avons vu une description introductive des algorithmes et de leurs divers aspects, et nous avons vu qu'il pourrait y avoir différentes approches pour résoudre un problème particulier et la complexité Big-O et Time sont les paramètres qui nous aident à choisir la solution la plus optimale. En explorant un bon nombre d'algorithmes, vous deviendrez fondamentalement fort dans l'analyse de l'algorithme et vous devriez être en mesure de concevoir et d'exécuter l'analyse sur l'algorithme avec facilité.
Articles recommandés
Cela a été un guide pour ce qui est des algorithmes. Ici, nous avons discuté du fonctionnement des algorithmes avec des exemples et ses différents aspects. Vous pouvez également consulter nos autres articles suggérés pour en savoir plus -
- Qu'est-ce que Tableau Server?
- Guide de l'analyse du Big Data
- Qu'est-ce que SQL Developer?
- Qu'est-ce que Informatica