function [lowprice, Rts]=TSP_Brute(W) % Solves the traveling salesman problem by brute-force. % Assumes home city is #1 % one input variable: W = edge weight matrix % two output variables: (default) lowprice = lowest possible total % price of a trip starting in #1, visiting all cities, and ending % back in #1. Rts = a matrix of all routes on which this lowest % price is realized; each row corresponds to an optimal route [n,m]=size(W); Per=perms(2:n); [p, r]=size(Per); %Note: r = n - 1 for i=1:p x(1)=W(1,Per(i,1)); %Price of home to first city. for j=1:r-1 x(j+1)=W(Per(i,j),Per(i,j+1)); end x(n)=W(Per(i,n-1),1); %Price from last city back home. price(i)=sum(x); end lowprice = min(price); lowperms =Per(find(price == lowprice),:); %Collect lowest price permutations. [a b]= size(lowperms); Rts=ones(a,b+2);, %Initiate correct size matrix for rts. Rts(:,2:(b+1))=lowperms; %Transplant lowperms in middle columns of rts.