Если точки нельзя посещать несколько раз, то вот. Пускай точки что уже известны лежат в массиве points. Тогда по волновому или A* находим все кратчайшие расстояния от points[i] до points[i+1] и заносим в массив paths[i,j], где j — j-й путь от points[i] до points[i+1]. Дальше перебором (или тоже можно пути на графе из путей рассмотреть) пытаемся построить общий путь из всех paths, такой чтобы ни в одну точку не заходили дважды. Т.е. если по-тупому: берём paths[1,1] и перебираем все paths[2,1] и т.д.
Если точки можно посещать несколько раз, то как сказали выше: последовательный поиск пути от точки к точке.