コンピュータサイエンス

コンピュータサイエンスの学生、研究者、実務家のためのQ&A

1
SATとConstraint Satisfactionを使用する場合
難しい問題がある場合、標準的なアプローチの1つは、SATインスタンスとして表現し、SATソルバーを実行することです。別の標準的なアプローチは、それを制約充足問題として表現し、CSPソルバーを使用してみることです。この2つは、入力形式でどのような問題を自然に表現できるかについて、なんとなく漠然と似ています。 特定の問題に対して、どのアプローチが良い結果をもたらす可能性が高いかを認識する方法に関するガイドラインまたは経験則はありますか?CSPソルバーよりもSATソルバーがより適切に処理できる問題、またはその逆について、だれでも提供できるガイダンスはありますか? (明らかに、両方のアプローチで解決できるいくつかの簡単な問題があります。どちらのアプローチでも有効に解決できない難しい問題もあります。それらを脇に置いておきましょう。ガイダンスが最も役立つケースは、SATソルバーはCSPソルバーよりも優れたパフォーマンスを発揮するか、CSPソルバーがSATソルバーよりも優れたパフォーマンスを発揮します。 SATソルバー-つまり、最初に試すアプローチはどれですか?)

2
難しいこと:並べ替えられたデッキをシャッフルするか、シャッフルされたデッキを並べ替えるのですか?
異なる要素の配列があります。あなたは(ブラックボックス関数は、2つの要素取るコンパレータへのアクセス権を持つとし、trueを返す)とビット真にランダムソース(ブラックボックス関数は、引数を取ることなく、独立して、均一にランダムビットを返します)。次の2つのタスクを検討してください。nnnaaabbba&lt;ba&lt;ba < b 配列は現在ソートされています。一様に(またはほぼ一様に)ランダムに選択された順列を生成します。 配列は、本質的にランダムに均一に選択されたいくつかの順列で構成されています。ソートされた配列を作成します。 私の質問は どのタスクが漸近的により多くのエネルギーを必要としますか? 情報理論、熱力学、またはこの質問に答えるために必要な他のものとの関係について十分に知らないため、質問をより正確に定義することはできません。しかし、質問は明確に定義できると思います(そして、誰かがこれで私を助けてくれることを願っています!)。 今、アルゴリズム的に、私の直感は、それらが等しいということです。すべての並べ替えは逆のシャッフルであり、逆もまた同様です。ソートにはが必要からランダムな順列を選択するため、シャッフル中の比較選択、が必要ランダムビット。シャッフルとソートの両方に、約スワップが必要です。logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nn!n!n!logn!≈nlognlog⁡n!≈nlog⁡n\log n! \approx n \log nnnn しかし、ランダウアーの原理を応用した答えが必要だと感じています。それは、少し「消す」ためにエネルギーが必要だと言っています。直感的に、これは配列のソートがより困難であることを意味すると思います。なぜなら、低エネルギー、高エントロピーの基底状態の乱れから高度に秩序化された状態への情報の「消去」ビットが必要だからです しかし一方で、任意の計算では、並べ替えは1つの順列を別の順列に変換するだけです。私はここでは完全な非専門家なので、物理学とのつながりを知っている人がこれを「分類」するのを手伝ってくれることを望んでいました!nlognnlog⁡nn \log n (質問はmath.seで回答を得られなかったので、ここに再投稿しています。それでいいのです。)

1
コイントスの例への期待値最大化の適用
私は最近、期待値の最大化について自己研究しており、その過程でいくつかの簡単な例を取得しました。 ここから:3枚のコイン、c 1、c 2があり、p 0、p 1、およびp 2は、投げられたときに頭に着く確率です。トスc 0。結果がHeadの場合、c 1を 3回トスし、それ以外の場合、c 2を 3回トスします。c 1およびc 2によって生成される観測データは、HHH、TTT、HHH、TTT、HHHのようなものです。隠されたデータはc 0の結果です。推定pc0c0c_0c1c1c_1c2c2c_2p0p0p_0p1p1p_1p2p2p_2c0c0c_0c1c1c_1c2c2c_2c1c1c_1c2c2c_2c0c0c_0、 P 1及び P 2。p0p0p_0p1p1p_1p2p2p_2 そしてここから:2つのコインとc Bがあり、p Aとp Bは投げられたときに頭に着く確率です。各ラウンドで、コインをランダムに1枚選択し、10回投げます。結果を記録します。観察されたデータは、これらの2つのコインによって提供されるトス結果です。ただし、特定のラウンドでどのコインが選択されたかはわかりません。p Aおよびp Bを推定します。cAcAc_AcBcBc_BpApAp_ApBpBp_BpApAp_ApBpBp_B 計算を取得することはできますが、それらの解決方法を元のEM理論に関連付けることはできません。具体的には、両方の例のMステップで、どのように最大化されているのかわかりません。パラメータを再計算しているようで、新しいパラメータは古いパラメータよりも優れています。さらに、2つのEステップは、元の理論のEステップは言うまでもなく、互いに似ているようにも見えません。 それでは、これらの例はどのように機能するのでしょうか?

