Мне нужна ваша помощь, чтобы решить проблему. Это часть упражнений по кодированию, которые я не мог решить полностью.Найти максимальную длину графика
Представьте, что мы имеем следующий график:
Мне нужно построить класс, который вычисляет максимальную длину пути. У меня нет корня и вы должны использовать каждую вершину в качестве отправной точки. Метод имеет параметр максимального количества повторений, поэтому, если это 1, мы можем просто передать каждое ребро один раз, если это 2, мы можем передать максимум 2 раза каждый край.
В этом случае, если repeatts = 1, максимальный путь должен быть (B, A, C). Он повторяется = 2, тогда максимальный путь должен быть (B, A, B, A, C, C).
Чтобы решить проблему без повторений, я подумал о создании списка смежности и запустить DFS, чтобы найти все пути на графике и извлечь максимальный результат. Я думаю, что это должно работать в более простом случае.
Но я не знаю, как это сделать, когда мы можем повторять ребра. Какой алгоритм я могу использовать для решения этой проблемы. Также вы можете подумать о более эффективном подходе к этой проблеме?
Thanks
Конечно, если каждое ребро можно посетить один раз (и, предположительно, каждый узел может быть посещаемым любое количество), вы должны получить BABCC? BAC даже не является допустимым путем с графиком, который вы нарисовали. – Sysyphus