Skip to content

Commit 8965513

Browse files
committed
change distance calculation to use scipy.distance
1 parent f9866b9 commit 8965513

File tree

1 file changed

+3
-21
lines changed

1 file changed

+3
-21
lines changed

traveling-salesman-portrait/traveling-salesman-portrait.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
import numpy as np
1717
import urllib.request
1818
from PIL import Image
19-
from itertools import combinations
2019
from tsp_solver.greedy_numpy import solve_tsp
20+
from scipy.spatial.distance import pdist, squareform
2121

2222
image_url = 'http://ereaderbackgrounds.com/movies/bw/Frankenstein.jpg'
2323
image_path = 'Frankenstein.jpg'
@@ -32,26 +32,8 @@
3232
black_indices = np.argwhere(bw_image_array == 0)
3333
chosen_black_indices = black_indices[np.random.choice(black_indices.shape[0], replace=False, size=10000)]
3434

35-
distance_lookup = {}
36-
37-
for (p1, p2) in combinations(range(len(chosen_black_indices)), r=2):
38-
p1 = tuple(chosen_black_indices[p1])
39-
p2 = tuple(chosen_black_indices[p2])
40-
x1, y1 = p1
41-
x2, y2 = p2
42-
distance_lookup[(p1, p2)] = math.sqrt((x2 - x1)**2 + (y2 - y1)**2)
43-
44-
distance_matrix = []
45-
for row_num in range(0, len(chosen_black_indices)):
46-
row_list = []
47-
for col_num in range(0, row_num):
48-
p1 = tuple(chosen_black_indices[row_num])
49-
p2 = tuple(chosen_black_indices[col_num])
50-
if (p1, p2) in distance_lookup:
51-
row_list.append(distance_lookup[p1, p2])
52-
else:
53-
row_list.append(distance_lookup[p2, p1])
54-
distance_matrix.append(row_list)
35+
distances = pdist(chosen_black_indices)
36+
distance_matrix = squareform(distances)
5537

5638
optimized_path = solve_tsp(distance_matrix)
5739

0 commit comments

Comments
 (0)