難しいこと:並べ替えられたデッキをシャッフルするか、シャッフルされたデッキを並べ替えるのですか?


18

異なる要素の配列があります。あなたは(ブラックボックス関数は、2つの要素取るコンパレータへのアクセス権を持つとし、trueを返す)とビット真にランダムソース(ブラックボックス関数は、引数を取ることなく、独立して、均一にランダムビットを返します)。次の2つのタスクを検討してください。naba<b

  1. 配列は現在ソートされています。一様に(またはほぼ一様に)ランダムに選択された順列を生成します。
  2. 配列は、本質的にランダムに均一に選択されたいくつかの順列で構成されています。ソートされた配列を作成します。

私の質問は

どのタスクが漸近的により多くのエネルギーを必要としますか?

情報理論、熱力学、またはこの質問に答えるために必要な他のものとの関係について十分に知らないため、質問をより正確に定義することはできません。しかし、質問は明確に定義できると思います(そして、誰かがこれで私を助けてくれることを願っています!)。

今、アルゴリズム的に、私の直感は、それらが等しいということです。すべての並べ替えは逆のシャッフルであり、逆もまた同様です。ソートにはが必要からランダムな順列を選択するため、シャッフル中の比較選択、が必要ランダムビット。シャッフルとソートの両方に、約スワップが必要です。logn!nlognn!logn!nlognn

しかし、ランダウアーの原理を応用した答えが必要だと感じています。それは、少し「消す」ためにエネルギーが必要だと言っています。直感的に、これは配列のソートがより困難であることを意味すると思います。なぜなら、低エネルギー、高エントロピーの基底状態の乱れから高度に秩序化された状態への情報の「消去」ビットが必要だからです しかし一方で、任意の計算では、並べ替えは1つの順列を別の順列に変換するだけです。私はここでは完全な非専門家なので、物理学とのつながりを知っている人がこれを「分類」するのを手伝ってくれることを望んでいました!nlogn

(質問はmath.seで回答を得られなかったので、ここに再投稿しています。それでいいのです。)


私はこれをまったく考えていませんでしたので、注意してください。ソートされた配列から始めてから、マージソートを使用しますが、比較の代わりに、ランダムビットを使用してマージを実行します(したがって trueを返す代わりに、ランダムビットが場合にtrueを返します)。サイズ1の2つの配列がある基本ケースは、均一な確率でサイズ2の2つの可能な配列を生成します。私はそれ以上何も得ていません。a<b1
ルークマティソン

2
この質問に答えるためには、まず相対的な運用コストを定義する必要があると思います。データの読み取り、データの書き込み、乱数の生成/取得にかかる費用はいくらですか?
ミッチス

@mitchus:「最適に効率的な」コンピューターを想定した場合、主に物理的な制限について興味があります。私の大まかな理解は、少しの情報を「消去」するのに必要なエネルギーの量には物理的な下限があり、他の操作ははるかに少ないエネルギーで済むということです。ですから、この直感が正解であり、答えを出すのに十分に形式化できるのだろうかと思います。
-usul

少し消去するとはどういう意味ですか?上書きしますか?私の知る限り、コンピュータは通常(プライバシー上の理由を除いて)何も消去せず、関連するメモリ領域の割り当てを解除することで単に「忘れる」だけです。しかし、ここで抽象化レベルを正しく把握していないのかもしれません:)
mitchus

2
@ Patrick87残念ながら、均一なエネルギーモデルは真実から遠すぎて使用できません。FudeusnéeBayer and Nebel(2009)によるエネルギー消費に応じたアルゴリズムの評価を参照してください。
ラファエル

回答:


6

Landauerの原則により、キーの一様ランダム順列をソート済みキーに変換し、一様ランダム順列が何であるかを明らかにするコンピューターのビットを保持しない場合、を消去する必要がありビット。これにはエネルギーが必要です。一方、ソートされた配列とランダムビットをランダム配列に取り込む計算は可逆であるため、消費されるエネルギーを任意に小さくすることができます。nlogn!nlog2n(nlnn)kTnlog2n

これらは理論上の下限にすぎないことに注意してください。実際のデジタルコンピューターでこれらのプロセスが現在消費しているエネルギーは、上記の分析とは関係ありません。


どうもありがとう!おそらく素朴なフォローアップをお願いできますか?質問の文言を変更して、ソートアルゴリズムにアイテムの固定順列が与えられ、それらをソートする必要があるとします。今、もしあなたがベイジアン哲学を購読し、このインプットについて統一された信念を持っているなら、答えは同じであるべきだと思われます。しかし、入力にランダム性はないという哲学の下では(それが何であるかはわかりませんが)、引数は失敗するようです。パラドックスを解決するにはどうすればよいですか?再度、感謝します!!
usul

@usul:その場合、あなたはまだビットを消去しているので、アルゴリズムはまだエネルギーを消費します。この場合、入力がどの固定順列であるかを知っていれば、使用できるより良いアルゴリズムがあるというだけです。(nlnn)kT
ピーターショー

3

どちらでもない。任意の回路とすることができる可逆製入力を追跡することにより、可逆演算のエネルギー散逸を行うことができる任意の小さな


しかし、リバーシブルにすると、非効率になる可能性があります。最適なアルゴリズム間の関係は何ですか。ところで、私は彼らが比較するとは思わない。シャッフルは本質的にランダム性を必要とします(そして、異なるランダム性は異なる出力を生成します)。ソートは決定的です。「逆」ソートは、決定論的な方法でシャッフルされます。
ランG.

1
「効率的」とは、時間、スペース、またはこれら2つの組み合わせを意味しますか?計算を可逆にすることは必ずしも漸近的な時間の複雑さを追加するわけではなく、元の[Vitányi05]よりも多くのスペースを使用しないすべての計算の可逆バージョンが存在します。
rphv

1
入力を維持する限り、どの回路も可逆にできます。元の順列を再構成できる情報を保持したくない場合、ソート回路を可逆にすることはできません。
ピーターショー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.