Accueil Finances personnelles Pour les Dummies Cheat Sheet - les nuls

Pour les Dummies Cheat Sheet - les nuls

Vidéo: S’initier au flux tiré et au fonctionnement des cartes Kanban 2024

Vidéo: S’initier au flux tiré et au fonctionnement des cartes Kanban 2024
Anonim

Par John Paul Mueller, Luca Massaron

Les algorithmes n'ont pas besoin d'être ennuyeux ou difficiles à utiliser. En fait, les algorithmes vous entourent de plusieurs façons auxquelles vous n'avez peut-être pas pensé, et vous les utilisez tous les jours pour effectuer des tâches importantes. Cependant, vous devez être capable d'utiliser des algorithmes sans avoir à devenir mathématicien.

Les langages de programmation vous permettent de décrire les étapes utilisées pour créer un algorithme. Certaines langues sont meilleures que d'autres pour effectuer cette tâche d'une manière que les gens peuvent comprendre sans devenir des informaticiens. Python facilite l'utilisation des algorithmes car il est doté d'une prise en charge intégrée et étendue (grâce à l'utilisation de packages, de jeux de données et d'autres ressources). Cette feuille de triche vous aide à accéder aux conseils les plus couramment nécessaires pour rendre votre utilisation des algorithmes rapide et facile.

Localiser l'algorithme dont vous avez besoin

Le tableau suivant décrit les algorithmes et les types d'algorithmes que vous pourriez trouver utiles pour divers types d'analyse de données. (Vous pouvez trouver des discussions de tous ces algorithmes dans Algorithms For Dummies.)

Algorithme Description Lien utile
A * Recherche L'algorithme suit le coût des nœuds en les explorant en utilisant le équation: f (n) = g (n) + h (n), où:

n est l'identifiant de noeud

g (n) est le coût d'atteindre le noeud jusqu'à

h (n) est le coût estimé pour atteindre le le but du noeud

f (n) est le coût estimé du chemin de n vers le but

L'idée est de chercher d'abord les chemins les plus prometteurs et d'éviter les chemins coûteux.

Standford. edu
Arbre équilibré Un type d'arbre qui maintient une structure équilibrée grâce à une réorganisation de sorte qu'il peut fournir des temps d'accès réduits. Le nombre d'éléments sur le côté gauche diffère du nombre sur le côté droit d'un maximum. Webdocs
Recherche bidirectionnelle Cette technique recherche simultanément depuis le nœud racine et le nœud cible jusqu'à ce que les deux chemins de recherche se rencontrent au milieu. Un avantage de cette approche est qu'elle est efficace dans le temps car elle trouve la solution plus rapidement que beaucoup d'autres solutions de force brute. En outre, il utilise la mémoire plus efficacement que les autres approches et trouve toujours une solution. Le principal inconvénient est la complexité de la mise en œuvre. Planification. cs
Arbre binaire C'est un type d'arbre contenant des nœuds qui se connectent à zéro (nœuds feuille), un ou deux (nœuds de branche) autres nœuds. Chaque nœud définit les trois éléments qu'il doit inclure pour fournir la connectivité et stocker les données: stockage de données, connexion à gauche et connexion à droite. cs. cmu. edu
Breadth-First Search Cette technique commence au niveau du nœud racine, explore d'abord chacun des nœuds enfants et ensuite seulement descend au niveau suivant. Il progresse niveau par niveau jusqu'à ce qu'il trouve une solution. L'inconvénient de cet algorithme est qu'il doit stocker tous les nœuds en mémoire, ce qui signifie qu'il utilise une quantité considérable de mémoire pour un grand nombre de nœuds. Cette technique peut vérifier les noeuds en double, ce qui fait gagner du temps, et elle trouve toujours une solution. Khan Academcy
Brute Force C'est une technique de résolution de problèmes dans laquelle quelqu'un essaie toutes les solutions possibles, en cherchant la meilleure solution au problème. Les techniques de force brute garantissent une solution optimale lorsqu'elles existent, mais prennent beaucoup de temps à implémenter que la plupart des gens les évitent. Igm. univ
Depth-First Search Cette technique commence au nœud racine et explore un ensemble de nœuds enfants connectés jusqu'à ce qu'il atteigne un nœud feuille. Il progresse branche par branche jusqu'à trouver une solution. L'inconvénient de cet algorithme est qu'il ne peut pas vérifier les nœuds en double, ce qui signifie qu'il pourrait traverser les mêmes chemins de nœuds plusieurs fois. En fait, cet algorithme peut ne pas trouver de solution du tout, ce qui signifie que vous devez définir un point de coupure pour empêcher l'algorithme de chercher à l'infini. Un avantage de cette approche est qu'elle est efficace sur le plan de la mémoire. Hacker Earth
Diviser pour régner Il s'agit d'une technique de résolution de problèmes dans laquelle le problème est divisé en plusieurs parties et résolu en utilisant l'approche la plus simple possible. Cette technique permet d'économiser beaucoup de temps et de ressources par rapport à d'autres approches, telles que la force brute. Cependant, cela ne garantit pas toujours un résultat optimal. Khan Academy
Dijikstra Il s'agit d'un algorithme utilisé pour trouver le chemin le plus court dans un graphe dirigé, pondéré (ayant des poids positifs). Geeks pour Geeks
Graphe Un graphe est une sorte d'extension d'arbre. Comme pour les arbres, vous avez des nœuds qui se connectent les uns aux autres pour créer des relations. Cependant, contrairement aux arbres binaires, un graphe peut avoir plus d'une ou deux connexions. En fait, les nœuds graphiques ont souvent une multitude de connexions. Vous voyez des graphiques utilisés dans des endroits comme des cartes pour le GPS et toutes sortes d'autres endroits pour lesquels l'approche descendante d'un arbre ne fonctionnera pas. Tutoriels
Algorithmes gourmands Thistechnique d'un de résolution de problèmes dans lequel la solution repose sur la meilleure réponse pour chaque étape du processus de résolution de problèmes. Les algorithmes gloutons font généralement deux suppositions:

Faire un seul choix optimal à une étape donnée est possible.

En choisissant la sélection optimale à chaque étape, il est possible de trouver une solution optimale pour l'ensemble du problème.

Tutoriels
Meilleure première recherche gourmande (BFS) L'algorithme choisit toujours le chemin le plus proche du but en utilisant l'équation: f (n) = h (n). Cet algorithme particulier peut trouver des solutions assez rapidement, mais il peut aussi rester coincé dans les boucles, donc beaucoup de gens ne le considèrent pas comme une approche optimale pour trouver une solution. Centurion2
Hashing Il s'agit d'une méthode permettant de prédire l'emplacement d'un élément de données particulier dans la structure de données (quelle qu'elle soit) avant de le rechercher. Cette approche repose sur l'utilisation de clés placées dans un index. Une fonction de hachage transforme la clé en une valeur numérique que l'algorithme place dans une table de hachage. Une table de hachage fournit les moyens de créer un index qui pointe vers des éléments d'une structure de données afin qu'un algorithme puisse facilement prédire l'emplacement des données. Tutoriels
Heap Cet arbre sophistiqué permet l'insertion de données dans l'arborescence. L'utilisation de l'insertion de données rend le tri plus rapide. Vous pouvez classer ces arbres comme des tas maximum et des tas minimum, en fonction de la capacité de l'arbre à fournir immédiatement la valeur maximale ou minimale présente dans l'arbre. Tutoriels
Heuristiques C'est une technique de résolution de problèmes qui repose sur la découverte de soi et produit des résultats suffisamment utiles (pas nécessairement optimaux, mais assez bons) pour résoudre un problème suffisamment bien pour qu'une meilleure solution ne soit pas trouvée. t nécessaire. La découverte de soi est le processus qui permet à l'algorithme de vous montrer un chemin potentiellement utile vers une solution (mais vous devez toujours compter sur l'intuition humaine et la compréhension pour savoir si la solution est la bonne). Nord-ouest. edu
MapReduce C'est un framework pour faire fonctionner les algorithmes en utilisant des calculs en parallèle (en utilisant plusieurs ordinateurs connectés ensemble dans un réseau), permettant aux algorithmes de compléter leurs solutions plus rapidement. Hadoop Apache
Mergesort Mergesort est une méthode générale de comparaison des données. Cela dépend de l'approche "diviser pour régner" pour accomplir sa tâche. Geeks pour Geeks
Nash Equilibrium C'est une théorie des jeux dans laquelle les autres joueurs connaissent la stratégie d'équilibre pour les autres joueurs, donc personne n'a rien à gagner en changeant sa stratégie personnelle. Cette théorie est utilisée dans toute situation hostile dans laquelle le joueur doit prendre en compte les décisions prises par tous les autres joueurs afin de gagner la partie. Khan Academy
PageRank Le PageRank est un algorithme permettant de mesurer l'importance d'un nœud dans un graphique. Cet algorithme est à la base des algorithmes de base de Google pour alimenter les recherches pertinentes aux utilisateurs. Princeton. edu
Recherche heuristique pure Cet algorithme développe les nœuds par ordre de coût. Il maintient deux listes. La liste fermée contient les noeuds qu'elle a déjà explorés et la liste ouverte contient les noeuds qu'elle doit encore explorer. Dans chaque itération, l'algorithme développe le nœud avec le coût le plus bas possible. Tous ses nœuds enfants sont placés dans la liste fermée et les coûts de chaque nœud enfant sont calculés. L'algorithme renvoie les noeuds enfants à faible coût à la liste ouverte et supprime les noeuds enfants avec un coût élevé. Par conséquent, l'algorithme effectue une recherche intelligente et basée sur les coûts pour la solution. World of Computing
Quicksort Il s'agit d'une stratégie de tri à usage général basée sur le partitionnement de tableaux de données en réseaux plus petits.Cela dépend de l'approche "diviser pour régner" pour accomplir sa tâche. Didacticiels
Arborescence non équilibrée Il s'agit d'une arborescence qui place de nouveaux éléments de données partout où cela est nécessaire dans l'arborescence sans tenir compte de l'équilibre. Cette méthode d'ajout d'éléments accélère la construction de l'arbre mais réduit la vitesse d'accès lors de la recherche ou du tri. Quora

