タグ付けされた質問 「randomized-algorithms」

入力だけでなく乱数のソースによっても動作が決定されるアルゴリズムに関する質問。

1
シャッフルアルゴリズムの正しさを証明する方法は?
アイテムのリストをランダムな順序で作成する方法は2つありますが、それらが同等に公平であるかどうかを判断したいです 私が使用する最初の方法は、要素のリスト全体を作成してから、シャッフルを実行することです(Fisher-Yatesシャッフルなど)。2番目の方法は、挿入のたびにリストをシャッフルする反復的な方法です。擬似コードでは、挿入関数は次のとおりです。 insert( list, item ) list.append( item ) swap( list.random_item, list.last_item ) この特定のシャッフルの公平性を示す方法に興味があります。このアルゴリズムが使用される場合、このアルゴリズムの利点は、わずかに不公平であっても大丈夫です。決定するには、その公平性を評価する方法が必要です。 私の最初のアイデアは、この方法で可能な合計順列と、最終的な長さのセットで可能な合計順列を計算する必要があるということです。ただし、このアルゴリズムから生じる順列の計算方法については少し迷っています。また、これが最良の、または最も簡単なアプローチであると確信することもできません。

4
ランダムコンパレータを受け入れるソートアルゴリズム
一般的な並べ替えアルゴリズムは、通常、並べ替えるデータのセットと、2つの個別の要素を比較できる比較関数を受け取ります。コンパレータが順序関係¹の場合、アルゴリズムの出力はソートされたリスト/配列です。 私は、どのソートアルゴリズムが実際には順序関係ではないコンパレーター(特に、各比較でランダムな結果を返すもの)で動作するのか疑問に思っています。「作業」とは、ここでは、入力の順列を返し続け、常に最悪のシナリオに低下したり、無限ループに入ったり、要素が欠落したりするのではなく、通常引用された時間の複雑さで実行されることを意味します。ただし、結果の順序は定義されていません。さらに良いことに、コンパレータがコインフリップの場合、結果の順序は均一な分布になります。 私の大まかな精神的な計算から、マージソートはこれで問題なく、同じ実行時コストを維持し、公平なランダムな順序を生成するように見えます。しかし、クイックソートのようなものは退化する可能性があり、おそらく終了せず、公平ではないと思います。 ランダムコンパレータで説明されているように、他のどのソートアルゴリズム(マージソート以外)が機能しますか? 参考のために、コンパレータは、適切な関数(決定論的)であり、順序関係の公理を満たす場合、順序関係になります。 それは決定論的です。compare(a,b)特定の場合a、b常に同じ結果を返します。 推移的です: compare(a,b) and compare(b,c) implies compare( a,c ) それは反対称です compare(a,b) and compare(b,a) implies a == b (すべての入力要素が別個であると想定しているため、反射性は問題ではありません。) ランダムコンパレータは、これらのすべてのルールに違反します。ただし、順序関係ではないコンパレータはまだランダムではありません(たとえば、おそらく1つのルールに違反している可能性があり、セット内の特定の要素のみに違反している可能性があります)。

6
πやeなどの無理数を使用して乱数を生成できますか?
、、およびような無理数には、小数点の後に一意の非反復シーケンスがあります。このような数値から番目の数字を抽出し(はメソッドが呼び出される回数)、数字をそのまま使用して数字を作成する場合、完全な乱数ジェネレーターを取得する必要はありませんか?たとえば、、および場合、最初の数値は123、2番目の数値は471、次の数値は184などです。ππ\pieee2–√2\sqrt{2}nnnnnn2–√2\sqrt{2}eeeππ\pi

3
証明可能なほど高速なランダム化アルゴリズムに関するPの問題
PP\mathsf{P}kkkP T I M E(F (N ))F (N )DTIME(nk)⊊PTIME(nk)DTIME(nk)⊊PTIME(nk)\mathsf{DTIME}(n^k) \subsetneq \mathsf{PTIME}(n^k)PTIME(f(n))PTIME(f(n))\mathsf{PTIME}(f(n))f(n)f(n)f(n) ランダム性は\ mathsf {P}内で何かを購入しPP\mathsf{P}ますか? 明確にするために、単なる定数ではなく、差が漸近的である(できれば多項式ですが、多対数で解決する)ものを探しています。 最悪の場合、漸近的により良いアルゴリズムを探しています。期待される複雑さのアルゴリズムは、私が探しているものではありません。ZPPではなく、RPまたはBPPのようなランダム化アルゴリズムを意味します。

