From b10f16f5dd86f8a93d8a7d225503487e068146ef Mon Sep 17 00:00:00 2001 From: Renge Date: Sat, 9 Mar 2024 17:30:02 -0500 Subject: [PATCH] feat: tsp data files --- Assignment2/A/data10.P | 90 +++++ Assignment2/A/data10.dat | 100 +++++ Assignment2/A/data10.lp | 190 +++++++++ Assignment2/A/data10.py | 12 + Assignment2/A/data15.P | 210 ++++++++++ Assignment2/A/data15.dat | 225 +++++++++++ Assignment2/A/data15.lp | 435 +++++++++++++++++++++ Assignment2/A/data15.py | 17 + Assignment2/A/data20.P | 380 ++++++++++++++++++ Assignment2/A/data20.dat | 400 +++++++++++++++++++ Assignment2/A/data20.lp | 780 +++++++++++++++++++++++++++++++++++++ Assignment2/A/data20.py | 22 ++ Assignment2/A/data5.P | 20 + Assignment2/A/data5.dat | 25 ++ Assignment2/A/data5.lp | 45 +++ Assignment2/A/data5.py | 7 + Assignment2/A/randomgen.py | 27 ++ Assignment2/A/tsp.P | 9 +- Assignment2/A/tsp.lp | 24 +- Assignment2/README.md | 44 ++- 20 files changed, 3038 insertions(+), 24 deletions(-) create mode 100644 Assignment2/A/data10.P create mode 100644 Assignment2/A/data10.dat create mode 100644 Assignment2/A/data10.lp create mode 100644 Assignment2/A/data10.py create mode 100644 Assignment2/A/data15.P create mode 100644 Assignment2/A/data15.dat create mode 100644 Assignment2/A/data15.lp create mode 100644 Assignment2/A/data15.py create mode 100644 Assignment2/A/data20.P create mode 100644 Assignment2/A/data20.dat create mode 100644 Assignment2/A/data20.lp create mode 100644 Assignment2/A/data20.py create mode 100644 Assignment2/A/data5.P create mode 100644 Assignment2/A/data5.dat create mode 100644 Assignment2/A/data5.lp create mode 100644 Assignment2/A/data5.py create mode 100644 Assignment2/A/randomgen.py diff --git a/Assignment2/A/data10.P b/Assignment2/A/data10.P new file mode 100644 index 0000000..275771c --- /dev/null +++ b/Assignment2/A/data10.P @@ -0,0 +1,90 @@ +edge(a, b, 13). +edge(a, c, 12). +edge(a, d, 10). +edge(a, e, 13). +edge(a, f, 13). +edge(a, g, 18). +edge(a, h, 3). +edge(a, i, 3). +edge(a, j, 12). +edge(b, a, 9). +edge(b, c, 20). +edge(b, d, 7). +edge(b, e, 18). +edge(b, f, 11). +edge(b, g, 2). +edge(b, h, 16). +edge(b, i, 2). +edge(b, j, 4). +edge(c, a, 11). +edge(c, b, 14). +edge(c, d, 4). +edge(c, e, 13). +edge(c, f, 7). +edge(c, g, 6). +edge(c, h, 17). +edge(c, i, 10). +edge(c, j, 13). +edge(d, a, 18). +edge(d, b, 12). +edge(d, c, 15). +edge(d, e, 7). +edge(d, f, 19). +edge(d, g, 20). +edge(d, h, 4). +edge(d, i, 12). +edge(d, j, 14). +edge(e, a, 6). +edge(e, b, 15). +edge(e, c, 5). +edge(e, d, 1). +edge(e, f, 19). +edge(e, g, 2). +edge(e, h, 20). +edge(e, i, 20). +edge(e, j, 14). +edge(f, a, 7). +edge(f, b, 12). +edge(f, c, 11). +edge(f, d, 8). +edge(f, e, 2). +edge(f, g, 20). +edge(f, h, 9). +edge(f, i, 3). +edge(f, j, 7). +edge(g, a, 7). +edge(g, b, 14). +edge(g, c, 15). +edge(g, d, 7). +edge(g, e, 18). +edge(g, f, 16). +edge(g, h, 8). +edge(g, i, 3). +edge(g, j, 14). +edge(h, a, 12). +edge(h, b, 8). +edge(h, c, 9). +edge(h, d, 2). +edge(h, e, 4). +edge(h, f, 16). +edge(h, g, 8). +edge(h, i, 12). +edge(h, j, 9). +edge(i, a, 15). +edge(i, b, 7). +edge(i, c, 16). +edge(i, d, 2). +edge(i, e, 16). +edge(i, f, 14). +edge(i, g, 13). +edge(i, h, 4). +edge(i, j, 19). +edge(j, a, 11). +edge(j, b, 11). +edge(j, c, 16). +edge(j, d, 14). +edge(j, e, 20). +edge(j, f, 11). +edge(j, g, 3). +edge(j, h, 15). +edge(j, i, 17). diff --git a/Assignment2/A/data10.dat b/Assignment2/A/data10.dat new file mode 100644 index 0000000..b2e71af --- /dev/null +++ b/Assignment2/A/data10.dat @@ -0,0 +1,100 @@ +let dist[1][1] := 7; +let dist[1][2] := 13; +let dist[1][3] := 12; +let dist[1][4] := 10; +let dist[1][5] := 13; +let dist[1][6] := 13; +let dist[1][7] := 18; +let dist[1][8] := 3; +let dist[1][9] := 3; +let dist[1][10] := 12; +let dist[2][1] := 9; +let dist[2][2] := 14; +let dist[2][3] := 20; +let dist[2][4] := 7; +let dist[2][5] := 18; +let dist[2][6] := 11; +let dist[2][7] := 2; +let dist[2][8] := 16; +let dist[2][9] := 2; +let dist[2][10] := 4; +let dist[3][1] := 11; +let dist[3][2] := 14; +let dist[3][3] := 19; +let dist[3][4] := 4; +let dist[3][5] := 13; +let dist[3][6] := 7; +let dist[3][7] := 6; +let dist[3][8] := 17; +let dist[3][9] := 10; +let dist[3][10] := 13; +let dist[4][1] := 18; +let dist[4][2] := 12; +let dist[4][3] := 15; +let dist[4][4] := 11; +let dist[4][5] := 7; +let dist[4][6] := 19; +let dist[4][7] := 20; +let dist[4][8] := 4; +let dist[4][9] := 12; +let dist[4][10] := 14; +let dist[5][1] := 6; +let dist[5][2] := 15; +let dist[5][3] := 5; +let dist[5][4] := 1; +let dist[5][5] := 20; +let dist[5][6] := 19; +let dist[5][7] := 2; +let dist[5][8] := 20; +let dist[5][9] := 20; +let dist[5][10] := 14; +let dist[6][1] := 7; +let dist[6][2] := 12; +let dist[6][3] := 11; +let dist[6][4] := 8; +let dist[6][5] := 2; +let dist[6][6] := 18; +let dist[6][7] := 20; +let dist[6][8] := 9; +let dist[6][9] := 3; +let dist[6][10] := 7; +let dist[7][1] := 7; +let dist[7][2] := 14; +let dist[7][3] := 15; +let dist[7][4] := 7; +let dist[7][5] := 18; +let dist[7][6] := 16; +let dist[7][7] := 6; +let dist[7][8] := 8; +let dist[7][9] := 3; +let dist[7][10] := 14; +let dist[8][1] := 12; +let dist[8][2] := 8; +let dist[8][3] := 9; +let dist[8][4] := 2; +let dist[8][5] := 4; +let dist[8][6] := 16; +let dist[8][7] := 8; +let dist[8][8] := 2; +let dist[8][9] := 12; +let dist[8][10] := 9; +let dist[9][1] := 15; +let dist[9][2] := 7; +let dist[9][3] := 16; +let dist[9][4] := 2; +let dist[9][5] := 16; +let dist[9][6] := 14; +let dist[9][7] := 13; +let dist[9][8] := 4; +let dist[9][9] := 1; +let dist[9][10] := 19; +let dist[10][1] := 11; +let dist[10][2] := 11; +let dist[10][3] := 16; +let dist[10][4] := 14; +let dist[10][5] := 20; +let dist[10][6] := 11; +let dist[10][7] := 3; +let dist[10][8] := 15; +let dist[10][9] := 17; +let dist[10][10] := 13; diff --git a/Assignment2/A/data10.lp b/Assignment2/A/data10.lp new file mode 100644 index 0000000..f4a91ba --- /dev/null +++ b/Assignment2/A/data10.lp @@ -0,0 +1,190 @@ +node(a). +path(a, b). +edge(a, b, 13). +path(a, c). +edge(a, c, 12). +path(a, d). +edge(a, d, 10). +path(a, e). +edge(a, e, 13). +path(a, f). +edge(a, f, 13). +path(a, g). +edge(a, g, 18). +path(a, h). +edge(a, h, 3). +path(a, i). +edge(a, i, 3). +path(a, j). +edge(a, j, 12). +node(b). +path(b, a). +edge(b, a, 9). +path(b, c). +edge(b, c, 20). +path(b, d). +edge(b, d, 7). +path(b, e). +edge(b, e, 18). +path(b, f). +edge(b, f, 11). +path(b, g). +edge(b, g, 2). +path(b, h). +edge(b, h, 16). +path(b, i). +edge(b, i, 2). +path(b, j). +edge(b, j, 4). +node(c). +path(c, a). +edge(c, a, 11). +path(c, b). +edge(c, b, 14). +path(c, d). +edge(c, d, 4). +path(c, e). +edge(c, e, 13). +path(c, f). +edge(c, f, 7). +path(c, g). +edge(c, g, 6). +path(c, h). +edge(c, h, 17). +path(c, i). +edge(c, i, 10). +path(c, j). +edge(c, j, 13). +node(d). +path(d, a). +edge(d, a, 18). +path(d, b). +edge(d, b, 12). +path(d, c). +edge(d, c, 15). +path(d, e). +edge(d, e, 7). +path(d, f). +edge(d, f, 19). +path(d, g). +edge(d, g, 20). +path(d, h). +edge(d, h, 4). +path(d, i). +edge(d, i, 12). +path(d, j). +edge(d, j, 14). +node(e). +path(e, a). +edge(e, a, 6). +path(e, b). +edge(e, b, 15). +path(e, c). +edge(e, c, 5). +path(e, d). +edge(e, d, 1). +path(e, f). +edge(e, f, 19). +path(e, g). +edge(e, g, 2). +path(e, h). +edge(e, h, 20). +path(e, i). +edge(e, i, 20). +path(e, j). +edge(e, j, 14). +node(f). +path(f, a). +edge(f, a, 7). +path(f, b). +edge(f, b, 12). +path(f, c). +edge(f, c, 11). +path(f, d). +edge(f, d, 8). +path(f, e). +edge(f, e, 2). +path(f, g). +edge(f, g, 20). +path(f, h). +edge(f, h, 9). +path(f, i). +edge(f, i, 3). +path(f, j). +edge(f, j, 7). +node(g). +path(g, a). +edge(g, a, 7). +path(g, b). +edge(g, b, 14). +path(g, c). +edge(g, c, 15). +path(g, d). +edge(g, d, 7). +path(g, e). +edge(g, e, 18). +path(g, f). +edge(g, f, 16). +path(g, h). +edge(g, h, 8). +path(g, i). +edge(g, i, 3). +path(g, j). +edge(g, j, 14). +node(h). +path(h, a). +edge(h, a, 12). +path(h, b). +edge(h, b, 8). +path(h, c). +edge(h, c, 9). +path(h, d). +edge(h, d, 2). +path(h, e). +edge(h, e, 4). +path(h, f). +edge(h, f, 16). +path(h, g). +edge(h, g, 8). +path(h, i). +edge(h, i, 12). +path(h, j). +edge(h, j, 9). +node(i). +path(i, a). +edge(i, a, 15). +path(i, b). +edge(i, b, 7). +path(i, c). +edge(i, c, 16). +path(i, d). +edge(i, d, 2). +path(i, e). +edge(i, e, 16). +path(i, f). +edge(i, f, 14). +path(i, g). +edge(i, g, 13). +path(i, h). +edge(i, h, 4). +path(i, j). +edge(i, j, 19). +node(j). +path(j, a). +edge(j, a, 11). +path(j, b). +edge(j, b, 11). +path(j, c). +edge(j, c, 16). +path(j, d). +edge(j, d, 14). +path(j, e). +edge(j, e, 20). +path(j, f). +edge(j, f, 11). +path(j, g). +edge(j, g, 3). +path(j, h). +edge(j, h, 15). +path(j, i). +edge(j, i, 17). diff --git a/Assignment2/A/data10.py b/Assignment2/A/data10.py new file mode 100644 index 0000000..c8b72f8 --- /dev/null +++ b/Assignment2/A/data10.py @@ -0,0 +1,12 @@ +[ +[7, 13, 12, 10, 13, 13, 18, 3, 3, 12], +[9, 14, 20, 7, 18, 11, 2, 16, 2, 4], +[11, 14, 19, 4, 13, 7, 6, 17, 10, 13], +[18, 12, 15, 11, 7, 19, 20, 4, 12, 14], +[6, 15, 5, 1, 20, 19, 2, 20, 20, 14], +[7, 12, 11, 8, 2, 18, 20, 9, 3, 7], +[7, 14, 15, 7, 18, 16, 6, 8, 3, 14], +[12, 8, 9, 2, 4, 16, 8, 2, 12, 9], +[15, 7, 16, 2, 16, 14, 13, 4, 1, 19], +[11, 11, 16, 14, 20, 11, 3, 15, 17, 13], +] \ No newline at end of file diff --git a/Assignment2/A/data15.P b/Assignment2/A/data15.P new file mode 100644 index 0000000..00ac67c --- /dev/null +++ b/Assignment2/A/data15.P @@ -0,0 +1,210 @@ +edge(a, b, 4). +edge(a, c, 4). +edge(a, d, 14). +edge(a, e, 12). +edge(a, f, 20). +edge(a, g, 1). +edge(a, h, 1). +edge(a, i, 14). +edge(a, j, 12). +edge(a, k, 15). +edge(a, l, 15). +edge(a, m, 18). +edge(a, n, 11). +edge(a, o, 19). +edge(b, a, 5). +edge(b, c, 3). +edge(b, d, 6). +edge(b, e, 15). +edge(b, f, 6). +edge(b, g, 7). +edge(b, h, 5). +edge(b, i, 3). +edge(b, j, 19). +edge(b, k, 11). +edge(b, l, 8). +edge(b, m, 13). +edge(b, n, 6). +edge(b, o, 12). +edge(c, a, 3). +edge(c, b, 4). +edge(c, d, 2). +edge(c, e, 3). +edge(c, f, 1). +edge(c, g, 1). +edge(c, h, 2). +edge(c, i, 11). +edge(c, j, 2). +edge(c, k, 9). +edge(c, l, 10). +edge(c, m, 14). +edge(c, n, 20). +edge(c, o, 19). +edge(d, a, 17). +edge(d, b, 3). +edge(d, c, 17). +edge(d, e, 13). +edge(d, f, 19). +edge(d, g, 20). +edge(d, h, 12). +edge(d, i, 18). +edge(d, j, 9). +edge(d, k, 11). +edge(d, l, 20). +edge(d, m, 16). +edge(d, n, 18). +edge(d, o, 19). +edge(e, a, 6). +edge(e, b, 5). +edge(e, c, 2). +edge(e, d, 14). +edge(e, f, 8). +edge(e, g, 15). +edge(e, h, 6). +edge(e, i, 2). +edge(e, j, 13). +edge(e, k, 12). +edge(e, l, 7). +edge(e, m, 4). +edge(e, n, 9). +edge(e, o, 6). +edge(f, a, 6). +edge(f, b, 6). +edge(f, c, 14). +edge(f, d, 6). +edge(f, e, 9). +edge(f, g, 14). +edge(f, h, 13). +edge(f, i, 19). +edge(f, j, 12). +edge(f, k, 1). +edge(f, l, 1). +edge(f, m, 1). +edge(f, n, 17). +edge(f, o, 11). +edge(g, a, 15). +edge(g, b, 5). +edge(g, c, 4). +edge(g, d, 13). +edge(g, e, 16). +edge(g, f, 1). +edge(g, h, 12). +edge(g, i, 13). +edge(g, j, 5). +edge(g, k, 1). +edge(g, l, 15). +edge(g, m, 18). +edge(g, n, 19). +edge(g, o, 4). +edge(h, a, 6). +edge(h, b, 13). +edge(h, c, 2). +edge(h, d, 5). +edge(h, e, 10). +edge(h, f, 6). +edge(h, g, 18). +edge(h, i, 3). +edge(h, j, 12). +edge(h, k, 15). +edge(h, l, 7). +edge(h, m, 17). +edge(h, n, 19). +edge(h, o, 1). +edge(i, a, 15). +edge(i, b, 11). +edge(i, c, 12). +edge(i, d, 18). +edge(i, e, 9). +edge(i, f, 20). +edge(i, g, 19). +edge(i, h, 9). +edge(i, j, 4). +edge(i, k, 5). +edge(i, l, 19). +edge(i, m, 8). +edge(i, n, 5). +edge(i, o, 14). +edge(j, a, 1). +edge(j, b, 4). +edge(j, c, 19). +edge(j, d, 7). +edge(j, e, 20). +edge(j, f, 11). +edge(j, g, 5). +edge(j, h, 11). +edge(j, i, 9). +edge(j, k, 15). +edge(j, l, 8). +edge(j, m, 12). +edge(j, n, 4). +edge(j, o, 19). +edge(k, a, 20). +edge(k, b, 12). +edge(k, c, 5). +edge(k, d, 18). +edge(k, e, 10). +edge(k, f, 19). +edge(k, g, 1). +edge(k, h, 3). +edge(k, i, 8). +edge(k, j, 18). +edge(k, l, 20). +edge(k, m, 2). +edge(k, n, 13). +edge(k, o, 13). +edge(l, a, 5). +edge(l, b, 12). +edge(l, c, 9). +edge(l, d, 2). +edge(l, e, 10). +edge(l, f, 3). +edge(l, g, 10). +edge(l, h, 18). +edge(l, i, 10). +edge(l, j, 18). +edge(l, k, 1). +edge(l, m, 6). +edge(l, n, 8). +edge(l, o, 20). +edge(m, a, 1). +edge(m, b, 20). +edge(m, c, 4). +edge(m, d, 12). +edge(m, e, 4). +edge(m, f, 19). +edge(m, g, 17). +edge(m, h, 12). +edge(m, i, 19). +edge(m, j, 13). +edge(m, k, 2). +edge(m, l, 5). +edge(m, n, 5). +edge(m, o, 5). +edge(n, a, 2). +edge(n, b, 1). +edge(n, c, 16). +edge(n, d, 2). +edge(n, e, 15). +edge(n, f, 20). +edge(n, g, 12). +edge(n, h, 6). +edge(n, i, 5). +edge(n, j, 9). +edge(n, k, 4). +edge(n, l, 19). +edge(n, m, 9). +edge(n, o, 13). +edge(o, a, 12). +edge(o, b, 9). +edge(o, c, 20). +edge(o, d, 9). +edge(o, e, 2). +edge(o, f, 6). +edge(o, g, 17). +edge(o, h, 12). +edge(o, i, 11). +edge(o, j, 19). +edge(o, k, 20). +edge(o, l, 6). +edge(o, m, 3). +edge(o, n, 12). diff --git a/Assignment2/A/data15.dat b/Assignment2/A/data15.dat new file mode 100644 index 0000000..6682d44 --- /dev/null +++ b/Assignment2/A/data15.dat @@ -0,0 +1,225 @@ +let dist[1][1] := 11; +let dist[1][2] := 4; +let dist[1][3] := 4; +let dist[1][4] := 14; +let dist[1][5] := 12; +let dist[1][6] := 20; +let dist[1][7] := 1; +let dist[1][8] := 1; +let dist[1][9] := 14; +let dist[1][10] := 12; +let dist[1][11] := 15; +let dist[1][12] := 15; +let dist[1][13] := 18; +let dist[1][14] := 11; +let dist[1][15] := 19; +let dist[2][1] := 5; +let dist[2][2] := 13; +let dist[2][3] := 3; +let dist[2][4] := 6; +let dist[2][5] := 15; +let dist[2][6] := 6; +let dist[2][7] := 7; +let dist[2][8] := 5; +let dist[2][9] := 3; +let dist[2][10] := 19; +let dist[2][11] := 11; +let dist[2][12] := 8; +let dist[2][13] := 13; +let dist[2][14] := 6; +let dist[2][15] := 12; +let dist[3][1] := 3; +let dist[3][2] := 4; +let dist[3][3] := 10; +let dist[3][4] := 2; +let dist[3][5] := 3; +let dist[3][6] := 1; +let dist[3][7] := 1; +let dist[3][8] := 2; +let dist[3][9] := 11; +let dist[3][10] := 2; +let dist[3][11] := 9; +let dist[3][12] := 10; +let dist[3][13] := 14; +let dist[3][14] := 20; +let dist[3][15] := 19; +let dist[4][1] := 17; +let dist[4][2] := 3; +let dist[4][3] := 17; +let dist[4][4] := 4; +let dist[4][5] := 13; +let dist[4][6] := 19; +let dist[4][7] := 20; +let dist[4][8] := 12; +let dist[4][9] := 18; +let dist[4][10] := 9; +let dist[4][11] := 11; +let dist[4][12] := 20; +let dist[4][13] := 16; +let dist[4][14] := 18; +let dist[4][15] := 19; +let dist[5][1] := 6; +let dist[5][2] := 5; +let dist[5][3] := 2; +let dist[5][4] := 14; +let dist[5][5] := 20; +let dist[5][6] := 8; +let dist[5][7] := 15; +let dist[5][8] := 6; +let dist[5][9] := 2; +let dist[5][10] := 13; +let dist[5][11] := 12; +let dist[5][12] := 7; +let dist[5][13] := 4; +let dist[5][14] := 9; +let dist[5][15] := 6; +let dist[6][1] := 6; +let dist[6][2] := 6; +let dist[6][3] := 14; +let dist[6][4] := 6; +let dist[6][5] := 9; +let dist[6][6] := 20; +let dist[6][7] := 14; +let dist[6][8] := 13; +let dist[6][9] := 19; +let dist[6][10] := 12; +let dist[6][11] := 1; +let dist[6][12] := 1; +let dist[6][13] := 1; +let dist[6][14] := 17; +let dist[6][15] := 11; +let dist[7][1] := 15; +let dist[7][2] := 5; +let dist[7][3] := 4; +let dist[7][4] := 13; +let dist[7][5] := 16; +let dist[7][6] := 1; +let dist[7][7] := 6; +let dist[7][8] := 12; +let dist[7][9] := 13; +let dist[7][10] := 5; +let dist[7][11] := 1; +let dist[7][12] := 15; +let dist[7][13] := 18; +let dist[7][14] := 19; +let dist[7][15] := 4; +let dist[8][1] := 6; +let dist[8][2] := 13; +let dist[8][3] := 2; +let dist[8][4] := 5; +let dist[8][5] := 10; +let dist[8][6] := 6; +let dist[8][7] := 18; +let dist[8][8] := 10; +let dist[8][9] := 3; +let dist[8][10] := 12; +let dist[8][11] := 15; +let dist[8][12] := 7; +let dist[8][13] := 17; +let dist[8][14] := 19; +let dist[8][15] := 1; +let dist[9][1] := 15; +let dist[9][2] := 11; +let dist[9][3] := 12; +let dist[9][4] := 18; +let dist[9][5] := 9; +let dist[9][6] := 20; +let dist[9][7] := 19; +let dist[9][8] := 9; +let dist[9][9] := 8; +let dist[9][10] := 4; +let dist[9][11] := 5; +let dist[9][12] := 19; +let dist[9][13] := 8; +let dist[9][14] := 5; +let dist[9][15] := 14; +let dist[10][1] := 1; +let dist[10][2] := 4; +let dist[10][3] := 19; +let dist[10][4] := 7; +let dist[10][5] := 20; +let dist[10][6] := 11; +let dist[10][7] := 5; +let dist[10][8] := 11; +let dist[10][9] := 9; +let dist[10][10] := 19; +let dist[10][11] := 15; +let dist[10][12] := 8; +let dist[10][13] := 12; +let dist[10][14] := 4; +let dist[10][15] := 19; +let dist[11][1] := 20; +let dist[11][2] := 12; +let dist[11][3] := 5; +let dist[11][4] := 18; +let dist[11][5] := 10; +let dist[11][6] := 19; +let dist[11][7] := 1; +let dist[11][8] := 3; +let dist[11][9] := 8; +let dist[11][10] := 18; +let dist[11][11] := 13; +let dist[11][12] := 20; +let dist[11][13] := 2; +let dist[11][14] := 13; +let dist[11][15] := 13; +let dist[12][1] := 5; +let dist[12][2] := 12; +let dist[12][3] := 9; +let dist[12][4] := 2; +let dist[12][5] := 10; +let dist[12][6] := 3; +let dist[12][7] := 10; +let dist[12][8] := 18; +let dist[12][9] := 10; +let dist[12][10] := 18; +let dist[12][11] := 1; +let dist[12][12] := 16; +let dist[12][13] := 6; +let dist[12][14] := 8; +let dist[12][15] := 20; +let dist[13][1] := 1; +let dist[13][2] := 20; +let dist[13][3] := 4; +let dist[13][4] := 12; +let dist[13][5] := 4; +let dist[13][6] := 19; +let dist[13][7] := 17; +let dist[13][8] := 12; +let dist[13][9] := 19; +let dist[13][10] := 13; +let dist[13][11] := 2; +let dist[13][12] := 5; +let dist[13][13] := 2; +let dist[13][14] := 5; +let dist[13][15] := 5; +let dist[14][1] := 2; +let dist[14][2] := 1; +let dist[14][3] := 16; +let dist[14][4] := 2; +let dist[14][5] := 15; +let dist[14][6] := 20; +let dist[14][7] := 12; +let dist[14][8] := 6; +let dist[14][9] := 5; +let dist[14][10] := 9; +let dist[14][11] := 4; +let dist[14][12] := 19; +let dist[14][13] := 9; +let dist[14][14] := 1; +let dist[14][15] := 13; +let dist[15][1] := 12; +let dist[15][2] := 9; +let dist[15][3] := 20; +let dist[15][4] := 9; +let dist[15][5] := 2; +let dist[15][6] := 6; +let dist[15][7] := 17; +let dist[15][8] := 12; +let dist[15][9] := 11; +let dist[15][10] := 19; +let dist[15][11] := 20; +let dist[15][12] := 6; +let dist[15][13] := 3; +let dist[15][14] := 12; +let dist[15][15] := 18; diff --git a/Assignment2/A/data15.lp b/Assignment2/A/data15.lp new file mode 100644 index 0000000..a834ccf --- /dev/null +++ b/Assignment2/A/data15.lp @@ -0,0 +1,435 @@ +node(a). +path(a, b). +edge(a, b, 4). +path(a, c). +edge(a, c, 4). +path(a, d). +edge(a, d, 14). +path(a, e). +edge(a, e, 12). +path(a, f). +edge(a, f, 20). +path(a, g). +edge(a, g, 1). +path(a, h). +edge(a, h, 1). +path(a, i). +edge(a, i, 14). +path(a, j). +edge(a, j, 12). +path(a, k). +edge(a, k, 15). +path(a, l). +edge(a, l, 15). +path(a, m). +edge(a, m, 18). +path(a, n). +edge(a, n, 11). +path(a, o). +edge(a, o, 19). +node(b). +path(b, a). +edge(b, a, 5). +path(b, c). +edge(b, c, 3). +path(b, d). +edge(b, d, 6). +path(b, e). +edge(b, e, 15). +path(b, f). +edge(b, f, 6). +path(b, g). +edge(b, g, 7). +path(b, h). +edge(b, h, 5). +path(b, i). +edge(b, i, 3). +path(b, j). +edge(b, j, 19). +path(b, k). +edge(b, k, 11). +path(b, l). +edge(b, l, 8). +path(b, m). +edge(b, m, 13). +path(b, n). +edge(b, n, 6). +path(b, o). +edge(b, o, 12). +node(c). +path(c, a). +edge(c, a, 3). +path(c, b). +edge(c, b, 4). +path(c, d). +edge(c, d, 2). +path(c, e). +edge(c, e, 3). +path(c, f). +edge(c, f, 1). +path(c, g). +edge(c, g, 1). +path(c, h). +edge(c, h, 2). +path(c, i). +edge(c, i, 11). +path(c, j). +edge(c, j, 2). +path(c, k). +edge(c, k, 9). +path(c, l). +edge(c, l, 10). +path(c, m). +edge(c, m, 14). +path(c, n). +edge(c, n, 20). +path(c, o). +edge(c, o, 19). +node(d). +path(d, a). +edge(d, a, 17). +path(d, b). +edge(d, b, 3). +path(d, c). +edge(d, c, 17). +path(d, e). +edge(d, e, 13). +path(d, f). +edge(d, f, 19). +path(d, g). +edge(d, g, 20). +path(d, h). +edge(d, h, 12). +path(d, i). +edge(d, i, 18). +path(d, j). +edge(d, j, 9). +path(d, k). +edge(d, k, 11). +path(d, l). +edge(d, l, 20). +path(d, m). +edge(d, m, 16). +path(d, n). +edge(d, n, 18). +path(d, o). +edge(d, o, 19). +node(e). +path(e, a). +edge(e, a, 6). +path(e, b). +edge(e, b, 5). +path(e, c). +edge(e, c, 2). +path(e, d). +edge(e, d, 14). +path(e, f). +edge(e, f, 8). +path(e, g). +edge(e, g, 15). +path(e, h). +edge(e, h, 6). +path(e, i). +edge(e, i, 2). +path(e, j). +edge(e, j, 13). +path(e, k). +edge(e, k, 12). +path(e, l). +edge(e, l, 7). +path(e, m). +edge(e, m, 4). +path(e, n). +edge(e, n, 9). +path(e, o). +edge(e, o, 6). +node(f). +path(f, a). +edge(f, a, 6). +path(f, b). +edge(f, b, 6). +path(f, c). +edge(f, c, 14). +path(f, d). +edge(f, d, 6). +path(f, e). +edge(f, e, 9). +path(f, g). +edge(f, g, 14). +path(f, h). +edge(f, h, 13). +path(f, i). +edge(f, i, 19). +path(f, j). +edge(f, j, 12). +path(f, k). +edge(f, k, 1). +path(f, l). +edge(f, l, 1). +path(f, m). +edge(f, m, 1). +path(f, n). +edge(f, n, 17). +path(f, o). +edge(f, o, 11). +node(g). +path(g, a). +edge(g, a, 15). +path(g, b). +edge(g, b, 5). +path(g, c). +edge(g, c, 4). +path(g, d). +edge(g, d, 13). +path(g, e). +edge(g, e, 16). +path(g, f). +edge(g, f, 1). +path(g, h). +edge(g, h, 12). +path(g, i). +edge(g, i, 13). +path(g, j). +edge(g, j, 5). +path(g, k). +edge(g, k, 1). +path(g, l). +edge(g, l, 15). +path(g, m). +edge(g, m, 18). +path(g, n). +edge(g, n, 19). +path(g, o). +edge(g, o, 4). +node(h). +path(h, a). +edge(h, a, 6). +path(h, b). +edge(h, b, 13). +path(h, c). +edge(h, c, 2). +path(h, d). +edge(h, d, 5). +path(h, e). +edge(h, e, 10). +path(h, f). +edge(h, f, 6). +path(h, g). +edge(h, g, 18). +path(h, i). +edge(h, i, 3). +path(h, j). +edge(h, j, 12). +path(h, k). +edge(h, k, 15). +path(h, l). +edge(h, l, 7). +path(h, m). +edge(h, m, 17). +path(h, n). +edge(h, n, 19). +path(h, o). +edge(h, o, 1). +node(i). +path(i, a). +edge(i, a, 15). +path(i, b). +edge(i, b, 11). +path(i, c). +edge(i, c, 12). +path(i, d). +edge(i, d, 18). +path(i, e). +edge(i, e, 9). +path(i, f). +edge(i, f, 20). +path(i, g). +edge(i, g, 19). +path(i, h). +edge(i, h, 9). +path(i, j). +edge(i, j, 4). +path(i, k). +edge(i, k, 5). +path(i, l). +edge(i, l, 19). +path(i, m). +edge(i, m, 8). +path(i, n). +edge(i, n, 5). +path(i, o). +edge(i, o, 14). +node(j). +path(j, a). +edge(j, a, 1). +path(j, b). +edge(j, b, 4). +path(j, c). +edge(j, c, 19). +path(j, d). +edge(j, d, 7). +path(j, e). +edge(j, e, 20). +path(j, f). +edge(j, f, 11). +path(j, g). +edge(j, g, 5). +path(j, h). +edge(j, h, 11). +path(j, i). +edge(j, i, 9). +path(j, k). +edge(j, k, 15). +path(j, l). +edge(j, l, 8). +path(j, m). +edge(j, m, 12). +path(j, n). +edge(j, n, 4). +path(j, o). +edge(j, o, 19). +node(k). +path(k, a). +edge(k, a, 20). +path(k, b). +edge(k, b, 12). +path(k, c). +edge(k, c, 5). +path(k, d). +edge(k, d, 18). +path(k, e). +edge(k, e, 10). +path(k, f). +edge(k, f, 19). +path(k, g). +edge(k, g, 1). +path(k, h). +edge(k, h, 3). +path(k, i). +edge(k, i, 8). +path(k, j). +edge(k, j, 18). +path(k, l). +edge(k, l, 20). +path(k, m). +edge(k, m, 2). +path(k, n). +edge(k, n, 13). +path(k, o). +edge(k, o, 13). +node(l). +path(l, a). +edge(l, a, 5). +path(l, b). +edge(l, b, 12). +path(l, c). +edge(l, c, 9). +path(l, d). +edge(l, d, 2). +path(l, e). +edge(l, e, 10). +path(l, f). +edge(l, f, 3). +path(l, g). +edge(l, g, 10). +path(l, h). +edge(l, h, 18). +path(l, i). +edge(l, i, 10). +path(l, j). +edge(l, j, 18). +path(l, k). +edge(l, k, 1). +path(l, m). +edge(l, m, 6). +path(l, n). +edge(l, n, 8). +path(l, o). +edge(l, o, 20). +node(m). +path(m, a). +edge(m, a, 1). +path(m, b). +edge(m, b, 20). +path(m, c). +edge(m, c, 4). +path(m, d). +edge(m, d, 12). +path(m, e). +edge(m, e, 4). +path(m, f). +edge(m, f, 19). +path(m, g). +edge(m, g, 17). +path(m, h). +edge(m, h, 12). +path(m, i). +edge(m, i, 19). +path(m, j). +edge(m, j, 13). +path(m, k). +edge(m, k, 2). +path(m, l). +edge(m, l, 5). +path(m, n). +edge(m, n, 5). +path(m, o). +edge(m, o, 5). +node(n). +path(n, a). +edge(n, a, 2). +path(n, b). +edge(n, b, 1). +path(n, c). +edge(n, c, 16). +path(n, d). +edge(n, d, 2). +path(n, e). +edge(n, e, 15). +path(n, f). +edge(n, f, 20). +path(n, g). +edge(n, g, 12). +path(n, h). +edge(n, h, 6). +path(n, i). +edge(n, i, 5). +path(n, j). +edge(n, j, 9). +path(n, k). +edge(n, k, 4). +path(n, l). +edge(n, l, 19). +path(n, m). +edge(n, m, 9). +path(n, o). +edge(n, o, 13). +node(o). +path(o, a). +edge(o, a, 12). +path(o, b). +edge(o, b, 9). +path(o, c). +edge(o, c, 20). +path(o, d). +edge(o, d, 9). +path(o, e). +edge(o, e, 2). +path(o, f). +edge(o, f, 6). +path(o, g). +edge(o, g, 17). +path(o, h). +edge(o, h, 12). +path(o, i). +edge(o, i, 11). +path(o, j). +edge(o, j, 19). +path(o, k). +edge(o, k, 20). +path(o, l). +edge(o, l, 6). +path(o, m). +edge(o, m, 3). +path(o, n). +edge(o, n, 12). diff --git a/Assignment2/A/data15.py b/Assignment2/A/data15.py new file mode 100644 index 0000000..126c606 --- /dev/null +++ b/Assignment2/A/data15.py @@ -0,0 +1,17 @@ +[ +[11, 4, 4, 14, 12, 20, 1, 1, 14, 12, 15, 15, 18, 11, 19], +[5, 13, 3, 6, 15, 6, 7, 5, 3, 19, 11, 8, 13, 6, 12], +[3, 4, 10, 2, 3, 1, 1, 2, 11, 2, 9, 10, 14, 20, 19], +[17, 3, 17, 4, 13, 19, 20, 12, 18, 9, 11, 20, 16, 18, 19], +[6, 5, 2, 14, 20, 8, 15, 6, 2, 13, 12, 7, 4, 9, 6], +[6, 6, 14, 6, 9, 20, 14, 13, 19, 12, 1, 1, 1, 17, 11], +[15, 5, 4, 13, 16, 1, 6, 12, 13, 5, 1, 15, 18, 19, 4], +[6, 13, 2, 5, 10, 6, 18, 10, 3, 12, 15, 7, 17, 19, 1], +[15, 11, 12, 18, 9, 20, 19, 9, 8, 4, 5, 19, 8, 5, 14], +[1, 4, 19, 7, 20, 11, 5, 11, 9, 19, 15, 8, 12, 4, 19], +[20, 12, 5, 18, 10, 19, 1, 3, 8, 18, 13, 20, 2, 13, 13], +[5, 12, 9, 2, 10, 3, 10, 18, 10, 18, 1, 16, 6, 8, 20], +[1, 20, 4, 12, 4, 19, 17, 12, 19, 13, 2, 5, 2, 5, 5], +[2, 1, 16, 2, 15, 20, 12, 6, 5, 9, 4, 19, 9, 1, 13], +[12, 9, 20, 9, 2, 6, 17, 12, 11, 19, 20, 6, 3, 12, 18], +] \ No newline at end of file diff --git a/Assignment2/A/data20.P b/Assignment2/A/data20.P new file mode 100644 index 0000000..084d9e0 --- /dev/null +++ b/Assignment2/A/data20.P @@ -0,0 +1,380 @@ +edge(a, b, 8). +edge(a, c, 15). +edge(a, d, 7). +edge(a, e, 11). +edge(a, f, 17). +edge(a, g, 8). +edge(a, h, 3). +edge(a, i, 4). +edge(a, j, 11). +edge(a, k, 9). +edge(a, l, 6). +edge(a, m, 2). +edge(a, n, 7). +edge(a, o, 15). +edge(a, p, 6). +edge(a, q, 16). +edge(a, r, 5). +edge(a, s, 9). +edge(a, t, 14). +edge(b, a, 16). +edge(b, c, 13). +edge(b, d, 16). +edge(b, e, 15). +edge(b, f, 17). +edge(b, g, 12). +edge(b, h, 11). +edge(b, i, 7). +edge(b, j, 8). +edge(b, k, 13). +edge(b, l, 3). +edge(b, m, 7). +edge(b, n, 15). +edge(b, o, 9). +edge(b, p, 8). +edge(b, q, 16). +edge(b, r, 18). +edge(b, s, 7). +edge(b, t, 5). +edge(c, a, 16). +edge(c, b, 4). +edge(c, d, 9). +edge(c, e, 17). +edge(c, f, 11). +edge(c, g, 18). +edge(c, h, 2). +edge(c, i, 16). +edge(c, j, 13). +edge(c, k, 6). +edge(c, l, 5). +edge(c, m, 2). +edge(c, n, 7). +edge(c, o, 18). +edge(c, p, 16). +edge(c, q, 19). +edge(c, r, 14). +edge(c, s, 14). +edge(c, t, 9). +edge(d, a, 9). +edge(d, b, 9). +edge(d, c, 7). +edge(d, e, 16). +edge(d, f, 12). +edge(d, g, 3). +edge(d, h, 5). +edge(d, i, 16). +edge(d, j, 18). +edge(d, k, 10). +edge(d, l, 7). +edge(d, m, 6). +edge(d, n, 12). +edge(d, o, 4). +edge(d, p, 5). +edge(d, q, 14). +edge(d, r, 11). +edge(d, s, 5). +edge(d, t, 5). +edge(e, a, 5). +edge(e, b, 2). +edge(e, c, 16). +edge(e, d, 18). +edge(e, f, 15). +edge(e, g, 8). +edge(e, h, 10). +edge(e, i, 15). +edge(e, j, 18). +edge(e, k, 10). +edge(e, l, 7). +edge(e, m, 2). +edge(e, n, 1). +edge(e, o, 15). +edge(e, p, 17). +edge(e, q, 2). +edge(e, r, 15). +edge(e, s, 9). +edge(e, t, 6). +edge(f, a, 9). +edge(f, b, 7). +edge(f, c, 11). +edge(f, d, 10). +edge(f, e, 12). +edge(f, g, 10). +edge(f, h, 1). +edge(f, i, 5). +edge(f, j, 20). +edge(f, k, 19). +edge(f, l, 12). +edge(f, m, 13). +edge(f, n, 1). +edge(f, o, 19). +edge(f, p, 16). +edge(f, q, 17). +edge(f, r, 20). +edge(f, s, 16). +edge(f, t, 2). +edge(g, a, 15). +edge(g, b, 7). +edge(g, c, 3). +edge(g, d, 15). +edge(g, e, 20). +edge(g, f, 5). +edge(g, h, 4). +edge(g, i, 20). +edge(g, j, 13). +edge(g, k, 5). +edge(g, l, 11). +edge(g, m, 20). +edge(g, n, 16). +edge(g, o, 13). +edge(g, p, 4). +edge(g, q, 7). +edge(g, r, 11). +edge(g, s, 13). +edge(g, t, 17). +edge(h, a, 11). +edge(h, b, 16). +edge(h, c, 19). +edge(h, d, 15). +edge(h, e, 12). +edge(h, f, 12). +edge(h, g, 10). +edge(h, i, 1). +edge(h, j, 15). +edge(h, k, 17). +edge(h, l, 17). +edge(h, m, 18). +edge(h, n, 17). +edge(h, o, 9). +edge(h, p, 12). +edge(h, q, 9). +edge(h, r, 4). +edge(h, s, 17). +edge(h, t, 3). +edge(i, a, 2). +edge(i, b, 5). +edge(i, c, 16). +edge(i, d, 14). +edge(i, e, 5). +edge(i, f, 3). +edge(i, g, 16). +edge(i, h, 7). +edge(i, j, 2). +edge(i, k, 1). +edge(i, l, 3). +edge(i, m, 20). +edge(i, n, 16). +edge(i, o, 14). +edge(i, p, 9). +edge(i, q, 10). +edge(i, r, 18). +edge(i, s, 20). +edge(i, t, 8). +edge(j, a, 9). +edge(j, b, 4). +edge(j, c, 20). +edge(j, d, 2). +edge(j, e, 11). +edge(j, f, 19). +edge(j, g, 5). +edge(j, h, 3). +edge(j, i, 11). +edge(j, k, 13). +edge(j, l, 20). +edge(j, m, 17). +edge(j, n, 5). +edge(j, o, 12). +edge(j, p, 17). +edge(j, q, 17). +edge(j, r, 9). +edge(j, s, 5). +edge(j, t, 4). +edge(k, a, 5). +edge(k, b, 14). +edge(k, c, 7). +edge(k, d, 14). +edge(k, e, 3). +edge(k, f, 13). +edge(k, g, 1). +edge(k, h, 13). +edge(k, i, 17). +edge(k, j, 6). +edge(k, l, 18). +edge(k, m, 16). +edge(k, n, 15). +edge(k, o, 18). +edge(k, p, 19). +edge(k, q, 15). +edge(k, r, 12). +edge(k, s, 9). +edge(k, t, 4). +edge(l, a, 14). +edge(l, b, 2). +edge(l, c, 17). +edge(l, d, 8). +edge(l, e, 11). +edge(l, f, 16). +edge(l, g, 7). +edge(l, h, 12). +edge(l, i, 12). +edge(l, j, 6). +edge(l, k, 13). +edge(l, m, 6). +edge(l, n, 18). +edge(l, o, 3). +edge(l, p, 7). +edge(l, q, 3). +edge(l, r, 1). +edge(l, s, 7). +edge(l, t, 17). +edge(m, a, 8). +edge(m, b, 10). +edge(m, c, 8). +edge(m, d, 13). +edge(m, e, 15). +edge(m, f, 20). +edge(m, g, 2). +edge(m, h, 11). +edge(m, i, 9). +edge(m, j, 1). +edge(m, k, 4). +edge(m, l, 14). +edge(m, n, 19). +edge(m, o, 15). +edge(m, p, 13). +edge(m, q, 18). +edge(m, r, 16). +edge(m, s, 10). +edge(m, t, 2). +edge(n, a, 16). +edge(n, b, 2). +edge(n, c, 14). +edge(n, d, 3). +edge(n, e, 11). +edge(n, f, 17). +edge(n, g, 7). +edge(n, h, 6). +edge(n, i, 4). +edge(n, j, 2). +edge(n, k, 3). +edge(n, l, 8). +edge(n, m, 20). +edge(n, o, 7). +edge(n, p, 12). +edge(n, q, 1). +edge(n, r, 4). +edge(n, s, 20). +edge(n, t, 10). +edge(o, a, 5). +edge(o, b, 19). +edge(o, c, 10). +edge(o, d, 18). +edge(o, e, 6). +edge(o, f, 18). +edge(o, g, 2). +edge(o, h, 11). +edge(o, i, 6). +edge(o, j, 18). +edge(o, k, 11). +edge(o, l, 18). +edge(o, m, 13). +edge(o, n, 7). +edge(o, p, 15). +edge(o, q, 3). +edge(o, r, 10). +edge(o, s, 20). +edge(o, t, 7). +edge(p, a, 16). +edge(p, b, 19). +edge(p, c, 12). +edge(p, d, 19). +edge(p, e, 15). +edge(p, f, 12). +edge(p, g, 14). +edge(p, h, 8). +edge(p, i, 7). +edge(p, j, 11). +edge(p, k, 4). +edge(p, l, 13). +edge(p, m, 19). +edge(p, n, 12). +edge(p, o, 14). +edge(p, q, 3). +edge(p, r, 7). +edge(p, s, 8). +edge(p, t, 20). +edge(q, a, 4). +edge(q, b, 4). +edge(q, c, 15). +edge(q, d, 5). +edge(q, e, 16). +edge(q, f, 14). +edge(q, g, 18). +edge(q, h, 11). +edge(q, i, 18). +edge(q, j, 20). +edge(q, k, 19). +edge(q, l, 18). +edge(q, m, 18). +edge(q, n, 4). +edge(q, o, 3). +edge(q, p, 20). +edge(q, r, 18). +edge(q, s, 18). +edge(q, t, 1). +edge(r, a, 19). +edge(r, b, 6). +edge(r, c, 2). +edge(r, d, 15). +edge(r, e, 20). +edge(r, f, 3). +edge(r, g, 13). +edge(r, h, 7). +edge(r, i, 10). +edge(r, j, 17). +edge(r, k, 12). +edge(r, l, 11). +edge(r, m, 10). +edge(r, n, 19). +edge(r, o, 6). +edge(r, p, 2). +edge(r, q, 2). +edge(r, s, 15). +edge(r, t, 1). +edge(s, a, 16). +edge(s, b, 16). +edge(s, c, 3). +edge(s, d, 7). +edge(s, e, 6). +edge(s, f, 12). +edge(s, g, 6). +edge(s, h, 3). +edge(s, i, 2). +edge(s, j, 1). +edge(s, k, 11). +edge(s, l, 8). +edge(s, m, 13). +edge(s, n, 16). +edge(s, o, 14). +edge(s, p, 5). +edge(s, q, 20). +edge(s, r, 20). +edge(s, t, 3). +edge(t, a, 3). +edge(t, b, 14). +edge(t, c, 13). +edge(t, d, 20). +edge(t, e, 20). +edge(t, f, 2). +edge(t, g, 7). +edge(t, h, 14). +edge(t, i, 2). +edge(t, j, 6). +edge(t, k, 2). +edge(t, l, 19). +edge(t, m, 20). +edge(t, n, 20). +edge(t, o, 14). +edge(t, p, 7). +edge(t, q, 7). +edge(t, r, 5). +edge(t, s, 15). diff --git a/Assignment2/A/data20.dat b/Assignment2/A/data20.dat new file mode 100644 index 0000000..30dce30 --- /dev/null +++ b/Assignment2/A/data20.dat @@ -0,0 +1,400 @@ +let dist[1][1] := 8; +let dist[1][2] := 8; +let dist[1][3] := 15; +let dist[1][4] := 7; +let dist[1][5] := 11; +let dist[1][6] := 17; +let dist[1][7] := 8; +let dist[1][8] := 3; +let dist[1][9] := 4; +let dist[1][10] := 11; +let dist[1][11] := 9; +let dist[1][12] := 6; +let dist[1][13] := 2; +let dist[1][14] := 7; +let dist[1][15] := 15; +let dist[1][16] := 6; +let dist[1][17] := 16; +let dist[1][18] := 5; +let dist[1][19] := 9; +let dist[1][20] := 14; +let dist[2][1] := 16; +let dist[2][2] := 17; +let dist[2][3] := 13; +let dist[2][4] := 16; +let dist[2][5] := 15; +let dist[2][6] := 17; +let dist[2][7] := 12; +let dist[2][8] := 11; +let dist[2][9] := 7; +let dist[2][10] := 8; +let dist[2][11] := 13; +let dist[2][12] := 3; +let dist[2][13] := 7; +let dist[2][14] := 15; +let dist[2][15] := 9; +let dist[2][16] := 8; +let dist[2][17] := 16; +let dist[2][18] := 18; +let dist[2][19] := 7; +let dist[2][20] := 5; +let dist[3][1] := 16; +let dist[3][2] := 4; +let dist[3][3] := 1; +let dist[3][4] := 9; +let dist[3][5] := 17; +let dist[3][6] := 11; +let dist[3][7] := 18; +let dist[3][8] := 2; +let dist[3][9] := 16; +let dist[3][10] := 13; +let dist[3][11] := 6; +let dist[3][12] := 5; +let dist[3][13] := 2; +let dist[3][14] := 7; +let dist[3][15] := 18; +let dist[3][16] := 16; +let dist[3][17] := 19; +let dist[3][18] := 14; +let dist[3][19] := 14; +let dist[3][20] := 9; +let dist[4][1] := 9; +let dist[4][2] := 9; +let dist[4][3] := 7; +let dist[4][4] := 12; +let dist[4][5] := 16; +let dist[4][6] := 12; +let dist[4][7] := 3; +let dist[4][8] := 5; +let dist[4][9] := 16; +let dist[4][10] := 18; +let dist[4][11] := 10; +let dist[4][12] := 7; +let dist[4][13] := 6; +let dist[4][14] := 12; +let dist[4][15] := 4; +let dist[4][16] := 5; +let dist[4][17] := 14; +let dist[4][18] := 11; +let dist[4][19] := 5; +let dist[4][20] := 5; +let dist[5][1] := 5; +let dist[5][2] := 2; +let dist[5][3] := 16; +let dist[5][4] := 18; +let dist[5][5] := 15; +let dist[5][6] := 15; +let dist[5][7] := 8; +let dist[5][8] := 10; +let dist[5][9] := 15; +let dist[5][10] := 18; +let dist[5][11] := 10; +let dist[5][12] := 7; +let dist[5][13] := 2; +let dist[5][14] := 1; +let dist[5][15] := 15; +let dist[5][16] := 17; +let dist[5][17] := 2; +let dist[5][18] := 15; +let dist[5][19] := 9; +let dist[5][20] := 6; +let dist[6][1] := 9; +let dist[6][2] := 7; +let dist[6][3] := 11; +let dist[6][4] := 10; +let dist[6][5] := 12; +let dist[6][6] := 6; +let dist[6][7] := 10; +let dist[6][8] := 1; +let dist[6][9] := 5; +let dist[6][10] := 20; +let dist[6][11] := 19; +let dist[6][12] := 12; +let dist[6][13] := 13; +let dist[6][14] := 1; +let dist[6][15] := 19; +let dist[6][16] := 16; +let dist[6][17] := 17; +let dist[6][18] := 20; +let dist[6][19] := 16; +let dist[6][20] := 2; +let dist[7][1] := 15; +let dist[7][2] := 7; +let dist[7][3] := 3; +let dist[7][4] := 15; +let dist[7][5] := 20; +let dist[7][6] := 5; +let dist[7][7] := 10; +let dist[7][8] := 4; +let dist[7][9] := 20; +let dist[7][10] := 13; +let dist[7][11] := 5; +let dist[7][12] := 11; +let dist[7][13] := 20; +let dist[7][14] := 16; +let dist[7][15] := 13; +let dist[7][16] := 4; +let dist[7][17] := 7; +let dist[7][18] := 11; +let dist[7][19] := 13; +let dist[7][20] := 17; +let dist[8][1] := 11; +let dist[8][2] := 16; +let dist[8][3] := 19; +let dist[8][4] := 15; +let dist[8][5] := 12; +let dist[8][6] := 12; +let dist[8][7] := 10; +let dist[8][8] := 9; +let dist[8][9] := 1; +let dist[8][10] := 15; +let dist[8][11] := 17; +let dist[8][12] := 17; +let dist[8][13] := 18; +let dist[8][14] := 17; +let dist[8][15] := 9; +let dist[8][16] := 12; +let dist[8][17] := 9; +let dist[8][18] := 4; +let dist[8][19] := 17; +let dist[8][20] := 3; +let dist[9][1] := 2; +let dist[9][2] := 5; +let dist[9][3] := 16; +let dist[9][4] := 14; +let dist[9][5] := 5; +let dist[9][6] := 3; +let dist[9][7] := 16; +let dist[9][8] := 7; +let dist[9][9] := 3; +let dist[9][10] := 2; +let dist[9][11] := 1; +let dist[9][12] := 3; +let dist[9][13] := 20; +let dist[9][14] := 16; +let dist[9][15] := 14; +let dist[9][16] := 9; +let dist[9][17] := 10; +let dist[9][18] := 18; +let dist[9][19] := 20; +let dist[9][20] := 8; +let dist[10][1] := 9; +let dist[10][2] := 4; +let dist[10][3] := 20; +let dist[10][4] := 2; +let dist[10][5] := 11; +let dist[10][6] := 19; +let dist[10][7] := 5; +let dist[10][8] := 3; +let dist[10][9] := 11; +let dist[10][10] := 2; +let dist[10][11] := 13; +let dist[10][12] := 20; +let dist[10][13] := 17; +let dist[10][14] := 5; +let dist[10][15] := 12; +let dist[10][16] := 17; +let dist[10][17] := 17; +let dist[10][18] := 9; +let dist[10][19] := 5; +let dist[10][20] := 4; +let dist[11][1] := 5; +let dist[11][2] := 14; +let dist[11][3] := 7; +let dist[11][4] := 14; +let dist[11][5] := 3; +let dist[11][6] := 13; +let dist[11][7] := 1; +let dist[11][8] := 13; +let dist[11][9] := 17; +let dist[11][10] := 6; +let dist[11][11] := 18; +let dist[11][12] := 18; +let dist[11][13] := 16; +let dist[11][14] := 15; +let dist[11][15] := 18; +let dist[11][16] := 19; +let dist[11][17] := 15; +let dist[11][18] := 12; +let dist[11][19] := 9; +let dist[11][20] := 4; +let dist[12][1] := 14; +let dist[12][2] := 2; +let dist[12][3] := 17; +let dist[12][4] := 8; +let dist[12][5] := 11; +let dist[12][6] := 16; +let dist[12][7] := 7; +let dist[12][8] := 12; +let dist[12][9] := 12; +let dist[12][10] := 6; +let dist[12][11] := 13; +let dist[12][12] := 12; +let dist[12][13] := 6; +let dist[12][14] := 18; +let dist[12][15] := 3; +let dist[12][16] := 7; +let dist[12][17] := 3; +let dist[12][18] := 1; +let dist[12][19] := 7; +let dist[12][20] := 17; +let dist[13][1] := 8; +let dist[13][2] := 10; +let dist[13][3] := 8; +let dist[13][4] := 13; +let dist[13][5] := 15; +let dist[13][6] := 20; +let dist[13][7] := 2; +let dist[13][8] := 11; +let dist[13][9] := 9; +let dist[13][10] := 1; +let dist[13][11] := 4; +let dist[13][12] := 14; +let dist[13][13] := 1; +let dist[13][14] := 19; +let dist[13][15] := 15; +let dist[13][16] := 13; +let dist[13][17] := 18; +let dist[13][18] := 16; +let dist[13][19] := 10; +let dist[13][20] := 2; +let dist[14][1] := 16; +let dist[14][2] := 2; +let dist[14][3] := 14; +let dist[14][4] := 3; +let dist[14][5] := 11; +let dist[14][6] := 17; +let dist[14][7] := 7; +let dist[14][8] := 6; +let dist[14][9] := 4; +let dist[14][10] := 2; +let dist[14][11] := 3; +let dist[14][12] := 8; +let dist[14][13] := 20; +let dist[14][14] := 8; +let dist[14][15] := 7; +let dist[14][16] := 12; +let dist[14][17] := 1; +let dist[14][18] := 4; +let dist[14][19] := 20; +let dist[14][20] := 10; +let dist[15][1] := 5; +let dist[15][2] := 19; +let dist[15][3] := 10; +let dist[15][4] := 18; +let dist[15][5] := 6; +let dist[15][6] := 18; +let dist[15][7] := 2; +let dist[15][8] := 11; +let dist[15][9] := 6; +let dist[15][10] := 18; +let dist[15][11] := 11; +let dist[15][12] := 18; +let dist[15][13] := 13; +let dist[15][14] := 7; +let dist[15][15] := 18; +let dist[15][16] := 15; +let dist[15][17] := 3; +let dist[15][18] := 10; +let dist[15][19] := 20; +let dist[15][20] := 7; +let dist[16][1] := 16; +let dist[16][2] := 19; +let dist[16][3] := 12; +let dist[16][4] := 19; +let dist[16][5] := 15; +let dist[16][6] := 12; +let dist[16][7] := 14; +let dist[16][8] := 8; +let dist[16][9] := 7; +let dist[16][10] := 11; +let dist[16][11] := 4; +let dist[16][12] := 13; +let dist[16][13] := 19; +let dist[16][14] := 12; +let dist[16][15] := 14; +let dist[16][16] := 13; +let dist[16][17] := 3; +let dist[16][18] := 7; +let dist[16][19] := 8; +let dist[16][20] := 20; +let dist[17][1] := 4; +let dist[17][2] := 4; +let dist[17][3] := 15; +let dist[17][4] := 5; +let dist[17][5] := 16; +let dist[17][6] := 14; +let dist[17][7] := 18; +let dist[17][8] := 11; +let dist[17][9] := 18; +let dist[17][10] := 20; +let dist[17][11] := 19; +let dist[17][12] := 18; +let dist[17][13] := 18; +let dist[17][14] := 4; +let dist[17][15] := 3; +let dist[17][16] := 20; +let dist[17][17] := 5; +let dist[17][18] := 18; +let dist[17][19] := 18; +let dist[17][20] := 1; +let dist[18][1] := 19; +let dist[18][2] := 6; +let dist[18][3] := 2; +let dist[18][4] := 15; +let dist[18][5] := 20; +let dist[18][6] := 3; +let dist[18][7] := 13; +let dist[18][8] := 7; +let dist[18][9] := 10; +let dist[18][10] := 17; +let dist[18][11] := 12; +let dist[18][12] := 11; +let dist[18][13] := 10; +let dist[18][14] := 19; +let dist[18][15] := 6; +let dist[18][16] := 2; +let dist[18][17] := 2; +let dist[18][18] := 19; +let dist[18][19] := 15; +let dist[18][20] := 1; +let dist[19][1] := 16; +let dist[19][2] := 16; +let dist[19][3] := 3; +let dist[19][4] := 7; +let dist[19][5] := 6; +let dist[19][6] := 12; +let dist[19][7] := 6; +let dist[19][8] := 3; +let dist[19][9] := 2; +let dist[19][10] := 1; +let dist[19][11] := 11; +let dist[19][12] := 8; +let dist[19][13] := 13; +let dist[19][14] := 16; +let dist[19][15] := 14; +let dist[19][16] := 5; +let dist[19][17] := 20; +let dist[19][18] := 20; +let dist[19][19] := 10; +let dist[19][20] := 3; +let dist[20][1] := 3; +let dist[20][2] := 14; +let dist[20][3] := 13; +let dist[20][4] := 20; +let dist[20][5] := 20; +let dist[20][6] := 2; +let dist[20][7] := 7; +let dist[20][8] := 14; +let dist[20][9] := 2; +let dist[20][10] := 6; +let dist[20][11] := 2; +let dist[20][12] := 19; +let dist[20][13] := 20; +let dist[20][14] := 20; +let dist[20][15] := 14; +let dist[20][16] := 7; +let dist[20][17] := 7; +let dist[20][18] := 5; +let dist[20][19] := 15; +let dist[20][20] := 18; diff --git a/Assignment2/A/data20.lp b/Assignment2/A/data20.lp new file mode 100644 index 0000000..11a2c9b --- /dev/null +++ b/Assignment2/A/data20.lp @@ -0,0 +1,780 @@ +node(a). +path(a, b). +edge(a, b, 8). +path(a, c). +edge(a, c, 15). +path(a, d). +edge(a, d, 7). +path(a, e). +edge(a, e, 11). +path(a, f). +edge(a, f, 17). +path(a, g). +edge(a, g, 8). +path(a, h). +edge(a, h, 3). +path(a, i). +edge(a, i, 4). +path(a, j). +edge(a, j, 11). +path(a, k). +edge(a, k, 9). +path(a, l). +edge(a, l, 6). +path(a, m). +edge(a, m, 2). +path(a, n). +edge(a, n, 7). +path(a, o). +edge(a, o, 15). +path(a, p). +edge(a, p, 6). +path(a, q). +edge(a, q, 16). +path(a, r). +edge(a, r, 5). +path(a, s). +edge(a, s, 9). +path(a, t). +edge(a, t, 14). +node(b). +path(b, a). +edge(b, a, 16). +path(b, c). +edge(b, c, 13). +path(b, d). +edge(b, d, 16). +path(b, e). +edge(b, e, 15). +path(b, f). +edge(b, f, 17). +path(b, g). +edge(b, g, 12). +path(b, h). +edge(b, h, 11). +path(b, i). +edge(b, i, 7). +path(b, j). +edge(b, j, 8). +path(b, k). +edge(b, k, 13). +path(b, l). +edge(b, l, 3). +path(b, m). +edge(b, m, 7). +path(b, n). +edge(b, n, 15). +path(b, o). +edge(b, o, 9). +path(b, p). +edge(b, p, 8). +path(b, q). +edge(b, q, 16). +path(b, r). +edge(b, r, 18). +path(b, s). +edge(b, s, 7). +path(b, t). +edge(b, t, 5). +node(c). +path(c, a). +edge(c, a, 16). +path(c, b). +edge(c, b, 4). +path(c, d). +edge(c, d, 9). +path(c, e). +edge(c, e, 17). +path(c, f). +edge(c, f, 11). +path(c, g). +edge(c, g, 18). +path(c, h). +edge(c, h, 2). +path(c, i). +edge(c, i, 16). +path(c, j). +edge(c, j, 13). +path(c, k). +edge(c, k, 6). +path(c, l). +edge(c, l, 5). +path(c, m). +edge(c, m, 2). +path(c, n). +edge(c, n, 7). +path(c, o). +edge(c, o, 18). +path(c, p). +edge(c, p, 16). +path(c, q). +edge(c, q, 19). +path(c, r). +edge(c, r, 14). +path(c, s). +edge(c, s, 14). +path(c, t). +edge(c, t, 9). +node(d). +path(d, a). +edge(d, a, 9). +path(d, b). +edge(d, b, 9). +path(d, c). +edge(d, c, 7). +path(d, e). +edge(d, e, 16). +path(d, f). +edge(d, f, 12). +path(d, g). +edge(d, g, 3). +path(d, h). +edge(d, h, 5). +path(d, i). +edge(d, i, 16). +path(d, j). +edge(d, j, 18). +path(d, k). +edge(d, k, 10). +path(d, l). +edge(d, l, 7). +path(d, m). +edge(d, m, 6). +path(d, n). +edge(d, n, 12). +path(d, o). +edge(d, o, 4). +path(d, p). +edge(d, p, 5). +path(d, q). +edge(d, q, 14). +path(d, r). +edge(d, r, 11). +path(d, s). +edge(d, s, 5). +path(d, t). +edge(d, t, 5). +node(e). +path(e, a). +edge(e, a, 5). +path(e, b). +edge(e, b, 2). +path(e, c). +edge(e, c, 16). +path(e, d). +edge(e, d, 18). +path(e, f). +edge(e, f, 15). +path(e, g). +edge(e, g, 8). +path(e, h). +edge(e, h, 10). +path(e, i). +edge(e, i, 15). +path(e, j). +edge(e, j, 18). +path(e, k). +edge(e, k, 10). +path(e, l). +edge(e, l, 7). +path(e, m). +edge(e, m, 2). +path(e, n). +edge(e, n, 1). +path(e, o). +edge(e, o, 15). +path(e, p). +edge(e, p, 17). +path(e, q). +edge(e, q, 2). +path(e, r). +edge(e, r, 15). +path(e, s). +edge(e, s, 9). +path(e, t). +edge(e, t, 6). +node(f). +path(f, a). +edge(f, a, 9). +path(f, b). +edge(f, b, 7). +path(f, c). +edge(f, c, 11). +path(f, d). +edge(f, d, 10). +path(f, e). +edge(f, e, 12). +path(f, g). +edge(f, g, 10). +path(f, h). +edge(f, h, 1). +path(f, i). +edge(f, i, 5). +path(f, j). +edge(f, j, 20). +path(f, k). +edge(f, k, 19). +path(f, l). +edge(f, l, 12). +path(f, m). +edge(f, m, 13). +path(f, n). +edge(f, n, 1). +path(f, o). +edge(f, o, 19). +path(f, p). +edge(f, p, 16). +path(f, q). +edge(f, q, 17). +path(f, r). +edge(f, r, 20). +path(f, s). +edge(f, s, 16). +path(f, t). +edge(f, t, 2). +node(g). +path(g, a). +edge(g, a, 15). +path(g, b). +edge(g, b, 7). +path(g, c). +edge(g, c, 3). +path(g, d). +edge(g, d, 15). +path(g, e). +edge(g, e, 20). +path(g, f). +edge(g, f, 5). +path(g, h). +edge(g, h, 4). +path(g, i). +edge(g, i, 20). +path(g, j). +edge(g, j, 13). +path(g, k). +edge(g, k, 5). +path(g, l). +edge(g, l, 11). +path(g, m). +edge(g, m, 20). +path(g, n). +edge(g, n, 16). +path(g, o). +edge(g, o, 13). +path(g, p). +edge(g, p, 4). +path(g, q). +edge(g, q, 7). +path(g, r). +edge(g, r, 11). +path(g, s). +edge(g, s, 13). +path(g, t). +edge(g, t, 17). +node(h). +path(h, a). +edge(h, a, 11). +path(h, b). +edge(h, b, 16). +path(h, c). +edge(h, c, 19). +path(h, d). +edge(h, d, 15). +path(h, e). +edge(h, e, 12). +path(h, f). +edge(h, f, 12). +path(h, g). +edge(h, g, 10). +path(h, i). +edge(h, i, 1). +path(h, j). +edge(h, j, 15). +path(h, k). +edge(h, k, 17). +path(h, l). +edge(h, l, 17). +path(h, m). +edge(h, m, 18). +path(h, n). +edge(h, n, 17). +path(h, o). +edge(h, o, 9). +path(h, p). +edge(h, p, 12). +path(h, q). +edge(h, q, 9). +path(h, r). +edge(h, r, 4). +path(h, s). +edge(h, s, 17). +path(h, t). +edge(h, t, 3). +node(i). +path(i, a). +edge(i, a, 2). +path(i, b). +edge(i, b, 5). +path(i, c). +edge(i, c, 16). +path(i, d). +edge(i, d, 14). +path(i, e). +edge(i, e, 5). +path(i, f). +edge(i, f, 3). +path(i, g). +edge(i, g, 16). +path(i, h). +edge(i, h, 7). +path(i, j). +edge(i, j, 2). +path(i, k). +edge(i, k, 1). +path(i, l). +edge(i, l, 3). +path(i, m). +edge(i, m, 20). +path(i, n). +edge(i, n, 16). +path(i, o). +edge(i, o, 14). +path(i, p). +edge(i, p, 9). +path(i, q). +edge(i, q, 10). +path(i, r). +edge(i, r, 18). +path(i, s). +edge(i, s, 20). +path(i, t). +edge(i, t, 8). +node(j). +path(j, a). +edge(j, a, 9). +path(j, b). +edge(j, b, 4). +path(j, c). +edge(j, c, 20). +path(j, d). +edge(j, d, 2). +path(j, e). +edge(j, e, 11). +path(j, f). +edge(j, f, 19). +path(j, g). +edge(j, g, 5). +path(j, h). +edge(j, h, 3). +path(j, i). +edge(j, i, 11). +path(j, k). +edge(j, k, 13). +path(j, l). +edge(j, l, 20). +path(j, m). +edge(j, m, 17). +path(j, n). +edge(j, n, 5). +path(j, o). +edge(j, o, 12). +path(j, p). +edge(j, p, 17). +path(j, q). +edge(j, q, 17). +path(j, r). +edge(j, r, 9). +path(j, s). +edge(j, s, 5). +path(j, t). +edge(j, t, 4). +node(k). +path(k, a). +edge(k, a, 5). +path(k, b). +edge(k, b, 14). +path(k, c). +edge(k, c, 7). +path(k, d). +edge(k, d, 14). +path(k, e). +edge(k, e, 3). +path(k, f). +edge(k, f, 13). +path(k, g). +edge(k, g, 1). +path(k, h). +edge(k, h, 13). +path(k, i). +edge(k, i, 17). +path(k, j). +edge(k, j, 6). +path(k, l). +edge(k, l, 18). +path(k, m). +edge(k, m, 16). +path(k, n). +edge(k, n, 15). +path(k, o). +edge(k, o, 18). +path(k, p). +edge(k, p, 19). +path(k, q). +edge(k, q, 15). +path(k, r). +edge(k, r, 12). +path(k, s). +edge(k, s, 9). +path(k, t). +edge(k, t, 4). +node(l). +path(l, a). +edge(l, a, 14). +path(l, b). +edge(l, b, 2). +path(l, c). +edge(l, c, 17). +path(l, d). +edge(l, d, 8). +path(l, e). +edge(l, e, 11). +path(l, f). +edge(l, f, 16). +path(l, g). +edge(l, g, 7). +path(l, h). +edge(l, h, 12). +path(l, i). +edge(l, i, 12). +path(l, j). +edge(l, j, 6). +path(l, k). +edge(l, k, 13). +path(l, m). +edge(l, m, 6). +path(l, n). +edge(l, n, 18). +path(l, o). +edge(l, o, 3). +path(l, p). +edge(l, p, 7). +path(l, q). +edge(l, q, 3). +path(l, r). +edge(l, r, 1). +path(l, s). +edge(l, s, 7). +path(l, t). +edge(l, t, 17). +node(m). +path(m, a). +edge(m, a, 8). +path(m, b). +edge(m, b, 10). +path(m, c). +edge(m, c, 8). +path(m, d). +edge(m, d, 13). +path(m, e). +edge(m, e, 15). +path(m, f). +edge(m, f, 20). +path(m, g). +edge(m, g, 2). +path(m, h). +edge(m, h, 11). +path(m, i). +edge(m, i, 9). +path(m, j). +edge(m, j, 1). +path(m, k). +edge(m, k, 4). +path(m, l). +edge(m, l, 14). +path(m, n). +edge(m, n, 19). +path(m, o). +edge(m, o, 15). +path(m, p). +edge(m, p, 13). +path(m, q). +edge(m, q, 18). +path(m, r). +edge(m, r, 16). +path(m, s). +edge(m, s, 10). +path(m, t). +edge(m, t, 2). +node(n). +path(n, a). +edge(n, a, 16). +path(n, b). +edge(n, b, 2). +path(n, c). +edge(n, c, 14). +path(n, d). +edge(n, d, 3). +path(n, e). +edge(n, e, 11). +path(n, f). +edge(n, f, 17). +path(n, g). +edge(n, g, 7). +path(n, h). +edge(n, h, 6). +path(n, i). +edge(n, i, 4). +path(n, j). +edge(n, j, 2). +path(n, k). +edge(n, k, 3). +path(n, l). +edge(n, l, 8). +path(n, m). +edge(n, m, 20). +path(n, o). +edge(n, o, 7). +path(n, p). +edge(n, p, 12). +path(n, q). +edge(n, q, 1). +path(n, r). +edge(n, r, 4). +path(n, s). +edge(n, s, 20). +path(n, t). +edge(n, t, 10). +node(o). +path(o, a). +edge(o, a, 5). +path(o, b). +edge(o, b, 19). +path(o, c). +edge(o, c, 10). +path(o, d). +edge(o, d, 18). +path(o, e). +edge(o, e, 6). +path(o, f). +edge(o, f, 18). +path(o, g). +edge(o, g, 2). +path(o, h). +edge(o, h, 11). +path(o, i). +edge(o, i, 6). +path(o, j). +edge(o, j, 18). +path(o, k). +edge(o, k, 11). +path(o, l). +edge(o, l, 18). +path(o, m). +edge(o, m, 13). +path(o, n). +edge(o, n, 7). +path(o, p). +edge(o, p, 15). +path(o, q). +edge(o, q, 3). +path(o, r). +edge(o, r, 10). +path(o, s). +edge(o, s, 20). +path(o, t). +edge(o, t, 7). +node(p). +path(p, a). +edge(p, a, 16). +path(p, b). +edge(p, b, 19). +path(p, c). +edge(p, c, 12). +path(p, d). +edge(p, d, 19). +path(p, e). +edge(p, e, 15). +path(p, f). +edge(p, f, 12). +path(p, g). +edge(p, g, 14). +path(p, h). +edge(p, h, 8). +path(p, i). +edge(p, i, 7). +path(p, j). +edge(p, j, 11). +path(p, k). +edge(p, k, 4). +path(p, l). +edge(p, l, 13). +path(p, m). +edge(p, m, 19). +path(p, n). +edge(p, n, 12). +path(p, o). +edge(p, o, 14). +path(p, q). +edge(p, q, 3). +path(p, r). +edge(p, r, 7). +path(p, s). +edge(p, s, 8). +path(p, t). +edge(p, t, 20). +node(q). +path(q, a). +edge(q, a, 4). +path(q, b). +edge(q, b, 4). +path(q, c). +edge(q, c, 15). +path(q, d). +edge(q, d, 5). +path(q, e). +edge(q, e, 16). +path(q, f). +edge(q, f, 14). +path(q, g). +edge(q, g, 18). +path(q, h). +edge(q, h, 11). +path(q, i). +edge(q, i, 18). +path(q, j). +edge(q, j, 20). +path(q, k). +edge(q, k, 19). +path(q, l). +edge(q, l, 18). +path(q, m). +edge(q, m, 18). +path(q, n). +edge(q, n, 4). +path(q, o). +edge(q, o, 3). +path(q, p). +edge(q, p, 20). +path(q, r). +edge(q, r, 18). +path(q, s). +edge(q, s, 18). +path(q, t). +edge(q, t, 1). +node(r). +path(r, a). +edge(r, a, 19). +path(r, b). +edge(r, b, 6). +path(r, c). +edge(r, c, 2). +path(r, d). +edge(r, d, 15). +path(r, e). +edge(r, e, 20). +path(r, f). +edge(r, f, 3). +path(r, g). +edge(r, g, 13). +path(r, h). +edge(r, h, 7). +path(r, i). +edge(r, i, 10). +path(r, j). +edge(r, j, 17). +path(r, k). +edge(r, k, 12). +path(r, l). +edge(r, l, 11). +path(r, m). +edge(r, m, 10). +path(r, n). +edge(r, n, 19). +path(r, o). +edge(r, o, 6). +path(r, p). +edge(r, p, 2). +path(r, q). +edge(r, q, 2). +path(r, s). +edge(r, s, 15). +path(r, t). +edge(r, t, 1). +node(s). +path(s, a). +edge(s, a, 16). +path(s, b). +edge(s, b, 16). +path(s, c). +edge(s, c, 3). +path(s, d). +edge(s, d, 7). +path(s, e). +edge(s, e, 6). +path(s, f). +edge(s, f, 12). +path(s, g). +edge(s, g, 6). +path(s, h). +edge(s, h, 3). +path(s, i). +edge(s, i, 2). +path(s, j). +edge(s, j, 1). +path(s, k). +edge(s, k, 11). +path(s, l). +edge(s, l, 8). +path(s, m). +edge(s, m, 13). +path(s, n). +edge(s, n, 16). +path(s, o). +edge(s, o, 14). +path(s, p). +edge(s, p, 5). +path(s, q). +edge(s, q, 20). +path(s, r). +edge(s, r, 20). +path(s, t). +edge(s, t, 3). +node(t). +path(t, a). +edge(t, a, 3). +path(t, b). +edge(t, b, 14). +path(t, c). +edge(t, c, 13). +path(t, d). +edge(t, d, 20). +path(t, e). +edge(t, e, 20). +path(t, f). +edge(t, f, 2). +path(t, g). +edge(t, g, 7). +path(t, h). +edge(t, h, 14). +path(t, i). +edge(t, i, 2). +path(t, j). +edge(t, j, 6). +path(t, k). +edge(t, k, 2). +path(t, l). +edge(t, l, 19). +path(t, m). +edge(t, m, 20). +path(t, n). +edge(t, n, 20). +path(t, o). +edge(t, o, 14). +path(t, p). +edge(t, p, 7). +path(t, q). +edge(t, q, 7). +path(t, r). +edge(t, r, 5). +path(t, s). +edge(t, s, 15). diff --git a/Assignment2/A/data20.py b/Assignment2/A/data20.py new file mode 100644 index 0000000..e3abd9d --- /dev/null +++ b/Assignment2/A/data20.py @@ -0,0 +1,22 @@ +[ +[8, 8, 15, 7, 11, 17, 8, 3, 4, 11, 9, 6, 2, 7, 15, 6, 16, 5, 9, 14], +[16, 17, 13, 16, 15, 17, 12, 11, 7, 8, 13, 3, 7, 15, 9, 8, 16, 18, 7, 5], +[16, 4, 1, 9, 17, 11, 18, 2, 16, 13, 6, 5, 2, 7, 18, 16, 19, 14, 14, 9], +[9, 9, 7, 12, 16, 12, 3, 5, 16, 18, 10, 7, 6, 12, 4, 5, 14, 11, 5, 5], +[5, 2, 16, 18, 15, 15, 8, 10, 15, 18, 10, 7, 2, 1, 15, 17, 2, 15, 9, 6], +[9, 7, 11, 10, 12, 6, 10, 1, 5, 20, 19, 12, 13, 1, 19, 16, 17, 20, 16, 2], +[15, 7, 3, 15, 20, 5, 10, 4, 20, 13, 5, 11, 20, 16, 13, 4, 7, 11, 13, 17], +[11, 16, 19, 15, 12, 12, 10, 9, 1, 15, 17, 17, 18, 17, 9, 12, 9, 4, 17, 3], +[2, 5, 16, 14, 5, 3, 16, 7, 3, 2, 1, 3, 20, 16, 14, 9, 10, 18, 20, 8], +[9, 4, 20, 2, 11, 19, 5, 3, 11, 2, 13, 20, 17, 5, 12, 17, 17, 9, 5, 4], +[5, 14, 7, 14, 3, 13, 1, 13, 17, 6, 18, 18, 16, 15, 18, 19, 15, 12, 9, 4], +[14, 2, 17, 8, 11, 16, 7, 12, 12, 6, 13, 12, 6, 18, 3, 7, 3, 1, 7, 17], +[8, 10, 8, 13, 15, 20, 2, 11, 9, 1, 4, 14, 1, 19, 15, 13, 18, 16, 10, 2], +[16, 2, 14, 3, 11, 17, 7, 6, 4, 2, 3, 8, 20, 8, 7, 12, 1, 4, 20, 10], +[5, 19, 10, 18, 6, 18, 2, 11, 6, 18, 11, 18, 13, 7, 18, 15, 3, 10, 20, 7], +[16, 19, 12, 19, 15, 12, 14, 8, 7, 11, 4, 13, 19, 12, 14, 13, 3, 7, 8, 20], +[4, 4, 15, 5, 16, 14, 18, 11, 18, 20, 19, 18, 18, 4, 3, 20, 5, 18, 18, 1], +[19, 6, 2, 15, 20, 3, 13, 7, 10, 17, 12, 11, 10, 19, 6, 2, 2, 19, 15, 1], +[16, 16, 3, 7, 6, 12, 6, 3, 2, 1, 11, 8, 13, 16, 14, 5, 20, 20, 10, 3], +[3, 14, 13, 20, 20, 2, 7, 14, 2, 6, 2, 19, 20, 20, 14, 7, 7, 5, 15, 18], +] \ No newline at end of file diff --git a/Assignment2/A/data5.P b/Assignment2/A/data5.P new file mode 100644 index 0000000..de1a6f1 --- /dev/null +++ b/Assignment2/A/data5.P @@ -0,0 +1,20 @@ +edge(a, b, 10). +edge(a, c, 15). +edge(a, d, 2). +edge(a, e, 6). +edge(b, a, 12). +edge(b, c, 17). +edge(b, d, 5). +edge(b, e, 3). +edge(c, a, 9). +edge(c, b, 5). +edge(c, d, 16). +edge(c, e, 7). +edge(d, a, 7). +edge(d, b, 18). +edge(d, c, 19). +edge(d, e, 5). +edge(e, a, 17). +edge(e, b, 7). +edge(e, c, 15). +edge(e, d, 15). diff --git a/Assignment2/A/data5.dat b/Assignment2/A/data5.dat new file mode 100644 index 0000000..c39e338 --- /dev/null +++ b/Assignment2/A/data5.dat @@ -0,0 +1,25 @@ +let dist[1][1] := 5; +let dist[1][2] := 10; +let dist[1][3] := 15; +let dist[1][4] := 2; +let dist[1][5] := 6; +let dist[2][1] := 12; +let dist[2][2] := 2; +let dist[2][3] := 17; +let dist[2][4] := 5; +let dist[2][5] := 3; +let dist[3][1] := 9; +let dist[3][2] := 5; +let dist[3][3] := 13; +let dist[3][4] := 16; +let dist[3][5] := 7; +let dist[4][1] := 7; +let dist[4][2] := 18; +let dist[4][3] := 19; +let dist[4][4] := 1; +let dist[4][5] := 5; +let dist[5][1] := 17; +let dist[5][2] := 7; +let dist[5][3] := 15; +let dist[5][4] := 15; +let dist[5][5] := 6; diff --git a/Assignment2/A/data5.lp b/Assignment2/A/data5.lp new file mode 100644 index 0000000..d941669 --- /dev/null +++ b/Assignment2/A/data5.lp @@ -0,0 +1,45 @@ +node(a). +path(a, b). +edge(a, b, 10). +path(a, c). +edge(a, c, 15). +path(a, d). +edge(a, d, 2). +path(a, e). +edge(a, e, 6). +node(b). +path(b, a). +edge(b, a, 12). +path(b, c). +edge(b, c, 17). +path(b, d). +edge(b, d, 5). +path(b, e). +edge(b, e, 3). +node(c). +path(c, a). +edge(c, a, 9). +path(c, b). +edge(c, b, 5). +path(c, d). +edge(c, d, 16). +path(c, e). +edge(c, e, 7). +node(d). +path(d, a). +edge(d, a, 7). +path(d, b). +edge(d, b, 18). +path(d, c). +edge(d, c, 19). +path(d, e). +edge(d, e, 5). +node(e). +path(e, a). +edge(e, a, 17). +path(e, b). +edge(e, b, 7). +path(e, c). +edge(e, c, 15). +path(e, d). +edge(e, d, 15). diff --git a/Assignment2/A/data5.py b/Assignment2/A/data5.py new file mode 100644 index 0000000..5f1e95c --- /dev/null +++ b/Assignment2/A/data5.py @@ -0,0 +1,7 @@ +[ +[5, 10, 15, 2, 6], +[12, 2, 17, 5, 3], +[9, 5, 13, 16, 7], +[7, 18, 19, 1, 5], +[17, 7, 15, 15, 6], +] \ No newline at end of file diff --git a/Assignment2/A/randomgen.py b/Assignment2/A/randomgen.py new file mode 100644 index 0000000..57dd721 --- /dev/null +++ b/Assignment2/A/randomgen.py @@ -0,0 +1,27 @@ +import random +import sys +if len(sys.argv) == 2: x = int(sys.argv[1]) +else: x = 10 +file1 = open("data" + str(x) + ".lp", "w") +file2 = open("data" + str(x) + ".py", "w") +file3 = open("data" + str(x) + ".dat", "w") +file4 = open("data" + str(x) + ".P", "w") +file2.write('[\n') +for i in range(x): + file1.write("node({}).\n".format(str(chr(ord('a') + i)))) + file2.write('[') + for j in range(x): + k = random.randint(1,20) + if i != j: + file1.write("path({}, {}).\n".format(str(chr(ord('a') + i)), str(chr(ord('a') + j)))) + file1.write("edge({}, {}, {}).\n".format(str(chr(ord('a') + i)), str(chr(ord('a') + j)), k)) + file4.write("edge({}, {}, {}).\n".format(str(chr(ord('a') + i)), str(chr(ord('a') + j)), k)) + file2.write(str(k)) + file3.write("let dist[{}][{}] := {};\n".format(i+1, j+1,k)) + if j != x - 1: file2.write(", ") + file2.write('],\n') +file2.write(']') +file1.close() +file2.close() +file3.close() +file4.close() \ No newline at end of file diff --git a/Assignment2/A/tsp.P b/Assignment2/A/tsp.P index bfa0ca7..4ba7a00 100644 --- a/Assignment2/A/tsp.P +++ b/Assignment2/A/tsp.P @@ -3,12 +3,7 @@ Prolog*/ /*This is the data set.*/ -edge(a,b,2). edge(a,c,3). edge(a,d,1). -edge(b,d,2). edge(b,e,2). edge(b,f,4). -edge(c,a,3). edge(c,d,2). edge(c,e,2). -edge(d,a,1). edge(d,b,2). -edge(e,c,2). edge(e,d,2). edge(e,f,1). -edge(f,b,4). edge(f,c,3). edge(f,e,1). +:- include('data10.P'). len([], 0). len([_|T], N):- len(T, X), N is X+1 . @@ -23,7 +18,7 @@ path(Start, Fin, CurrentLoc, Visited, Costn, Total) :- path(Start, Fin, CurrentLoc, Visited, Costn, Total) :- edge(Start, Fin, Distance), reverse([Fin|CurrentLoc], Visited), len(Visited, Q), - (Q\=7 -> Total is 100000; Total is Costn + Distance). + (Q\=11 -> Total is 100000; Total is Costn + Distance). shortest_path(Path):-setof(Cost-Path, best_path(Path,Cost), Holder),pick(Holder,Path). diff --git a/Assignment2/A/tsp.lp b/Assignment2/A/tsp.lp index b62f082..56f6356 100644 --- a/Assignment2/A/tsp.lp +++ b/Assignment2/A/tsp.lp @@ -1,22 +1,14 @@ +#include "data20.lp". + % % Generate { cycle(X,Y) : path(X,Y) } = 1 :- node(X). { cycle(X,Y) : path(X,Y) } = 1 :- node(Y). - +% Define +reached(Y) :- cycle(a,Y). +reached(Y) :- cycle(X,Y), reached(X). +% Test +:- node(Y), not reached(Y). % Display #show cycle/2. % Optimize -#minimize { C,X,Y : cycle(X,Y), edge(X,Y,C) }. - -% Nodes -node(a;b;c;d;e;f). -% (Directed) Edges -path(a,(b;c;d)). path(b,(d;e;f)). path(c,(a;d;e)). -path(d,(a;b)). path(e,(c;d;f)). path(f,(b;c;e)). - -% Edge Costs -edge(a,b,2). edge(a,c,3). edge(a,d,1). -edge(b,d,2). edge(b,e,2). edge(b,f,4). -edge(c,a,3). edge(c,d,2). edge(c,e,2). -edge(d,a,1). edge(d,b,2). -edge(e,c,2). edge(e,d,2). edge(e,f,1). -edge(f,b,4). edge(f,c,3). edge(f,e,1). +#minimize { C,X,Y : cycle(X,Y), edge(X,Y,C) }. \ No newline at end of file diff --git a/Assignment2/README.md b/Assignment2/README.md index 2b53384..22af54a 100644 --- a/Assignment2/README.md +++ b/Assignment2/README.md @@ -2,12 +2,48 @@ ## Part A ### clingo +```shell +clingo tsp.lp +``` +| size | ans | time | +| ---- | ------- | ----------------- | +| 5 | 38 | 0.001 | +| 10 | 48 | 0.050 | +| 15 | 29 | 0.351 | +| 20 | unknown | too long to solve | + +time grows exponentialy. + +### swi-prolog + +| size | ans | time | +| ---- | ------- | ----------------- | +| 5 | 38 | very fast | +| 10 | 48 | 10+s | +| 15 | unknow | too long to solve | +| 20 | unknown | too long to solve | + +I didn't find a way to calculate runtime in swi-prolog. But it is clearly to see that it is way slower than clingo. + + +### Google OR-Tools +| size | ans | time | +| ---- | --- | ---- | + + +### AMPL +| size | ans | time | +| ---- | --- | ---- | ## Part B ### clingo +```shell +clingo task.lp +``` + | size | processors | deadline | result | time | -| ---- | ---------- | -------- | +| ---- | ---------- | -------- | ------- | ----------------- | | 10 | 3 | 20 | yes | 0.031 | | 20 | 6 | 30 | no | 4.498 | | 20 | 8 | 30 | yes | 0.233 | @@ -20,8 +56,12 @@ With either too high or too low constrain, the runtime grows exponentially. If t ### Google OR-Tools + ## Part C ### clingo +```shell +clingo cut.lp +``` | size | ans | time | | ---- | --- | ------ | | 5 | 5 | 0.678 | @@ -34,3 +74,5 @@ With either too high or too low constrain, the runtime grows exponentially. If t One important factor of the runtime is the max number of cut to check. If we set max = 10 with size = 30, we get the time of 0.914. However, it is impossible to get the max size before running, I believe this time would be a great representation of the runtime of clingo. ### AMPL +| size | ans | time | +| ---- | --- | ---- |