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

アルゴリズムは、問題に対する抽象的な解決策を定義する明確に定義された一連のステップです。このタグは、問題がアルゴリズムの設計と分析に関連している場合に使用します。

1
学生の合計時間を最小化するための最適な質問のシーケンスを見つける
大学でチュートリアルセッションがあるとします。私たちは、一連の持っている質問との集合 の学生。各学生は、すなわち、各学生のために、質問の特定のサブセットに疑問を持っている、聞かせてQ J ⊆ Qは、生徒が疑問を持っていることを質問の集合とします。仮定 ∀ 1 ≤ jの≤ N :Q J ≠ φと ⋃ 1 ≤ jの≤ N Q J = Q。k Q = { q 1 … q k } n S = { s 1 … s n } s jkkQ={q1…qk}Q = \{ q_1 \ldots q_k \}nnS={s1…sn}S …

7
O(1)追加スペースを使用して、2つの文字列が互いの順列であるかどうかを確認する方法は?
2つの文字列が与えられた場合、O(1)スペースを使用して、それらが互いの順列であるかどうかをどのように確認できますか 文字列を変更することは一切許可されていません。 注:文字列の長さとアルファベットのサイズの両方に関連するO(1)スペース。

2
要素が正確にインデックス±Mでない順列のカウント
私は最近、アルゴリズムのインタビューでこの問題を尋ねられ、解決できませんでした。 NとMの2つの値が与えられた場合、長さNの順列の数を数えなければなりません(1からNまでの数を使用)。順列の任意の数と順列のその位置の絶対差がMと等しくないようにします。 例-N = 3かつM = 1の場合、1 2 3および3 2 1は有効な順列ですが、数字3は位置2にあり、それらの差は= Mであるため、1 3 2は無効です。 NxM Dynamicプログラミングを試しましたが、繰り返しをカウントしない繰り返しを作成できませんでした。

