Comment réaliser des pré-morts efficaces
Ne demandez pas au groupe ce qui peut mal tourner
Un algorithme est un processus défini à suivre pour obtenir un résultat souhaité. Une grande partie de notre vie est décidée par des algorithmes. Savoir quels algorithmes suivre peut aboutir à une prise de décision plus efficace et efficiente.
J’ai récemment relu Algorithms to Live By, un livre de Brian Christian et Tom Griffiths sur la façon dont les algorithmes peuvent nous aider à être plus efficaces dans nos vies. Ayant commencé la programmation l’année dernière, j’en ai tiré davantage cette fois-ci.
Un algorithme est un processus, et vous pouvez le voir comme des instructions à suivre pour accomplir une tâche. Par exemple, apprendre à additionner des nombres est un algorithme simple 1.
Des instructions plus complexes peuvent calculer des résultats pour d’autres problèmes de la vie. Les taux d’intérêt, le classement dans les recherches web ou les fils d’actualité des réseaux sociaux sont tous basés sur les résultats des algorithmes. Le livre passe en revue de nombreux algorithmes de ce type et les relie à des problèmes que vous pourriez rencontrer personnellement.
Il est trop difficile d’expliquer chaque algorithme qu’ils mentionnent 2, donc à la place, je fais de courts points forts de certains, et je me concentre généralement sur les points qualitatifs, pas quantitatifs.
De plus, la plupart des algorithmes reposent sur certaines hypothèses ; plutôt que de les spécifier à chaque fois, prenez cela comme acquis lors de la lecture. J’ajouterai certaines hypothèses dans les notes de bas de page pour ceux qui sont intéressés.
Parmi les problèmes abordés, on trouve :
Regardons notre premier algorithme, sur le moment où il faut arrêter de travailler sur un problème.
Si vous évaluez les options (candidats à un emploi, offres de logement, places de parking, etc.), il y a un compromis entre le temps passé à choisir et la probabilité de choisir la « meilleure ». C’est ce qu’on appelle le secretary problem - Supposons que vous embauchiez une secrétaire, combien d’entretiens devriez-vous faire pour avoir les meilleures chances de trouver la meilleure ?
Dans ce cas, il y a un pourcentage précis à utiliser. Vous devriez attendre d’avoir vu 37 % du vivier de candidats, puis prendre le meilleur candidat suivant que vous voyez 3. Par exemple, si vous avez eu 100 candidats, attendez d’avoir vu les 37 premiers, puis choisissez le prochain candidat qui est meilleur que tous ceux que vous avez vus jusqu’à présent.
C’est le point mathématiquement optimal avec la plus grande chance de choisir la meilleure personne pour le poste. Si vous arrêtez trop tôt, vous risquez de manquer quelqu’un lors de l’entretien plus tard. Si vous arrêtez trop tard, vous perdez du temps 4.

Similaire à la situation d’arrêt optimal, il y a un compromis entre la collecte d’informations (explorer) et le plaisir (exploiter). Supposons que vous soyez dans un casino et que vous vouliez décider sur quelles machines jouer. Vous voulez maximiser vos gains, mais vous ne connaissez pas les chances exactes pour les machines (si vous le connaissiez, vous joueriez la meilleure).
Dans ce cas, il y a un chiffre, appelé le Gittins Index, qui vous donne la machine optimale à jouer 5. Si vous connaissez le nombre de victoires, de défaites et la valeur que vous accordez aux gains futurs, vous pouvez calculer des valeurs précises pour chaque choix. Quelques propriétés intéressantes :
Quelques autres implications connexes :
Le livre donnait quelques exemples d’algorithmes de tri, couramment utilisés en programmation. Par exemple, retourner les résultats de recherche nécessite de trier les plus pertinents pour vous.
Je vais remettre pour un autre jour une discussion plus détaillée sur le tri des algorithmes, car ils demandent de la compréhension time complexity. Voici quelques enseignements qualitatifs :
L’idée d’avoir un cache est d’avoir 1) une petite section mémoire rapide (stockage), et 2) une grande section mémoire lente. Nous alternerons ensuite entre les deux selon notre intention. Cela nous permet d’obtenir à la fois une certaine vitesse et une certaine taille pour l’activité souhaitée.
Par exemple, vous pourriez avoir vos vêtements préférés dans votre armoire, et ceux inutilisés dans le grenier. Vous auriez un accès rapide aux articles que vous utilisez le plus, mais vous auriez quand même de la place pour ce vilain pull de Noël si vous le souhaitez. Le caching peut sembler compliqué, mais vous réaliserez que nous le faisons naturellement pendant la majeure partie de notre vie quotidienne.
Comment décidez-vous quels objets doivent être placés dans la section rapide, et lesquels dans la section ralenti ? Vous pouvez mettre des objets aléatoires, le plus récent, le plus gros, etc.
Dans ce cas, garder les articles les plus récents dans la section petite et rapide est le choix optimal, en raison de ce qu’on appelle temporal locality. Vous aurez plus de chances d’avoir besoin de quelque chose que vous avez utilisé récemment. Par exemple, Google Drive met en surbrillance vos fichiers fréquemment utilisés pour un accès rapide.

