Permalink
Browse files

ajout d'une mise en scène autour des composantes connexes

  • Loading branch information...
sdpython committed Sep 5, 2015
1 parent d30b00b commit 7d32cc0d7dfa1fdac3a2a7f903f6e5c313a0f1ff
@@ -84,6 +84,9 @@ Personne ne sait pourquoi mais il est souvent fatigué.
**Q7 :** A votre le directeur de l'école a-t-il le droit de faire tout ça ?
**Q8 :** A votre avis, la précédente question ne vous enjoint-elle pas à répondre
de façon manichéenne ? Aurait-il le droit de faire autre chose ?
Solution
--------
@@ -69,7 +69,27 @@ Il faut d'abord être conscient de comment les données peuvent être
utilisées. Les données sont utiles mais elles contiennent un peu de votre
intimité.
*Pourquoi on a l'impression que les données ne sont pas dangereuses ?*
**Q8 :**
Il n'y a pas plus de réponse précise qu'à la question précédente mais on
peut apporter quelques nuances. Que pensez-vous des deux cas suivant :
* Le directeur sait qu'un élève précis se connecte à 11h du soir régulièrment.
* Le directeur sait que quelques élèves se connectent à 11h du soir régulièrement
mais il ne connaît pas leurs noms.
La première information permet s'adresser directement à la personne.
La seconde est plus incertaine : le directeur pourra s'adresser à l'ensemble
de la classe en espérant que les personnes concernées saisissent le message.
Ou alors, il pourrait aussi interdire l'accès aux devoirs après 23h,
afficher un message *"allez au lit"* après 23h...
Malgré tout, il reste un dernier cas qu'il faut envisager :
* Le directeur sait qu'un élève précis se connecte à 11h du soir régulièrment
mais il fait croire à tous les élèves qu'il ne peut pas savoir qui.
**Pourquoi on a l'impression que les données ne sont pas dangereuses ?**
On fournit des résultats toujours agrégés.
On ne se voit jamais dans un tableau de chiffres car
@@ -39,6 +39,7 @@ Sujets
orange
demineur
sacados
parti
@@ -54,6 +55,7 @@ Indices et solutions
orange_solution
demineur_solution
sacados_solution
parti_solution
notions
@@ -0,0 +1,95 @@
.. index:: parti
.. _l-algo_division:
Le parti divisé
===============
A partir de 7-8 ans (mais ce n'est qu'une indication).
Dans un certain pays, il existe un parti politique pétri d'inimitiés tenaces.
Est-il possible de scinder le parti en deux pour que chaque paire d'ennemis
intangibles se retrouve de part et d'autre du fossé ?
Mise en scène
-------------
On remplit des bouteilles d'eau (une dizaine) qu'on dispose un peu n'importe comment dans une salle.
On relie certaines d'entre elles par une ficelle rouge. Chaque ficelle rouge symbolise deux personnes
qui ne s'apprécient pas. Il faut dire à chaque nouvelle ficelle si on peut
divisier les bouteilles en deux groupes de telles sortes que deux bouteilles
reliées par une ficelle soient chacun dans un groupe différent. Pour ce faire,
on peut utiliser une ficelle de couleur verte pour symboliser par frontière
entre les deux groupes.
L'objectif est de trouver à quelle condition sur les ficelles rouges
on peut couper le groupe de bouteilles en deux.
Quelques indices :
**Q1 :** On considère le groupe de bouteilles suivant avec quelques ficelles rouges.
On voit clairement deux groupes de bouteilles ! A-t-on besoin de savoir
comment un groupe est divisé pour diviser l'autre ?
.. image:: parti1.png
**Q2 :** Que se passe-t-il lorsque trois bouteilles sont reliés entre elles ?
A vous.
**Q3 :** Et quand il y a plus de trois bouteilles ?
Autres options à programmer
---------------------------
.. index:: composante connexe, graphe
Les aspects algorithmiques abordés ici sont très proches du concept
de `composante connexe <https://fr.wikipedia.org/wiki/Graphe_connexe>`_ dans un graphe.
Le *graphe* est ici composé de l'ensemble des bouteilles et des arcs. Le graphe le plus connu
est Facebook où les bouteilles sont les personnes et les ficelles sont des connexions.
Une composante connexe est un groupe de bouteilles qui sont reliées par des ficelles :
on peut passer d'une bouteille (ou noeud du graphe)
à n'importe quelle autre du groupe en suivant les ficelles (ou arc du graphe).
**Q4 :** combien y a-t-il de composantes connexes dans cet ensemble de bouteilles ?
.. image:: parti2.png
Solution
--------
Voir :ref:`l-algo_division_sol`.
A quoi ça sert ?
----------------
.. index:: coloriage
Sans le savoir, trouver les composantes connexes dans un graphe revient à colorier
le graphe. On choisit une bouteille et on la colorie en rouge. On suit toutes les ficelles
qui la relient à d'autres et on colorie ces autres de la même couleur.
.. image:: parti3.png
**Q5 :** On fait quoi ensuite ?
.. [#fdiv1] Ce problème est tiré d'une compétition google code jam :
`Bad Horse <https://code.google.com/codejam/contest/6234486/dashboard#s=p0>`_
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,79 @@
.. index:: parti
.. _l-algo_division_sol:
Le parti divisé (solution)
==========================
**Q1 :**
La réponse est non. Les deux groupes ne sont reliés par aucune ficelle.
On pourrait avoir cette configuration :
.. image:: parti4s.png
Ou celle-ci :
.. image:: parti5s.png
Dans les deux cas, la ficelle verte *casse* toutes les ficelles rouges.
**Q2 :**
C'est un cas insoluble, trois bouteilles et toutes reliées, il faudrait ranger les bouteilles
dans trois groupes pour casser toutes les inimitiés. Dans deux groupes, il restera toujours une ficelle.
.. image:: parti6s.png
**Q3 :**
Un groupe de bouteilles reliées par des ficelles :
.. image:: parti7s.png
Parmi elles, on distingue un circuit de cinq bouteilles. Les groupes de cinq bouteilles
sont comme les groupes de trois bouteilles : il est impossible de les séparer en deux groupes.
En fait, dès qu'un peut trouver un circuit avec un nombre impair de bouteilles.
**Q4 :**
Il y en a trois.
.. image:: parti2.png
Lorsqu'on tire sur une bouteille, toutes celles qui y sont reliées la suivent.
Il faudra tirer sur au moins trois bouteilles pour débarasser la place
de toutes ses bouteilles.
**Q5 :**
.. image:: parti3.png
Lorsqu'on a colorié toutes les bouteilles en vert. On choisit une autre couleur,
bleu, puis on continue à suivre les fils et on colorie en bleu toute bouteille
reliée par un fil. Lorsqu'on a fini, il reste encore des bouteilles non coloriées,
on choisit une dernière couleur, orange et on recommence.
.. image:: parti8s.png
Dans le cas du problème des inimitiés, il faut procéder de la même manière
en changeant une petite chose : à chaque fois qu'on passe d'une bouteille à une autre
en suivant la corde qui les unit, on change de couleur.
.. image:: parti9s.png
Les deux premiers groupes sont scindables. Le dernier ne l'est pas car
deux noeuds voisins sont de la même couleur.
@@ -1,5 +1,4 @@
.. issue.
.. index:: sac-à-dos, énoncé, poids, algorithme, Dunkerque 2015-03-25
@@ -1,5 +1,4 @@
.. issue.
.. index:: sac-à-dos, solution, poids, algorithme, glouton
@@ -1,5 +1,4 @@
.. issue.
.. index:: voyageur de commerce, énoncé, distance, algorithme, parcours, circuit, tsp, Dunkerque 2015-03-25
@@ -1,5 +1,4 @@
.. issue.
.. index:: voyageur de commerce, solution, distance, algorithme, parcours, circuit, tsp
View
@@ -155,7 +155,8 @@ def write_version():
r = pyquickhelper.process_standard_options_for_setup(
sys.argv, __file__, project_var_name,
unittest_modules=["pyquickhelper"],
additional_notebook_path=["pyquickhelper", "pyensae", "pyrsslocal", "pymyinstall", "pymmails"],
additional_notebook_path=[
"pyquickhelper", "pyensae", "pyrsslocal", "pymyinstall", "pymmails"],
requirements=["pyquickhelper"],
blog_list=os.path.abspath(os.path.join("src", project_var_name, package_data[project_var_name][0])))
else:

0 comments on commit 7d32cc0

Please sign in to comment.