1
移動するターゲットを追跡するアルゴリズム
クエリとリセットが可能なブラックボックスfffあるとします。我々がリセットするとfff、状態fSfSf_Sのfff集合から一様にランダムに選択された要素に設定されている{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}ここで、は固定され、指定された既知です。を照会するには、要素(推測)が提供され、返される値はです。また、状態F_SのF F X { 0 、1 、。。。、n − 1 } (f S − x )nnnffffffxxx{0,1,...,n−1}{0,1,...,n−1}\{0, 1, ..., n - 1\}f S f(fS−x)modn(fS−x)modn(f_S - x) \mod nfSfSf_Sfffは値f′S=fS±kfS′=fS±kf_S' = f_S \pm kに設定されます。ここで、kkkは\ {0、1、2、...、\ lfloor n / 2 \ rfloor-((f_S-x)\ modからランダムに選択され{0,1,2,...,⌊n/2⌋−((fS−x)modn)}{0,1,2,...,⌊n/2⌋−((fS−x)modn)}\{0, 1, 2, ..., \lfloor n/2 \rfloor - …

1
4Dラインを単純化するためのO(n log n)アルゴリズムはありますか?
行の単純化のためのRamer-Douglas-Peuckerアルゴリズムには、最悪の場合のランタイムがあります。適切に分散されたランダム入力の場合、ランタイムの複雑さが予想されます。2Dには、実行時の最悪のケースを持つ他のアルゴリズムがあり、Ramer-Douglas-Peuckerアルゴリズムとまったく同じ結果を計算します。これらのアルゴリズムは「パス(凸)ハル」データ構造に基づいているため、4Dラインに一般化できるかどうかは明らかではありません。O (n log n )O (n log n )O(n2)O(n2)O(n^2)O (n ログn )O(nlog⁡n)O(n \log n)O (n ログn )O(nlog⁡n)O(n \log n) 4Dラインの場合に(入力に依存しないランタイム(予想)を備えた(ランダム化された)アルゴリズムはありますか?ユークリッド距離とグローバルな絶対許容誤差を仮定できます。O (n ログn )O(nlog⁡n)O(n \log n)

4
偏りのあるダイで公平なダイをシミュレートする
バイアスされたNNNダイを考えると、範囲乱数をどのよう[1,N][1,N][1,N]に均一に生成できますか?ダイス面の確率分布は不明です。既知のことは、各面がゼロ以外の確率を持ち、すべてのスローで確率分布が同じであることだけです(特に、スローは独立しています)。これは、不公平なダイによる公正な結果の明白な一般化です。 これをコンピューターサイエンスの用語で言えば、p i = P (D (k )= i )が非ゼロでkに依存しないようなダイスロールを表すオラクルがあります。私たちは、決定論的アルゴリズムを探しているAによってパラメータ化されたD(すなわちAがへの呼び出しを行うことがDを)そのようなものがあることP (Aは、()= Iを)= 1 /D:N→[1,N]D:N→[1,N]D : \mathbb{N} \to [1,N]pi=P(D(k)=i)pi=P(D(k)=i)p_i = P(D(k)=i)kkkAAADDDAAADDDP(A()=i)=1/NP(A()=i)=1/NP(A()=i) = 1/N。アルゴリズムは確率1で終了する必要があります。つまり、AAAが Dを回以上nnn呼び出す確率は、 n → ∞として 0に収束する必要があります。DDD000n→∞n→∞n\to\infty 以下のためにN=2N=2N=2(硬貨から公正なコインがコインバイアスと反転シミュレート)、周知のアルゴリズムが存在します。 2回のスローが異なる結果((頭、尾)または(尾、頭))になるまで、「2回反転」を繰り返します。すなわち、ループのためにk=0..∞k=0..∞k = 0..\inftyまで、D(2k+1)≠D(2k)D(2k+1)≠D(2k)D(2k+1) \ne D(2k) フリップの最後のペアが(heads、tails)の場合は0を返し、それが(tails、heads)の場合は1を返します。つまり、返します。D(2k)D(2k)D(2k)ここで、kkkはループが終了したインデックスです。 偏りのあるダイから偏りのないダイを作成する簡単な方法は、コインフリップの偏りのない方法を使用して公平なコインを作成し、シーケンスの偏りのないように、リジェクションサンプリングで公平なダイを作成します。しかし、これは最適です(確率分布の一般的な値に対して)? 具体的には、私の質問は次のとおりです。オラクルへの呼び出しの最小予想数を必要とするアルゴリズムは何ですか?到達可能な期待値のセットが開いている場合、下限とは何か、この下限に向かって収束するアルゴリズムのクラスは何ですか? 場合にはアルゴリズムの異なるファミリーは、異なる確率分布に最適な、ほとんど-公正サイコロ上のletの焦点である:私は、アルゴリズムやアルゴリズムの家族のようディストリビューションのための最適なものを探しています∀i,∣∣pi−1/N∣∣<ϵ∀i,|pi−1/N|<ϵ\forall i, \bigl|p_i - 1/N\bigr| \lt \epsilonいくつかのためのϵ>0ϵ>0\epsilon \gt 0。

2
Randomized Quicksortの利点は何ですか?
本のRandomized Algorithmsで、 MotwaniとRaghavanは、RandQS関数(ランダム化クイックソート)の説明で導入部を開きます。ここでは、セットを2つの部分に分割するために使用されるピボットがランダムに選択されます。 私はこれまでに(明らかにやや劣っています)頭を悩ませてきましたが、このアルゴリズムが単に毎回(サイズではなくインデックス内の)要素を選択することに比べて、どのような利点があるのか​​わかりませんでした。 私が見ることができないのはこれだと思います:初期セットがランダムな順序である場合、セット内のランダムな場所で要素を選択することと固定位置で要素を選択することの違いは何ですか? 誰かがかなり単純な言葉で私を啓発できますか?

1
「一方向の」コンサートで負けた
あなたと友人は、コンサートのライン上でお互いを失いました。正式には、それぞれが何らかの整数座標にあり、より高い座標に向かって歩くか、所定の位置にとどまることがあります。 あなたとあなたの友人がまったく同じアルゴリズムに従っていると仮定して(そして、いいえ、「if(name == "R B")何もしない:)」と仮定し、あなたの二人の間の最初の距離はでしたあなたに知られている)。バツxx あなたとあなたの友人が出会うまで、予想される歩行距離を最小化するアルゴリズムは何ですか? あなたはあなたの友人とあなた自身が同じ一定の速度で動いていると仮定するかもしれません。 簡単なアルゴリズムの例は次のようになります。 ステージ(0から開始):nnn000 右のwpにステップ歩きます13n3n3^nそれ以外の場合は 2または3n時間単位待機します。1212\frac{1}{2}3n3n3^n このアルゴリズムを見るために、友人は確率1で会います。ステージで何が起こるかを考えます。x一歩進んだ友人が常に歩き、もう一方が常に所定の位置に留まったとしても、両者の距離は x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x − 1(log3x+1)(log3⁡x+1)(\log_3 x+1)xxxx+1+3+9+…+3log3x=2x+x−12≤3xx+1+3+9+…+3log3⁡x=2x+x−12≤3xx+1+3+9+\ldots+3^{\log_3 x}=2x+\frac{x-1}{2}\leq 3x したがって、反復で、歩くことを選択した友人は、3 log 3 x + 1 = 3 xの距離をカバーするため、確率1になります。log3x+1log3⁡x+1\log_3 x+13log3x+1=3x3log3⁡x+1=3x3^{\log_3 x+1}=3x、背後にいる友人が追いつき、彼らは会います。1414\frac{1}{4} 単純な最適化(歩行距離を短縮する)は、ステップを歩く代わりに、c xステップを歩くことです。ここで、cは2 + …