1
これは、再帰プロシージャを末尾再帰に変換する一般的な方法ですか?
私が変換する一般的な方法見つけたようだ任意の末尾再帰に再帰的な手順を: 追加の「結果」パラメーターを使用して、ヘルパーサブプロシージャを定義します。 プロシージャの戻り値に適用されるものをそのパラメータに適用します。 このヘルパープロシージャを呼び出して開始します。「結果」パラメーターの初期値は、再帰プロセスの終了点の値であるため、結果の反復プロセスは、再帰プロセスが縮小し始めるところから始まります。 たとえば、変換する元の再帰的手順は次のとおりです(SICP演習1.17)。 (define (fast-multiply a b) (define (double num) (* num 2)) (define (half num) (/ num 2)) (cond ((= b 0) 0) ((even? b) (double (fast-multiply a (half b)))) (else (+ (fast-multiply a (- b 1)) a)))) 変換された末尾再帰手続き(SICP演習1.18)は次のとおりです。 (define (fast-multiply a b) (define (double n) (* …


1
が多項式でも指数関数でもない場合、この関数は何と呼ばれますか?
この文は、Garey and Johnsonの「Computers and Intractability」の6ページで見つけました。 時間複雑度関数をそれほど制限できないアルゴリズムは、指数時間アルゴリズムと呼ばれます(ただし、この定義には、通常は指数関数と見なされないなどの特定の非多項式時間複雑度関数が含まれることに注意してください)。nログnnログ⁡nn^{\log n} 次のような私の質問、 場合はの多項式や指数関数的ではない、この関数は何と呼ばれていますか?これには名前や特別な場合がありますか?nログnnログ⁡nn^{\log n} ありがとうございました。

2
ユニバーサル検索の一般的な説明とは何ですか?
コンピューターサイエンスのトピックに関する本を読んでいますが、前提条件の一部が欠けています。通常、用語に出会ったとき、私は単にそれらを調べますが、ユニバーサル検索については、統計/コンピューターサイエンスの背景のない読者に適した説明を見つけることができませんでした。 私は、Scholarpediaのユニバーサル検索に関するこの記事を読んでいますが、これはトピックをカバーしているようです。ユニバーサル検索(またはレビン検索)の意味を説明していただければ幸いです。

2
ランダムにマルチセットの2つの拡散した混乱した順列を生成する効率的なアルゴリズム
バックグラウンド \newcommand\ms[1]{\mathsf #1}\def\msD{\ms D}\def\msS{\ms S}\def\mfS{\mathfrak S}\newcommand\mfm[1]{#1}\def\po{\color{#f63}{\mfm{1}}}\def\pc{\color{#6c0}{\mfm{c}}}\def\pt{\color{#08d}{\mfm{2}}}\def\pth{\color{#6c0}{\mfm{3}}}\def\pf{4}\def\pv{\color{#999}5}\def\gr{\color{#ccc}}\let\ss\grnnnビー玉の同一のバッチが2つあるとします。各大理石はccc色のいずれかです(c≤nc≤nc≤n。してみましょうninin_i色のビー玉の数表すiii各バッチでを。 ましょうSS\msSマルチセットである{1,…,1n1,2,…,2n2,…,1c,…,cnc}{1,…,1⏞n1,2,…,2⏞n2,…,1c,…,c⏞nc}\small\{\overbrace{\po,…,\po}^{n_1},\;\overbrace{\pt,…,\pt}^{n_2},\;…,\;\overbrace{\vphantom 1\pc,…,\pc}^{n_c}\}は1つのバッチを表します。で周波数表現、SS\msSまた、のように書くことができる(1n12n2…cnc)(1n12n2…cnc)(\po^{n_1} \;\pt^{n_2}\; … \;\pc^{n_c})。 \ msSの異なる順列の数はSS\msS、多項式によって与えられます: |SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.|SS|=(nn1,n2,…,nc)=n!n1!n2!⋯nc!=n!∏i=1c1ni!.\left|\mfS_{\msS}\right|=\binom{n}{n_1,n_2,\dots,n_c}=\frac{n!}{n_1!\,n_2!\cdots n_c!}=n! \prod_{i=1}^c \frac1{n_i!}. 質問 ランダムに\ msSの 2つの拡散した混乱した順列PPPおよびQを生成する効率的なアルゴリズムはありますか?(分布は均一でなければなりません。)QQQSS\msS 順列PPPある拡散すべての異なる要素の場合iiiのPPPのインスタンスiiiで略均等に離間されているPPP。 たとえば、\ msS =(\ po ^ 4 \; \ pt ^ 4)= \ {\ po、\ po、\ po、\ po、\ pt、\ pt、\ pt、\ pt \}と仮定しますS=(1424)={1,1,1,1,2,2,2,2}S=(1424)={1,1,1,1,2,2,2,2}\msS=(\po^4\;\pt^4)=\{\po,\po,\po,\po,\pt,\pt,\pt,\pt\}。 {1,1,1,2,2,2,2,1}{1,1,1,2,2,2,2,1}\{\po, \po, \po, \pt, \pt, \pt, …

1
Knuthの線形時間乗算アルゴリズムが「カウント」されないのはなぜですか?
乗算アルゴリズムに関するウィキペディアのページには、Donald Knuthによる興味深いものが記載されています。基本的には、フーリエ変換の乗算と対数サイズの乗算の事前計算テーブルを組み合わせることを含みます。線形時間で実行されます。 この記事は、このアルゴリズムのように機能し、「真の」乗算アルゴリズムとは見なされません。さらに重要なことは、乗算を均等なO(n lg n)時間で行えるかどうかは未解決の問題であると考えられていることです! このアルゴリズムのどの詳細が、「真の」乗算アルゴリズムとしてカウントすることを不適格にしますか? 私の推測は次のとおりです。 テーブルの事前計算には、線形時間以上の時間がかかります。一方、それはまだn lg n間に合うようにできるので、それでも印象的なように思えます。 ランダムアクセスはどういうわけか許可されていません。しかし、他のアルゴリズムがハッシュテーブルやポインターなどを使用できるのはなぜですか? 単一の命令で256ビットの乗算を行う256ビットマシンを使用している場合、2 ^ 256を超える要素が存在するまでこのアルゴリズムには意味がありません。一方、union-findでは逆アッカーマン因子に悩まされます。 「線形時間乗算アルゴリズムはありますか?」質問は、より弱いマシンという点で密かにですが、これはほのめかされるだけです。

1
パワーセットのサブセットの最短表現を見つけるにはどうすればよいですか?
次の問題に対する効率的なアルゴリズム、またはNP硬さの証明を探しています。 ましょうセットとすることがのサブセットのセット。ごとに、となるが存在する最小長のシーケンスを見つけます。。Σ A ⊆ P(Σ )Σ W ∈ Σ * L ∈ A のk ∈ N { W K + I | 0 ≤ I &lt; | L | } = LΣ\SigmaA⊆P(Σ)A\subseteq\mathcal{P}(\Sigma)Σ\Sigmaw∈Σ∗w\in \Sigma^*L∈AL\in Ak∈Nk\in\mathbb{N}{wk+i∣0≤i&lt;|L|}=L\{ w_{k+i} \mid 0\leq i < |L| \} = L たとえば、場合、単語は問題の解決策です。には、場合はです。A = { { a 、b } …

4
再帰的フィボナッチアルゴリズムの複雑さ
次の再帰フィボナッチアルゴリズムを使用します。 def fib(n): if n==0: return 0 elif n==1 return 1 return (fib(n-1)+fib(n-2)) fib(5)を見つけるために数値5を入力した場合、これが5を出力することがわかりますが、このアルゴリズムの複雑さをどのように調べることができますか?関連するステップを計算するにはどうすればよいですか?

1
正規言語の最大因数分解を見つける
言語ましょうL⊆Σ∗L⊆Σ∗\mathcal{L} \subseteq \Sigma^*規則的で。 の因数分解は、単語の集合のLL\mathcal{L}最大ペア(X,Y)(X,Y)(X,Y)です。 X⋅Y⊆LX⋅Y⊆LX \cdot Y \subseteq \mathcal{L} X≠∅≠YX≠∅≠YX \neq \emptyset \neq Y、 X⋅Y={xyX⋅Y={xyX \cdot Y = \{xy | x∈X,y∈Y}x∈X,y∈Y}x \in X, y \in Y\}。 (X,Y)(X,Y)(X,Y)各ペアの場合に最大である(X′,Y′)≠(X,Y)(X′,Y′)≠(X,Y)(X',Y') \neq (X,Y)とX′⋅Y′⊆LX′⋅Y′⊆LX'\cdot Y' \subseteq \mathcal{L} のいずれかでX⊈X′X⊈X′X \not \subseteq X'又はY⊈Y′Y⊈Y′Y \not \subseteq Y'。 どのペアが最大であるかを見つける簡単な手順はありますか? 例: してみましょう。集合F = { u 、v 、w }が計算されます:L=Σ∗abΣ∗L=Σ∗abΣ∗\mathcal{L} = \Sigma^∗ab …

1
各ビンに同じ色のボールが含まれるように、最小数のスワップを使用します
ビンがあり、i番目のビンにはi個のボールが含まれています。ボールを持っているn個の色がある私の色のボールを私は。ましょう、M = Σ N iは= 1のI。nnn私私ia私a私a_innna私a私a_i私私im=∑ni=1aim=∑i=1naim=\sum_{i=1}^n a_i スワップとは、あるビンからボールを​​取り、別のビンからボールと交換することです。各ビンに同じ色のボールのみが含まれるように、最小数のスワップが必要です。 私は簡単な特殊なケースを知っている私 ≤ 2すべてのための私を。(すべてのiについてa i = 2の場合、各ボールを最大で1回交換することでもできます。)ai≤2ai≤2a_i\leq 2iiiai=2ai=2a_i=2iii 編集:見つけることはNP困難なので、これは間違っています。c(D)c(D)c(D) どの色がどのビンに行くかがわかれば、問題は簡単です。 複数の有向グラフ、V = { v 1、… 、v n }を考えます。色iがビンb (i )に行くことがわかっている場合、ビンjが色iのk個のボールを含む場合、Aにはk個の平行な弧(j 、b (i ))がありますD=(V,A)D=(V,A)D=(V,A)V={v1,…,vn}V={v1,…,vn}V=\{v_1,\ldots,v_n\}iiib(i)b(i)b(i)kkk(j,b(i))(j,b(i))(j,b(i))AAAjjjkkkiii。グラフの各コンポーネントはオイラーです。必要なスワップの最小数は。ここで、c (D )はAをカバーするアーク独立サイクルの数です。オイラー回路を「フォロー」することで交換できます。(最小サイクルのアークを使用したスワップは、それをより小さな最小サイクルと自己ループに変更できます)。グラフ全体が自己ループのセットになったら、必要なすべてのスワップを作成しました。m−c(D)m−c(D)m-c(D)c(D)c(D)c(D)AAA 一般にこの問題はどれほど難しいですか?

2
ランダムに均一に完全一致をサンプリングする
私はグラフがあるととの完璧なマッチングの(不明)セット。このセットが空でないと仮定すると、からランダムに均一にサンプリングするのはどれほど難しいでしょうか?均一に近いが完全に均一ではない分布で問題ない場合、効率的なアルゴリズムはありますか?GGGM(G )M(G)M(G)GGGM(G )M(G)M(G)

4
数値が3の倍数である場合に計算するアルゴリズム
暗算を行うとき、次のことができます。 整数kが与えられ、すべての桁数(10を底とする)を合計します。結果が3の倍数である場合、kは3の倍数になります。 同様に機能するが、2進数(ビット)で動作するアルゴリズムを知っていますか? 最初は、整数をASCIIに変換する言語の既製の関数を使用して、基数2から基数10への変換を実行してから、精神計算のトリックを適用することを考えていました。ただし、もちろん、ベース変換2から10を自分でエンコードすることもできます。まだやっていませんが、試してみます。 次に、ベース2のユークリッド分割について考えました... しかし、他の手段、アルゴリズムがあるのだろうか。
13 algorithms 

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