From b0b123b9080fec65835fdb741a6886dfafeeea6f Mon Sep 17 00:00:00 2001
From: "francois.lefoulon" <francois.lefoulon@ensiie.fr>
Date: Sun, 28 Mar 2021 19:30:19 +0200
Subject: [PATCH] nv cdt de convergence Kruskal Only

---
 heldAndKarp_fluff.ipynb | 96 +++++++++++++++++++++++++----------------
 1 file changed, 59 insertions(+), 37 deletions(-)

diff --git a/heldAndKarp_fluff.ipynb b/heldAndKarp_fluff.ipynb
index e17c96b..974f593 100644
--- a/heldAndKarp_fluff.ipynb
+++ b/heldAndKarp_fluff.ipynb
@@ -32,7 +32,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 10,
+   "execution_count": 29,
    "metadata": {},
    "outputs": [
     {
@@ -41,7 +41,7 @@
        "connect_v1! (generic function with 1 method)"
       ]
      },
-     "execution_count": 10,
+     "execution_count": 29,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -74,7 +74,40 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 24,
+   "execution_count": 31,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "adj_to_graph (generic function with 1 method)"
+      ]
+     },
+     "execution_count": 31,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "function adj_to_graph(adj, n)\n",
+    "    \n",
+    "    t = SimpleGraph(n)\n",
+    "    \n",
+    "    for i in 1:n\n",
+    "        for j in i:n\n",
+    "            if adj[i, j] == 1\n",
+    "                add_edge!(t, i, j)\n",
+    "            end\n",
+    "        end\n",
+    "    end\n",
+    "    \n",
+    "    return t\n",
+    "end"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 32,
    "metadata": {},
    "outputs": [
     {
@@ -83,7 +116,7 @@
        "hk2 (generic function with 1 method)"
       ]
      },
-     "execution_count": 24,
+     "execution_count": 32,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -107,8 +140,10 @@
     "    \n",
     "    k = 0\n",
     "    X = falses(n, n)\n",
+    "    \n",
+    "    converge = false\n",
     "\n",
-    "    while z!=sum(W .* S) && k < 10 # While not a tour\n",
+    "    while !converge && k < 10 # While not a tour\n",
     "        k+=1\n",
     "        print(z, \" \")\n",
     "        \n",
@@ -142,13 +177,16 @@
     "        end\n",
     "        connect_v1!(X, W1, n)\n",
     "        \n",
+    "        one_tree = adj_to_graph(X)\n",
+    "        \n",
     "        z = 2*sum(λ[2:n]) + sum((W[u,v] - λ[u] - λ[v])*X[u,v] for u ∈ 1:n for v ∈ 1:u)\n",
     "        \n",
     "        #@constraint(m, spanningTree[i ∈ 1:size(st,1)], X[src(st[i]), dst(st[i])] == 1)\n",
     "        \n",
     "        D = [sum(X[u,:]) for u ∈ 1:n]\n",
     "\n",
-    "        if z!=sum(W .* X)/2 # If not a tour, update\n",
+    "        if is_cyclic(one_tree) # If not a tour, update\n",
+    "            converge = true\n",
     "            λ .= λ .+ 2 .* (2 .- D) # Experimenter d'autres règles\n",
     "        end\n",
     "        \n",
@@ -163,7 +201,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 4,
+   "execution_count": 33,
    "metadata": {},
    "outputs": [
     {
@@ -178,7 +216,7 @@
        "  3  15  15   3   4   0"
       ]
      },
-     "execution_count": 4,
+     "execution_count": 33,
      "metadata": {},
      "output_type": "execute_result"
     }
@@ -196,7 +234,7 @@
   },
   {
    "cell_type": "code",
-   "execution_count": 26,
+   "execution_count": 34,
    "metadata": {
     "tags": []
    },
@@ -205,37 +243,21 @@
      "name": "stdout",
      "output_type": "stream",
      "text": [
-      "-1 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n",
-      "25.0 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n",
-      "sommes des poids des arêtes :25.0\n"
+      "-1 LightGraphs.SimpleGraphs.SimpleEdge{Int64}[Edge 1 => 4, Edge 3 => 5, Edge 4 => 5, Edge 1 => 2]\n"
      ]
     },
     {
-     "data": {
-      "text/plain": [
-       "(Bool[0 1 … 0 1; 1 0 … 1 0; … ; 0 1 … 0 1; 1 0 … 1 0], [0.0, 0.0, 0.0, 0.0, 0.0, 0.0])"
-      ]
-     },
-     "execution_count": 26,
-     "metadata": {},
-     "output_type": "execute_result"
+     "ename": "LoadError",
+     "evalue": "MethodError: no method matching adj_to_graph(::BitArray{2})\nClosest candidates are:\n  adj_to_graph(::Any, !Matched::Any) at In[31]:1",
+     "output_type": "error",
+     "traceback": [
+      "MethodError: no method matching adj_to_graph(::BitArray{2})\nClosest candidates are:\n  adj_to_graph(::Any, !Matched::Any) at In[31]:1",
+      "",
+      "Stacktrace:",
+      " [1] hk2(::Array{Int64,2}) at ./In[32]:56",
+      " [2] top-level scope at In[34]:1",
+      " [3] include_string(::Function, ::Module, ::String, ::String) at ./loading.jl:1091"
+     ]
     }
    ],
    "source": [
-- 
GitLab