Учитывая многокритериальный ациклический граф размером n * n, где каждый node имеет не более трех детей и трех родителей, существует ли неэкспоненциальный алгоритм для определения того, существует ли путь длины n, где ни один из двух узлов не разделяет то же значение, и каждое значение набора учитывается?
В принципе, у меня есть лабиринт n * n, где каждое пространство имеет случайное значение (1..n). Мне нужно найти путь (сверху вниз) из n узлов, который включает каждое значение.
В настоящий момент я использую поиск по глубине, но это T(n) = 3T(n-1) + O(1)
, который является O(3^n)
, неидеальным решением.
Было бы очень полезно оценить, подтверждая мои страхи, или указывая на меня в правильном направлении.
Изменить: чтобы сделать это немного более конкретным, вот лабиринт с решениями (решаемый с использованием решения глубины).
1 2 5 5 4 1 5 1 3 5 4 1 2 3 2 5 5 4 4 3 4 2 1 2 4 S3, 5, 1, 3, 4, 2, F4 S3, 5, 1, 3, 4, 2, F2 S3, 5, 1, 3, 4, 2, F4 S3, 5, 3, 2, 4, 1, F3 S3, 5, 3, 2, 4, 1, F3 S3, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 3, 2, 4, 1, F3 S4, 5, 1, 3, 4, 2, F4 S4, 5, 1, 3, 4, 2, F2 S4, 5, 1, 3, 4, 2, F4 S5, 4, 3, 2, 5, 1, F3 13 total paths`