TSPVA An algorithm to find the best solution for Traveling Salesman Problems, generalized to use cases of ending points different from starting points