I have a map with a destination (the red dot below), and a number of points of interest (the yellow, green and blue dots).

I’m trying to find a path to the destination, but the starting point is undefined – I just want it to pass as many of the points of interest as possible, without the route being to circuitous.
For example the following (pink line) would be a good route in this case:

The yellow dot is the POI furthest away from the destination (not useful in this case), the green ones are the four next furthest away.
Can anyone suggest an algorithm which would be suitable for this?
Is this a suitable problem to turn into a graph? The “not too circuitous” requirement seems to suggest that, but how would I reconcile that with wanting to pass as many POIs as possible along the way?
Edit: To clarify the “not too circuitous” requirement. I just want it to be a plausible route, for example turning a maximum of 90 degrees for the sum of all the corners. The POIs will always be nearby the destination so length isn’t really an issue.
The problem can definetly be reduced to a graph
G=(V,E)whereVare all your POI, andEin this case isV x V(edge between all vertices). You also need to produce a weight functionw:E->Rsuch thatw(u,v) = distance between u and vThe problem is actually a variation of the Traveling Salesman Problem, so it is NP-Hard (So there is no known polynomial solution) – but have a look around, there are many heuristics for this problems.
Also – if you do not expect many POIs (say 20-30) – a dynamic programming solution can be used to find the optimal path between all points.