Algorithmes de différenciation d'autres structures mathématiques

Si vous êtes comme la plupart des gens, vous vous retrouvez souvent à vous gratter la tête en ce qui concerne les structures mathématiques car personne ne sait comment utiliser correctement les termes. C'est comme si les gens essayaient intentionnellement de rendre les choses difficiles! Après tout, qu'est-ce qu'une équation et pourquoi est-ce différent d'un algorithme? Eh bien, ne craignez plus: Le tableau suivant fournit le guide définitif des structures de mathématiques que vous pourriez rencontrer mais que vous avez eu peur de poser.

Structure Description
Équation Chiffres et symboles qui, pris dans leur ensemble, correspondent à une valeur spécifique. Une équation contient toujours un signe égal pour que vous sachiez que les nombres et les symboles représentent la valeur spécifique de l'autre côté du signe égal. Les équations contiennent généralement des informations variables présentées sous forme de symbole, mais elles ne sont pas obligées d'utiliser des variables.
Formule Une combinaison de chiffres et de symboles utilisés pour exprimer des informations ou des idées. Une formule présente normalement des concepts mathématiques ou logiques, tels que la définition du plus grand diviseur commun (GCD) de deux entiers (la vidéo de Khan Academy explique comment cela fonctionne). Généralement, une formule montre la relation entre deux variables ou plus. La plupart des gens voient une formule comme une sorte d'équation particulière.
Algorithme Séquence d'étapes utilisée pour résoudre un problème. La séquence présente une méthode unique d'adresser un problème en fournissant une solution particulière. Un algorithme n'a pas besoin de représenter des concepts mathématiques ou logiques, même si les présentations de ce livre tombent souvent dans cette catégorie parce que les gens utilisent le plus souvent des algorithmes de cette manière. Certaines formules spéciales sont également des algorithmes, tels que la formule quadratique. Pour qu'un processus représente un algorithme, il doit être le suivant:

Fini: L'algorithme doit éventuellement résoudre le problème.

Bien défini: La série d'étapes doit être précise et présenter des étapes compréhensibles, notamment par les ordinateurs, qui doivent être capables de créer un algorithme utilisable.

Efficace: Un algorithme doit résoudre tous les cas du problème pour lequel quelqu'un l'a défini. Un algorithme devrait toujours résoudre le problème qu'il doit résoudre. Même si vous devez anticiper certaines défaillances, l'incidence de l'échec est rare et ne se produit que dans des situations acceptables pour l'utilisation prévue de l'algorithme.

Des façons étonnantes d'utiliser des algorithmes

Les gens utilisent des algorithmes tout le temps. Par exemple, faire des toasts est un exemple d'algorithme, comme expliqué dans cet article de blog. Making Toast n'est pas un algorithme génial, mais ceux du tableau suivant, qui utilisent un ordinateur pour effectuer des tâches, le sont.

Tâche Pourquoi c'est incroyable
Cryptographie Garder vos données en sécurité est un combat permanent contre les pirates qui attaquent constamment les sources de données. Les algorithmes vous permettent d'analyser des données, de les mettre sous une autre forme, puis de les renvoyer à leur forme d'origine plus tard.
Analyse graphique La possibilité de choisir la ligne la plus courte entre deux points trouve toutes sortes d'utilisations. Par exemple, dans un problème de routage, votre GPS ne pourrait pas fonctionner sans cet algorithme car il ne pourrait jamais vous diriger le long des rues de la ville en empruntant l'itinéraire le plus court du point A au point B.
Pseudorandom number ça n'a jamais varié. Vous commencez au même endroit et effectuez les mêmes étapes de la même manière à chaque fois que vous jouez. Ennuyeuse! Sans la capacité de générer des nombres apparemment aléatoires, de nombreuses tâches informatiques deviennent inutiles ou impossibles. Planification
Rendre l'utilisation des ressources équitable pour toutes les parties concernées est une autre manière dont les algorithmes font largement connaître leur présence. Par exemple, les lumières de synchronisation aux intersections ne sont plus de simples dispositifs qui comptent les secondes entre les changements de lumière. Les appareils modernes prennent en compte toutes sortes de problèmes, tels que l'heure de la journée, les conditions météorologiques et la circulation. La planification se présente sous plusieurs formes, cependant. Considérez comment votre ordinateur exécute plusieurs tâches en même temps. Sans un algorithme de planification, le système d'exploitation peut récupérer toutes les ressources disponibles et empêcher votre application de faire un travail utile. Recherche
Trouver des informations ou vérifier que les informations que vous voyez sont les informations que vous recherchez est une tâche essentielle. Sans cette fonctionnalité, de nombreuses tâches que vous effectuez en ligne ne seraient pas possibles, comme la recherche sur Internet du site Web qui vend la cafetière parfaite pour votre bureau. Tri
Il est important de déterminer l'ordre dans lequel présenter l'information, car la plupart des gens souffrent aujourd'hui d'une surcharge d'informations et doivent réduire le flux de données. Imaginez-vous aller à Amazon, trouvant plus d'un millier de cafetières à vendre, sans toutefois pouvoir les trier en fonction du prix ou de la critique la plus positive. De plus, de nombreux algorithmes complexes requièrent des données dans le bon ordre pour fonctionner de manière fiable. Le tri est donc une condition importante pour résoudre d'autres problèmes. Transformation
La conversion d'un type de données en un autre type de données est essentielle pour comprendre et utiliser efficacement les données. Par exemple, vous pouvez très bien comprendre les poids impériaux, mais toutes vos sources utilisent le système métrique. La conversion entre les deux systèmes vous aide à comprendre les données. De même, la transformée de Fourier rapide (FFT) convertit les signaux entre le domaine temporel et le domaine fréquentiel, permettant à des choses comme votre routeur WiFi de fonctionner. Gestion de la complexité de l'algorithme

