6 градусов это хорошо, потому что это дает вам ограничение. Я понимаю, что 6 может измениться, но я думаю, что подход здесь все еще применяется. Везде, где я говорю «6», просто подставьте в «# градусов».
Если вы хотите, вы можете использовать Breadth First Search (BFS). Если я правильно понимаю, вам дана начальная точка (актер / актриса), и вам нужно найти все пути к конечной точке (Кевин Бэкон), которые находятся на расстоянии меньше или равном 6 ребрам. Вы можете разбить это на подзадачи, сказав, что сначала найдите все соединения, которые находятся на расстоянии 1 ребра, затем все пути на расстоянии 2 ребра, ... и, наконец, найдите все пути на расстоянии шести ребер. Именно так будет работать BFS ... сначала исследуйте все узлы на расстоянии одного края, затем два и т. Д.
В качестве альтернативы, вы также можете использовать модифицированный поиск в глубину (DFS), выполняя обычный DFS и следуя каждому пути настолько далеко, насколько можете, но сохраняйте счетчик и не позволяйте ему проходить более 6 ребер вглубь любого конкретного пути. .
Я думаю, что ваше решение, вероятно, будет намного лучше, чем обычное O (V + E) просто потому, что вы, вероятно, не посещаете все вершины или не путешествуете по всем ребрам (если предположить, что наш график - это отношения между большим количеством актеров) ), но скорее вы ограничены подграфом общего графика. Вы начинаете свой алгоритм поиска, действуя так, как будто вы собираетесь посещать все вершины / ребра, но независимо от того, используете ли вы BFS или DFS, вы будете останавливаться на 6 ребрах от вашей начальной вершины, а не просматривать весь граф .
Учтите, что что-то вроде DFS может быть представлено как O (V + E), но также может быть представлено как O (b ^ d), где b - коэффициент ветвления, а d - глубина графика (см. Wikipedia_DFS). для получения дополнительной информации). Итак, учитывая, сколько там актеров, что будет? Учитывая ограничения, которые вы знаете о проблеме (6 градусов, а что нет), что будет d?
Думаю, я уже достаточно сказал. Надеюсь, это поможет вам. Я должен добавить предостережение, что я точно не знаю ответа, вот как проблема поражает меня;)