順列0..N-1を指定すると、線形時間で0..N-1のすべての順列の辞書式順序でその順列のインデックスを決定します。


7

さまざまなまたはより悪い解決策がありますが、私はで実行されるもの、または存在しないことの証明を探しています。O(nlogn)O(n)

回答:


9

2007年のペーパー順列の線形時間ランキングでは、長さ数値の演算に一定の時間がかかると仮定して、辞書式順序の線形時間ランキングアルゴリズムが提供されます。O(nlogn)


2001年の紙の線形時間におけるランキングとアンランキングの順列は、大量の数値の高速計算を必要としないが、辞書式順序ではない線形時間ランキングアルゴリズムを示しています。後者については、

辞書式順序で順列をランク付けすることの全体の問題は、順列の逆数の計算の問題と密接に絡み合っているようであり、実際にそれが可能である場合、線形計算でその計算を行うには大きな進歩が必要と思われる。

一方、Dietzにより辞書順で順列をランク付けするアルゴリズムについては触れていません。O(nlogn/loglogn)


0

すでに良い答え与えられているので、ここに別の(より最近の)参照を追加します。

辞書式順序で順列を生成する新しい方法、TING KUO(2009)

は、辞書式順序で順列を生成、ランク付け、およびランク解除する方法に加えて、別の順列から特定の距離離れた順列を生成するようないくつかの新しい機能を提案します。

複雑さもまたオーダーですO(nlgn)


1
これがどのように質問に答えるかわかりません。問題は、OPが時間アルゴリズムをすでに知っており、アルゴリズムについて尋ねているということです。したがって、時間アルゴリズムに言及しても問題には答えません。O(nlgn)O(n)O(nlgn)
DW

@DW、答えは正確にあなたのコメントに答えます。追加の(そして新しい)参照として追加されます。さらに、すでに賛成されている答えは、辞書式順序付けのためのO(nlgn)ソリューションも提供します。線形時間の辞書式順序付けのための既知のアルゴリズムはありません(少なくとも現在まで)。したがって、OPは、近似と新しいアプローチにアクセスできます。うまくいけば、ジム自身がそのようなアルゴリズムを開発できるかもしれません。親切に反対投票を削除してください
ニコスM.

それが私のコメントにどう答えるかまだ分かりません。他の回答が存在しないと仮定します(これらの目的には関係がないため)。あなたの答えは、尋ねられた質問にどのように答えますか?もう一度質問を見て、それからあなたの答えを見てください。質問では、時間アルゴリズムは必要ない(著者は時間アルゴリズムをすでに知っている)ので、OPに伝えるにはどうすればよいでしょうか。時間アルゴリズムは質問に答えますか?O(nlgn)O(nlgn)O(nlgn)
DW

@DW、残念ですが、あなたの評判はあなたに浪費されているようです。再び、同様のanserが与えられ、何度か賛成されます。線形時間の辞書式順序付け既知のアルゴリズムはありません。これらは(特定の条件下で)概算であり、OPが使用するか、OPが独自のアルゴリズムを導出するのに役立ちます。これは科学であり、すべての良い近似が非常に役立ち、これらのソリューションへの参照になります。私はあなたが私にその権利を与えてくれることを望みます
ニコスM.

「既知の線形時間アルゴリズムはありません」と答えると答えになりますが、それは答えのどこにもありません。答えは、そこに書かれていることに基づいてのみ判断できます。(とは言っても、その主張はすでにYuvalの回答で行われていることを認識しているので、それを別の言い直しに追加すると多くの貢献があるかどうかは明らかではありません。)
DW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.