特定の文字列処理言語は、文字列を 2 つに分割する基本的な操作を提供します。この操作には元の文字列のコピーが含まれるため、カットの場所に関係なく、長さ n の文字列に対して n 単位の時間がかかります。ここで、文字列を多くの断片に分割したいとします。休憩の順序は、総実行時間に影響を与える可能性があります。たとえば、位置 3 と 10 で 20 文字の文字列をカットしたい場合、位置 3 で最初のカットを行うと 20+17=37 の合計コストが発生しますが、位置 10 を最初に行うと 20+ のコストがかかります。 10=30。
長さ n の文字列の m 個の切断位置が与えられた場合に、文字列を m + 1 個に分割する最小コストを求める動的計画法のアルゴリズムを与えてください。
この問題は、「アルゴリズム」の第 6 章 6.9 からのものです。
この問題には答えがないので、こう考えました。
文字列の開始インデックス、終了インデックス、および使用できる残りのカット数についてOPT(i,j,n)
、文字列を切断する最小コストとして定義します。i
j
n
ここに私が得るものがあります:
OPT(i,j,n) = min {OPT(i,k,w) + OPT(k+1,j,n-w) + j-i} for i<=k<j and 0<=w<=n
それは正しいですか?助けてください、thx!