La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Votre prénom est-il dans la liste qui va suivre ?"— Transcription de la présentation:

1 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 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. ;-) ).

2 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 ;-) ).

3 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.

4 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 ! )

5 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

6 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é ! ".

7 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).

8 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.

9 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 ?).

10 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 ?

11 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.

12 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 fois, alors on va constater des performances moyennes similaires pour les deux.

13 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 é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 candidats au bac. Imaginons que je suis le serveur qui détient la liste des prénoms avec l'inscription "oui" ou "non" pour l'obtention du bac. Je vais donc recevoir fois la question "est-ce que je suis reçu". Et fois, je vais devoir regarder dans une liste de prénoms.

14 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).

15 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 !

16 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à.

17 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é).

18 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

19 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 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 ?

20 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.

21 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.

22 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é !

23 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 !

24 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.

25 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 ;-) ! ).

26 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 prénoms ... ? J'aime bien inciter les participants à y aller franchement et à faire des essais.

27 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.

28 20 opérations maximum ! Oui... mais il y a toujours é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 à requêtes. Mais pour chaque requête, au lieu de opérations, je vais en exécuter 20.

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

30 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).

31 C'est fois plus rapide C'est 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 fois plus rapide.

32 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".

33 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 ^^ .

34 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...

35 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 ans puisqu'il est 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.


Télécharger ppt "Votre prénom est-il dans la liste qui va suivre ?"

Présentations similaires


Annonces Google