Нашел детальную открытую переписку В.Медноногова по этому поводу:
http://pmg.org.ru/ai/raypath.zip
Вкратце быстрый алгоритм поиска пути таков (кому лень читать многабукафф):
1. Идем по прямой к цели.
2. Если наткнулись на препятствие, то переходим на п.3, иначе на п.1.
3. Считаем по периметру препятствия по часовой и против часовой стрелки (в двух направлениях), где меньше клеток для обхода, и запоминаем эти клетки. Последними клетками обхода считаются те, из которых можно двигаться по прямой к цели (последующие возможные препятствия пока не считаются).
4. Обходим препятствие по клеткам с минимальным обходом.
5. Переходим на п.1.