1
シェルピスキーグラフ上のハミルトニアンサイクルの数
私はこのフォーラムに初めて参加し、物理学者で脳を整えるためにこれを行います。そのため、最もエレガントな言語を使用しない場合は、恵みを示してください。他のタグがより適切だと思われる場合は、コメントを残してください。 私は、ハミルトニアンサイクルの数を次のシェルピンスキーグラフ計算する必要があるこの問題を解決しようとしています。(シェルピンスキーグラフの定義と写真については、上記のリンクも参照してください)C(n)C(n)C(n)nnnSnSnS_n 私はを見つけましたが、解決策が与えられた値一致しないため、何かを台無しにしたに違いありません。私の議論は非常に基本的な考えから成り立っており、間違いを見つけることはできません。どんな助けも大歓迎です。長いように見えても、フォローしている間にグラフを見れば、考えは些細なものになります。C(n)C(n)C(n)C(5)=71328803586048C(5)=71328803586048C(5) = 71328803586048 (a)与えられたグラフ、外側の角呼び出します。次に、次の数量を定義します。SnSnS_nA,B,CA,B,CA,B,C N(n):=N(n):=N(n) := からへのハミルトニアンパスの数。AAACCC N¯(n):=N¯(n):=\bar{N}(n) := を除く各ノードを1回訪問からへのパスの数。AAACCCBBB また、このようなパスをまたはタイプのパスと呼ぶことにします。NNNN¯N¯\bar{N} (b)ことが簡単にわかります。N(n)=N¯(n)N(n)=N¯(n)N(n)=\bar{N}(n) 理由は次のとおりですタイプのパスを考えてください。から始まるこのパスの形式はです。セグメントをに置き換えることにより、タイプのパスを取得します。この操作は、すべてのタイプのパスをタイプのパスに一意にマッピングします。NNNAAA(A,...,X1,B,X2,...,C)(A,...,X1,B,X2,...,C)(A,...,X_1,B,X_2,...,C)(X1,B,X2)(X1,B,X2)(X_1,B,X_2)(X1,X2)(X1,X2)(X_1,X_2)N¯N¯\bar{N}NNNN¯N¯\bar{N} (c)再帰を導出します。N(n+1)=2N(n)3N(n+1)=2N(n)3N(n+1)=2N(n)^3 検討から型経路にし、外側の隅subtrianglesを表すによってそれぞれ。タイプのパスは、からを介してまで、一度だけ各サブトライアングルを訪れることは明らかです。ここで、サブと接触するノードを考えます。(i)離れる前、または(ii)を入力した後、パスがこのポイントにアクセスする場合、2つの可能性があります。NNNAAABBBA,B,CA,B,CA,B,CTA,TB,TCTA,TB,TCT_A,T_B,T_CNNNTATAT_ATBTBT_BTCTCT_CZZZTATAT_ATCTCT_CTATAT_ATCTCT_C。これらの場合、内の3つのサブパスは、それぞれタイプ(i)または(ii)です。これを念頭に置いてカウントすることができますTA,TB,TCTA,TB,TCT_A,T_B,T_C N,N,N¯N,N,N¯N,N,\bar{N} N¯,N,NN¯,N,N\bar{N},N,N N(n+1)=N(n)N(n)N¯(n)+N¯(n)N(n)N(n)N(n+1)=N(n)N(n)N¯(n)+N¯(n)N(n)N(n)N(n+1)=N(n)N(n)\bar{N}(n)+\bar{N}(n)N(n)N(n)そして(b)で上に到達します再帰。 (D)我々は再帰解決の(c)とと得。N(1)=1N(1)=1N(1)=1N(n)=230+31+...+3n−2N(n)=230+31+...+3n−2N(n)=2^{3^0+3^1+...+3^{n-2}} (e)グラフハミルトニアンサイクルを考えます。3つのサブ三角形はそれぞれ2つのノードのみを介して他のサブ三角形に接続されているため、サイクルが1つの接続ノードを介して各サブ三角形に1回だけ入り、それを「塗りつぶし」、最後に他の接続ノードを介して離れることは明らかです。したがって、のハミルトニアンサイクルは、すべてが構造を持つサブトライアングルの3つの型サブパスで構成されます。ハミルトニアンサイクルの数について結論づけることができますSnSnS_nSnSnS_nNNNSn−1Sn−1S_{n-1} C(n)=N(n−1)3C(n)=N(n−1)3C(n) = N(n-1)^3。 ただし、場合は次のようになりますn=5n=5n=5 C(5)=N(4)3=81923=549755813888≠71328803586048C(5)=N(4)3=81923=549755813888≠71328803586048C(5) = N(4)^3 = 8192^3=549755813888 \neq 71328803586048 後者は問題のページに従って取得する必要があります(上記のリンク)。 ヘルプやコメントをありがとう。

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