4
セットの中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?
私のクラスであるRandomized Algorithmsのためにこの本を読んでいます。この特定の本では、ランダム選択を使用して配列の中央値を見つけることに専念するセクション全体があり、より効率的なアルゴリズムにつながります。今、私は、理論の改善に加えて、コンピューターサイエンスの領域で、このアルゴリズムの実用的なアプリケーションがあるかどうかを知りたかったのです。配列の中央値を見つける必要があるアルゴリズムまたはデータ構造はありますか?

2
ランダム化アルゴリズムの分類
ウィキペディア乱択アルゴリズムについて 予想される実行時間またはメモリ使用量を減らすためにランダム入力を使用するアルゴリズムを区別する必要がありますが、限られた時間内で常に正しい結果で終了します。また 、ランダム入力に応じてチャンスがある確率的アルゴリズム間違った結果を生成する(モンテカルロアルゴリズム)または失敗を通知するか終了しないことで結果を生成しない(ラスベガスアルゴリズム)。 最初の種類のアルゴリズムでは、ランダム入力を使用して、予想される実行時間またはメモリ使用量を削減しますが、制限された時間内に正しい結果で常に終了する方法を疑問に思いましたか? 結果の生成に失敗する可能性があるラスベガスアルゴリズムとラスベガスアルゴリズムの違いは何ですか? 正しく理解すれば、確率的アルゴリズムとランダム化アルゴリズムは同じ概念ではありません。確率的アルゴリズムはランダム化アルゴリズムの一種であり、他の種類はランダム入力を使用して予想実行時間またはメモリ使用量を削減しますが、制限された時間内に常に正しい結果で終了しますか?

