Session du 12 juin 2024 à 20h00
Pratique & Live Coding
TOSA & Certifications
Coup de coeur de l'équipe
Deviens membre Premium magic_button
Cette session de mentorat est réservée aux membres Premium. Rejoignez-nous pour accéder à toutes les rediffusions des sessions de mentorat !
Premium
- check +100h de formations
- check +180 exercices de code
- check +100h de mentorats en rediffusion
- check 20 projets
- check Mentorats groupés hebdomadaires
- check Support individuel avec nos mentors
Graphes Python : parents, enfants et ancêtres
Exploration pas à pas des relations parents-enfants et ancêtres dans un graphe orienté en Python, avec dictionnaires et parcours de sommets pour un exercice de certification TOSA.
00:00:00 :Du coup, je reprends.Du coup, je disais, nous ici le but c'est de savoir, pour savoir en fait s'il y a un arc,donc une flèche de l'un vers l'autre, il nous suffit de déterminer est-ce que l'un est le parent de l'autreou est-ce que l'un est l'enfant de l'autre.
00:00:23 :C'est la manière la plus simple de l'appréhender.Pour ça, on utilise un dictionnaire pour savoir la relation entre chaque.Notre dictionnaire va mapper parent-enfant.Jusque là, vous êtes d'accord.
00:00:36 :Pour faire ça, on va créer notre dictionnaire enfant vers parent et on va dire pour chaque enfant son parenten parcourant notre graphique, donc une liste de tuples.
00:00:47 :Et pour chaque tuple, donc parent-enfant, on va mapper l'enfant-parent et on va avoir un dictionnairecomme ça où on aura tous nos enfants et pour tous les enfants, leurs parents.
00:00:56 :Et comme ça, derrière nous, quand on appelle la fonction, quand on fournit les deux trucs,on a juste à vérifier s'il y a une relation enfant-parent entre les deux ou s'il y a une relation parent-enfantsuivant le sens, est-ce que la flèche est de là vers là ou de là vers là.
00:01:10 :S'il y a bien une flèche de là vers là qui existe, ce sera True, sinon ce sera False.Est-ce que jusque là, ça va ?
00:01:17 :Et c'est ce qui explique, vous remontez la chaîne des parents à partir du sommet cible jusqu'à trouver l'ancêtre recherché.Ça, c'est le truc de base.
00:01:29 :Maintenant, je vous disais tout à l'heure, ici c'est un enfant, ici c'est un parent, ici c'est un ancêtre.Un ancêtre, c'est quelqu'un qui a une relation, moins éloignée, avec votre parent, mais une relation quand même indirecte.
00:01:48 :C'est-à-dire que, par exemple, 3 n'est pas un ancêtre de 2, parce que 3 n'a pas de relation avec le parent de 2.Par contre, 7 et 5 sont des ancêtres de 2, puisque les deux ont une relation avec le parent de 2.
00:02:02 :Est-ce que ça, ça va ?Ça nous permet de revenir à notre fonction, qui était de trouver un ancêtre, et pas le parent.Je vous ai fait d'abord passer étape par étape.
00:02:12 :Il faut quand même comprendre comment marchait la relation par enfant.Mais là, notre but, ça va être de trouver l'ancêtre.C'est pour ça que ce dictionnaire-là va nous être utile.
00:02:22 :On va pouvoir parcourir le dictionnaire de sommet en sommet pour savoir s'il y a deux arts consécutifs.Par exemple, ici je vais partir de 2, je veux savoir si 7 est l'ancêtre de 2.
00:02:32 :Je vais voir s'il y a une relation 2-11 et 11-7.S'il n'y en a pas, il n'y a pas d'ancêtre.Voilà comment il faut appréhender le problème.
00:02:42 :Une fois que vous avez fait votre dictionnaire de cette façon, ce qui va être important, c'est de garder...En fait, on va partir du sommet qu'on donne de base.
00:02:58 :Par exemple, si je reprends ce graphe-là, on va partir ici du sommet 2.Le sommet 2, c'est le premier sommet qu'on donne. Ici, c'est A.
00:03:04 :Je vais l'appeler par exemple « sommet », ça va être le sommet actuel.Je vais mettre « sommet actuel », comme ça on comprend bien.
00:03:09 :Ce qui va être égal à A. On part de ce sommet-là et on remonte.On veut savoir si c'est celui-là qui est un ancêtre.On va faire une boucle while.
00:03:20 :Tant que ce sommet actuel est dans notre dictionnaire,on va continuer à parcourir, parce qu'il faut bien que notre sommet existe dans notre dictionnaire.On entre dans notre boucle while.
00:03:36 :Et maintenant, on veut la remonter.On va redéfinir le sommet actuel par son parent.Pour ça, rien de plus simple, c'est à la lecture de dictionnaire.
00:03:44 :On va aller chercher dans notre dictionnaire le parent,en mettant le sommet actuel comme enfant pour aller parcourir.Alors, le fait qu'il n'y a pas d'image à côté du graphe, c'est vrai que c'est compliqué avec ces valeurs-là d'imager.
00:04:09 :C'est pour ça que j'essaie de vous faire des alt-tab comme ça.Après, ce que je peux faire, c'est que je peux faire ça et ça.
00:04:19 :En espérant que vous voyez quand même bien là, n'hésitez pas à me dire si je dois zoomer.Je fais ça, comme ça.Comme ça, vous voyez quand même le graphe à côté et ça me permet d'illustrer.
00:04:30 :Mais oui, c'est vrai que souvent, en général, dans les exercices, on va vous mettre l'image du graphe et ça vous aidera à l'imager.Après, vous pouvez le dessiner.
00:04:40 :Faire un graphe sur papier vu que tu sais dans quel sens sont les flèches.Oui, on peut faire ça.Après, j'utilise ça pour illustrer, mais on peut.
00:04:47 :Qu'est-ce que tu n'as pas pigé du coup, JK ?Je ne sais pas s'il y a des sites qui existent comme ça.Oui, désolé, je suis un peu neuneu.
00:05:06 :Quand je vois la liste avec différents vecteurs, je ne vois pas un arbre, je ne vois pas un graphique comme tu as ici.Je vois des vecteurs séparés sur un plan.
00:05:17 :Oui, c'est pour ça que je voulais rechercher.Est-ce qu'il n'y avait pas un site qui vous permettrait d'illustrer ça ?Parce que ça, c'est justement comprendre la construction.
00:05:27 :C'est compliqué de vous l'expliquer en une demi-heure.C'est pour ça que je ne sais pas s'il n'y a pas un site qui pourrait...C'est vrai que je ne connais pas de site pour ça, mais...
00:05:51 :En même temps, si je suis la seule à ne pas comprendre, je ne vais pas retarder tout le cours.Non, je pense que même pour vous, ça pourrait vous aider.
00:05:58 :C'est vrai que je ne connais pas de site pour ça, mais c'était beaucoup plus facile de l'illustrer.Je ne sais pas s'il y a d'autres exercices comme ça, mais il faudrait juste à Thibaut de mettre une illustration.
00:06:10 :C'est vrai que là, c'est un petit peu compliqué.En gros, oui, il faut le prendre de gauche à droite.Mais à la limite, je peux essayer de vous le refaire avec celui-là.
00:06:27 :C'est vrai que je ne connais pas de site pour ça, mais il faudra juste à Thibaut de mettre une illustration.Je ne sais pas si vous avez compréhension, mais en même temps, il faut que vous le fassiez.
00:07:03 :Je ne sais pas si vous avez compréhension, mais je n'ai pas les mots.C'est vrai que j'ai pas le temps de le faire, mais je essaie de vous le montrer.
00:07:13 :C'est vrai que je ne connais pas de site pour ça, mais il faut que vous le fassiez.C'est vrai que je n'ai pas le temps de le faire, mais il faut que vous le fassiez.
00:07:19 :Normalement, deux têtes, ça fait longtemps que je n'en ai pas fait, mais on devrait avoir quelque chose comme ça.Est-ce que vous comprenez mieux le fait que vous avez le truc à côté comme ça ?
00:07:33 :Est-ce que vous comprenez mieux le fait que vous avez le truc à côté comme ça ?Je ne sais pas si il y a moyen de vous le faire, celui-là.
00:07:50 :Ça sera un petit peu moche.Non ?Je ne sais pas...Est-ce que vous vous rendez compte ?Je devrais pouvoir avoir vu quelque chose à côté comme ça.
00:08:40 :Je vous le répète.Je suis sur l'écran droite, après vous inquiétez pas.En gros, c'est juste à définir toutes les relations.Et à partir de ça, il faut le décider en connaissant toutes les relations.
00:09:13 :Une fois que vous avez compris le principe, ça va un peu mieux.Merci d'avoir regardé cette vidéo !Merci d'avoir regardé cette vidéo !On devrait arriver sur quelque chose comme ça.
00:10:41 :Je vais essayer de vous trouver un outil, parce que comme vous n'avez pas l'habitude...............Ça va mieux là ?Là vous avez toutes les relations.
00:11:14 :Je ne vais pas prendre le cours là pour vous expliquer comment le construire,mais au moins ça vous permet d'illustrer pour les ancêtres.Donc vous voyez qu'ici 1 est le parent de 3 et de 4,4 est le parent de 5, 2 est le parent de 6,0 est le parent de 1 et de 2,
00:11:29 :7 est le parent seul de 8.Maintenant si on regarde du côté des ancêtres, 0 est un ancêtre de 3,0 est un ancêtre de 5, 0 est un ancêtre de 6,mais 0 n'est pas un ancêtre de 8.
00:11:40 :Ok ?Par exemple, ici 5, 1,donc vous voyez bien que 1 est un ancêtre de 5,donc ça renvoie bien trop.Par contre 4, 6, vous voyez que 4 n'est pas un ancêtre de 6,donc ça a censé renvoyer false. Est-ce que là ça va mieux ?
00:11:57 :On va peut-être commencer par là en vrai.On va peut-être gagner du temps.Il y a des nombres supérieurs à droite d'un noeud dans ton exemple,et inférieurs à gauche.
00:12:08 :Après la valeur du nombre en lui-même n'a pas d'importance.C'est pas parce que le 3 c'est 3 qu'il doit être au-dessus du 1,ou que c'est 1 qui doit être au-dessus du 3.
00:12:17 :Là j'ai mis le 7, 8 tout seul à droite,parce que c'est la seule relation qu'il y a entre les deux,ils n'ont pas de relation entre les autres,donc je les ai mis dans un coin.
00:12:27 :Je ne sais même pas trop pourquoi ils sont là.Ils n'ont pas de relation avec personne d'autre,je ne sais même pas pourquoi il les a rajoutés dans la liste.
00:12:33 :C'est plutôt cette partie-là qui nous intéresse pour les ancêtres.Après non, le 0 est au-dessus du 1, du 3, du 4 et du 5.Le 2 pareil.
00:12:43 :Bon là en soi, oui, ça se suit dans l'ordre.Le 7 et le 8 j'aurais pu les mettre en dessous,parce que là je n'ai plus de place.
00:12:49 :Mais en soi, pour visualiser, oui.T'aurais pu faire n'importe quel chiffre.Évine, si je comprends bien ce que tu as écrit dans le code,en gros tu as créé un dictionnaire qui dit quepour 3 j'ai la valeur 1,pour 1 j'ai la valeur 0,si je prends juste la première branche en gros.
00:13:08 :Et donc ton while part du 3 et ditest-ce que j'ai 3 en enfant ?Si j'ai 3, je le trouve là dans l'histoire,parce que j'ai un 3 vers 1.
00:13:18 :Donc ce que je fais, c'est que je rebonde juste,je dis qu'au lieu de maintenant partir de 3,je remplace mon 3 par mon 1 et je repasse dans la boucle.
00:13:25 :Si j'ai mon 1, est-ce que je trouve un truc ?Et si j'ai un truc 1, je regarde le parentet je rebonde comme ça.
00:13:30 :Et dès que je n'arrive plus à retrouver le truc,ça veut dire que soit j'ai mon résultat,soit je ne l'ai pas en fait.C'est-à-dire que soit j'ai trouvé mon ancêtre,soit je ne l'ai pas trouvé parce que je n'y peux plus remonteret c'est fini et ce n'est pas un ancêtre si je comprends bien.
00:13:43 :Exactement ça.En fait tu vas remonter comme ça tout droit,tu pars d'un sommet que tu donneset tu vas remonter tout droit comme çaavec tous ses parents, un à un.
00:13:53 :Ta boucle de while en fait elle va faire tac, tac, tac,ou tac, tac, tac,jusqu'à arriver au sommet maximum.Et si en parcourant tous les sommetstu n'es pas tombé sur la deuxième valeur que tu donnes,donc que c'est un ancêtre, c'est que ce n'est pas un ancêtre.
00:14:05 :Oui parce que là en fait dans le code,il manque une petite ligne qui est le test.Oui j'ai pas fini de le faire.Il manque le if pour voir si c'est égal à Bet en gros si on remonte tout en hautet qu'on n'a pas eu le if de valide, c'est que ce n'était pas un ancêtre.
00:14:17 :C'est exactement ça.Tu l'as très bien deviné, ici il y a juste à mettre un ifsommet actuel est égal à B.A ce moment-là,c'était juste à la fin de la fonction,mais du coup en fin de dessinée je n'ai pas eu le temps de le faireet sinon on est dans le false.
00:14:31 :C'est quand tu remontes, soit tu le trouves,soit tu continues jusqu'au boutet si tu ne l'as pas trouvé en arrivant au bout,c'est que ce n'était pas bon, ce n'était pas un ancêtre.
00:14:39 :Ok.Par contre j'imagine que lui pour son testil a mis graphiquement ça, donc je vais le renommer comme çaet normalement...Tu as mis une parenthèse en haut.
00:15:03 :Quand tu as défini ton dictionnaire,tu as mis une accolade et une parenthèse à la fin,j'ai l'impression.Ah oui, en effet, bien vu.Voilà.
00:15:17 :On arrive avec quelque chose de bien.Maintenant on peut repasser dessus, maintenant qu'on a le schéma,on va pouvoir le refaire étape par étape.Mais du coup,Arnaud, tu avais très bien compris comment ça marchait.
00:15:27 :Mais du coup, j'aurais dû faire ça dès le début pour que vous compreniez,on aurait gagné pas mal de temps.On vous donne un graphe.
00:15:33 :Le graphe est défini par une liste avec des tuples.Chaque tuple correspond à une relation parent-enfant.À partir de ça,il faut essayer de deviner, mais je vous l'ai dit,essayez de vous former un petit peu de votre côté.
00:15:43 :C'est vraiment des cours basiques,il n'y a pas besoin de passer des heures et des heures.Une fois que vous l'avez dessiné,normalement sur le Toza, il vous les fournit.
00:15:51 :Du coup, il faut les visualiseret ainsi vous pouvez savoir que ici,1 est un parent de 3, 4 est un parent de 5et au-dessus du parent,donc dès que c'est une relation supérieure à parent,on va appeler ça un ancêtre.
00:16:03 :Donc ici, 1 est un ancêtre de 5,4 est son parent,0 est un ancêtre de 5,mais comme on le disait tout à l'heure,1 n'est pas un ancêtre de 6, par exemple.
00:16:13 :Donc là, le but de la fonction, c'est de savoircomment on définitsi un chiffre donnéest l'ancêtre d'un autre sommet donné.Pour ça, comme je le disais,on fait un dictionnairegrâce à notre graphe.
00:16:27 :On va définir le parent pour chaque enfant,on va définir notre sommet actuelduquel on veut partir,et on va faire une boucle wild, on va remonter,comme l'a expliqué Arnaud.
00:16:37 :A chaque fois, on redéfinit le parent,on regarde le sommet d'au-dessus.Si le sommet d'au-dessus est égal à la valeur qu'on recherche,c'est que c'est bien son ancêtre,donc à ce moment-là, on returne True.
00:16:47 :Sinon, on continue à remonter jusqu'à un moment donnéoù on ne peut plus remonter,et donc si on ne peut plus remonter et qu'on n'a pas trouvé la valeur,on retourne False.
00:16:55 :Voilà pour l'exercice.Est-ce que c'est clair pour tout le monde ?Là, vous aurez l'enregistrement, j'ai pensé à le lancerpile avant qu'on le fasse.
00:17:03 :Pour ceux qui voudront reprendre le temps de le revoir en replay,vous l'aurez.Vous n'aurez pas les 10-15 premières minutes,mais en soi, on a un petit peu bablaté,donc ce n'est pas très important.
00:17:13 :Est-ce qu'il y a des questions sur cet exercice-là ?Est-ce que vous voulez revoir une partie en particulier ?GénériqueOui, vas-y, c'est là.Allô ?
00:17:50 :C'est vrai, je ne suis pas du tout ça, mais je voulais juste savoir comment, dans ce cas par exemple,le sommet actuel est égal en forme vers par en sommet actuel,comment Python pourra savoir qu'on veut remonter dans l'arbre essence en fait ?
00:18:07 :Déjà, on est de 3, on veut remonter à 4, pour savoir est-ce que 4 est un parent de 5, ainsi de suite.En fait, l'action, la ligne 6, je vais bien comprendre en fait.
00:18:18 :La ligne 6, c'est qu'en fait, on va définir un sommet de base, à partir duquel on remonte.Donc ici, on va dire par exemple que c'est 3.
00:18:26 :On va dire que tant que notre valeur là est dans notre dictionnaire, tant que le sommet existe,on va du coup continuer à le parcourir.
00:18:33 :Pour le parcourir, on va redéfinir notre sommet actuel pour la prochaine itération,donc la valeur dessus, donc à son parent.Comme ça, ça nous permet de remonter petit à petit en fait.
00:18:43 :À chaque itération de ta boucle, comment ça s'appelle, de ta boucle OIL, on va itéreret on va redéfinir le sommet d'au-dessus à chaque fois.
00:18:50 :Comme ça, ça te permet de remonter.Une fois que cette valeur-là, tu l'as réassignée à son parent,tu vérifies si cette valeur-là correspond à la valeur de l'ancêtre que tu recherches.
00:19:01 :Par exemple, ici, je veux savoir si 1 est un ancêtre de 3.Techniquement, c'est un parent, mais c'est aussi un ancêtre.Ici, je suis parti de 3, je remonte de 1.
00:19:11 :Donc ici, ma valeur sommet actuelle est égale à 1.Donc si ma valeur sommet actuelle est égale à la valeur que j'ai recherchée,disons que je voulais savoir que 1 était un parent,bah ici, il va dire que oui.
00:19:21 :Donc ça va arrêter en trou et la fonction va s'arrêter.Mais imaginons que j'avais dit que c'était 2 et qu'on était parti de 3.Donc le A est égal à 3, première itération.
00:19:32 :Ensuite, on définit notre parent.Donc le A est égal normalement à 1 maintenant.1 n'est pas égal à 2, on continue.On refait une itération.
00:19:40 :Maintenant, 1 est égal à 0.D'accord, je vois.On continue, 0 n'est pas égal à 2.Donc 0 n'a plus de parent.Il n'est plus dans le dictionnaire.
00:19:51 :Donc la fonction s'arrête et on return false.2 n'est pas un ancêtre.Super, ça va, merci.Je pense qu'il vaut mieux le refaire soi-même de votre côté, Cécile.
00:20:01 :Vous aurez la rediffusion.N'hésitez pas à le mettre sur le côté.À vous redessiner le graphe dans votre coin.Je vais vous le redessiner propre et je vais vous l'envoyer en photo, si ça vous intéresse.
00:20:16 :Comme ça, au moins, ce sera fait.La difficulté ici, c'était que le graphe n'est pas représenté dans le code, surtout.Après, je pense que c'est quand même important que vous preniez un petit peu de votre tempspour comprendre ce que c'est un graphe côté mathématiques.
00:20:34 :Et comment l'illustrer en Python avant de savoir le manipuler.Prendre une demi-heure, une heure de votre temps pour aller voir des cours ou quoi.Et je pense que c'est important de le faire.
00:20:49 :J'avais regardé un petit peu à un moment ces graphes-là, justement.Et j'avais vu qu'il y avait des algos pour parcourir en largeur ou en profondeur les graphes.
00:20:58 :Oui.Dans quel cas, tu utilises plutôt des parcours en largeur ou des parcours en profondeur ?Je t'avoue, je ne me rappelle plus la différence entre les deux.
00:21:09 :Mais ça peut servir à quoi, justement, ce type de parcours ?Parce que là, on remonte un par un, alors que quand on fait les parcours en profondeur,c'est des algos où ils parcourent tout le graphe pour arriver à visualiser tout le graphe.
00:21:21 :Techniquement, ça, c'est un algo en profondeur.D'accord.C'est une sorte d'algo en profondeur, parce qu'en fait, tu vas remonter jusqu'à la racine.Ce n'est pas du profondeur maximal, parce que tu ne vas pas non plus parcourir toutes les branches partout.
00:21:58 :Mais c'est une sorte d'algo en profondeur, parce que tu pars d'un sommet que tu donnes,et tu vas remonter jusqu'à sa racine.C'est après que c'était en profondeur et l'autre en largeur, il me semble.
00:22:13 :Là, tu vas parcourir sur le côté.C'est un peu moins commun, quand même, le largeur.En général, c'est quand même plus des profondeurs.Je ne sais pas si vous avez déjà entendu parler.
00:22:22 :Là, ça va ce côté un petit peu partout.C'est un mélange des deux.Il y a des voisins sur les côtés et aussi un profondeur au-dessus et au-dessous.
00:22:29 :Je pense que ça, c'est un exemple d'utilisation, l'algorithme des cas plus proches voisins.Si vous ne connaissez pas, vous devez vous renseigner.C'est assez utilisé.
00:22:37 :Et après, notamment pour l'IA, pour essayer de trouver des connexions avec des mots, etc.Par exemple, les IA, chat.gpt, pour donner un exemple de comment ils fonctionnent.
00:22:50 :Quand vous allez faire une phrase.Imaginons que vous faites une phrase en français et qu'il y a un des mots.Vous mettez un mot en anglais.
00:22:59 :Chat.gpt va prendre la France dans son ensemble et il va essayer de comprendre ce mot-là en anglaisen associant le reste de la phrase pour que ça ait du sens.
00:23:11 :Il y a plein de cas comme ça.Aujourd'hui, par exemple, je vous cache un ou deux mots.Globalement, vous allez pouvoir les deviner grâce au sens de la phrase.
00:23:20 :C'est un petit peu ça que chat.gpt fait.Par exemple, si vous oubliez un mot dans votre phrase et que vous mettez un mot en anglais,il va prendre votre phrase, il va faire une sorte d'algorithme des plus proches voisins,des deux profondeurs, etc.
00:23:32 :Un peu une sorte de graphe où il va aller vérifier tous les mots qui ressemblent, etc.pour essayer de construire une phrase qui a du sens.
00:23:38 :Ça, c'est un exemple d'utilisation de graphe, par exemple.Il va avoir pour chaque mot un graphe avec tous les mots qui lui ressemblentet qui ont du sens pour construire une phrase.
00:23:47 :Je repense à d'autres cas en écoutant ce que tu disais.Il y a les algos de recherche itinéraire parce que tu veux le plus court itinéraire,tu veux analyser tout ton graphe pour aller d'un point A à un point B.
00:24:00 :Quelle est la branche la plus courte en analysant tout ton graphe avantpour après avoir la branche la plus courte.DGP, c'est un algorithme de graphe en profondeur.
00:24:10 :C'est vrai qu'il y avait ça.Des plus proches voisins même, pour être plus précis.Parce que le plus proche voisin, c'est pareil.Imaginons que je reprends ce graphe-là.
00:24:22 :Je reprends ce graphe-là et que je pars par exemple de 5.Je veux savoir qui est le plus proche entre 3 et 6.Ici ça va faire 1, 2, 3.
00:24:43 :Il y a 3 itérations.1, 2, 3, 4, 5 itérations.Le plus proche voisin c'est 3.Et là c'est un mélange de profondeur parce qu'il va quand même remonteret aussi de largeur parce qu'il va quand même redescendre si besoin nécessairepour aller chercher la valeur qu'il a besoin.
00:24:58 :Il ne va pas s'arrêter à juste remonter comme on a pu le voir dans cet exercice-là.On est d'accord que dans un truc comme ça, ça marche.
00:25:05 :Là ça ne marcherait pas parce qu'on est sûr de l'orienter que dans un sens.Mais c'est dans le cas où tu vas dans les deux sens,où tu es sûr avant de l'orienter, ce type de recherche.
00:25:15 :Sinon il ne peut pas aller à 6 justement.Après là on l'a fait, même s'il n'y a pas de flèche en fait,ça pourrait marcher quand même indirectement,enfin pas dans le cadre d'une recherche dictionnaire,parce que du coup en effet tu ne peux pas revenir en arrière,il n'y a pas de flèche sur ton graphe, mais c'est codable.
00:25:39 :C'est-à-dire que là tu as bien vu qu'on a quand même réussi à remonteralors qu'il n'y avait pas de flèche dans ce sens-là.En utilisant un dictionnaire qu'on appelle les parents.
00:25:45 :Donc techniquement en utilisant toujours un dictionnaire en m'appelant les parents,je pourrais savoir qui est le plus proche entre 3 et 6.Mais ce n'est pas pour autant que je pourrais appliquer les résultatsdans une situation précise.
00:25:55 :Oui c'est ça, tu ne pourrais pas forcément faire l'incinérairesi tu ne veux pas mettre le mec en sens interdit pour aller dans le droit.
00:26:00 :Oui, ça va.C'est gentil à toi pour ton partage Arcel,si il y en a comme ça ils pourront aller voir un petit peu.Ok.
00:26:23 :Est-ce qu'il y a des petites dernières questions de dernière minute ?Oui, car c'est ça.Dites-vous que ça c'est vraiment le plus gros de vos exercices de la semaine.
00:26:42 :Des choses qui peuvent tomber au tosa.Donc voilà, vous aurez la rediff, n'hésitez pas à le refaire de votre côtépour bien comprendre.Et si jamais vous avez besoin d'aide pour refaire cet exercice-làou sur d'autres exercices, n'hésitez pas à me mentionnerdans le channel Mentora sur le Discord, je vous aiderai avec plaisir.
00:27:03 :Ok.Pas d'autres questions ?Je vais remettre, ceux qui sont peut-être à la fin qui n'ont pas entendu,ceux qui viennent de la feuille de présence, ceux qui viennent du tosa.
00:27:17 :Et du tosa uniquement, n'oubliez pas de remplir votre feuille de présence.Ça nous permet d'avoir le suivi.Voilà.Par curiosité, est-ce qu'il y en a qui viennent du CPF ?
00:27:32 :Ok, toi tu viens du CPF.Ok.Écoutez, merci à tout le monde d'être venu.Non, c'est parce que je ne parlais pas là.Je ne parlais pas, ne vous inquiétez pas.
00:28:22 :Demain, pour ceux qui s'intéressent, je fais une présentation sur le Discordà 20h30 sur le crypto-jacking.C'est-à-dire comment les attaquantspeuvent utiliser vos appareils, compromettre vos appareilspour miner des cryptomonnaies.
00:28:42 :C'est un sujet de super sécurité, si ça intéresse certains.20h30, il sera disponible aussi en rediffusion.Mais c'est sur le Discord, ce n'est pas sur Meet, attention.
Aucune occurrence trouvée pour « ».
00:00:04
Résolution de l'exercice des graph
00:00:30
Utilisation d'un dictionnaire pour les relations parent-enfant
00:01:01
Vérification des relations entre nœuds
00:01:28
Définition d'un ancêtre
00:02:15
Utilisation du dictionnaire pour trouver les ancêtres
00:03:12
Parcours du graphe pour identifier les ancêtres
00:05:00
Discussion sur la visualisation des graphes
00:11:15
Explication du code pour remonter les ancêtres
00:17:50
Question sur le sommet actuel et la remontée dans l'arbre
00:20:26
Importance de la compréhension des graphes
00:21:06
Parcours en profondeur et en largeur
00:29:11
Conclusion et prochaines sessions