diff --git a/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-CSharp.ipynb b/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-CSharp.ipynb index 7c7039ac68..a255b12eaa 100644 --- a/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-CSharp.ipynb +++ b/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-CSharp.ipynb @@ -2903,22 +2903,22 @@ "source": [ "## Annexe S10 - Pont `Microsoft.Z3` natif : l'automate symbolique, sans detour\n", "\n", - "> **Grain DEEP/notebook-dotnet, lane `myia-po-2023:CoursIA-2`, prev: `DEEP/notebook-dotnet #10450`**\n", - ">\n", - "> **Contexte :** la fiche de parite `scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata.yaml` porte aujourd'hui `bridge_verdict: INTRINSIC` au motif que \"le C# (pur System.* stdlib, 0 NuGet, 18 cellules code) construit la logique d'automate symbolique from scratch\". **L'omission est la suivante** : le notebook utilise deja `Microsoft.Z3` (cellule 17, NuGet officiel, axe 1 du registre #3801), et il resout des **contraintes d'automates symboliques** dans la theorie des chaines - **uniquement en passant par le fork Automata** (cellule 21) ou par `ParseSMTLIB2String` textuel (cellule 26). Cette annexe exhibe le **constructeur d'automate symbolique directement emit en SMT-LIB 2.6 par concatenation C# depuis le notebook**, et le moteur `Microsoft.Z3` qui le resout - **sans fork Automata, sans lib externe**, juste la lib officielle Microsoft.Z3 et la theorie des chaines Z3.\n", + "> **Contexte** : la fiche de parite `scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata.yaml` porte aujourd'hui `bridge_verdict: INTRINSIC` au motif que \"le C# (pur System.* stdlib, 0 NuGet, code from scratch, sans lib externe) construit la logique d'automate symbolique from scratch\". **L'omission est la suivante** : le notebook utilise deja `Microsoft.Z3` (cellule 17, NuGet officiel, axe 1 du registre SOTA axe-2), et il resout des **contraintes d'automates symboliques** dans la theorie des chaines - **uniquement en passant par le fork Automata** (cellule 21) ou par `ParseSMTLIB2String` textuel (cellule 26). Cette annexe exhibe le **constructeur d'automate symbolique directement emit en SMT-LIB 2.6 par concatenation C# depuis le notebook**, et le moteur `Microsoft.Z3` qui le resout - **sans fork Automata, sans lib externe**, juste la lib officielle Microsoft.Z3 et la theorie des chaines Z3.\n", "\n", "> **Ce que cette annexe prouve** : sous l'angle **axe 1 (binding .NET / NuGet officiel)**, `Microsoft.Z3` est atteignable et **rejoint des contraintes d'automates symboliques**. Le verdict precedent (\"INTRINSIC pour limite academique SFAz3+Z3 'monstre regex tronque'\") reste **valide en second niveau** (la limite SFAz3/Z3 existe, cap du temoin a ~21 caracteres sans le detour par la theorie des chaines : voir `known_differences` du yaml) mais n'est plus de premier niveau. Le triptyque devient :\n", - ">\n", - "> | Niveau | Verdict | Motif |\n", - "> |---|---|---|\n", - "> | Premier (ce qu'on ajoute) | **`RECOVERABLE-LOCAL`** | la lib `Microsoft.Z3` (NuGet, chargee par cellule 17) resout la theorie des chaines, donc la **contrainte d'automate symbolique** via `str.in_re`. Pont direct .NET -> SMT-LIB 2.6 -> temoin. |\n", - "> | Second (connu_differences) | plafond SFAz3+Z3 \"monstre regex tronque\" | la limite est **academique et documentee** (cap du temoin ~21 caracteres SFAz3, voir issue upstream AutomataDotNet/Automata#6), pas un workaround degrade. Ce plafond vit dans `known_differences` du yaml. |\n", - ">\n", - "> **Ce que cette annexe ne fait PAS** : remplacer la voie from-scratch (cellules 5-7) ou la voie fork Automata (cellule 21). Le from-scratch garde sa valeur pedagogique (reconnaissance de l'explosion DFA), le fork Automata reste le pont avec `&` / `~` first-class. Cette annexe est **en plus**, jamais a la place - mandat #10382 (parite lib-vs-lib).\n", + "\n", + "| Niveau | Verdict | Motif |\n", + "|---|---|---|\n", + "| Premier (ce qu'on ajoute) | **`RECOVERABLE-LOCAL`** | la lib `Microsoft.Z3` (NuGet, chargee par cellule 17) resout la theorie des chaines, donc la **contrainte d'automate symbolique** via `str.in_re`. Pont direct .NET -> SMT-LIB 2.6 -> temoin. |\n", + "| Second (connu_differences) | plafond SFAz3+Z3 \"monstre regex tronque\" | la limite est **academique et documentee** (cap du temoin ~21 caracteres SFAz3, voir issue upstream AutomataDotNet/Automata#6), pas un workaround degrade. Ce plafond vit dans `known_differences` du yaml. |\n", + "\n", + "> **Ce que cette annexe ne fait PAS** : remplacer la voie from-scratch (cellules 5-7) ou la voie fork Automata (cellule 21). Le from-scratch garde sa valeur pedagogique (reconnaissance de l'explosion DFA), le fork Automata reste le pont avec `&` / `~` first-class. Cette annexe est **en plus**, jamais a la place - le mandat de parite lib-vs-lib (jumeau C# / jumeau Python) reste la raison d'etre de la fiche de parite.\n", "\n", "### Lecture que cette annexe referme\n", "\n", - "Le titre du notebook est \"Le Sudoku comme Regex Symbolique\". Il a resolu la promesse via SMT-LIB 2.6 emis par fork Automata (cellule 21) ou via emmission manuelle (cellule 26). Il manquait un troisieme chemin : **construire un terme regex SMT-LIB 2.6 directement** depuis C# (StringBuilder), le passer a `Microsoft.Z3.Context.ParseSMTLIB2String` (API native), et le resoudre. Ce chemin montre que la lib Microsoft.Z3 elle-meme - sans fork Automata - tient le role de **constructeur d'automate symbolique** : la representation reguliere (`re.++`, `re.*`, `re.inter`, `re.range`) est un **terme SMT-LIB 2.6** direct, et la theorie des chaines le resout." + "Le titre du notebook est \"Le Sudoku comme Regex Symbolique\". Il a resolu la promesse via SMT-LIB 2.6 emis par fork Automata (cellule 21) ou via emmission manuelle (cellule 26). Il manquait un troisieme chemin : **construire un terme regex SMT-LIB 2.6 directement** depuis C# (StringBuilder), le passer a `Microsoft.Z3.Context.ParseSMTLIB2String` (API native), et le resoudre. Ce chemin montre que la lib Microsoft.Z3 elle-meme - sans fork Automata - tient le role de **constructeur d'automate symbolique** : la representation reguliere (`re.++`, `re.*`, `re.inter`, `re.range`) est un **terme SMT-LIB 2.6** direct, et la theorie des chaines le resout.\n", + "\n", + "> Provenance : Process metadata (lane, prev PR) deporte en pied de cellule. Issue de reference : #19240 (Tranche B, fille de #14446).\n" ] }, { @@ -3111,22 +3111,9 @@ "\n", "2. **`Microsoft.Z3` resout, et le temoin est immediat.** Le solveur de chaines Z3 reconnait en millisecondes que le langage regulier decrit (sous-sequence ordonnee 1..9) est habite, et produit un temoin. La these du notebook (\"le regex, bien emis, est l'outil\") est demontree a nouveau, par une **autre** emmission de la **meme** contrainte.\n", "\n", - "3. **Pas de fork Automata, pas de cell 21.** Le Pont utilise exclusivement `Microsoft.Z3` (cellule 17, NuGet, axe 1 registre #3801), `Context.ParseSMTLIB2String` (API native) et la theorie des chaines Z3. C'est **la lib Microsoft.Z3 qui est le moteur**, pas un wrapper autour d'un autre solveur.\n", - "\n", - "### Pourquoi le verdict change de niveau\n", - "\n", - "La fiche de parite `scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata.yaml` porte `bridge_verdict: INTRINSIC` au motif que \"le C# construit la logique d'automate symbolique from scratch\". **La clause \"from scratch\" est vraie en l'etat du depot avant cette annexe** : le notebook C# utilise `Microsoft.Z3` pour la **resolution** (cellule 18, `Distinct` sur 81 entiers) mais deleguait la **construction d'automate** au fork Automata (cellule 21) ou a un SMT-LIB 2.6 ecrit a la main (cellule 26). L'annexe **referme cette brèche** : la lib est bien employee pour les deux roles. Le verdict devient :\n", - "\n", - "- **Premier niveau (registre modifie)** : `RECOVERABLE-LOCAL` - la lib `Microsoft.Z3` (NuGet, axe 1 du registre #3801) resout des contraintes d'automates symboliques via la theorie des chaines. **Le C# n'est pas \"from scratch\" pour la theorie des chaines** : il l'invoque.\n", - "- **Second niveau (known_differences, inchange)** : la limite SFAz3+Z3 \"monstre regex tronque\" reste vraie (cap du temoin ~21 caracteres sur le chemin SFAz3 d'origine, voir issue AutomataDotNet/Automata#6). Cette limite est **academique et documentee**, pas un workaround degrade - c'est pourquoi elle vit dans `known_differences` du yaml, pas dans `bridge_verdict`.\n", - "\n", - "### Mirroir du precedent GT-17 (#10464)\n", - "\n", - "Meme structure a deux niveaux :\n", - "- **Premier niveau** : la lib est atteignable (axe 1 NuGet = RECOVERABLE-LOCAL).\n", - "- **Second niveau** : la limite \"monstre regex tronque\" est partagee par les deux jumeaux (pas un defaut de parite).\n", + "3. **Pas de fork Automata, pas de cell 21.** Le Pont utilise exclusivement `Microsoft.Z3` (cellule 17, NuGet, axe 1 du registre SOTA axe-2), `Context.ParseSMTLIB2String` (API native) et la theorie des chaines Z3. C'est **la lib Microsoft.Z3 qui est le moteur**, pas un wrapper autour d'un autre solveur.\n", "\n", - "From-scratch from-scratch (cellules 5-7) et fork Automata (cellule 21) restent en place. Le pont est en plus, jamais a la place." + "> Provenance : Les sections *Pourquoi le verdict change de niveau* et *Mirroir du precedent GT-17* sont deports au carnet de verifications (voir issue #19240).\n" ] }, { @@ -3234,7 +3221,7 @@ "[Sudoku-14](Sudoku-14-BDD-CSharp.ipynb) construit ses BDD **from scratch** en\n", "C# pur ; cette annexe prend le chemin complémentaire : sans réimplémenter le\n", "moteur, elle **invoque le même `dd.autoref.BDD` que le jumeau Python** via le\n", - "pont .NET -> pythonnet -> CPython (axe 5 du registre #3801 : « la lib a-t-elle\n", + "pont .NET -> pythonnet -> CPython (axe 5 du registre SOTA axe-2 (la lib a-t-elle un binding Python ?) : « la lib a-t-elle\n", "un binding Python ? » — ici le pont va le chercher).\n", "\n", "Un BDD est un **automate déterministe acyclique** : chaque variable booléenne\n", @@ -3255,7 +3242,7 @@ "> **Prérequis d'exécution** : la variable d'environnement `PYTHONNET_PYDLL`\n", "> doit pointer vers une DLL CPython hébergeant `dd` épinglé (`pip install\n", "> dd==0.6.0`). Ce notebook ne hardcode aucun chemin machine (précédent\n", - "> Search-7) ; la cellule échoue explicitement si la variable est absente." + "> Search-7) ; la cellule échoue explicitement si la variable est absente.\n" ] }, { diff --git a/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-Python.ipynb b/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-Python.ipynb index bf004f7f4d..2299bfd49e 100644 --- a/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-Python.ipynb +++ b/MyIA.AI.Notebooks/Sudoku/Sudoku-13-SymbolicAutomata-Python.ipynb @@ -23,14 +23,14 @@ "\n", "> **Twin Python** de [Sudoku-13-SymbolicAutomata-CSharp](Sudoku-13-SymbolicAutomata-CSharp.ipynb). Ce notebook reprend, **côté Python**, la tentation de représenter un Sudoku non pas comme un monstre PCRE à backtracking, mais comme une **chaîne déclarative tractable**.\n", "\n", - "## Complémentarité (#3801 Prong B)\n", + "## Complémentarité (registre SOTA axe-2, parite lib-vs-lib)\n", "\n", "| Twin | Outils | Valeur |\n", "|------|--------|--------|\n", "| C# (Resharp RE# + Microsoft.Automata + Z3.NET) | DLLs `.deploy` in-repo, intersection déclarative | la chaîne d'outils symboliques de Veanes (AutomataDotNet) |\n", "| **Python (z3-solver + regex + automata-lib)** | PyPI, idiomatique Python | **la récursivité `(?&rec)` du module `regex`** — capability que .NET REJETE |\n", "\n", - "**Le point de bascule** : les Sudoku-en-un-regex célèbres (Conway, ikegami PerlMonks 471168) reposent sur la **récursion `(?R)`/`(?&nom)`** — un langage **non régulier**. Le twin C# démontre (cellule 15) que `System.Text.RegularExpressions` **rejette** cette syntaxe à la construction. Le module Python [`regex`](https://pypi.org/project/regex/) la **supporte** : ce twin peut donc *exécuter* une approche récursive que le twin C# ne fait qu'évoquer. C'est la valeur complémentaire — pas un simple miroir." + "**Le point de bascule** : les Sudoku-en-un-regex célèbres (Conway, ikegami PerlMonks 471168) reposent sur la **récursion `(?R)`/`(?&nom)`** — un langage **non régulier**. Le twin C# démontre (cellule 15) que `System.Text.RegularExpressions` **rejette** cette syntaxe à la construction. Le module Python [`regex`](https://pypi.org/project/regex/) la **supporte** : ce twin peut donc *exécuter* une approche récursive que le twin C# ne fait qu'évoquer. C'est la valeur complémentaire — pas un simple miroir.\n" ] }, { @@ -1123,13 +1123,13 @@ "\n", "Ce twin Python parcourt la même échelle que le twin C# — Conway -> reconnaissance -> résolution -> théorie des chaînes — mais **complète** là où le C# bute : la **récursion `(?&rec)`** du module `regex` exécute les langages non-réguliers que `System.Text.RegularExpressions` rejette. Les Sudoku-en-un-regex célèbres reposent précisément sur cette récursion ; le twin Python est donc le seul des deux à pouvoir *démontrer* cette voie, pas seulement l'évoquer.\n", "\n", - "**Bilan complémentaire (#3801 Prong B)** :\n", + "**Bilan complémentaire (registre SOTA axe-2)** :\n", "- `re` + lookaheads : reconnaissance linéaire d'une ligne/grille valide.\n", "- `z3-solver` : résolution (production de la grille) + théorie des chaînes (reconnaissance SMT).\n", "- `regex` `(?&rec)` : le seul outil des deux twins qui franchit la frontière du régulier.\n", "- Backtracking récursif : le contre-point robuste, compétitif sur 9x9.\n", "\n", - "> Retour au [twin C#](Sudoku-13-SymbolicAutomata-CSharp.ipynb) — où le barreau récursion est documenté comme un mur (.NET rejette `(?R)`)." + "> Retour au [twin C#](Sudoku-13-SymbolicAutomata-CSharp.ipynb) — où le barreau récursion est documenté comme un mur (.NET rejette `(?R)`).\n" ] } ], @@ -1184,4 +1184,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/MyIA.AI.Notebooks/Sudoku/Sudoku-16-NeuralNetwork-Python.ipynb b/MyIA.AI.Notebooks/Sudoku/Sudoku-16-NeuralNetwork-Python.ipynb index b81729db22..786d68c6f7 100644 --- a/MyIA.AI.Notebooks/Sudoku/Sudoku-16-NeuralNetwork-Python.ipynb +++ b/MyIA.AI.Notebooks/Sudoku/Sudoku-16-NeuralNetwork-Python.ipynb @@ -38,56 +38,56 @@ "print(f\"BATCH_MODE = {BATCH_MODE}\")\n" ] }, - { - "cell_type": "markdown", - "execution_count": 1, - "id": "header-nav", - "metadata": { - "papermill": { - "duration": 0.007343, - "end_time": "2026-08-19T19:44:02.496247+00:00", - "exception": false, - "start_time": "2026-08-19T19:44:02.488904+00:00", - "status": "completed" + { + "cell_type": "markdown", + "execution_count": 1, + "id": "header-nav", + "metadata": { + "papermill": { + "duration": 0.007343, + "end_time": "2026-08-19T19:44:02.496247+00:00", + "exception": false, + "start_time": "2026-08-19T19:44:02.488904+00:00", + "status": "completed" + }, + "tags": [] }, - "tags": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BATCH_MODE = true\n" + ] + } + ], + "source": [ + "# Sudoku-16 : Résolution par Réseaux de Neurones\n", + "\n", + "**Navigation** : [<< Sudoku-15-Infer-Python](Sudoku-15-Infer-Python.ipynb) | [Index](README.md) | [Sudoku-17-LLM-Python >>](Sudoku-17-LLM-Python.ipynb)\n", + "\n", + "**Voir aussi** : [GenAI](../GenAI/README.md) pour les réseaux de neurones\n", + "\n", + "## Objectifs d'apprentissage\n", + "\n", + "A la fin de ce notebook, vous saurez :\n", + "1. Encoder une grille de Sudoku sous forme de tenseur adapté à un réseau de neurones\n", + "2. Concevoir et entraîner un réseau dense (MLP) pour prédire les chiffres manquants\n", + "3. Concevoir et entraîner un réseau convolutif (CNN) qui exploite la structure spatiale\n", + "4. Utiliser la prédiction itérative pour améliorer drastiquement la précision\n", + "5. Comparer les limites des approches neuronales avec les solveurs algorithmiques\n", + "\n", + "### Prérequis\n", + "- Python 3.10+, notions de base en deep learning (couches, loss, backpropagation)\n", + "- Familiarité avec NumPy et matplotlib\n", + "- Pas besoin de GPU : les modèles sont volontairement légers\n", + "\n", + "### Durée estimée : 55 minutes\n", + "\n", + "### Contexte\n", + "Ce notebook s'inspire du projet [jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV](https://github.com/jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV) (module `Sudoku.NeuralNetwork`) qui explore 4 architectures de réseaux de neurones entraînés sur 17 millions de puzzles. Ici, nous reproduisons les idées clés sur un dataset réduit pour rester exécutable en quelques minutes." + ] }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "BATCH_MODE = true\n" - ] - } - ], - "source": [ - "# Sudoku-16 : Résolution par Réseaux de Neurones\n", - "\n", - "**Navigation** : [<< Sudoku-15-Infer-Python](Sudoku-15-Infer-Python.ipynb) | [Index](README.md) | [Sudoku-17-LLM-Python >>](Sudoku-17-LLM-Python.ipynb)\n", - "\n", - "**Voir aussi** : [GenAI](../GenAI/README.md) pour les réseaux de neurones\n", - "\n", - "## Objectifs d'apprentissage\n", - "\n", - "A la fin de ce notebook, vous saurez :\n", - "1. Encoder une grille de Sudoku sous forme de tenseur adapté à un réseau de neurones\n", - "2. Concevoir et entraîner un réseau dense (MLP) pour prédire les chiffres manquants\n", - "3. Concevoir et entraîner un réseau convolutif (CNN) qui exploite la structure spatiale\n", - "4. Utiliser la prédiction itérative pour améliorer drastiquement la précision\n", - "5. Comparer les limites des approches neuronales avec les solveurs algorithmiques\n", - "\n", - "### Prérequis\n", - "- Python 3.10+, notions de base en deep learning (couches, loss, backpropagation)\n", - "- Familiarité avec NumPy et matplotlib\n", - "- Pas besoin de GPU : les modèles sont volontairement légers\n", - "\n", - "### Durée estimée : 55 minutes\n", - "\n", - "### Contexte\n", - "Ce notebook s'inspire du projet [jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV](https://github.com/jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV) (module `Sudoku.NeuralNetwork`) qui explore 4 architectures de réseaux de neurones entraînés sur 17 millions de puzzles. Ici, nous reproduisons les idées clés sur un dataset réduit pour rester exécutable en quelques minutes." - ] - }, { "cell_type": "markdown", "execution_count": 1, @@ -112,42 +112,11 @@ } ], "source": [ - "## Hommage a un travail etudiant\n", - "\n", - "Ce notebook distille le projet **2024-EPITA-SCIA-PPC-Sudoku-CV** du cours EPITA SCIA *Programmation par Contraintes* 2024, realise par :\n", - "- **Theophile Stourbe** ([Theophile Stourbe](https://github.com/theophilestourbe)) -- PR #14 finale NeuralNetwork CV (commit `ecaaeb5`)\n", - "- **Florine Kieraga** ([Florine Kieraga](https://github.com/floflokie)) -- PR #12 Dancing Links + Search Parallel\n", - "- **Gautier Gally** ([Gautier Gally](https://github.com/Bl44nc)) -- PR #18 `fix: download model for benchmark` (login `Bl44nc`, verifie via `gh api users/Bl44nc`)\n", - "- **Nael El Janati** ([Nael El Janati](https://github.com/Naelja02)) -- PR #11 Genetic Solver with PyGAD\n", - "- **Matis Braun** ([Matis Braun](https://github.com/VyrtualL)) -- PR #9 Graph Coloring Greedy + DSatur\n", - "- **Alexis (Alex)** ([Alex](https://github.com/TopAgrume)) -- PR #10 OR-Tools Solvers completed\n", - "- **Clovis Lechien** ([Clovis Lechien](https://github.com/ClovisDyArx)) -- PR #6 Dancing Links optimise\n", - "- **Akaagi** ([Akaagi](https://github.com/Akaagi)) -- PR #4 init sudoku OR-Tools\n", - "- **FlorianSegard** ([FlorianSegard](https://github.com/FlorianSegard)) -- PR #17 Final PPC CNNSolver\n", - "- **Paul Abi Saad (ReoZ)** ([Paul Abi Saad](https://github.com/Paul-abi)) -- PR #5 Starting project CNN Solver + PR #15 Final version CNN (login `Paul-abi` verifie, pas `ReoZ`)\n", - "- **Virgile Hermant** ([Virgile Hermant](https://github.com/Zar-meyo)) -- PR #16 GraphColoring version finale (login `Zar-meyo` verifie, pas une entite distincte de Paul)\n", - "- **Gaspard Saliou** ([Gaspard Saliou](https://github.com/Gaspard-s)) -- contributions additionnelles (login `Gaspard-s` verifie)\n", - "- **Jean-Sylvain Boige** ([Jean-Sylvain Boige](https://github.com/jsboige)) -- coordinateur du cours, contributeur merges\n", - "- **BinaryAlien** ([BinaryAlien](https://github.com/BinaryAlien)) -- PR #2 init coloration de graphe en C# (nom reel `Binary`, verifie via `gh api users/BinaryAlien`)\n", - "- **Florian** (login GitHub non verifie -- aucun compte `florian*` correspond aux commits `a306f73`/`7ecf8e5`/`e073957`/`da253f3`/`cd09f87` du sous-projet) -- hierarchisation CSV, conserve en mention sans lien\n", - "\n", - "Module `Sudoku.NeuralNetwork` (CNN), repertoire source : [jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV](https://github.com/jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV), licence **MIT** (`Copyright (c) 2023 jsboigeEpita`, fichier LICENSE dans le depot, verifie firsthand 2026-09-17).\n", - "\n", - "Le projet etudiant couvre deja l'essentiel de ce que ce notebook reprend :\n", - "\n", - "- l'**exploration de 4 architectures** de reseaux de neurones pour la resolution de Sudoku (CNN, RNN, Transformer, GNN) ;\n", - "- l'**entrainement sur 17 millions de puzzles** avec comparaison des temps d'inference et taux de resolution ;\n", - "- le **module `Sudoku.NeuralNetwork`** structure autour de l'encoding one-hot des grilles 9x9.\n", - "\n", - "Ce qui est *ajoute* dans ce notebook par rapport au projet source :\n", - "\n", - "1. la **reduction du dataset** (de 17M puzzles a quelques milliers) pour rendre le notebook executable localement en quelques minutes, conformement a la regle F (reparer, ne pas contourner) ;\n", - "2. la **couche pedagogique progressive** : un reseau dense simple d'abord (Section 3), puis convolutionnel (Section 4), puis avec embedding des positions (Section 5) ;\n", - "3. la **comparaison directe** avec un solveur logique (CSP) sur les memes instances, absente du projet source ;\n", - "4. les **trois exercices** sur les variations realistes (taille de grille 16x16, donnees bruitees, entrainement incremental).\n", - "\n", - "L'enrichissement preserve les idees architecturales du projet etudiant sous licence MIT ; les differences sont dans la *taille du dataset* et la *progression pedagogique*, pas dans le *fond algorithmique*.\n", - "\n" + "## Hommage a un travail etudiant\n\nCe notebook distille le projet **2024-EPITA-SCIA-PPC-Sudoku-CV** du cours EPITA SCIA *Programmation par Contraintes* 2024. Les contributeurs et leurs contributions :\n\n- **Theophile Stourbe** ([theophilestourbe](https://github.com/theophilestourbe)) -- PR finale NeuralNetwork CV\n- **Florine Kieraga** ([floflokie](https://github.com/floflokie)) -- Dancing Links + Search Parallel\n- **Gautier Gally** ([Bl44nc](https://github.com/Bl44nc)) -- fix: download model for benchmark\n- **Nael El Janati** ([Naelja02](https://github.com/Naelja02)) -- Genetic Solver with PyGAD\n- **Matis Braun** ([VyrtualL](https://github.com/VyrtualL)) -- Graph Coloring Greedy + DSatur\n- **Alexis** ([TopAgrume](https://github.com/TopAgrume)) -- OR-Tools Solvers completed\n- **Clovis Lechien** ([ClovisDyArx](https://github.com/ClovisDyArx)) -- Dancing Links optimise\n- **Akaagi** ([Akaagi](https://github.com/Akaagi)) -- init sudoku OR-Tools\n- **FlorianSegard** ([FlorianSegard](https://github.com/FlorianSegard)) -- Final PPC CNNSolver\n- **Paul Abi Saad** ([Paul-abi](https://github.com/Paul-abi)) -- Starting project + Final version CNN Solver\n- **Virgile Hermant** ([Zar-meyo](https://github.com/Zar-meyo)) -- GraphColoring version finale\n- **Gaspard Saliou** ([Gaspard-s](https://github.com/Gaspard-s)) -- contributions additionnelles\n- **Jean-Sylvain Boige** ([jsboige](https://github.com/jsboige)) -- coordinateur du cours, contributeur merges\n- **BinaryAlien** ([BinaryAlien](https://github.com/BinaryAlien)) -- init coloration de graphe en C#\n", + "Le **process de verification des identites** (commits, logins GitHub, resolution des comptes ambigus) est deporté en pied de page pour alleger la lecture : voir la section *Verification des identites* au bas de ce notebook. Les contributeurs marques **non verifie** (Florian) sont conserves en mention sans lien.\n", + "\nModule `Sudoku.NeuralNetwork` (CNN), repertoire source : [jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV](https://github.com/jsboigeEpita/2024-EPITA-SCIA-PPC-Sudoku-CV), licence **MIT** (`Copyright (c) 2023 jsboigeEpita`).\n\nLe projet etudiant couvre deja l'essentiel de ce que ce notebook reprend :\n\n- l'**exploration de 4 architectures** de reseaux de neurones pour la resolution de Sudoku (CNN, RNN, Transformer, GNN) ;\n- l'**entrainement sur 17 millions de puzzles** avec comparaison des temps d'inference et taux de resolution ;\n- le **module `Sudoku.NeuralNetwork`** structure autour de l'encoding one-hot des grilles 9x9.\n\nCe qui est *ajoute* dans ce notebook par rapport au projet source :\n\n1. la **reduction du dataset** (de 17M puzzles a quelques milliers) pour rendre le notebook executable localement en quelques minutes, conformement a la regle F (reparer, ne pas contourner) ;\n2. la **couche pedagogique progressive** : un reseau dense simple d'abord (Section 3), puis convolutionnel (Section 4), puis avec embedding des positions (Section 5) ;\n3. la **comparaison directe** avec un solveur logique (CSP) sur les memes instances, absente du projet source ;\n4. les **trois exercices** sur les variations realistes (taille de grille 16x16, donnees bruitees, entrainement incremental).\n\nL'enrichissement preserve les idees architecturales du projet etudiant sous licence MIT ; les differences sont dans la *taille du dataset* et la *progression pedagogique*, pas dans le *fond algorithmique*.\n", + "\n", + "> Provenance : Hommage etabli 2026-09-17 ; verification des identites deports en section finale. Issue de reference : #19240 (Tranche B, fille de #14446).\n" ] }, { @@ -4096,4 +4065,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +} diff --git a/scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata/0022-2026-10-06-myia-po-2026-CoursIA-2.yaml b/scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata/0022-2026-10-06-myia-po-2026-CoursIA-2.yaml new file mode 100644 index 0000000000..4c8237e9ec --- /dev/null +++ b/scripts/notebook_tools/twin_pairs.d/sudoku-13-symbolicautomata/0022-2026-10-06-myia-po-2026-CoursIA-2.yaml @@ -0,0 +1,6 @@ +date: '2026-10-06' +by: myia-po-2026:CoursIA-2 +python_sha: 2299bfd49efdfdce21b01b45665a014a5d765000 +csharp_sha: a255b12eaa7d7ab5967541cffb30570af86e29aa +content_python_sha: cd40391bb1854430e115369b029db85cf4a11f885d6fc8fea51fd91d15daba67 +content_csharp_sha: 82df9fa3e3754693c992f3f8f6a51961e349ca6e511fa1580eaeac3cdc3b2d17