通常の言語で単語を達成するために文字をスケジュールできるかどうかをテストする
私は修正し、正規言語 アルファベットに、と私は呼んでいることを、次の問題を考慮して、文字のスケジュールのために。非公式には、入力は各文字の文字と間隔(つまり、最小位置と最大位置)を提供し、私の目標は2つの文字が同じ位置にマッピングされないように各文字をその間隔に配置することです結果の文字の単語はます。正式に:LLLΣΣ\SigmaLLLnnnnnnLLL 入力:トリプルと整数でありますnnn(ai,li,ri)(ai,li,ri)(a_i, l_i, r_i)ai∈Σai∈Σa_i \in \Sigma1≤li≤ri≤n1≤li≤ri≤n1 \leq l_i \leq r_i \leq n 出力:全単射があるよう全て用、及び。f:{1,…,n}→{1,…,n}f:{1,…,n}→{1,…,n}f: \{1, \ldots, n\} \to \{1, \ldots, n\}li≤f(i)≤rili≤f(i)≤ril_i \leq f(i) \leq r_iF - 1(1 ) ⋯ F - 1(N ) ∈ Liiiaf−1(1)⋯af−1(n)∈Laf−1(1)⋯af−1(n)∈La_{f^{-1}(1)} \cdots a_{f^{-1}(n)} \in L 明らかに、この問題はNPにあり、全単射を推測し、PTIMEでメンバーシップをチェックします。私の質問:正規言語のありのための文字スケジューリング問題ような NP困難であるが?fffLLLLLLLLL いくつかの初期観察: スケジューリングでは同様の問題が研究されているようです:開始日と終了日を考慮しながら、単一のマシンで単位コストのタスクをスケジューリングすることとして問題を見ることができました。しかし、後者の問題は明らかに貪欲なアプローチでPTIMEにあり、タスクがラベル付けされており、ターゲットの正規言語で単語を達成したい場合のスケジューリングに関する文献には何も見当たりません。 この問題を見るもう1つの方法は、2部構成の最大一致問題(文字と位置の間)の特殊なケースとしてですが、やはりなければならないという制約を表現するのは困難です。LLL がいくつかの固定単語の形式言語である特定の場合(たとえば)、文字スケジューリング問題は簡単な欲張りアルゴリズムを使用したPTIMEにあります。左から右へ、それぞれの位置に、使用可能な文字のうち、関連して正しく、時間が最小のものを1つ入れます。(正しい正しい文字がない場合は失敗します。)ただし、これは任意の通常言語一般化されません。そのような言語では、使用する文字の種類を選択できるためです。LLLu∗u∗u^*uuu(ab)∗(ab)∗(ab)^*LLLLLLririr_iLLL 動的なアルゴリズムは機能するように見えますが、実際にはそれほど単純ではありません。これまでに受け取った文字のセットを記憶する必要があるようです。確かに、左から右に単語を構築するとき、位置に到達したとき、あなたの状態はこれまでにどの文字を消費したかに依存します。指数関数的に多くの状態が存在するため、セット全体を記憶することはできません。しかし、それを「要約」するのはそれほど簡単ではありません(たとえば、各文字のコピーの数によって)。どのコピーを使用したかを知るには、いつそれらを消費したかを覚えておく必要があるようです。それら、より多くの手紙が利用可能でした)。でも似た言語で、(a b | b a …