There is no mathematical "solution" except for brute forcing all possible combinations.
http://en.wikipedia.org/wiki/Travelling_salesman_problem
You can try different algorithms to find a "good" solution (genetic algorithm, etc), but you will never be able to tell, if you found the BEST solution.
On SO see What is an NP-complete in computer science? for example
EDIT
SOMETIMES you can determine IF you have the BEST solution (except after trying all). But these are some rare special cases. If the "length" of your path equals the sum of the shortest distance of each point, you have found the optimum. Like all your points lying on a line and you go 1-2-3-n. But usually you can only find something that is NOT the best solution without knowing if there would be a better one.
EDIT2
As an idea: If the main goal is not to "waste" any time, I'd do it like this: Select the first point, you want the scanner to move to. Start moving the scanner. WHILE the scanner moves (different thread), calculate the path with the NN algorithm. Now run a Monte Carlo algo on the path to find something better. When the scanner reaches the first point, stop the MC algo (Scanner needs to signal the MoveCompletetion!) and take the first point from the path as new Scanner target. Repeat the previous steps until you reached the last point.
By this, you are only using the time for calculating that the scanner needs for moving anyway. And since you always use the NN path as base, you'll never be worse, but sometimes (often?) be better. The algorithm could easily be done in parallel and therefore get better results on multicore machines.