Возможно, вы слышали о хорошо известной проблеме нахождения самой длинной растущей подпоследовательности. Оптимальный алгоритм имеет сложность O(n*log(n))
.
Я думал о проблеме нахождения all растущих подпоследовательностей в заданной последовательности. Я нашел решение проблемы, в которой нам нужно найти ряд растущих подпоследовательностей длины k, который имеет сложность O(n*k*log(n))
(где n - длина последовательности).
Конечно, этот алгоритм может быть использован для моей проблемы, но тогда решение имеет сложность O(n*k*log(n)*n) = O(n^2*k*log(n))
, я полагаю. Я думаю, что должно быть лучшее (я имею ввиду - быстрее) решение, но пока не знаю.
Если вы знаете, как решить проблему нахождения всех возрастающих подпоследовательностей в заданной последовательности в оптимальном времени/сложности (в данном случае оптимальном = лучше, чем O(n^2*k*log(n)))
, пожалуйста, сообщите мне об этом.
В конце концов: эта проблема не является домашней работой. На моей лекции была упомянута проблема самой длинной возрастающей подпоследовательности, и я начал думать об общей идее всех возрастающих подпоследовательностей в заданной последовательности.