Как оптимально обойти все вершины графа?
Очевидно, с помощью обходов графа. 
Какой из алгоритмов лучше использовать и какие модификации можно внести - зависит уже от конкретных особенностей графа, то есть у произвольного заранее неизвестно, какая вариация окажется самой оптимальной. 
Если возможно, то нужно собрать статистику и посмотреть на возможные особенности обрабатываемых графов. Так, например, для "звезд" будет оптимальным обход центра с BFS, после чего обработка лучей с помощью DFS.
Если говорить про монетки: это нахождение кратчайшего пути, на котором лежат все монетки. Я бы использовал алгоритм Дейкстры.