Сразу не пинайте только. И в гугле искал, и сам думал. Просто хочу кроме всего услышать мнение постояльцев. Задача почти стандартная есть массив локаций (где-то 5000), каждая связанна с 0-10 локациями. Половина переходов односторонние, про 70% локаций вообще нет информации. Что сделанно сейчас: просто разбегаюсь рекурсией с проверкой на пересечение только с текущей веткой. Если зашел в тупик/дошел до цели/дошел до предела пути (20 переходов или меньший из достигнутых) то затыкаемся. Потом выбираем лучший результат. Естественно в половине случаев получается ОЧЕНЬ медленно.
Варианты который буду делать - отсечения по достигнотому. т.е. на каждую локацию прошлое время достижения. И если какая-то из поздних веток приходит туда позже она "отмирает"
Хотел бы услышать может быть под эту задачу можно придумать что-то более шустрое. Есть идея пустить навстречу вторую волну (из точки достижения) но во-первых только половина переходов двусторонние (хотя можно пойти навстречу только по ним), а во -вторых (и это более существенно) как реализовать одновременность распространения волн? Пихать их в одну функцию? Но тогда на каждом шаге мы будем запускать до 100 новых веток, а это по-моему много.