WYznaczenie trasy przez kilka punktów

Zamierzam stworzyć apkę na androida która po podaniu 10 adresów będzie wyznaczała optymalną trasę.
Nie mam pojęcia jak to się robi. Byłbym wdzięczny gdyby ktoś mi podpowiedział.

Aplikacja ma działać w pełni offline, czy może korzystać z usługi online?

To czego szukasz nazywa się TSP - travelling salesman problem. A przekształcanie adresów w koordynaty - geokodowanie (choć wiele usług routingu ma to wbudowane).