La plupart d’entre nous doivent décider comment prioriser les tâches de notre liste de tâches. Cela nécessite généralement de faire un compromis entre la réactivité (la rapidité de votre réponse) et le débit (ce que vous pouvez accomplir).
Un point clé concernant la planification et la priorisation est de définir votre métrique d’objectif, car cela détermine quel algorithme vous souhaitez utiliser 7. Maximiser la réactivité se fait au détriment de ce que vous pouvez accomplir :
Si vous voulez minimiser le retard maximal de tous vos projets 8, le Earliest Due Date L’algorithme vous dit de commencer par le projet à échéance.
Si vous voulez minimiser le temps total d’achèvement, le Shortest Processing Time L’algorithme vous dit de simplement faire la tâche la plus rapide en premier.
Si vos tâches ne sont pas égales en importance, alors attribuer un poids à chaque tâche et calculer le ratio de poids sur le temps requis vous aidera à décider quelle tâche effectuer ; choisissez le projet avec le plus de poids dans le temps.
Concrètement, cela signifie qu’il vaut probablement la peine d’avoir une discussion avec votre manager sur la façon dont l’équipe perçoit ce compromis, et sur la méthode qu’il préférerait que vous adoptiez.
Il y a un autre concept important en planification : l’idée de context switching - chaque fois que vous devez passer d’une tâche à l’autre. Le changement de contexte est une perte de temps car ce n’est pas un vrai travail, mais cela prend du temps et des efforts de votre part.
Par exemple, si vous écriviez un e-mail et que vous êtes interrompu par un message Slack, il vous faut du temps pour répondre au message Slack, puis vous rappeler ce que vous vouliez faire pour l’e-mail.
Au pire, le changement de contexte devient thrash, quand vous n’obtenez rien de productif parce que vous êtes trop occupé à ne changer que de style. Voici :
Expliquer la règle de Bayes prendrait probablement un article à part entière, alors prenons-la comme une règle qui vous aide à prédire la probabilité qu’un événement se produise 9. Ce que les auteurs veulent souligner, c’est que cela dépend de la distribution d’où proviennent vos événements. Il y a trois distributions principales à considérer :

La plupart d’entre nous ont probablement déjà entendu parler de la théorie des jeux, qui est une façon de penser quelle est la stratégie optimale lors d’une partie de jeu. Quelques points forts :
Outre les algorithmes mentionnés ci-dessus, les auteurs passent également par :
Dans l’ensemble, j’ai trouvé que le livre valait la peine d’être lu pour avoir un aperçu des façons intéressantes dont les algorithmes apparaissent dans la vie. Je l’ai mieux compris après J’apprends un peu d’informatique, donc garde ça en tête. J’aurais aussi aimé qu’ils incluent des exemples plus pratiques 10, car appliquer ces résultats à la vie peut être difficile lorsqu’il faut partir de différentes hypothèses.
Assez facile à enseigner aux enfants, en leur disant de mémoriser des sommes et quand porter un chiffre, mais étonnamment pas évident lorsqu’on essaie de les implémenter sur ordinateur, voyez full adder logic gate ↩
On pourrait dire qu’au moment où j’expliquerai tout, autant l’avoir fait written the entire book ↩
The percentage is 1 divided by e, euler’s number. La probabilité ne change pas à mesure que le nombre de candidats augmente, mais elle évolue selon les informations que vous recevez ↩
Le problème du secrétaire de base suppose que vous ne pouvez pas revenir vers un candidat que vous avez refusé, mais il existe des variations qui ressemblent un peu plus à la réalité. ↩
Ce problème est insoluble si les probabilités d’un gain sur une machine changent au fil du temps ; ce qui signifie essentiellement qu’il est insoluble. Certains problèmes sont insolubles. Dans ces cas, assouplir certaines contraintes et accepter des solutions « suffisamment proches » nous aide significativement à structurer le problème. ↩
Ou March Madness, pour les Américains ↩
Seuls 9 % de tous les problèmes de planification peuvent être résolus efficacement. ↩
C’est-à-dire, prends tous tes projets en retard, puis le maximum de ceux-ci. C’est la métrique que tu veux minimiser. ↩
Voir here pour un article qui explique Bayes. Bayes est peu intuitif (du moins pour moi), ce qui signifie aussi qu’il est bon de le savoir ↩
Pour être juste, il y a pas mal d’informations dans les notes de bas de page qui développent davantage ↩
What did I miss?
Les désaccords réfléchis, les preuves supplémentaires et les autres façons de voir le problème sont les bienvenus.
Chargement de la discussion…
Vous préférez une conversation privée ? Écrire à Leon.