IMHO this is not a traveling salesman problem - because order of circles is know beforehand (or did I misunderstand?). This is just nasty problem to formalize in easily computable way.
-------------------------------
edit: some kind of possible solution or at least little idea:
Sorry, but I don't know math terms in english - if something is wrong or not understandable, please correct and ask.
Assume:
1. N+1 circles have center coordinates X0(n),Y0(n) and radiuses R(n), n in [0,N]
2. every circle crosses line at one point, creating angle A(n), A(n) in [0,2*pi)
3. intersection point has coordinates X(n),Y(n), which can be calculated from:
X(n)=X0(n)+R(n)*sin(A(n))
Y(n)=Y0(n)+R(n)*cos(A(n))
NB! We can safely assume that every circle intersects line in one point - we can just skip other point, if it exists
4. line length L(n)=sqrt((X(n)-X(n-1))^2+(Y(n)-Y(n-1))^2), n in [1,N]
5. we need minimize sum(L(n)) by changing A(n)
Iterative solution, let S(s) mean sum(L(n)) at step s, s in [0,...] (look at edit2):
0. set inital values A(n)=0, s=0, calculate S(0)
1. for each n in [1,N] find min(L(n)) by changing A(n-1) (ideally by differentiating, but can be iteratively too)
2. for n=N find min(L(N)) by changing A(N)
3. set s=s+1, calculate S(s)
4. if abs(S(s)-S(s-1))>precision goto step 1
Problems:
1. there's no proof that such iteration will converge - result sum can be oscillating
2. there's no proof that even iteration converges, then it converges enough fast to find actual minimum value (before iteration will be cancelled by reaching given precision)
-------------------------------
edit2: somewhat better iteration:
0. set inital values A(n)=0, s=0, calculate S(0)
1. for n=0 find min(L(1)) by changing A(0)
2. for each n in [1,N-1] find min(L(n)+L(n+1)) by changing A(n) (ideally by differentiating, but can be iteratively too)
3. for n=N find min(L(N)) by changing A(N)
4. set s=s+1, calculate S(s)
5. if abs(S(s)-S(s-1))>precision goto step 1
This should converge faster