E
というアルファベットの要素の配列a1,a2,...aN
があります。 |N| >> |E|
と仮定します。優先順位関数/アルファベット順の極値を見つける
アルファベットの各記号について、固有の整数優先度= V(sym)
を定義します。簡単にするためにV{i} := V(symbol(ai))
を定義しましょう。
私はのための優先機能V見つけることができますどのように:つまり
Count(i)->MAX | V{i} < V{i+1}
を、私は、条件V{i}<V{i+1}
を満たし、位置i
数のアルファベットの優先順位/順列を見つける必要があります最大です。
編集-1:お読みください。私は配列ai
を与えられており、タスクは関数V
を生成することです。優先度関数を使用して入力配列をソートすることについては、ではなくです。
編集-2:実施例
E = {a,b,c}; A = 'abcab$';
(ここで$ =人工終了シンボル、V {$} = +無限大)
最適優先機能の1つである:V{a}=1,V{b}=2,V{c}=3
、米国与えます配列要素間の符号に続く:a<b<c>a<b<$
、合計で5の4 '<'の符号が得られます。
あなたは非標準的な比較機能でソート意味ですか? –
私は、カスタム優先順位関数でアルファベットをソートする側から問題を見ていませんでした。近くの2つの優先順位値を入れ替えると、他のすべての優先順位は変更されないので、問題の側面(ソート)は適切だと思います。 – kvark
あなたのアルファベットが{a、b、c}であり、あなたのシーケンスが(a、b、c、b、a)ならば、2つの最適解関数はV = {a => 1、b => 2、c = 3}であり、V = {a => 3、b => 2、c => 1}である。 Count(i)の最大値は| E | -1です。正しい? – xan