2
要素が変化したときの逆行列の計算
行列Aが与えられた場合。逆行列聞かせてAがであるA - 1(あり、A A - 1 = I)。Aの 1つの要素が変更されたと仮定します(a i jをa ' i jにしましょう)。目的は、この変更後にA − 1を見つけることです。この目的を見つける方法は、逆行列を最初から再計算するよりも効率的です。n×nn×nn \times nAA\mathbf{A}AA\mathbf{A}A−1A−1\mathbf{A}^{-1}AA−1=IAA−1=I\mathbf{A}\mathbf{A}^{-1} = \mathbf{I}AA\mathbf{A}aijaija _{ij}a′ijaij′a' _{ij}A−1A−1\mathbf{A}^{-1}

1
多項式時間および強力な多項式時間で実行されるアルゴリズムの定義
ウィキペディアでは、 アルゴリズムの実行時間がアルゴリズムの入力のサイズの多項式で上限がある場合、つまり、ある定数kに対してT (n )= O (n k)である場合、アルゴリズムは多項式時間と呼ばれます。T(n )= O (nk)T(n)=O(nk)T(n) = O(n^k) [8]の場合、アルゴリズムは強力な多項式時間で実行されます。 計算の算術モデルの演算の数は、入力インスタンスの整数の数の多項式によって制限されます。そして アルゴリズムで使用される空間は、入力のサイズの多項式によって制限されます。 でバーンハード・コート、イェンスVygen、組合せ最適化: 定義1.4。 有理数入力のアルゴリズムは、次の場合に多項式時間で実行されると言われています。 時間で実行される整数k があります。ここで、nは入力サイズです。O (nk)O(nk)O(n^k) 中間計算のすべての数値はビットで保存できます。O (nk)O(nk)O(n^k) 任意の入力を持つアルゴリズムは、次の場合に強力な多項式時間で実行されると言われています。 n個の数字で構成される入力に対して時間で実行される整数kがあり、O (nk)O(nk)O(n^k) 有理入力では多項式時間で実行されます。 間違っている場合は修正してください。私が気づいた文字通りの違いは次のとおりです。 多項式時間アルゴリズムの場合、Korte and Vygenの定義は「Wikipediaの定義+多項式ストレージスペース」です。 強力な多項式時間アルゴリズムの場合、Korte and Vygenの定義とWikipediaの定義はどちらも入力ストレージサイズに多項式時間を必要とします。ただし、KおよびVの場合、入力の数値の数に多項式時間が必要です。一方、ウィキペディアの場合、入力サイズに多項式のストレージスペースが必要です。 それでは、これら2つの概念に対するKとVおよびウィキペディアの定義はそれぞれ同等ですか?それらの間に他にどんな違いや関係がありますか? よろしくお願いします!

1
ポンピング補題を満たしているが、規則的ではない言語?
通常の言語を考えると、それは一定であることを証明することは容易であるNである、そのようなσ ∈ Lとは、| σ | ≥ Nの文字列が存在するα、βおよびγ、このような| α β | ≤ Nと| β | ≠ ε、およびすべてのためのkそれはα β kの γ ∈ LLLLNNNσ∈Lσ∈L\sigma \in L|σ|≥N|σ|≥N\lvert \sigma \rvert \ge Nαα\alphaββ\betaγγ\gamma|αβ|≤N|αβ|≤N\lvert \alpha \beta \rvert \le N|β|≠ϵ|β|≠ϵ\lvert \beta \rvert \ne \epsilonkkkαβkγ∈Lαβkγ∈L\alpha \beta^k \gamma \in L。その逆は真実ではないと広く言われていますが、明確な例は見ていません。助言がありますか?明らかに、攻撃的な言語が規則的ではないという証拠は、典型的な「ポンピング補題を満たさない」よりも強力な方法を使用する必要があります。私は簡単な例に興味があり、入門的な公式言語クラスで発表します。

2
NP完全問題から有界PCPへの多項式簡約
テキストブックはどこにでもいると仮定有界ポストの対応問題が NP完全である(せいぜい回の繰り返しで許可されたインデックスを)。ただし、別のNP完全問題からの単純な(学部生が理解できるような)多項式時間の短縮を示すものはどこにもありません。NNN しかし、私が考えることができるすべての削減は、実行時に指数関数的(またはシリーズのサイズ)です。おそらく、SATに還元可能であることを示すことができますか?NNN

3
タイピングルールの読み方
私は言語研究論文をどんどん読み始めました。私はそれが非常に興味深く、プログラミング全般についてもっと学ぶ良い方法だと思います。しかし、コンピューターサイエンスの理論的背景に欠けているため、通常は常に苦労するセクションがあります(たとえば、このパート3を取り上げます):タイプルール。 この分野で始めるのに役立つ良い本やオンラインリソースはありますか?ウィキペディアは信じられないほど曖昧であり、初心者を本当に助けません。

1
このN番目のプライム再発の(in)tractabilityの証明
前の質問から次のように、私はレクリエーション数学の問題としてリーマン仮説で遊んでいます。その過程で、私はかなり興味深い再発に至りました。そして、その名前、その縮約、素数間のギャップの可解性に対する扱いやすさについて興味があります。 簡潔に言えば、各素数間のギャップを、先行する素数候補の繰り返しとして定義できます。たとえば、ベースが場合、次の素数は次のようになります。p0=2p0=2p_0 = 2 p1=min{x&gt;p0∣−cos(2π(x+1)/p0)+1=0)}p1=min{x&gt;p0∣−cos⁡(2π(x+1)/p0)+1=0)}\qquad \displaystyle p_1 = \min \{ x > p_0 \mid -\cos(2\pi(x+1)/p_0) + 1 = 0) \} それとも、私たちはで見るように、このアウトをプロット:p1=3p1=3p_1 = 3。 順方向に繰り返される各素数候補を評価することにより、nnn素数に対してプロセスを繰り返すことができます。次の素数p_2を取得するとしますp2p2p_2。候補関数は次のようになります。 p2=min{x&gt;p1∣fp1(x)+(⋅(−cos(2π(x+1)/p1)+1)(−cos(2π(x+2)/p1)+1))=0}p2=min{x&gt;p1∣fp1(x)+((−cos⁡(2π(x+1)/p1)+1)⋅(−cos⁡(2π(x+2)/p1)+1))=0}\qquad \displaystyle \begin{align} p_2 = \min\{ x > p_1 \mid f_{p_1}(x) + (&(-\cos(2\pi(x+1)/p_1) + 1) \\ \cdot &(-\cos(2\pi(x+2)/p_1) + 1)) = 0\} \end{align} どこ: fp1(x)=−cos(2π(x+1)/p0)+1fp1(x)=−cos⁡(2π(x+1)/p0)+1\qquad \displaystyle …