1
ランダム化された選択
ランダム化選択アルゴリズムは次のとおりです。 入力:配列の(明確、簡潔のために)数と数n個のk ∈ [ N ]AAAnnnK ∈ [ N ]k∈[n]k\in [n] 出力:の「ランク要素」(つまり、がソートされた場合は位置要素)A k AkkkAAAkkkAAA 方法: に要素が1つある場合、それを返しますAAA ランダムに一様に要素(「ピボット」)を選択しますppp セットおよび計算しますR = { ∈ A :&gt; P }L = { ∈ A :&lt; P }L={a∈A:a&lt;p}L = \{a\in A : a < p\}R = { ∈ A :&gt; P }R={a∈A:a&gt;p}R = \{a\in A : …

2
スケジューリング問題のこの特殊なケースは線形時間で解決できますか?
学生のアリスは、今後数週間にわたって多くの宿題をします。宿題の各項目には、ちょうど1日かかります。また、各アイテムには期限があり、期限に間に合わなかった場合、成績にマイナスの影響があります(実数、比較可能性のみを想定した場合のボーナスポイント)。 (期限、成績への影響)のリストを指定して、成績への悪影響の合計を最小化する、その日のうちに宿題を行うスケジュールを計算する関数を作成します。 すべての宿題は最終的に行われなければなりませんが、彼女がアイテムの締め切りに間に合わなかった場合、彼女がそれを遅らせることは重要ではありません。 別の定式化では: ACME corpは、顧客に水を供給したいと考えています。彼らはすべて1つの上り坂に沿って住んでいます。ACMEには、通り沿いにいくつかの井戸があります。各井戸には、1人の顧客に十分な水が供給されます。顧客は、提供する金額を変えて入札します。水は下り坂でしか流れません。提供する顧客を選択して、収益を最大化します。 バケットの並べ替えを使用して期限を並べ替えることができます(または、既に期限で並べ替え済みであると仮定します)。 グレードの影響を降順に並べ替えれば、貪欲なアルゴリズムで問題を簡単に解決できます。その解決策はO(n log n)に勝るものはありません。 Median of Mediansとランダム化線形最小スパニングツリーアルゴリズムに触発され、単純なスケジューリング/フローの問題を(ランダム化?)線形時間でも解決できると思います。 を探しています: (潜在的にランダム化された)線形時間アルゴリズム または、線形時間は不可能であるという議論 踏み台として: 期限までにどの項目を実行できるかを知るだけで、完全なスケジュールを線形時間で再構築するのに十分であることをすでに証明しました。(この洞察は、証明書についてのみ質問している2番目の定式化の根底にあります。) 単純な(積分!)線形プログラムでこの問題をモデル化できます。 このプログラムの双対性を使用すると、双対プログラムの解も与えられている場合、候補の提案された解の最適性を線形時間で確認できます。(両方の解は線形のビット数で表すことができます。) 理想的には、グレードの影響の比較のみを使用し、そこでの数値を想定しないモデルでこの問題を解決したいと考えています。 この問題には2つのアプローチがあります。1つは期限とインパクトを使用したトレープに基づいており、もう1つはランダムピボット要素の選択とインパクトによるアイテムの分割に基づいています。どちらもO(n log n)を強制する最悪の場合、またはパフォーマンスを低下させますが、両方のパフォーマンスを低下させる単純な特殊なケースを作成することはできませんでした。

3
頭と尾の不一致
偏りのないコインのフリップのシーケンスを考えます。LET最初に見られる尾部上のヘッドの数の過剰の絶対値を表しiが反転します。定義H = \テキスト{最大} _i H_Iを。ことを示すE [H_I] = \シータ(\ SQRT {I})とE [H] = \シータ(\ SQRT {N}) 。nnnHiHiH_iiiiH=maxiHiH=maxiHiH=\text{max}_i H_iE[Hi]=Θ(i√)E[Hi]=Θ(i)E[H_i]=\Theta ( \sqrt{i} )E[H]=Θ(n−−√)E[H]=Θ(n)E[H]=\Theta( \sqrt{n} ) この問題は、RaghavanとMotwaniによる「ランダム化されたアルゴリズム」の最初の章に現れているので、おそらく上記のステートメントの基本的な証拠があるでしょう。私はそれを解決することができないので、私は助けをいただければ幸いです。

1
絞り込みタイプの推測
職場では、動的言語に関する型情報を推論する必要があります。次のように、ステートメントのシーケンスをネストされたlet式に書き換えます。 return x; Z =&gt; x var x; Z =&gt; let x = undefined in Z x = y; Z =&gt; let x = y in Z if x then T else F; Z =&gt; if x then { T; Z } else { F; Z } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.