2 つのシーケンス/文字列の lcs を見つける方法は知っていますが、lcs は、サブシーケンスが連続している必要があるという制限を課していません。私は次のようにそれを試しました
function lccs(a, b)
if a.length == 0 or b.length == 0
return ""
possible = []
if a[0] == b[0]
possible.push(lcs(a[1:), b[1:])
possible.push(lcs(a[1:], b))
possible.push(lcs(a, b[1:))
return longest_string(possible)
wherelongest_string
は配列内の最長の文字列を返し、s[1:]
最初の文字から始まる s のスライスを意味します。
サーバーのハードウェア仕様についてはわかりませんが、これをjavascriptのブラウザー内とgolangの両方で実行しました。リモートサーバーでは、lccsへの各呼び出しを独自のゴルーチンに配置しました。これらのルーチンの並列化。
どちらの場合も、私のニーズには遅すぎました。これをスピードアップする方法はありますか?