diff --git a/heldAndKarp.ipynb b/heldAndKarp.ipynb
index 3907e9630960c50fca0d7e2550b8f5282778031c..d316978fddb7280334a598f44acebf1c886334d8 100644
--- a/heldAndKarp.ipynb
+++ b/heldAndKarp.ipynb
@@ -12,14 +12,6 @@
    "execution_count": 1,
    "metadata": {},
    "outputs": [
-    {
-     "name": "stderr",
-     "output_type": "stream",
-     "text": [
-      "┌ Info: Precompiling Graphs [86223c79-3864-5bf0-83f7-82e725a168b6]\n",
-      "â”” @ Base loading.jl:1260\n"
-     ]
-    },
     {
      "name": "stdout",
      "output_type": "stream",
@@ -32,16 +24,28 @@
     "using LinearAlgebra\n",
     "using JuMP\n",
     "using Cbc\n",
-    "using Graphs\n",
+    "using LightGraphs\n",
+    "using GraphPlot\n",
     "\n",
     "println(\"Modules loaded\")"
    ]
   },
   {
    "cell_type": "code",
-   "execution_count": null,
+   "execution_count": 9,
    "metadata": {},
-   "outputs": [],
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "hk (generic function with 1 method)"
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
    "source": [
     "function hk(W)\n",
     "    \n",
@@ -55,18 +59,18 @@
     "    \n",
     "    λ = zeros(n)\n",
     "\n",
-    "    g = simple_graph(n-1, is_directed = false)\n",
+    "    g = complete_graph(n-1)\n",
     "    W_reduced = W[2:n,2:n]\n",
     "    z = 0\n",
     "    while z!=n # While not a tour\n",
     "        \n",
     "        # Minimum spanning tree (span_tree : st)\n",
-    "        st = kruskal_minimum_spantree(g, W_reduced)[1]\n",
-    "        \n",
+    "        st = kruskal_mst(g, W_reduced)\n",
+    "\n",
     "        # Connect vertex 1\n",
-    "        m = Model(Cbc.Optimizer()) # PL(NE) Model\n",
+    "        m = Model(Cbc.Optimizer) # PL(NE) Model\n",
     "        \n",
-    "        @variable(m, X[1:n, 1:n], Bin)\n",
+    "        @variable(m, X[1:n,1:n], Bin)\n",
     "        \n",
     "        @objective(m, Min, \n",
     "            2*sum(λ[2:n]) + \n",
@@ -74,7 +78,17 @@
     "        )\n",
     "        \n",
     "        @constraint(m, degreeRoot, sum(X[1,:]) == 2)\n",
-    "        @constraint(m, spanningTree[u ∈ 2:n, v ∈ 2:n], X[u,v] == st[u,v])\n",
+    "        for i ∈ 1:size(st, 1)\n",
+    "            @constraint(m, X[src(st[i]), dst(st[i])] == 1)\n",
+    "        end\n",
+    "        #@constraint(m, spanningTree[i ∈ 1:size(st,1)], X[src(st[i]), dst(st[i])] == 1)\n",
+    "        for u ∈ 1:n\n",
+    "            for v ∈ 1:n\n",
+    "                @constraint(m, X[u,v] == X[v,u])\n",
+    "            end\n",
+    "        end\n",
+    "        \n",
+    "        #@constraint(m, diagonalMatrix[u ∈ 1:n, v ∈ 1:n], X[u,v] == X[v,u])\n",
     "        \n",
     "        optimize!(m)\n",
     "        \n",
@@ -91,14 +105,97 @@
     "        # For the degree, we suppose a null diagonal, to be checked later on\n",
     "        \n",
     "        if z!=n # If not a tour, update\n",
-    "            λ .= λ .+ 2.*(2.-D) # Experimenter d'autres règles\n",
+    "            λ .= λ .+ 2 .* (2 .- D) # Experimenter d'autres règles\n",
     "        end\n",
     "        \n",
     "    end\n",
     "    \n",
+    "    return value.(X)\n",
     "    \n",
     "end"
    ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "6×6 Array{Int64,2}:\n",
+       "  0   8   4  15  15   3\n",
+       "  8   0   5  15   2  15\n",
+       "  4   5   0   6  15  15\n",
+       " 15  15   6   0   5   3\n",
+       " 15   2  15   5   0   4\n",
+       "  3  15  15   3   4   0"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "W = [\n",
+    "    0   8  4 15 15  3 ;\n",
+    "    8   0  5 15  2 15 ;\n",
+    "    4   5  0  6 15 15 ;\n",
+    "    15 15  6  0  5  3 ;\n",
+    "    15  2 15  5  0  4 ;\n",
+    "    3  15 15  3  4  0\n",
+    "]"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "S = hk(W)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "g = complete_graph(5)\n",
+    "gplot(g)\n",
+    "k = kruskal_mst(g, rand(5, 5))"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "for e in k\n",
+    "    println(src(e), dst(e))\n",
+    "end\n",
+    "typeof(k)\n",
+    "for i ∈ 1:size(k,1)\n",
+    "    println(src(k[i]), \" \", dst(k[i]))\n",
+    "end\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": []
   }
  ],
  "metadata": {