Votre prénom est-il dans la liste qui va suivre ?

Slides:



Advertisements
Présentations similaires
CINI – Li115 1 Semaine 9 Algorithmes de tri ● Introduction ● Tri à bulle ● - principe ● - algorithme ● - efficacité ● Tri par sélection ● - principe, algorithme,
Advertisements

Amida-Kuji Présentation Collège Mario Meunier – Montbrison.
Présentation d'un métier du tourisme.. Serveuse Serveuse. Une serveuse est quelqu'un d'aimable, de patient et de présentable. Après, elle doit connaître.
Quelle voie choisiriez-VOUS?
On connaît tous les « lois et règlements » des femmes
LES PRONOMS PERSONNELS COMPLEMENT D’OBJET DIRECT COMPLEMENT D’OBJET INDIRECT LEÇON 4.
Je voulais un petit chien. J'ai eu un petit frère
« Ce matin, j'ai été chez Emmaüs Connect, et c'est facile à apprendre aux personnes la navigation Internet, moi qui pensais ne pas y arriver. C'est.
Un papa va coucher sa petite fille de trois ans.
Mais personne ne sait exactement en quoi consiste vraiment l’amitié. Tu ne sais pas comment, tu ne sais pas pourquoi. Ça fonctionne tout seul et sans.
Le premier automatisme ?
Les bandes de Bollinger
Résolutions et réponses
Réalisation: Tante Berthe m'a dit... Avance automatique Réalisation:
Les lignes de tendances
"On joue au Fakir ? "   La question posée comme ça fait toujours sourire et quand on sort la planche à clous de [l'activité débranchée du plus court chemin]
Information, Calcul, Communication
Prends le temps de lire ce message, il est très important!
Après cette introduction, je fais plonger les participants directement dans le bain, en les mettant à contribution. C'est toute la philosophie et l'intérêt.
Alors ça, le réseau de tri, comme Activité Anti-Assoupissement, c'est très fort ! Ça réveille tout le monde et ça plaît beaucoup. Il s'agit de l'activité.
Montée au bloc .ATTENTION !!!Nous devons d'abord apprendre à tomber..
Je préviens tout de suite les participants : "je vais vous conduire tout droit dans un piège ! On va parler de mesure et de comptage...". Compter et mesurer.
Un chef de gare doit placer équitablement 28 moutons dans un convoi de 7 wagons. Sûr de lui et voulant montrer ses connaissances mathématiques, il explique.
Simulation numérique Nous y voilà ! Moi qui ai toujours été une quiche en maths, me voilà en train de parler de simulation numérique (un des trucs où il.
Un Algorithme , c'est Quoi ?
Algorithme de Dichotomie
Je préfère le dire tout de suite : je trouve le message lié à cette activité assez difficile. Mais je le garde dans cette formation (C.f. le paragraphe.
L'entrevue de Dominique Luca
Très révélateur!!! Il ne s‘agit que de 4 questions qui te seront posées, mais les réponses vont t‘étonner. Ne te ments pas seulement parce que tu.
Mais on les adore.
Réalisation: Tante Berthe m'a dit... Avance automatique Réalisation:
le de un être et à il avoir ne je son que se qui ce dans en
La programmation débranchée à l’école
Scripts prise de rendez-vous. Scripts prise de rendez-vous.
Test de personnalité du Dalai Lama.
Prends le temps de lire ce message, il est très important!
Prends le temps de lire ce message, il est très important!
Réalisation: Tante Berthe m'a dit... Avance automatique Réalisation:
Résolutions et réponses
ATTENTION À VOS COURRIELS
Un papa va coucher sa petite fille de trois ans.
Le Bonheur en Pensées.
Prends le temps de lire ce message, il est très important!
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Prends le temps de lire ce message, il est très important!
BETISIER DES MAIRIES BETISIER DES MAIRIES. BETISIER DES MAIRIES BETISIER DES MAIRIES.
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Prends le temps de lire ce message, il est très important!
Un peu de courage !!!.
Vous vivrez peut-être vos samedis différemment...
L’amour vu par les enfants !
NUMÉRATION POSITIONNELLE / PRINCIPE DE GROUPEMENT
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Prends le temps de lire ce message, il est très important!
Je ne mange plus de poulet...
Monsieur Didier Le Gac, député du Finistère
#RefusDiscriminations
Résolutions et réponses
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
Prends le temps de lire ce message, il est très important!
Prends le temps de lire ce message, il est très important!
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Résolutions et réponses
Etude de la langue – Grammaire
Formation des gouverneurs de secteurs et de division Mener des concours de discours de qualité.
Prends le temps de lire ce message, il est très important!
Nos mots-outils 1 un ez ce cette celle celui celui - ci on son mon
BETISIER DES MAIRIES Moins connus que les bêtisiers d'assurance, voici un bêtisier de courriers reçus par des mairies :
Transcription de la présentation:

Votre prénom est-il dans la liste qui va suivre ? (vous aurez 3 secondes ! ) Dans la troisième partie de cette formation je demande aux participants de chercher leurs prénoms dans une liste. Autant les prévenir, la liste est prévue pour une génération de Lycéens de 2008... Mais il faut bien chercher quand même car la question sera d'affirmer avec certitude que son prénom est, ou n'est pas, dans la liste. Et la liste sera affichée trois secondes (inutile de dire que les réactions sont assez frustrée après la projection de la liste... "c'est trop court", "c'est pas possible" etc. ;-) ).

Thomas Anaïs Morgane Mickaël Victor Kevin Marion Jordan Corentin Arnaud Alexandre Benjamin Charlotte Yanis Thibault Nicolas Sarah Audrey Céline Bastien Mehdi Jeremy Amandine Louis Noémie Maxime Pierre Lucie Margaux Ophélie Marie Alexis Hugo Sophie Jessica Laura Amine Jonathan Fanny Estelle Julien Valentin Oceane Caroline Clara Marine Elodie Sébastien Aurélien Alice Manon Melanie Damien Arthur Lisa Quentin Mathilde Rayan Rémi Cédric Romain Chloé Paul Matthieu Alexandra Anthony Vincent Aurélie Simon Emma Florian Justine Melissa Cindy Raphaël Antoine Mathieu Theo Coralie Fabien Julie Adrien David Clémence Florent Guillaume Lucas Amélie Maeva Benoît Pauline Dylan Claire Laetitia Steven Clément Mohammed Baptiste Axel Adeline Léa Emilie Loïc Juliette Jennifer affichage de trois secondes donc... (juste un conseil : pour compter trois secondes il vaut mieux compter "3, 2, 1, 0" et passer le slide quand arrive le "0", parce que compter "1, 2, 3" et passer le slide quand arrive le 3 ça fait seulement deux secondes ;-) ).

Trouvé ? Je demande alors aux participants de lever la main si ils peuvent affirmer avec certitude que leur prénom est dans la liste. Il y en a généralement très peu. Je demande aussi d'ajouter leur main levée à ceux qui peuvent affirmer avec certitude que leur prénom n'est pas dans la liste. Il y en a toujours un ou deux qui disent "oui, moi je peux déjà affirmer que mon prénom n'y est pas". C'est souvent le cas du "mon prénom est beaucoup trop original, il ne peut pas y être. Dans ce cas, je m'amuse à leur demander avec fermeté "attention, parce qu'on va revoir la liste, et si ton prénom y est, tu me dois un million d'Euros :D ! ". En général, ça suffit à mettre un doute dans l'esprit du participant qui affirme que son prénom n'y est pas et baisse la main. D'autres la maintiennent en étant très sûr d'eux (et du fait que, quoi qu'il arrive, je n'aurai pas mon million). C'est souvent le cas du prénom très court ou très long.  

ordre alphabétique Encore une fois... Mais les prénoms seront triés par ordre alphabétique J'annonce alors qu'on va revoir la liste, toujours 3 secondes, mais que cette fois elle sera triée.   (et vous avez toujours 3 secondes ! )

Adeline Benoît Fanny Lucas Ophélie Adrien Caroline Florent Lucie Paul Alexandra Cédric Florian Maeva Pauline Alexandre Céline Guillaume Manon Pierre Alexis Charlotte Hugo Margaux Quentin Alice Chloé Jennifer Marie Raphaël Amandine Cindy Jeremy Marine Rayan Amélie Claire Jessica Marion Rémi Amine Clara Jonathan Mathieu Romain Anaïs Clémence Jordan Mathilde Sarah Anthony Clément Julie Matthieu Sébastien Antoine Coralie Julien Maxime Simon Arnaud Corentin Juliette Mehdi Sophie Arthur Damien Justine Melanie Steven Audrey David Kevin Melissa Theo Aurélie Dylan Laetitia Mickaël Thibault Aurélien Elodie Laura Mohammed Thomas Axel Emilie Léa Morgane Valentin Baptiste Emma Lisa Nicolas Victor Bastien Estelle Loïc Noémie Vincent Benjamin Fabien Louis Oceane Yanis Affichage de la liste triée  

Trouvé ? Je repose les mêmes questions (qui peut dire avec certitude que son prénom est dans la liste ? Qui peut affirmer que son prénom n'y est pas ?) et là par contre, presque tout le monde lève la main ! "Que s'est-il passé ? ". Et la réponse est bien entendu "c'est plus facile quand c'est trié ! ".

manière De quelle avez-vous cherché ? Et donc je demande "En quoi ça vous aide, de quelle manière avez-vous cherché votre prénom ?". Et la réponse est à 99% "je cherche la première lettre, puis une fois que je l'ai trouvée, je cherche la deuxième, et la vois rapidement si il y est ou pas". Parmi les 1% restants, on trouve parfois "je cherche plutôt vers la fin, car mon prénom commence par un Z". Et il y a toujours ceux qui ont un prénom très court ou très long. Une variante, qui fait plutôt marrer les participants, c'est de dire qu'un jour un participant m'a dit "moi, mon prénom c'est Pierre-Alexandre-Maxime-Walter donc tu vois... si mon prénom est dans la liste... je le vois tout de suite ! ! :D ". Bien entendu, ce n'était pas exactement son prénom (mais pas loin). Et donc c'est également l'occasion de discuter de la recherche plutôt visuelle (pas sur la première lettre, mais sur la longueur du prénom).  

Montrer qu'il fonctionne Quand on propose un algorithme, on veut : Montrer qu'il fonctionne Calculer le nombre d'opérations qu'il va faire C'est encore une façon de dire que toute manière de chercher son prénom dans la liste est un algorithme. Un peu comme la stratégie gagnante au jeu de Nim, on peut en faire un programme pour qu'une machine cherche le prénom dans une liste. Et quand on propose un algorithme, on veut montrer deux choses. La première c'est qu'il est correct (il fera bien ce pour quoi il est conçu). La deuxième c'est d'évaluer combien d'instruction (ou d'opérations) il lui faudra pour accomplir sa tâche.

La liste contient 105 prénoms Algorithme Prendre un prénom au hasard Le comparer Recommencer si besoin Alors prenons un algorithme et testons le... Il s'agit de prendre un prénom au hasard, de le comparer au prénom recherché et de recommencer si ce n'est pas le cas. Est-ce que c'est algorithme fonctionne ? Souvent, les participants disent que "oui, mais ça peut prendre du temps". C'est sans compter sur le fait que je suis assez vicieux pour cacher des bugs. Ici, le fait qu'on ne retire pas de la liste le prénom tiré au hasard. Ainsi, si on n'a vraiment pas de chance, on ne le trouvera pas (bien entendu, statistiquement, après plusieurs milliards d'essais sur une petite liste, on va le trouver, mais si la liste fait plusieurs milliards de prénoms, comme la population mondiale par exemple ?).

La liste contient 105 prénoms Algorithme Correct ? Nombre d'opérations maximum Prendre un prénom au hasard Le comparer Recommencer si besoin Non Chanceux ?

La liste contient 105 prénoms Algorithme Correct ? Nombre d'opérations maximum Prendre un prénom au hasard Le comparer Recommencer si besoin Non Chanceux ? Le rayer de la liste Oui 105 Donc la version correcte de cet algorithme, consiste à retirer le prénom de la liste avant de recommencer. Là on sait qu'on va pouvoir affirmer la présence/absence du prénom et on sait également estimer en combien d'opérations. Pour cela on estime le pire des cas. C'est à dire qu'on doit aller jusqu'au dernier prénom. Même si il est dans la liste, on peut ne pas avoir de chance et ce sera le dernier qu'on tire au hasard.

La liste contient 105 prénoms Algorithme Correct ? Nombre d'opérations maximum Prendre un prénom au hasard Le comparer Recommencer si besoin Non Chanceux ? Le rayer de la liste Oui 105 Prendre le premier prenom Recommencer avec le suivant si besoin Ce qui est intéressant c'est de voir une troisième possibilité pour cette recherche exhaustive : on prend les prénoms du premier au dernier. Et on peut facilement voir que l'algorithme est correct, mais surtout qu'il prend exactement le même nombre d'opérations que l'algorithme qui prend les prénoms au hasard. Dans les deux cas, on peut aller jusqu'au dernier avant de répondre. Tout cela vient du fait qu'on ne tient pas compte, dans ces algorithmes de l'ordre dans lequel les prénoms sont inscrits. Une question peut venir comme "oui, mais si avec l'algorithme qui prend au hasard on tombe dessus du premier coup, c'est bon, on a pas mis 105 opérations, c'est plus rapide que l'autre". C'est l'occasion de parler de complexité en moyenne et dans le pire des cas. En général je réponds que si on utilise ces deux algorithmes 10 000 fois, alors on va constater des performances moyennes similaires pour les deux.  

candidats au Bac en 2013. Environ 700 000 700 000 fois la question “suis-je reçu ?” Pour chaque question, il faut chercher dans une liste de 700 000 élèves. Avant de voir comment on peut prendre l'ordre alphabétique en considération, voyons pourquoi le problème peut devenir très difficile et pourquoi il est important de trouver une approche plus efficace. En 2013 (mais aussi 2014 et 2015), il y a eu environ 700 000 candidats au bac. Imaginons que je suis le serveur qui détient la liste des 700 000 prénoms avec l'inscription "oui" ou "non" pour l'obtention du bac. Je vais donc recevoir 700 000 fois la question "est-ce que je suis reçu". Et 700 000 fois, je vais devoir regarder dans une liste de 700 000 prénoms.

490 000 000 000 Nombre d’opérations : 700 000 x 700 000 Cela veut dire que si j'applique un des algorithmes de S12, je vais faire environ 500 milliards d'opérations (ok, en vérité c'est la moitié, parce que la distribution des prénoms, etc... personnellement, je préfère garder ce 500 milliards, plutôt qu'ajouter une information qui ne me semble pas servir le message principal, il ne m'est arrivé qu'une seule fois de devoir préciser que c'est la moitié, sur une vingtaine de fois où j'ai utilisé ce support).  

coupe en deux L'algorithme qui (dichotomie) Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Je présente alors le "super algorithme de la dichotomie" (dichotomie, qui vient du Grec "couper en deux"). Et je reprends une partie de la liste dans laquelle Monsieur Jafar vient chercher son prénom (vous ne connaissez pas Monsieur Abu Jafar Muhammad Ibn Musa ? On verra ça un peu plus loin ;-) ). Ne fonctionne que si la liste est triée !

coupe en deux L'algorithme qui (dichotomie) 1 Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! 1 L'algorithme de la dichotomie est très simple. On va voir comment il fonctionne, et on verra plus tard pourquoi il fonctionne. L'algorithme en question dit à Jafar : "regarde si ton prénom est celui du milieu". Jafar s'exécute et le prénom du milieu est... Emilie. De toute évidence, ce n'est pas le sien. Mais il peut faire une chose avec certitude à partir de là. Il peut ... ? Evidemment, l'idée c'est de le faire dire aux participants : il peut enlever tous les prénoms qui sont au-dessus, car le sien est après celui-là.

coupe en deux L'algorithme qui (dichotomie) Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! Il vient de se passer quelque chose d'énorme ! Jafar vient d'enlever la moitié du problème !   Et l'algorithme de la dichotomie, d'après vous, lui dit quoi maintenant ? Là encore, l'idée est de le faire dire aux participants... il lui dit de recommencer avec ce qui reste ! Le nouveau problème de Jafar, c'est de trouver son prénom dans la nouvelle liste (diminuée de moitié).

coupe en deux L'algorithme qui (dichotomie) 2 Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! Il va donc prendre le nouveau prénom du milieu et... ce n'est toujours pas le sien. Son prénom est avant. Il peut donc... ? Eliminer la moitié inférieure de ce qui reste !   2

coupe en deux L'algorithme qui (dichotomie) Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! Prenons quelques secondes pour regarder ce qui vient de se passer... En deux étapes, on vient d'enlever la moitié du problème, puis encore la moitié de la moitié ! Sur 700 000 prénoms dans la liste du serveur du bac, ça fait beaucoup ! A ce rythme il ne va plus rester grand-chose très rapidement non ?

coupe en deux L'algorithme qui (dichotomie) 3 Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! 3 On continue donc et là c'est pas de bol : sur les 4 prénoms on tombe sur le mauvais milieu. Donc on enlève la moitié qui ne correspond pas.

coupe en deux L'algorithme qui (dichotomie) Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! je peux donc encore éliminer une partie du problème.

coupe en deux L'algorithme qui (dichotomie) 4 Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! 4 Et on recommence... et là c'est gagné !

coupe en deux 4 opérations L'algorithme qui (dichotomie) 4 Adeline Alexis Anaïs Audrey Aurélie Benoît Charlotte Clara Clémence Emilie Fabien Jafar Jordan Julie Melissa Mohammed Raphaël Sarah Thibault Yanis L'algorithme qui coupe en deux (dichotomie) Ne fonctionne que si la liste est triée ! 4 4 opérations Sur ce coup là, on a mis 4 opérations !

Cet algorithme est correct On peut montrer facilement que l'algorithme est correct. En enlevant la moitié des prénoms, puis encore la moitié, etc. on voit qu'on arrivera à un seul prénom au final et on pourra dire si le prénom recherché est dans la liste ou pas.  

Cet algorithme est correct Et je peux garantir le nombre d'opérations maximum qu'il va faire : On peut également estimer le nombre d'opérations dans le cas général, c'est à dire préciser la complexité de cet algorithme. Intuitivement, on voit qu'il s'agit de diviser en deux, puis encore en deux, etc., jusqu'à trouver son prénom ou bien affirmer qu'il n'y est pas. Donc combien de fois peut-on couper en deux un ensemble ? J'ai choisi de ne pas écrire la complexité ici. Je préfère la laisser au stade de l'intuition mais, comme pour tout le reste, j'espère qu'un jour on me dira "non c'était mieux de la mettre, d'ailleurs je l'ai fait avec un groupe et..." (bref, ça voudra dire que ce support aura servi à quelqu'un et je ne demande que ça ;-) ! ).

Avec 20 prénoms : 6 opérations maximum Et voilà la conclusion de cette partie, qui me parait le message important (un peu de complexité, mais de manière intuitive). Je peux vous garantir qu'avec un liste de 20 prénoms, la dichotomie mettra 6 opérations, dans le pire des cas, pour répondre à Jafar. Avec une liste de 105 prénoms (comme la liste affichée au début) il lui en faudra 8. Alors d'après vous, avec 700 000 prénoms ... ? J'aime bien inciter les participants à y aller franchement et à faire des essais.  

20 opérations maximum ! Et puis on peut les guider en disant "regardez, de 20 à 105, il y a un gros écart, alors que de 6 à 8...". Ça aide l'intuition. Et bon, on va pas faire durer le suspense toute la nuit : c'est 20 opérations maximum.  

20 opérations maximum ! Oui... mais il y a toujours 700 000 élèves qui me demandent de regarder la liste Ce qui alors intéressant, c'est de comparer ces 20 opérations avec l'algorithme exhaustif. Pour moi, le serveur du bac, je dois toujours répondre à 700 000 requêtes. Mais pour chaque requête, au lieu de 700 000 opérations, je vais en exécuter 20.  

20 opérations maximum ! Oui... mais il y a toujours 700 000 élèves qui me demandent de regarder la liste 700 000 x 20 14 000 000 Je passe donc de 500 milliards d'opérations au total, à 700 000x20 = 14 millions.  

14 millions contre 500 milliards... Alors comparons maintenant les deux approches. D'un côté le super algorithme de la dichotomie, et de l'autre l'algorithme exhaustif. Ils vont donc exécuter respectivement 14 millions d'opérations pour la dichotomie, contre 500 milliards pour l'algorithme qui parcourt toute la liste (du premier au dernier, ou bien au hasard).

C'est 35 000 fois plus rapide C'est 35 000 fois plus d'opérations de l'un à l'autre, et une fois l'algorithme implémenté dans une machine, on va très grossièrement estimer que c'est 35 000 fois plus rapide.

1 seconde 10 heures L'occasion de s'amuser un peu avec les temps de réponse. Si la dichotomie met 1 seconde, alors l'autre mettra 10 heures. Bon, vous me direz "10h pour répondre à tous les candidats du bac en France... c'est pas la fin du monde".

1 heure 4 ans Ok, mais si la dichotomie met 1 heure, l'autre en face mettra 4 ans. Là déjà on commence à grincer des dents, et les participants s'en amusent en général ^^ .

1 jour 96 ans Si la dichotomie met une journée, alors l'autre mettra 96 ans ! ! Bon... alors 96 ans pour savoir si tu as le bac... peut-être que tu as d'autres préoccupations depuis...  

1 an ... et là c'est pour voir si vous êtes réveillés :D . Si la dichotomie met 1 an ? L'autre mettra... ? Bah 35 000 ans puisqu'il est 35 000 fois plus rapide ;-) ! Donc, en fonction de l'algorithme qu'elle utilise, une même machine sera plus ou moins rapide pour résoudre un problème.