diff --git a/notebooks/tsp.ipynb b/notebooks/tsp.ipynb
index 9adb799..75950b8 100644
--- a/notebooks/tsp.ipynb
+++ b/notebooks/tsp.ipynb
@@ -162,21 +162,10 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "a50706bc",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "sort_neighbors (generic function with 1 method)"
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"function sort_neighbors(C)\n",
" n = size(C,1)\n",
@@ -191,25 +180,10 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "2eeecdd6",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "4×4 Matrix{Int64}:\n",
- " 0 2 3 2\n",
- " 2 0 4 1\n",
- " 3 4 0 3\n",
- " 2 1 3 0"
- ]
- },
- "execution_count": 5,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"C = [\n",
" 0 2 3 2\n",
@@ -221,50 +195,20 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "6dd0288e",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "4-element Vector{Vector{Tuple{Int64, Int64}}}:\n",
- " [(1, 0), (2, 2), (4, 2), (3, 3)]\n",
- " [(2, 0), (4, 1), (1, 2), (3, 4)]\n",
- " [(3, 0), (1, 3), (4, 3), (2, 4)]\n",
- " [(4, 0), (2, 1), (1, 2), (3, 3)]"
- ]
- },
- "execution_count": 6,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"C_sorted = sort_neighbors(C)"
]
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "00608e1d",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "4-element Vector{Tuple{Int64, Int64}}:\n",
- " (3, 0)\n",
- " (1, 3)\n",
- " (4, 3)\n",
- " (2, 4)"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"city = 3\n",
"C_sorted[city]"
@@ -277,7 +221,7 @@
}
},
"cell_type": "markdown",
- "id": "bc74f262",
+ "id": "7384a305",
"metadata": {},
"source": [
"
\n",
@@ -295,21 +239,10 @@
},
{
"cell_type": "code",
- "execution_count": 8,
- "id": "0fdba520",
+ "execution_count": null,
+ "id": "2ddc2ec1",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "visital_all_paths_recursive! (generic function with 1 method)"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"function visital_all_paths(C_sorted,city)\n",
" num_cities = length(C_sorted)\n",
@@ -341,23 +274,10 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "723a0f1a",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "path = [1, 2, 4, 3]\n",
- "path = [1, 2, 3, 4]\n",
- "path = [1, 4, 2, 3]\n",
- "path = [1, 4, 3, 2]\n",
- "path = [1, 3, 4, 2]\n",
- "path = [1, 3, 2, 4]\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"city = 1\n",
"visital_all_paths(C_sorted,city)"
@@ -388,21 +308,10 @@
},
{
"cell_type": "code",
- "execution_count": 10,
- "id": "7d154cb4",
+ "execution_count": null,
+ "id": "5989f0ac",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tsp_serial_no_prune_recursive! (generic function with 1 method)"
- ]
- },
- "execution_count": 10,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"function tsp_serial_no_prune(C_sorted,city)\n",
" num_cities = length(C_sorted)\n",
@@ -439,21 +348,10 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "d1be2bfc",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "6"
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"city = 1\n",
"min_distance = tsp_serial_no_prune(C_sorted,city)"
@@ -469,21 +367,10 @@
},
{
"cell_type": "code",
- "execution_count": 13,
- "id": "1bce8f5e",
+ "execution_count": null,
+ "id": "8241e0df",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "tsp_serial_recursive! (generic function with 1 method)"
- ]
- },
- "execution_count": 13,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"function tsp_serial(C_sorted,city)\n",
" num_cities = length(C_sorted)\n",
@@ -523,21 +410,10 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": null,
"id": "998087f2",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "6"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"city = 1\n",
"min_distance = tsp_serial(C_sorted,city)"
@@ -553,29 +429,10 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": null,
"id": "e1eb74d8",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " 1.286362 seconds (1 allocation: 144 bytes)\n",
- " 0.002820 seconds (1 allocation: 144 bytes)\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "22"
- ]
- },
- "execution_count": 33,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"n = 11\n",
"using Random\n",
@@ -597,7 +454,7 @@
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": null,
"id": "354f5abb",
"metadata": {},
"outputs": [],
@@ -607,24 +464,10 @@
},
{
"cell_type": "code",
- "execution_count": 35,
+ "execution_count": null,
"id": "7f8f6702",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "3-element Vector{Int64}:\n",
- " 2\n",
- " 3\n",
- " 4"
- ]
- },
- "execution_count": 35,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"if workers() == procs()\n",
" addprocs(3)\n",
@@ -633,7 +476,7 @@
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": null,
"id": "5c0603a1",
"metadata": {},
"outputs": [],
@@ -712,29 +555,10 @@
},
{
"cell_type": "code",
- "execution_count": 40,
- "id": "67329b25",
+ "execution_count": null,
+ "id": "02801b66",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "path = [1, 2, 0, 0]\n",
- "path = [1, 4, 0, 0]\n",
- "path = [1, 3, 0, 0]\n",
- " From worker 2:\tpath = [1, 2, 4, 3]\n",
- " From worker 4:\tpath = [1, 3, 4, 2]\n",
- " From worker 3:\tpath = [1, 4, 2, 3]\n",
- " From worker 3:\tpath = [1, 4, 3, 2]\n",
- " From worker 2:\tpath = [1, 2, 3, 4]\n",
- " From worker 4:\tpath = [1, 3, 2, 4]\n",
- " From worker 2:\tDone!\n",
- " From worker 4:\tDone!\n",
- " From worker 3:\tDone!\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"C = [\n",
" 0 2 3 2\n",
@@ -750,7 +574,7 @@
},
{
"cell_type": "markdown",
- "id": "dba41fa8",
+ "id": "0d579e3d",
"metadata": {},
"source": [
"### How to track the global minimum distance?"
@@ -758,24 +582,10 @@
},
{
"cell_type": "code",
- "execution_count": 42,
- "id": "0753e669",
+ "execution_count": null,
+ "id": "d0303392",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- " From worker 3:\tmin_distance = 9223372036854775807\n",
- " From worker 3:\tdistance = 9\n",
- " From worker 4:\tmin_distance = 9\n",
- " From worker 4:\tdistance = 6\n",
- " From worker 2:\tmin_distance = 6\n",
- " From worker 2:\tdistance = 6\n",
- "min_distance = 6\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"buffer = 1 # very important\n",
"min_distance_chnl = RemoteChannel(()->Channel{Int}(buffer))\n",
@@ -798,7 +608,7 @@
},
{
"cell_type": "markdown",
- "id": "d6051b8e",
+ "id": "1fabefcb",
"metadata": {},
"source": [
"### Final parallel implementation"
@@ -806,7 +616,7 @@
},
{
"cell_type": "code",
- "execution_count": 44,
+ "execution_count": null,
"id": "96c649b7",
"metadata": {},
"outputs": [],
@@ -903,36 +713,10 @@
},
{
"cell_type": "code",
- "execution_count": 50,
- "id": "e49242bb",
+ "execution_count": null,
+ "id": "67888155",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "(path, distance) = ([1, 2, 0, 0], 2)\n",
- "(path, distance) = ([1, 4, 0, 0], 2)\n",
- "(path, distance) = ([1, 3, 0, 0], 3)\n",
- " From worker 3:\t(path, distance, min_distance) = ([1, 3, 4, 2], 7, 7)\n",
- " From worker 2:\t(path, distance, min_distance) = ([1, 2, 4, 3], 6, 6)\n",
- " From worker 3:\tDone!\n",
- " From worker 4:\t(path, distance, min_distance) = ([1, 4, 2, 3], 7, 6)\n",
- " From worker 2:\tDone!\n",
- " From worker 4:\tDone!\n"
- ]
- },
- {
- "data": {
- "text/plain": [
- "6"
- ]
- },
- "execution_count": 50,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "outputs": [],
"source": [
"city = 1\n",
"max_hops = 2\n",