Я полагаю, что в общем случае поиск по глубине в первом случае (с кешем, позволяющим убедиться, что вы посещаете данный узел только один раз), обычно является самым быстрым способом проверить, существует ли путь.
Если ваши данные кластеризованытогда сначала будет быстрее найти соединение между кластерами. Если вам нужно выполнить эту проверку много раз, то создание этих кластеров один раз и поиск по ним могут сильно помочь.
Возможно, вы сможете выполнить оптимизацию, если знаете больше информации о своем графике. Например, если вы знаете, что любые подключенные узлы также должны быть соседями, вы должны использовать BFS вместо DFS. Если ваш график имеет какое-то пространственное (или подобное) отношение, то A *, вероятно, быстрее, чем DFS.
Не зная больше о вашем конкретном случае, я не могу придумать ничего более полезного. Будьте конкретны, и вы можете получить более качественные ответы.
РЕДАКТИРОВАТЬ: перечитывая ваш вопрос, звучит так, как будто вы находите путь на карте. Я предлагаю рассмотреть A *, это может быть быстрее, если есть много путей одинаковой длины. Если правильный путь намного длиннее тупиков, то DFS, вероятно, все еще быстрее.
РЕДАКТИРОВАТЬ 2, электрический бугалу: если вы делаете эту проверку много раз на одной карте, и вам нужно только знать, есть липуть вообще существует, тогда, возможно, самое быстрое решение - заполнить заливку на карте и обозначить регионы. Тогда все, что вам нужно сделать, это проверить, находятся ли обе ваши точки в одном регионе.