Skip to content

Tp1 notebook 003 - #22647

Closed
Emmajvx wants to merge 3 commits into
jsboige:mainfrom
Emmajvx:TP1---notebook-003
Closed

Emmajvx wants to merge 3 commits into
jsboige:mainfrom
Emmajvx:TP1---notebook-003

Conversation

@Emmajvx

@Emmajvx Emmajvx commented Oct 26, 2026

Copy link
Copy Markdown

Contribution publique : bienvenue, même sans maîtrise du harnais interne. Remplissez les sections qui vous concernent et décrivez honnêtement les tests effectués.

Étudiants (PR de TP) : remplissez seulement Summary ; votre encadrant traite les checklists et la CI.

Grain (agents internes uniquement — variation-protocol) — première ligne du body, format :

Grain: <TIER>/<GENRE> — lane <machine:workspace> — prev: <TIER>/<GENRE> #<PR>

Summary

Contribution publique

  • Mode : contribution classique / correction d'exercice
  • Issue associée : #...
  • Notebook et exercice concernés (si correction d'exercice) :
  • Crédit souhaité (nom ou pseudonyme GitHub) :

Une correction d'exercice validée sera intégrée comme exemple guidé crédité. Les mainteneurs ajouteront un nouvel exercice non résolu de difficulté comparable ; vous n'avez pas à effectuer cette transformation vous-même.

Changes

Review Checklist

  • 1. Scope — PR does exactly what it announces, nothing more, nothing less
  • 2. Post-fix validation — Automated script ran AFTER the last commit on the deliverable (not just source code)
  • 3. Pedagogical coherence — Exercises aligned with taught content, no redundancy, TODO stubs consistent, logical cell order
  • 4. Real execution — Notebooks executed with outputs (Papermill/Jupyter), Slidev ?clicks=99 for slides
  • 5. Regression check — Grep touched symbols in the rest of the repo; no unintended side effects

Anti-regression

  • No sorry introduced in Lean/Coq certified modules (run: grep -c sorry on touched .lean files)
  • No @pytest.skip or assert True added to bypass failing tests
  • Deletions on production code justified (ratio insertions/deletions reasonable)

Notebook-specific

  • No raise NotImplementedError / assert False / 1/0 in any cell (use pass or print("Exercice a completer"))
  • All code cells have execution_count: <int> + coherent outputs
  • Only notebooks with source changes are committed (rule C.3)

Test plan

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Merci pour ce travail sur le TP 1 (Search-02, recherche non informée). Voici ce que j'ai vérifié, en lisant directement le fichier de la PR.

Le contenu : l'exercice 2 est résolu, et bien résolu. Votre cellule « Analyser l'écart de coût entre BFS et UCS » ne se contente pas du trajet suggéré par l'indice :

  • elle cherche d'abord automatiquement tous les trajets où BFS et UCS divergent (26 sur 132) ;
  • sur Rennes → Nice, elle montre que BFS garde le premier chemin de 5 étapes qu'il trouve (1475 km) alors qu'UCS prend la route du sud-ouest (1300 km), avec le détail arête par arête ;
  • elle vérifie par assert que les coûts annoncés par les algorithmes sont bien la somme des arêtes, et ajoute un cas limite (Bordeaux → Strasbourg, même coût).

J'ai recalculé les sommes de l'explication (1165 km et 990 km pour les tronçons qui diffèrent, écart de 175 km) : elles sont justes. Les exercices 1, 3 et 4 sont encore à l'état d'énoncé ; ce n'est pas un problème pour la présentation, vous pouvez présenter l'exercice 2.

La forme : ce qu'il aurait fallu faire. Comme pour la PR #22645, le fichier soumis n'est pas un carnet Jupyter. C'est la page web de Colab enregistrée par le navigateur (« Copie de Search-02-Uninformed.ipynb » contient du HTML), déposée à la racine du dépôt. La bonne démarche :

  1. dans Colab, Fichier → Télécharger → Télécharger le fichier .ipynb (et non « Enregistrer la page » du navigateur) ;
  2. remplacer le carnet à son emplacement d'origine, MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02-Uninformed.ipynb, en gardant son nom ;
  3. une PR par TP suffit : les deux carnets (Search-01 et Search-02) peuvent aller dans la même PR.

La suite. Je ne vous demande rien de plus : nous intégrons votre exercice 2 dans le carnet officiel comme exemple guidé crédité (crédit : PR #22647), et nous ajoutons un nouvel exercice non résolu de difficulté comparable pour les prochains élèves. Cette PR sera fermée au moment de l'intégration, avec un lien vers la PR qui reprend votre travail.

@github-actions github-actions Bot added the pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928) label Oct 26, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR gate absent du rollup (advisory, #10928)

PR gate est absent du rollup de cette PR et la cause n'est pas determinee : les mesures suivantes ont ete faites, aucune ne tranche.

  • mergeable_state = blocked (pas dirty) ;
  • aucun evenement base_ref_changed dans la timeline ;
  • le sujet du commit de tete ne porte pas le token [skip ci] ;
  • auteur : Emmajvx (pas une PR bot).

Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens.

Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur Emmajvx

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Votre exercice 2 est intégré dans le carnet du cours : PR #22660.

Ce qui a été repris : votre cellule « Analyser l'écart de coût entre BFS et UCS », telle quelle. On y trouve :

  • la recherche automatique des trajets où BFS et UCS divergent (26 sur 132) ;
  • le détail arête par arête de Rennes → Nice (1 475 km pour BFS, 1 300 km pour UCS) ;
  • les trois assert de cohérence des coûts ;
  • le cas limite Bordeaux → Strasbourg ;
  • l'explication des tronçons qui diffèrent.

Elle devient un exemple guidé crédité à cette PR (#22647) dans MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02-Uninformed.ipynb, section 5. Un exercice 5 neuf la prolonge pour les élèves suivants : changer la fonction de coût (pénaliser les routes qui passent par Paris) et observer que l'optimum de UCS change, alors que celui de BFS ne bouge pas. J'ai ré-exécuté tout le carnet avec votre code : il tourne sans erreur.

Le carnet intégré, exécuté, est visible ici pour la présentation :
https://github.com/jsboige/CoursIA/blob/feature/22647-search02-exemple-guide/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02-Uninformed.ipynb

Ce qu'il aurait fallu faire, pour la prochaine fois (même remarque que sur #22645) :

  1. Dans Colab : Fichier > Télécharger > Télécharger le fichier .ipynb, et non « Enregistrer la page sous », qui donne une page web.
  2. Remplacer le carnet à son emplacement d'origine, MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02-Uninformed.ipynb, au lieu d'ajouter un fichier à la racine du dépôt.
  3. Une seule PR par TP suffit : Search-01 et Search-02 pouvaient aller ensemble, avec la section Summary remplie.

Je ferme cette PR puisque son contenu vit désormais dans #22660. Merci, c'est un travail rigoureux !

@myia-ai-01

Copy link
Copy Markdown
Collaborator

Petit complément après relecture de l'intégration (#22660) : une coquille de ton texte d'explication a été corrigée, rien d'autre dans ton code.

Le bloc « Explication » donnait 385 + 465 + 315 = 1165 km pour BFS et 340 + 245 + 405 = 990 km pour UCS, comme s'il s'agissait du coût total du trajet. Ce sont en fait les coûts du tronçon central Nantes → Marseille. Les deux chemins partagent aussi Rennes → Nantes (110 km) et Marseille → Nice (200 km). Le texte donne maintenant les totaux, 110 + 1165 + 200 = 1475 km et 110 + 990 + 200 = 1300 km, qui sont bien ceux que ton code imprime juste au-dessus. Ta conclusion ne change pas : l'écart de 175 km est exact.

Le carnet a aussi été réexécuté sous Python 3.13, la version de référence du dépôt ; les résultats sont identiques. Le lien de la branche reste le même pour la présentation.

myia-ai-01 pushed a commit that referenced this pull request Oct 26, 2026
… BFS/UCS) et exercice 5 (#22660)

* Add(Search,#22647): Search-02 -- exemple guide credite (ecart de cout BFS/UCS) et exercice 5

L'exercice 2 de Search-02-Uninformed, resolu dans la PR de TP #22647,
devient un exemple guide credite par numero de PR (recherche
automatique des 26 trajets divergents sur 132, detail arete par arete
de Rennes -> Nice, assertions de coherence des couts, cas limite).

Un exercice 5 neuf le prolonge : penaliser les routes touchant Paris
et constater que l'optimum UCS de Bordeaux -> Strasbourg change
(1 455 km en 4 etapes attendus) alors que le chemin BFS ne bouge pas.

Carnet re-execute de bout en bout (35/35 cellules, 0 erreur).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fix(Search,#22660): explication de l'exemple guide corrigee, re-execution sous 3.13

- Cellule 39 : le bloc Explication donnait le seul troncon central
  (1165 / 990 km) comme cout du chemin ; il ajoute desormais les aretes
  communes Rennes-Nantes (110) et Marseille-Nice (200) : 1475 / 1300 km,
  coherent avec la table d'aretes imprimee juste au-dessus.
- Re-execution complete sous Python 3.13.16 (canon d'execution locale),
  35/35 cellules, 0 erreur : le kernel drift 3.13 -> 3.12 est leve.
- Registre de parite : asymetrie d'exercices avec le jumeau C# documentee,
  portage suivi par #22680.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Chore(Search,#22660): attestation de parite Search-02 apres integration du TP

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pr-gate-missing PR gate absent du rollup: contexte requis jamais rapporte, PR bloquee, checks verts (#10928)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants