From 08279d2892b31a25889c00c79685f1e760715f32 Mon Sep 17 00:00:00 2001 From: jsboige Date: Wed, 2 Sep 2026 00:44:47 +0200 Subject: [PATCH] fix(search,#14061): corrige 2 references Search-15/16 residu rename #13797 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Issue #14061 : 2 references au vieux numerotage Search-15/Search-16 subsistaient dans des commentaires de code (invisibles a check_notebook_navlinks, signalees par review forensique c.745-L1 §D-3). Fichiers : - Search-02c-QuikGraph.ipynb cell[11] : "Search-15 cell 14" -> "Search-02b-NetworkX-Csharp cell 14" - Search-3-Informed-Csharp.ipynb cell[15] : "Search-16 cell 2" -> "Search-02c-QuikGraph cell 2" Re-execution papermill kernel .net-csharp, cwd = dir notebook, pour les 2 cellules modifiees (C.2/H.1) : - Search-02c-QuikGraph : 0 erreur, 14/14 cellules code, cell[11] ec=7 outputs=7 (identiques aux precedents : Dijkstra deterministe). - Search-3-Informed-Csharp : 0 erreur, 18/18 cellules code, cell[15] ec=8 outputs=2 (QuikGraph charge, AStarShortestPathAlgorithm dispo). Pre-commit strip-probeAddresses (auto-fix) a retire 18 lignes HTML banner (9 par notebook, FAILED initial, [FIXED] sur re-stage). Acceptance #14061 : - [x] 2 references corrigees vers 02b/02c - [x] 2 cellules code re-executees (C.2/H.1), outputs coherents committes - [x] Grep Search-15|Search-16 dans Part1-Foundations/ = 0 resultat Cycle c156, lane myia-po-2026:CoursIA. Co-Authored-By: Claude Haiku 4.5 (1M context) --- .../Search-02c-QuikGraph.ipynb | 101 +- .../Search-3-Informed-Csharp.ipynb | 1155 ++++++++++++----- 2 files changed, 901 insertions(+), 355 deletions(-) diff --git a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02c-QuikGraph.ipynb b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02c-QuikGraph.ipynb index 7f1a8f9a71..7fa98a1831 100644 --- a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02c-QuikGraph.ipynb +++ b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-02c-QuikGraph.ipynb @@ -132,10 +132,10 @@ "shell.execute_reply": "2026-09-01T13:32:55.025888Z" }, "papermill": { - "duration": 3.340183, - "end_time": "2026-09-01T13:32:55.045262+00:00", + "duration": 1.631957, + "end_time": "2026-09-01T22:40:15.713132", "exception": false, - "start_time": "2026-09-01T13:32:51.705079+00:00", + "start_time": "2026-09-01T22:40:14.081175", "status": "completed" }, "tags": [] @@ -150,6 +150,7 @@ " The below script needs to be able to find the current output cell; this is an easy method to get it.\r\n", " \r\n", " \r\n", @@ -286,10 +295,10 @@ "shell.execute_reply": "2026-09-01T13:32:55.155635Z" }, "papermill": { - "duration": 0.106748, - "end_time": "2026-09-01T13:32:55.156018+00:00", + "duration": 0.049102, + "end_time": "2026-09-01T22:40:15.765234", "exception": false, - "start_time": "2026-09-01T13:32:55.049270+00:00", + "start_time": "2026-09-01T22:40:15.716132", "status": "completed" }, "tags": [] @@ -418,10 +427,10 @@ "shell.execute_reply": "2026-09-01T13:32:56.388404Z" }, "papermill": { - "duration": 1.211053, - "end_time": "2026-09-01T13:32:56.388763+00:00", + "duration": 0.371381, + "end_time": "2026-09-01T22:40:16.154469", "exception": false, - "start_time": "2026-09-01T13:32:55.177710+00:00", + "start_time": "2026-09-01T22:40:15.783088", "status": "completed" }, "tags": [] @@ -523,10 +532,10 @@ "shell.execute_reply": "2026-09-01T13:32:57.029687Z" }, "papermill": { - "duration": 0.635917, - "end_time": "2026-09-01T13:32:57.029993+00:00", + "duration": 0.20453, + "end_time": "2026-09-01T22:40:16.362998", "exception": false, - "start_time": "2026-09-01T13:32:56.394076+00:00", + "start_time": "2026-09-01T22:40:16.158468", "status": "completed" }, "tags": [] @@ -648,10 +657,10 @@ "shell.execute_reply": "2026-09-01T13:32:57.363419Z" }, "papermill": { - "duration": 0.318586, - "end_time": "2026-09-01T13:32:57.364064+00:00", + "duration": 0.079237, + "end_time": "2026-09-01T22:40:16.460698", "exception": false, - "start_time": "2026-09-01T13:32:57.045478+00:00", + "start_time": "2026-09-01T22:40:16.381461", "status": "completed" }, "tags": [] @@ -715,10 +724,10 @@ "shell.execute_reply": "2026-09-01T13:32:57.612585Z" }, "papermill": { - "duration": 0.240172, - "end_time": "2026-09-01T13:32:57.612884+00:00", + "duration": 0.067557, + "end_time": "2026-09-01T22:40:16.531755", "exception": false, - "start_time": "2026-09-01T13:32:57.372712+00:00", + "start_time": "2026-09-01T22:40:16.464198", "status": "completed" }, "tags": [] @@ -820,10 +829,10 @@ "shell.execute_reply": "2026-09-01T13:32:57.928334Z" }, "papermill": { - "duration": 0.296306, - "end_time": "2026-09-01T13:32:57.928753+00:00", + "duration": 0.143777, + "end_time": "2026-09-01T22:40:16.686043", "exception": false, - "start_time": "2026-09-01T13:32:57.632447+00:00", + "start_time": "2026-09-01T22:40:16.542266", "status": "completed" }, "tags": [] @@ -885,7 +894,7 @@ "// illustrer la CONDITION D'OPTIMALITE de Dijkstra — pour chaque sommet v, son predecesseur\n", "// est l'unique voisin u tel que GetDistance(u) + poids(u, v) = GetDistance(v). C'est le seul\n", "// site de la serie a rester manuel ; les autres utilisent l'observateur canonique\n", - "// VertexPredecessorRecorderObserver (cell 17 de ce notebook, Search-15 cell 14, Search-3\n", + "// VertexPredecessorRecorderObserver (cell 17 de ce notebook, Search-02b-NetworkX-Csharp cell 14, Search-3\n", "// cell 16, Search-2 cell 38), qui encapsule exactement cette condition.\n", "\n", "var dijkstra = new DijkstraShortestPathAlgorithm>(\n", @@ -917,7 +926,7 @@ " courant = suivant;\n", " }\n", " Console.WriteLine($\" {v} : {dist:F2} km ({chemin})\");\n", - "}\n" + "}" ] }, { @@ -953,10 +962,10 @@ "shell.execute_reply": "2026-09-01T13:32:58.510605Z" }, "papermill": { - "duration": 0.557912, - "end_time": "2026-09-01T13:32:58.511118+00:00", + "duration": 0.143774, + "end_time": "2026-09-01T22:40:16.845671", "exception": false, - "start_time": "2026-09-01T13:32:57.953206+00:00", + "start_time": "2026-09-01T22:40:16.701897", "status": "completed" }, "tags": [] @@ -1127,10 +1136,10 @@ "shell.execute_reply": "2026-09-01T13:32:59.007302Z" }, "papermill": { - "duration": 0.448339, - "end_time": "2026-09-01T13:32:59.008334+00:00", + "duration": 0.10034, + "end_time": "2026-09-01T22:40:16.966054", "exception": false, - "start_time": "2026-09-01T13:32:58.559995+00:00", + "start_time": "2026-09-01T22:40:16.865714", "status": "completed" }, "tags": [] @@ -1348,10 +1357,10 @@ "shell.execute_reply": "2026-09-01T13:32:59.340245Z" }, "papermill": { - "duration": 0.301549, - "end_time": "2026-09-01T13:32:59.340624+00:00", + "duration": 0.095546, + "end_time": "2026-09-01T22:40:17.073046", "exception": false, - "start_time": "2026-09-01T13:32:59.039075+00:00", + "start_time": "2026-09-01T22:40:16.977500", "status": "completed" }, "tags": [] @@ -1508,10 +1517,10 @@ "shell.execute_reply": "2026-09-01T13:33:00.041010Z" }, "papermill": { - "duration": 0.679913, - "end_time": "2026-09-01T13:33:00.041337+00:00", + "duration": 0.150608, + "end_time": "2026-09-01T22:40:17.238660", "exception": false, - "start_time": "2026-09-01T13:32:59.361424+00:00", + "start_time": "2026-09-01T22:40:17.088052", "status": "completed" }, "tags": [] @@ -1747,10 +1756,10 @@ "shell.execute_reply": "2026-09-01T13:33:00.265426Z" }, "papermill": { - "duration": 0.199787, - "end_time": "2026-09-01T13:33:00.265718+00:00", + "duration": 0.036303, + "end_time": "2026-09-01T22:40:17.297003", "exception": false, - "start_time": "2026-09-01T13:33:00.065931+00:00", + "start_time": "2026-09-01T22:40:17.260700", "status": "completed" }, "tags": [] @@ -1817,10 +1826,10 @@ "shell.execute_reply": "2026-09-01T13:33:00.341512Z" }, "papermill": { - "duration": 0.059949, - "end_time": "2026-09-01T13:33:00.341873+00:00", + "duration": 0.02621, + "end_time": "2026-09-01T22:40:17.337794", "exception": false, - "start_time": "2026-09-01T13:33:00.281924+00:00", + "start_time": "2026-09-01T22:40:17.311584", "status": "completed" }, "tags": [] @@ -1887,10 +1896,10 @@ "shell.execute_reply": "2026-09-01T13:33:00.469509Z" }, "papermill": { - "duration": 0.105263, - "end_time": "2026-09-01T13:33:00.469982+00:00", + "duration": 0.027985, + "end_time": "2026-09-01T22:40:17.378598", "exception": false, - "start_time": "2026-09-01T13:33:00.364719+00:00", + "start_time": "2026-09-01T22:40:17.350613", "status": "completed" }, "tags": [] @@ -1941,4 +1950,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file diff --git a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-3-Informed-Csharp.ipynb b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-3-Informed-Csharp.ipynb index 0cc86d4cba..b929da6e93 100644 --- a/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-3-Informed-Csharp.ipynb +++ b/MyIA.AI.Notebooks/Search/Part1-Foundations/Search-3-Informed-Csharp.ipynb @@ -91,20 +91,137 @@ "iopub.status.busy": "2026-07-10T06:51:04.514504Z", "iopub.status.idle": "2026-07-10T06:51:11.575338Z", "shell.execute_reply": "2026-07-10T06:51:11.553896Z" + }, + "papermill": { + "duration": 1.513229, + "end_time": "2026-09-01T22:43:24.123171", + "exception": false, + "start_time": "2026-09-01T22:43:22.609942", + "status": "completed" } }, "outputs": [ { - "output_type": "display_data", "data": { - "text/html": "" + "text/html": [ + "\r\n", + "
\r\n", + " \r\n", + " \r\n", + "
" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", - "text": "Framework de recherche informee pret (Node, Problem, GraphProblem, SearchResult).\r\n" + "output_type": "stream", + "text": [ + "Framework de recherche informee pret (Node, Problem, GraphProblem, SearchResult).\r\n" + ] } ], "source": [ @@ -241,58 +358,85 @@ "iopub.status.busy": "2026-07-10T06:51:11.581850Z", "iopub.status.idle": "2026-07-10T06:51:12.362916Z", "shell.execute_reply": "2026-07-10T06:51:12.361497Z" + }, + "papermill": { + "duration": 0.203151, + "end_time": "2026-09-01T22:43:24.339149", + "exception": false, + "start_time": "2026-09-01T22:43:24.135998", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Carte chargee : 13 villes\r\n" + "output_type": "stream", + "text": [ + "Carte chargee : 13 villes\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Probleme de reference : Lille -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "Probleme de reference : Lille -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Heuristique h(n) = Haversine vers Toulouse (vol d'oiseau, admissible) :\r\n" + "output_type": "stream", + "text": [ + "Heuristique h(n) = Haversine vers Toulouse (vol d'oiseau, admissible) :\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Lille h = 791 km\r\n" + "output_type": "stream", + "text": [ + " Lille h = 791 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Paris h = 589 km\r\n" + "output_type": "stream", + "text": [ + " Paris h = 589 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Rennes h = 557 km\r\n" + "output_type": "stream", + "text": [ + " Rennes h = 557 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Nantes h = 465 km\r\n" + "output_type": "stream", + "text": [ + " Nantes h = 465 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Bordeaux h = 211 km\r\n" + "output_type": "stream", + "text": [ + " Bordeaux h = 211 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Toulouse h = 0 km\r\n" + "output_type": "stream", + "text": [ + " Toulouse h = 0 km\r\n" + ] } ], "source": [ @@ -400,13 +544,22 @@ "iopub.status.busy": "2026-07-10T06:51:12.366653Z", "iopub.status.idle": "2026-07-10T06:51:12.635125Z", "shell.execute_reply": "2026-07-10T06:51:12.634065Z" + }, + "papermill": { + "duration": 0.06032, + "end_time": "2026-09-01T22:43:24.410816", + "exception": false, + "start_time": "2026-09-01T22:43:24.350496", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Algorithme Greedy Best-First implemente.\r\n" + "output_type": "stream", + "text": [ + "Algorithme Greedy Best-First implemente.\r\n" + ] } ], "source": [ @@ -469,78 +622,113 @@ "iopub.status.busy": "2026-07-10T06:51:12.637802Z", "iopub.status.idle": "2026-07-10T06:51:12.934289Z", "shell.execute_reply": "2026-07-10T06:51:12.933671Z" + }, + "papermill": { + "duration": 0.047227, + "end_time": "2026-09-01T22:43:24.463458", + "exception": false, + "start_time": "2026-09-01T22:43:24.416231", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Greedy Best-First : Lille -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "Greedy Best-First : Lille -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "============================================================\r\n" + "output_type": "stream", + "text": [ + "============================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Lille g= 0 h= 791\r\n" + "output_type": "stream", + "text": [ + " Explore: Lille g= 0 h= 791\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Rennes g= 510 h= 557\r\n" + "output_type": "stream", + "text": [ + " Explore: Rennes g= 510 h= 557\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Nantes g= 620 h= 465\r\n" + "output_type": "stream", + "text": [ + " Explore: Nantes g= 620 h= 465\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--- Greedy ---\r\n" + "output_type": "stream", + "text": [ + "--- Greedy ---\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Chemin : Lille -> Rennes -> Nantes -> Toulouse\r\n" + "output_type": "stream", + "text": [ + " Chemin : Lille -> Rennes -> Nantes -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Cout : 1210\r\n" + "output_type": "stream", + "text": [ + " Cout : 1210\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Sauts : 3\r\n" + "output_type": "stream", + "text": [ + " Sauts : 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds explores : 3\r\n" + "output_type": "stream", + "text": [ + " Noeuds explores : 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds generes : 9\r\n" + "output_type": "stream", + "text": [ + " Noeuds generes : 9\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Pic frontiere : 4\r\n" + "output_type": "stream", + "text": [ + " Pic frontiere : 4\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Temps : 5,43 ms\r\n" + "output_type": "stream", + "text": [ + " Temps : 4,05 ms\r\n" + ] } ], "source": [ @@ -613,13 +801,22 @@ "iopub.status.busy": "2026-07-10T06:51:12.938530Z", "iopub.status.idle": "2026-07-10T06:51:13.116468Z", "shell.execute_reply": "2026-07-10T06:51:13.115008Z" + }, + "papermill": { + "duration": 0.040334, + "end_time": "2026-09-01T22:43:24.525906", + "exception": false, + "start_time": "2026-09-01T22:43:24.485572", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Algorithme A* implemente.\r\n" + "output_type": "stream", + "text": [ + "Algorithme A* implemente.\r\n" + ] } ], "source": [ @@ -679,83 +876,120 @@ "iopub.status.busy": "2026-07-10T06:51:13.119939Z", "iopub.status.idle": "2026-07-10T06:51:13.256539Z", "shell.execute_reply": "2026-07-10T06:51:13.250070Z" + }, + "papermill": { + "duration": 0.029816, + "end_time": "2026-09-01T22:43:24.559366", + "exception": false, + "start_time": "2026-09-01T22:43:24.529550", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "A* : Lille -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "A* : Lille -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "============================================================\r\n" + "output_type": "stream", + "text": [ + "============================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Lille g= 0 h= 791 f= 791\r\n" + "output_type": "stream", + "text": [ + " Explore: Lille g= 0 h= 791 f= 791\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Paris g= 225 h= 589 f= 814\r\n" + "output_type": "stream", + "text": [ + " Explore: Paris g= 225 h= 589 f= 814\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Bordeaux g= 810 h= 211 f= 1021\r\n" + "output_type": "stream", + "text": [ + " Explore: Bordeaux g= 810 h= 211 f= 1021\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Lyon g= 690 h= 360 f= 1050\r\n" + "output_type": "stream", + "text": [ + " Explore: Lyon g= 690 h= 360 f= 1050\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--- A* ---\r\n" + "output_type": "stream", + "text": [ + "--- A* ---\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + "output_type": "stream", + "text": [ + " Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Cout : 1055\r\n" + "output_type": "stream", + "text": [ + " Cout : 1055\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Sauts : 3\r\n" + "output_type": "stream", + "text": [ + " Sauts : 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds explores : 4\r\n" + "output_type": "stream", + "text": [ + " Noeuds explores : 4\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds generes : 15\r\n" + "output_type": "stream", + "text": [ + " Noeuds generes : 15\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Pic frontiere : 6\r\n" + "output_type": "stream", + "text": [ + " Pic frontiere : 6\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Temps : 0,54 ms\r\n" + "output_type": "stream", + "text": [ + " Temps : 0,22 ms\r\n" + ] } ], "source": [ @@ -796,53 +1030,78 @@ "iopub.status.busy": "2026-07-10T06:51:13.260490Z", "iopub.status.idle": "2026-07-10T06:51:13.480360Z", "shell.execute_reply": "2026-07-10T06:51:13.479481Z" + }, + "papermill": { + "duration": 0.047158, + "end_time": "2026-09-01T22:43:24.620932", + "exception": false, + "start_time": "2026-09-01T22:43:24.573774", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Comparaison : Greedy vs A* sur Lille -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "Comparaison : Greedy vs A* sur Lille -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "======================================================================\r\n" + "output_type": "stream", + "text": [ + "======================================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Algorithme Chemin Cout Sauts Noeuds\r\n" + "output_type": "stream", + "text": [ + "Algorithme Chemin Cout Sauts Noeuds\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "----------------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + "----------------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Greedy Lille -> Rennes -> Nantes -> Toulouse 1210 3 3\r\n" + "output_type": "stream", + "text": [ + "Greedy Lille -> Rennes -> Nantes -> Toulouse 1210 3 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "A* Lille -> Paris -> Bordeaux -> Toulouse 1055 3 4\r\n" + "output_type": "stream", + "text": [ + "A* Lille -> Paris -> Bordeaux -> Toulouse 1055 3 4\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Greedy a trouve un chemin 155 km plus long (14,7% de surcout).\r\n" + "output_type": "stream", + "text": [ + "Greedy a trouve un chemin 155 km plus long (14,7% de surcout).\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "-> Greedy est SOUS-OPTIMAL : il a sacrifie l'optimalite pour explorer moins de noeuds.\r\n" + "output_type": "stream", + "text": [ + "-> Greedy est SOUS-OPTIMAL : il a sacrifie l'optimalite pour explorer moins de noeuds.\r\n" + ] } ], "source": [ @@ -908,23 +1167,35 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.248256, + "end_time": "2026-09-01T22:43:24.883792", + "exception": false, + "start_time": "2026-09-01T22:43:24.635536", + "status": "completed" + } + }, "outputs": [ { - "output_type": "display_data", "data": { - "text/html": "
Installing Packages
  • QuikGraph
" + "text/html": [ + "
Installed Packages
  • QuikGraph, 2.5.0
" + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", - "text": "QuikGraph charge : AStarShortestPathAlgorithm> dispo.\r\n" + "output_type": "stream", + "text": [ + "QuikGraph charge : AStarShortestPathAlgorithm> dispo.\r\n" + ] } ], "source": [ - "// Installation QuikGraph 2.5.0 (fork KeRNeLith de QuickGraph, voir Search-16 cell 2 pour reference).\n", + "// Installation QuikGraph 2.5.0 (fork KeRNeLith de QuickGraph, voir Search-02c-QuikGraph cell 2 pour reference).\n", "// Charge la DLL + importe les namespaces necessaires : graphe bidirectionnel + AStar.\n", "#r \"nuget: QuikGraph, 2.5.0\"\n", "\n", @@ -937,27 +1208,43 @@ { "cell_type": "code", "execution_count": 9, - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.1178, + "end_time": "2026-09-01T22:43:25.006928", + "exception": false, + "start_time": "2026-09-01T22:43:24.889128", + "status": "completed" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Reseau routier : 13 villes, 40 segments (aller-retour).\r\n" + "output_type": "stream", + "text": [ + "Reseau routier : 13 villes, 40 segments (aller-retour).\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "AStar QuikGraph Lille -> Toulouse : 1055 km\r\n" + "output_type": "stream", + "text": [ + "AStar QuikGraph Lille -> Toulouse : 1055 km\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "attendu : 1055 km via Lille -> Paris -> Bordeaux -> Toulouse. cell 11 from-scratch : idem.\r\n" + "output_type": "stream", + "text": [ + "attendu : 1055 km via Lille -> Paris -> Bordeaux -> Toulouse. cell 11 from-scratch : idem.\r\n" + ] } ], "source": [ @@ -1042,67 +1329,99 @@ { "cell_type": "code", "execution_count": 10, - "metadata": {}, + "metadata": { + "papermill": { + "duration": 0.06246, + "end_time": "2026-09-01T22:43:25.076982", + "exception": false, + "start_time": "2026-09-01T22:43:25.014522", + "status": "completed" + } + }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Parite A* : from-scratch (cell 11) vs QuikGraph (cell 16)\r\n" + "output_type": "stream", + "text": [ + "Parite A* : from-scratch (cell 11) vs QuikGraph (cell 16)\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "======================================================================\r\n" + "output_type": "stream", + "text": [ + "======================================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Critere From-scratch QuikGraph Verdict\r\n" + "output_type": "stream", + "text": [ + "Critere From-scratch QuikGraph Verdict\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "----------------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + "----------------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Cout g (km) 1055 1055 OK\r\n" + "output_type": "stream", + "text": [ + "Cout g (km) 1055 1055 OK\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Chemin Lille -> Paris -> Bordeaux -> Toulouse Lille -> Paris -> Bordeaux -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "Chemin Lille -> Paris -> Bordeaux -> Toulouse Lille -> Paris -> Bordeaux -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " -> Verdict chemin : identique \r\n" + "output_type": "stream", + "text": [ + " -> Verdict chemin : identique \r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Heuristique partagee Haversine(a, b) de cell 4 OK\r\n" + "output_type": "stream", + "text": [ + "Heuristique partagee Haversine(a, b) de cell 4 OK\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Verdict Prong B : EQUIVALENT (from-scratch == QuikGraph)\r\n" + "output_type": "stream", + "text": [ + "Verdict Prong B : EQUIVALENT (from-scratch == QuikGraph)\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Bucket #10382 : bucket-1 .NET natif (lib installable via NuGet, pas workaround).\r\n" + "output_type": "stream", + "text": [ + "Bucket #10382 : bucket-1 .NET natif (lib installable via NuGet, pas workaround).\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Verdict SOTA ecrit (Prong A) : SOTA-OK (moteur reellement charge et execute sur instance concrete).\r\n" + "output_type": "stream", + "text": [ + "Verdict SOTA ecrit (Prong A) : SOTA-OK (moteur reellement charge et execute sur instance concrete).\r\n" + ] } ], "source": [ @@ -1162,193 +1481,274 @@ "iopub.status.busy": "2026-07-10T06:51:13.484693Z", "iopub.status.idle": "2026-07-10T06:51:13.875612Z", "shell.execute_reply": "2026-07-10T06:51:13.874060Z" + }, + "papermill": { + "duration": 0.06398, + "end_time": "2026-09-01T22:43:25.157415", + "exception": false, + "start_time": "2026-09-01T22:43:25.093435", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Greedy Best-First : Rennes -> Paris\r\n" + "output_type": "stream", + "text": [ + "Greedy Best-First : Rennes -> Paris\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "============================================================\r\n" + "output_type": "stream", + "text": [ + "============================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Rennes g= 0 h= 308\r\n" + "output_type": "stream", + "text": [ + " Explore: Rennes g= 0 h= 308\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Lille g= 510 h= 203\r\n" + "output_type": "stream", + "text": [ + " Explore: Lille g= 510 h= 203\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--- Greedy ---\r\n" + "output_type": "stream", + "text": [ + "--- Greedy ---\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Chemin : Rennes -> Lille -> Paris\r\n" + "output_type": "stream", + "text": [ + " Chemin : Rennes -> Lille -> Paris\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Cout : 735\r\n" + "output_type": "stream", + "text": [ + " Cout : 735\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Sauts : 2\r\n" + "output_type": "stream", + "text": [ + " Sauts : 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds explores : 2\r\n" + "output_type": "stream", + "text": [ + " Noeuds explores : 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds generes : 5\r\n" + "output_type": "stream", + "text": [ + " Noeuds generes : 5\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Pic frontiere : 3\r\n" + "output_type": "stream", + "text": [ + " Pic frontiere : 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Temps : 0,21 ms\r\n" + "output_type": "stream", + "text": [ + " Temps : 0,07 ms\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "A* : Rennes -> Paris\r\n" + "output_type": "stream", + "text": [ + "A* : Rennes -> Paris\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "============================================================\r\n" + "output_type": "stream", + "text": [ + "============================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Rennes g= 0 h= 308 f= 308\r\n" + "output_type": "stream", + "text": [ + " Explore: Rennes g= 0 h= 308 f= 308\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Explore: Nantes g= 110 h= 342 f= 452\r\n" + "output_type": "stream", + "text": [ + " Explore: Nantes g= 110 h= 342 f= 452\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--- A* ---\r\n" + "output_type": "stream", + "text": [ + "--- A* ---\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Chemin : Rennes -> Nantes -> Paris\r\n" + "output_type": "stream", + "text": [ + " Chemin : Rennes -> Nantes -> Paris\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Cout : 495\r\n" + "output_type": "stream", + "text": [ + " Cout : 495\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Sauts : 2\r\n" + "output_type": "stream", + "text": [ + " Sauts : 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds explores : 2\r\n" + "output_type": "stream", + "text": [ + " Noeuds explores : 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds generes : 7\r\n" + "output_type": "stream", + "text": [ + " Noeuds generes : 7\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Pic frontiere : 5\r\n" + "output_type": "stream", + "text": [ + " Pic frontiere : 5\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Temps : 0,19 ms\r\n" + "output_type": "stream", + "text": [ + " Temps : 0,05 ms\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Comparaison : Greedy vs A* sur Rennes -> Paris\r\n" + "output_type": "stream", + "text": [ + "Comparaison : Greedy vs A* sur Rennes -> Paris\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "======================================================================\r\n" + "output_type": "stream", + "text": [ + "======================================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Algorithme Chemin Cout Sauts Noeuds\r\n" + "output_type": "stream", + "text": [ + "Algorithme Chemin Cout Sauts Noeuds\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "----------------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + "----------------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Greedy Rennes -> Lille -> Paris 735 2 2\r\n" + "output_type": "stream", + "text": [ + "Greedy Rennes -> Lille -> Paris 735 2 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "A* Rennes -> Nantes -> Paris 495 2 2\r\n" + "output_type": "stream", + "text": [ + "A* Rennes -> Nantes -> Paris 495 2 2\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Greedy a trouve un chemin 240 km plus long (48,5% de surcout).\r\n" + "output_type": "stream", + "text": [ + "Greedy a trouve un chemin 240 km plus long (48,5% de surcout).\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "-> Comme BFS sur Paris->Rennes (Search-2), Greedy file vers Lille ; A* (comme UCS) trouve l'optimum via Nantes.\r\n" + "output_type": "stream", + "text": [ + "-> Comme BFS sur Paris->Rennes (Search-2), Greedy file vers Lille ; A* (comme UCS) trouve l'optimum via Nantes.\r\n" + ] } ], "source": [ @@ -1448,13 +1848,22 @@ "iopub.status.busy": "2026-07-10T06:51:13.880008Z", "iopub.status.idle": "2026-07-10T06:51:14.128205Z", "shell.execute_reply": "2026-07-10T06:51:14.127703Z" + }, + "papermill": { + "duration": 0.058126, + "end_time": "2026-09-01T22:43:25.233432", + "exception": false, + "start_time": "2026-09-01T22:43:25.175306", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Algorithme IDA* implemente.\r\n" + "output_type": "stream", + "text": [ + "Algorithme IDA* implemente.\r\n" + ] } ], "source": [ @@ -1515,88 +1924,127 @@ "iopub.status.busy": "2026-07-10T06:51:14.131932Z", "iopub.status.idle": "2026-07-10T06:51:14.252785Z", "shell.execute_reply": "2026-07-10T06:51:14.250646Z" + }, + "papermill": { + "duration": 0.031985, + "end_time": "2026-09-01T22:43:25.272200", + "exception": false, + "start_time": "2026-09-01T22:43:25.240215", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "IDA* : Lille -> Toulouse\r\n" + "output_type": "stream", + "text": [ + "IDA* : Lille -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "============================================================\r\n" + "output_type": "stream", + "text": [ + "============================================================\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Iteration 1: f-limit = 791\r\n" + "output_type": "stream", + "text": [ + " Iteration 1: f-limit = 791\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Iteration 2: f-limit = 814\r\n" + "output_type": "stream", + "text": [ + " Iteration 2: f-limit = 814\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Iteration 3: f-limit = 1021\r\n" + "output_type": "stream", + "text": [ + " Iteration 3: f-limit = 1021\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Iteration 4: f-limit = 1050\r\n" + "output_type": "stream", + "text": [ + " Iteration 4: f-limit = 1050\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Iteration 5: f-limit = 1055\r\n" + "output_type": "stream", + "text": [ + " Iteration 5: f-limit = 1055\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--- IDA* ---\r\n" + "output_type": "stream", + "text": [ + "--- IDA* ---\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + "output_type": "stream", + "text": [ + " Chemin : Lille -> Paris -> Bordeaux -> Toulouse\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Cout : 1055\r\n" + "output_type": "stream", + "text": [ + " Cout : 1055\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Sauts : 3\r\n" + "output_type": "stream", + "text": [ + " Sauts : 3\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds explores : 13\r\n" + "output_type": "stream", + "text": [ + " Noeuds explores : 13\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Noeuds generes : 38\r\n" + "output_type": "stream", + "text": [ + " Noeuds generes : 38\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Pic frontiere : 5\r\n" + "output_type": "stream", + "text": [ + " Pic frontiere : 5\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Temps : 1,00 ms\r\n" + "output_type": "stream", + "text": [ + " Temps : 0,66 ms\r\n" + ] } ], "source": [ @@ -1672,58 +2120,85 @@ "iopub.status.busy": "2026-07-10T06:51:14.255675Z", "iopub.status.idle": "2026-07-10T06:51:14.613059Z", "shell.execute_reply": "2026-07-10T06:51:14.612291Z" + }, + "papermill": { + "duration": 0.076603, + "end_time": "2026-09-01T22:43:25.382442", + "exception": false, + "start_time": "2026-09-01T22:43:25.305839", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Comparaison h1 (tuiles mal placees) vs h2 (Manhattan) sur 3 etats :\r\n" + "output_type": "stream", + "text": [ + "Comparaison h1 (tuiles mal placees) vs h2 (Manhattan) sur 3 etats :\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + "--------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Etat h1 (mal placees) h2 (Manhattan) h2 >= h1 ?\r\n" + "output_type": "stream", + "text": [ + "Etat h1 (mal placees) h2 (Manhattan) h2 >= h1 ?\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "--------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + "--------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Facile 1 1 oui\r\n" + "output_type": "stream", + "text": [ + "Facile 1 1 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Moyen 6 10 oui\r\n" + "output_type": "stream", + "text": [ + "Moyen 6 10 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Difficile 7 21 oui\r\n" + "output_type": "stream", + "text": [ + "Difficile 7 21 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Conclusion : h2 (Manhattan) domine h1 partout -> A* avec h2 explorerait\r\n" + "output_type": "stream", + "text": [ + "Conclusion : h2 (Manhattan) domine h1 partout -> A* avec h2 explorerait\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "au moins aussi peu de noeuds qu'avec h1. Les deux sont admissibles.\r\n" + "output_type": "stream", + "text": [ + "au moins aussi peu de noeuds qu'avec h1. Les deux sont admissibles.\r\n" + ] } ], "source": [ @@ -1781,78 +2256,113 @@ "iopub.status.busy": "2026-07-10T06:51:14.617195Z", "iopub.status.idle": "2026-07-10T06:51:15.032165Z", "shell.execute_reply": "2026-07-10T06:51:15.031227Z" + }, + "papermill": { + "duration": 0.068832, + "end_time": "2026-09-01T22:43:25.458370", + "exception": false, + "start_time": "2026-09-01T22:43:25.389538", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "Demonstration de consistance de Manhattan sur un etat Moyen :\r\n" + "output_type": "stream", + "text": [ + "Demonstration de consistance de Manhattan sur un etat Moyen :\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Etat parent : (1,3,4,8,0,2,7,5,6)\r\n" + "output_type": "stream", + "text": [ + " Etat parent : (1,3,4,8,0,2,7,5,6)\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " h2(parent) = 10\r\n" + "output_type": "stream", + "text": [ + " h2(parent) = 10\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " Successeur h2(succ) h(parent)-h(succ) <= c=1 ?\r\n" + "output_type": "stream", + "text": [ + " Successeur h2(succ) h(parent)-h(succ) <= c=1 ?\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " --------------------------------------------------------------\r\n" + "output_type": "stream", + "text": [ + " --------------------------------------------------------------\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " (1,0,4,8,3,2,7,5,6) 11 -1 oui\r\n" + "output_type": "stream", + "text": [ + " (1,0,4,8,3,2,7,5,6) 11 -1 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " (1,3,4,8,5,2,7,0,6) 9 1 oui\r\n" + "output_type": "stream", + "text": [ + " (1,3,4,8,5,2,7,0,6) 9 1 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " (1,3,4,0,8,2,7,5,6) 9 1 oui\r\n" + "output_type": "stream", + "text": [ + " (1,3,4,0,8,2,7,5,6) 9 1 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": " (1,3,4,8,2,0,7,5,6) 9 1 oui\r\n" + "output_type": "stream", + "text": [ + " (1,3,4,8,2,0,7,5,6) 9 1 oui\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "\r\n" + "output_type": "stream", + "text": [ + "\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "On observe h(parent) - h(succ) <= 1 a chaque transition : un deplacement de la\r\n" + "output_type": "stream", + "text": [ + "On observe h(parent) - h(succ) <= 1 a chaque transition : un deplacement de la\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "case vide ne rapproche une tuile de sa but que d'au plus 1 (cout unitaire).\r\n" + "output_type": "stream", + "text": [ + "case vide ne rapproche une tuile de sa but que d'au plus 1 (cout unitaire).\r\n" + ] }, { - "output_type": "stream", "name": "stdout", - "text": "Donc h(n) <= 1 + h(n') : Manhattan est CONSISTANTE (et donc admissible).\r\n" + "output_type": "stream", + "text": [ + "Donc h(n) <= 1 + h(n') : Manhattan est CONSISTANTE (et donc admissible).\r\n" + ] } ], "source": [ @@ -1938,13 +2448,22 @@ "iopub.status.busy": "2026-07-10T06:51:15.037116Z", "iopub.status.idle": "2026-07-10T06:51:15.343518Z", "shell.execute_reply": "2026-07-10T06:51:15.342570Z" + }, + "papermill": { + "duration": 0.04115, + "end_time": "2026-09-01T22:43:25.537208", + "exception": false, + "start_time": "2026-09-01T22:43:25.496058", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "(Exercice a completer) — nextBound retourne par le stub : ∞\r\n" + "output_type": "stream", + "text": [ + "(Exercice a completer) — nextBound retourne par le stub : ∞\r\n" + ] } ], "source": [ @@ -1993,13 +2512,22 @@ "iopub.status.busy": "2026-07-10T06:51:15.348265Z", "iopub.status.idle": "2026-07-10T06:51:15.520438Z", "shell.execute_reply": "2026-07-10T06:51:15.519696Z" + }, + "papermill": { + "duration": 0.041963, + "end_time": "2026-09-01T22:43:25.603703", + "exception": false, + "start_time": "2026-09-01T22:43:25.561740", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "(Exercice a completer) — heuristique non admissible a construire\r\n" + "output_type": "stream", + "text": [ + "(Exercice a completer) — heuristique non admissible a construire\r\n" + ] } ], "source": [ @@ -2048,13 +2576,22 @@ "iopub.status.busy": "2026-07-10T06:51:15.524581Z", "iopub.status.idle": "2026-07-10T06:51:15.643227Z", "shell.execute_reply": "2026-07-10T06:51:15.641982Z" + }, + "papermill": { + "duration": 0.036123, + "end_time": "2026-09-01T22:43:25.662983", + "exception": false, + "start_time": "2026-09-01T22:43:25.626860", + "status": "completed" } }, "outputs": [ { - "output_type": "stream", "name": "stdout", - "text": "(Exercice a completer) — grille ponderee 10x10 a implementer\r\n" + "output_type": "stream", + "text": [ + "(Exercice a completer) — grille ponderee 10x10 a implementer\r\n" + ] } ], "source": [ @@ -2157,4 +2694,4 @@ }, "nbformat": 4, "nbformat_minor": 5 -} +} \ No newline at end of file