Vous savez déjà que les algorithmes sont complexes. Cependant, vous devez savoir à quel point un algorithme est complexe car plus il est complexe, plus il faut de temps pour s'exécuter. Le tableau suivant vous aide à comprendre les différents niveaux de complexité présentés par ordre de durée (du plus rapide au plus lent).

Complexité

Description Complexité constante O (1)
Fournit un temps d'exécution constant, quelle que soit la quantité d'entrée que vous fournissez. Chaque entrée nécessite une seule unité d'exécution. Complexité logarithmique O (log n)
Le nombre d'opérations augmente plus lentement que l'entrée, ce qui rend l'algorithme moins efficace avec de petites entrées et plus efficace avec de plus grandes. Un algorithme typique de cette classe est la recherche binaire. Complexité linéaire O (n)
Les opérations augmentent avec l'entrée dans un rapport de 1: 1. Un algorithme typique est l'itération, lorsque vous scannez une entrée une fois et que vous appliquez une opération à chaque élément de celle-ci. Complexité linéarithmique O (n log n)
La complexité est un mélange de complexité logarithmique et linéaire. Il est typique de certains algorithmes intelligents utilisés pour commander des données, tels que Mergesortsort, Heapsort et Quicksort. Complexité quadratique O (n
2 ) Les opérations se développent comme un carré du nombre d'entrées. Lorsque vous avez une itération dans une autre itération (appelée itérations imbriquées en informatique), vous avez une complexité quadratique. Par exemple, vous avez une liste de noms et, afin de trouver les plus similaires, vous comparez chaque nom à tous les autres noms. Certains algorithmes d'ordonnancement moins efficaces présentent une telle complexité: le tri à bulles, le tri par sélection et le tri par insertion. Ce niveau de complexité signifie que vos algorithmes peuvent fonctionner pendant des heures voire des jours avant d'atteindre une solution. Complexité cubique O (n
3 ) Les opérations se développent encore plus vite que la complexité quadratique car vous avez maintenant plusieurs itérations imbriquées. Lorsqu'un algorithme a cet ordre de complexité et que vous devez traiter une quantité modeste de données (100 000 éléments), votre algorithme peut fonctionner pendant des années. Lorsque vous avez un nombre d'opérations qui est une puissance de l'entrée, il est courant de se référer à l'algorithme comme étant en cours d'exécution en temps polynomial. Complexité exponentielle O (2
n ) L'algorithme prend deux fois le nombre d'opérations précédentes pour chaque nouvel élément ajouté. Lorsqu'un algorithme a cette complexité, même de petits problèmes peuvent prendre une éternité. De nombreux algorithmes effectuant des recherches exhaustives ont une complexité exponentielle. Cependant, l'exemple classique pour ce niveau de complexité est le calcul des nombres de Fibonacci. Complexité factorielle O (n!)
Cet algorithme présente un véritable cauchemar de complexité en raison du grand nombre de combinaisons possibles entre les éléments. Imaginez: si votre entrée est de 100 objets, et qu'une opération sur votre ordinateur prend 10 -6 secondes (une vitesse raisonnable pour chaque ordinateur de nos jours), vous aurez besoin d'environ 10 140 années accomplir la tâche avec succès (une durée impossible car l'âge de l'univers est estimé à 10 14 ans). Un problème de complexité factorielle célèbre est le problème du voyageur de commerce, dans lequel un vendeur doit trouver le chemin le plus court pour visiter de nombreuses villes et revenir à la ville de départ.

Pour les Dummies Cheat Sheet - les nuls

Le choix des éditeurs

Tableaux et pointeurs en C ++ - le nom du tableau des mannequins

Tableaux et pointeurs en C ++ - le nom du tableau des mannequins

Est un pointeur sur le tableau lui-même. Le tableau est une séquence de variables stockée en mémoire. Le nom du tableau pointe vers le premier élément. C'est une question intéressante sur les pointeurs: Pouvez-vous avoir un en-tête de fonction, comme la ligne suivante, et juste utiliser sizeof pour déterminer comment ...

Boost Bibliothèques et C ++ - mannequins

Boost Bibliothèques et C ++ - mannequins

De nombreux développeurs utilisent les bibliothèques Boost car elles fournissent un code de haute qualité une partie de Boost est en train d'être normalisée pour être incluse dans la bibliothèque standard. L'une des meilleures choses à propos de Boost est que la bibliothèque elle-même est gratuite. Le site Web de Boost tient à faire savoir aux développeurs qu'ils ne ...

Casser les programmes Mis à part C ++ - les mannequins

Casser les programmes Mis à part C ++ - les mannequins

Le programmeur peut casser un seul programme en fichiers sources distincts généralement appelés modules. Ces modules sont compilés séparément dans le code machine par le compilateur C ++, puis combinés au cours du processus de génération pour générer un seul programme. Ces modules sont également connus par les geeks du compilateur en tant qu'unités de traduction C ++. Le processus de combinaison ...

Le choix des éditeurs

Comment régler les paramètres via l'affichage d'informations sur votre Nikon D5200 - mannequins

Comment régler les paramètres via l'affichage d'informations sur votre Nikon D5200 - mannequins

L'information l'affichage ne sert pas uniquement à vérifier les paramètres de prise de vue actuels; Cela vous donne également un accès rapide à certains des paramètres les plus critiques. La touche de cette fonction est le bouton Information Edit, situé à l'arrière de l'appareil photo, à droite du viseur. Voici comment cela fonctionne: Afficher les informations ...

Met en surbrillance le mode d'affichage sur votre Nikon D7100 - mannequins

Met en surbrillance le mode d'affichage sur votre Nikon D7100 - mannequins

En mode d'affichage hautes lumières sur votre Nikon D7100 pense que l'appareil photo peut être surexposé clignoter dans le moniteur de l'appareil photo. L'un des problèmes de photo les plus difficiles à corriger dans un programme de retouche photo est connu sous le nom de surbrillance dans certains cercles et de surbrillance dans d'autres. Les deux termes signifient que les zones les plus claires de ...

Comment régler les paramètres via la bande de contrôle Nikon D3300 - les tétines

Comment régler les paramètres via la bande de contrôle Nikon D3300 - les tétines

Présentes en bas à gauche Au coin du Nikon D3300, le bouton i active une bande de contrôle qui vous donne un accès rapide à certains paramètres de prise de vue critiques. Voici comment utiliser la bande de contrôle pour la photographie dans le viseur: Affichez l'écran d'informations. Vous pouvez le faire en appuyant sur le bouton Info. Appuyez sur le bouton i. Le haut ...

Le choix des éditeurs

Comment imprimer vos diapositives et notes Keynote - Les tétines

Comment imprimer vos diapositives et notes Keynote - Les tétines

Lorsque vous créez une présentation dans Snow Leopard Application Keynote, vous ne pouvez pas toujours vouloir imprimer des documents. Cependant, si vous présentez un long diaporama avec beaucoup d'informations que vous aimeriez que votre public se souvienne, rien ne vaut les documents qui incluent des images réduites de vos diapositives (et, facultativement, les notes de votre présentateur). Vous pouvez ...

Comment réorganiser ou supprimer les signets - les mannequins

Comment réorganiser ou supprimer les signets - les mannequins

Safari enregistre vos signets et vos dossiers de signets dans l'ordre dans lequel vous les créez, en les ajoutant au bas d'une liste toujours croissante. Si vous continuez à ajouter des marque-pages au menu Signets sans les placer dans des dossiers, vous pouvez constater que vous avez un nombre de signets gazillion indiqué bon gré mal gré et que vous ne vous en souvenez plus ...

Pour ouvrir et utiliser l'iDisk de Snow Leopard - les mannequins

Pour ouvrir et utiliser l'iDisk de Snow Leopard - les mannequins

Avec un compte MobileMe actif, iDisk est disponible et vous fournit un espace de stockage supplémentaire. Pour connaître l'espace de stockage utilisé et pour configurer l'accès à votre dossier Public, ouvrez les Préférences Système, cliquez sur l'icône MobileMe, puis sur le bouton iDisk pour afficher les paramètres. Vos paramètres iDisk sont disponibles dans les Préférences Système. Le ...