私はこのアルゴリズムをはじめて研究しています。 CLRS(15-4.6)はO(ng n)時間で実行するアルゴリズムを書くように頼んでいます。私が思いついたアルゴリズムはO(n)で実行されているようです。私は何かを誤解しなければならないと思う.WikipediaでもO(ngng)時間かかるはずだからだ。 (https://en.wikipedia.org/wiki/Longest_increasing_subsequence)
誰かがこのアルゴリズム(Pythonで)が一般的に動作しない、またはO(n)でない、または質問に答えない理由を教えてもらえますか?O(n)時間で最も長いサブシーケンスが増加しますか?
"""Attempts to find maximal ordered subsequence in linear time."""
def subseq(n):
"""Assumes the elements of n are unique"""
if len(n) == 1:
return n[:]
first = [n[0]]
second = []
for i in range(1,len(n)):
if n[i] > first[-1]:
second = first[:]
first.append(n[i])
elif not second or n[i] > second[-1]:
first = second[:]
first.append(n[i])
return first
print subseq([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15])
あなたが探している特定のアルゴリズムが本の中で、彼らはの例として、それを与えます68ページの分裂と征服。 – Tobias
"" "nの要素が一意であると仮定します" "" ???これは正当な仮定ですか? –