4
Prologで制約充足の問題を解決できますか?
である「パーティー出席」プロローグで解ける問題のタイプ?例えば: ゴボウマルドーンとカルロッタピンクストーンは、アルバスダンブルドアが来たら来ると言いました。アルバス・ダンブルドアとデイジー・ドッデリッジは両方とも、カルロッタ・ピンクストーンが来たら来たと言った。アルバス・ダンブルドア、ゴボウ・マルドーン、カルロッタ・ピンクストーンは全員、エルフリダ・クラッグが来れば来ると言った。Carlotta PinkstoneとDaisy Dodderidgeは、どちらもFalco Aesalonが来たら来ると言っていました。ゴボウ・マルドーン、エルフリダ・クラッグ、ファルコ・アエサロンは、カルロッタ・ピンクストーンとデイジー・ドッデリッジの両方が来たら来ると言った。デイジー・ドッデリッジは、アルバス・ダンブルドアとゴボウ・マルドゥーンの両方が来たら彼女が来ると言った。すべての招待者が出席することを保証するために、誰がパーティーに出席するよう説得する必要がありますか? 私はこれをGNU Prologで表現しようとしました: attend(BM) :- attend(AD). attend(CP) :- attend(AD). attend(AD) :- attend(CP). attend(DD) :- attend(CP). attend(AD) :- attend(EC). attend(BM) :- attend(EC). attend(CP) :- attend(EC). attend(CP) :- attend(FA). attend(DD) :- attend(FA). attend(BM) :- attend(CP),attend(DD). attend(EC) :- attend(CP),attend(DD). attend(FA) :- attend(CP),attend(DD). attend(DD) :- attend(AD),attend(BM). attend(FA). /* try different …

4
アルゴリズムの繰り返しと生成関数
コンビナトリクスは、コンピューターサイエンスで重要な役割を果たします。アルゴリズムの設計と設計の両方で、組み合わせ手法を頻繁に利用します。たとえば、グラフで頂点カバーセットを見つける方法の1つは、\ binom {n} {k}の可能なサブセットすべてを検査するだけです。二項関数は指数関数的に成長しますが、kが何らかの固定定数である場合、漸近解析による多項式時間アルゴリズムになります。kkk(nk)(nk)\binom{n}{k}kkk 多くの場合、現実の問題には、より複雑な組み合わせのメカニズムが必要であり、それを繰り返しの観点から定義することができます。有名な例の1つは、(単純に)次のように定義されたフィボナッチ数列です。 f(n)=⎧⎩⎨10f(n−1)+f(n−2)if n=1if n=0otherwisef(n)={1if n=10if n=0f(n−1)+f(n−2)otherwisef(n) = \begin{cases} 1 & \text{if } n = 1 \\ 0 & \text{if } n = 0 \\ f(n-1) + f(n-2) & \text{otherwise} \end{cases} nnn番目の項の値の計算は、この繰り返しを使用して指数関数的に増加しますが、動的プログラミングのおかげで、線形時間で計算できます。現在、すべての繰り返しがDP(オフハンド、階乗関数)に役立つわけではありませんが、カウントを生成関数ではなく繰り返しとして定義する場合、潜在的に悪用可能なプロパティです。 関数の生成は、特定の構造のカウントを形式化するエレガントな方法です。おそらく最も有名なのは、次のように定義された二項関数です。 (x+y)α=∑∞k=0(αk)xα−kyk(x+y)α=∑k=0∞(αk)xα−kyk(x + y)^\alpha = \sum_{k=0}^\infty \binom{\alpha}{k}x^{\alpha - k}y^k 幸いなことに、これには閉じた形式のソリューションがあります。すべての生成関数がこのようなコンパクトな記述を許可するわけではありません。 私の質問はこれです:アルゴリズムの設計で使用される関数を生成する頻度はどれくらいですか?分析によってアルゴリズムに必要な成長率を理解するためにそれらがどのように活用されるかは簡単にわかりますが、問題を解決する方法を作成するときに問題について教えてください。 同じカウントが何度も繰り返しとして再定式化される場合、動的プログラミングに役立つ可能性がありますが、おそらく同じ生成関数は閉じた形式になります。だから、それはそれほど均等にカットされていません。

2
量子コンピューティングを使用して、現代のハッシュを簡単に破ることができるでしょうか?
簡単に言えば、たとえば20キュビットのパワーを備えた量子コンピューティングデバイスを構築する場合、そのようなコンピューターを使用して、あらゆる種類の最新のハッシュアルゴリズムを役に立たないものにできるでしょうか。 従来のコンピューティングアプリケーションで量子コンピューティングのパワーを活用することさえ可能でしょうか?

4
Xの問題がX-Completeではないことを示す
レアルの実存論であるPSPACE、私はそれがあるかどうかわからない PSPACEコンプリート。そうでないと思う場合、どうすればそれを証明できますか? より一般的には、複雑度クラスXに問題がある場合、 X-Completeではないことをどのように示すことができますか?たとえば、XはNP、PSPACE、EXPTIMEになります。

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