コンピュータサイエンス

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

3
プログラミング言語理論の勉強
私は最近、(機能的な)プログラミング言語の側面を理解し、証明することに非常に興味を持ちました。 しかし、さらに深く掘り下げていくと、計算、カテゴリー理論、および表示的意味論のようなものは、適切な説明なしに理解するのが少し難しいです。λλ\lambda 私はSICP(非常に啓発的な本)を読みましたが、関数型プログラミングの理論をさらに深く掘り下げたいと思っています。関数型プログラミング言語の理論を一から議論する本/ブログ/サイト/あなたの名前はありますか?

3
P = NPの場合、なぜ
明らかに、もし、内のすべての言語を除いとであろう -complete。P ∅ Σ * N PP=NPP=NP{\sf P}={\sf NP}PP{\sf P}∅∅\emptysetΣ∗Σ∗\Sigma^*NPNP{\sf NP} なぜこれら2つの言語が特に重要なのでしょうか?他の言語を、受け入れるとき、または受け入れないときに出力して、それらを減らすことはできませんか?PP{\sf P}

1
有向グラフで単純なサイクルを見つける
私にとって、この問題は非常に興味深いようです。有向グラフで単純なサイクル(つまり、反復ノードではないサイクル)を見つけようとしていました。 私の解決策は次のようになっています。つまり、このグラフはケースの問題です。 深さ優先検索で「バックエッジ」を見つけることができるときにグラフにサイクルがあることを知っています(DFSTreeの私の写真で破線)、しばらくの間は数サイクルは確かですが、すべて、単純なサイクル。なぜなら、サイクルから非常に重要な指示されたegdes、つまり(0123)!=(0321) 私は、バックエッジを持つ各ノードのdfsを作成することを考えていますが、私にはわかりません、そしてそれは明確ではありません。それで、あなたが私を案内するかどうか、私はあなたに尋ねます。ありがとう!。 ここに私のケースの問題に対する単純なループのカウントがあります。

6
完璧なチェスアルゴリズムはありますか?
現在のチェスアルゴリズムは、プレーヤーの動きと対戦相手の動きに応じて、考えられるパスのツリーを約1レベルまたは2レベル下に行きます。チェスゲームで起こり得るすべての敵の動きを予測するアルゴリズムを開発する計算能力があるとしましょう。プレーヤーの動きに応じて、相手が任意の瞬間に取ることができるすべての可能なパスを備えたアルゴリズム。失われることのない完璧なチェスアルゴリズムはありますか?それとも、常に勝つアルゴリズムでしょうか?理論的には、考えられるすべての動きを予測できる人は、すべての動きを打ち負かす方法を見つけるか、特定の動きが彼を敗北に導く場合は単に別の道を選択する必要があります。 編集-私の質問は本当に何ですか。最適にプレイできる完璧なアルゴリズムの計算能力があるとしましょう。相手が同じ最適なアルゴリズムでプレイするとどうなりますか?これは、限られた数の(非常に大きいかどうかに関係なく)動きを持つ2人のプレーヤーのゲームすべてにも適用されます。常に勝つ最適なアルゴリズムはありますか? 個人的な定義:最適なアルゴリズムは、常に勝つ完璧なアルゴリズムです...(決して負けないものではなく、常に勝つものです)

2
マスター定理に規則性条件があるのはなぜですか?
Cormenらによるアルゴリズムの紹介を読んでいます。そして、私は73ページから始まるマスター定理の声明を読んでいます。ケース3では、定理を使用するために満たす必要がある規則性条件もあります。 ... 3.場合 f(n)=Ω(nlogba+ε)f(n)=Ω(nlogb⁡a+ε)\qquad \displaystyle f(n) = \Omega(n^{\log_b a + \varepsilon}) いくつかの定数場合、およびε&gt;0ε&gt;0\varepsilon > 0 af(n/b)≤cf(n)af(n/b)≤cf(n)\qquad \displaystyle af(n/b) \leq cf(n) [ これは規則性条件です ] いくつかの定数および十分に大きい場合、..c&lt;1c&lt;1c < 1nnn 規則性条件が必要な理由を誰かに教えてもらえますか?条件が満たされない場合、定理はどのように失敗しますか?

3
チューリング完全かつ計算能力
講義で教授は、現代のコンピューターは無限のメモリを持たないためチューリングマシンほどの計算能力を持たず、コンピューターは無限のメモリを持つことができないため、チューリングマシンは到達不可能であり、単に上限を表すと述べましたコンピューティングの。これにより、どのような問題(または問題のクラス)がコンピューティングパワーの範囲を超えて存在するかという尺度、または定義はありますか?

1
Knuth、de Bruijn、Riceの「植えられた平面の木の平均高さ」(1972)
私はタイトルの古典的な論文を基本的な手段(生成関数、複雑な解析、フーリエ解析なし)だけで導き出そうとしていますが、精度はずっと低くなっています。要するに、私は、「のみ」を証明したいと平均高さhnhnh_nを有するツリーのnnnのノード(すなわち、葉へのルートからノードの最大数)を満たすのhn∼πn−−−√hn∼πnh_n \sim \sqrt{\pi n}。 AnhAnhA_{nh}hhhAnh=AnnAnh=AnnA_{nh} = A_{nn}B N H N H + 1件のB N H = A N N - A nは、H、H 、N = S N / A N N S N S N = Σ H ⩾ 1 H (A N H - A N 、H - 1)= Σ …

4
セットのセットが与えられると、各セットから少なくとも1つの要素を含む最小のセットを見つけます。
集合を考えるとセットの、私はセットを見つけるしたいMは、すべてセットするようなSにおけるSは、少なくとも一つの要素が含まMを。また、この基準を満たしながら、Mにできるだけ少ない要素を含めるようにしますが、このプロパティには複数の最小のMが存在する場合があります(ソリューションは必ずしも一意ではありません)。SS\mathbf{S}MMMSSSSS\mathbf{S}MMMMMMMMM 具体例として、セットが国旗のセットであり、Sの各フラグSの要素がその国旗で使用される色であると仮定します。米国はS = { r e d 、w h i t e 、b l u e }であり、モロッコはS = { r e d 、g r e e n }です。その後、MSS\mathbf{S}SSSSS\mathbf{S}S={red,white,blue}S={red,white,blue}S = \{red, white, blue\}S={red,green}S={red,green}S = \{red, green\}MMMは、すべての国旗がの色の少なくとも1つを使用するプロパティを持つ色のセットです。(青、黒、赤、緑、黄、白のオリンピック色は、このようなMの例であり、少なくとも1920年にはそうでした。)MMMMMM この問題の一般的な名前はありますか?セットを見つけるために受け入れられた「最良の」アルゴリズムはありますか?(計算の複雑さのためにプロセスを最適化するよりも、ソリューション自体に興味があります。)MMM

4
プルーフの階層のリポジトリはありますか?
私は自己学習のプルーフアシスタントであり、いくつかの基本的なプルーフから始めて、さらに上に進むことを決めました。プルーフは他のプルーフに基づいているため、階層を形成するため、プルーフの階層のリポジトリはありますか? 特定の証明アシスタントを選択し、そのライブラリを分析してその階層を抽出できることは知っていますが、証明するためにチェーン内の次の証明を見つけたい場合、それがライブラリにない場合は見つけることができません。 私の頭の中では、おそらく写真を使った証明ではなく、英語のステートメントを使って表現できる既知の数学的証明のすべてのグラフ、おそらくDAG を描きます。これはマスターマップ(ある地点から始まり、中間地点を経由して別の地点に移動するという意味のマップ)であり、特定の証明アシスタントの場合、マスターマップのサブグラフがあります。次に、サブグラフ上ではなくマスター上にある証明アシスタントを使用して証明を作成したい場合、2つのグラフを比較することで、証明アシスタントの欠落している証明の作成に必要な作業のアイデアを得ることができます。 数学的な証明は、証明アシスタントで使用するために必ずしも簡単に変換できるわけではないことを承知していますが、何をするかについての一般的な考えは、まったくないよりもはるかに優れています。 また、マスターマップを作成することで、ある地点から他の地点までの複数のパスがあるかどうかを確認し、特定の証明アシスタントが受け入れやすいパスを選択できます。 編集 検索で数学関数に類似するものを見つけました。NISTで証明用のものを見つけられませんでした

2
削減の種類と硬度の関連定義
AがBに還元可能とする、すなわち、A≤BA≤BA \leq B。したがって、を受け入れるチューリングマシンはBのオラクルにアクセスできます。チューリングマシン受け入れましょうAがであるM Aとは、Oracle BがであるO B。削減の種類:AAABBBAAAMAMAM_{A}BBBOBOBO_{B} チューリングの削減:MAMAM_{A}はに対して複数のクエリを作成できOBOBO_{B}ます。 カープ削減:「多項式時間チューリング削減」とも呼ばれます:への入力は、ポリタイムで構築する必要があります。さらに、O Bへのクエリの数は、多項式によって制限される必要があります。この場合:P A = P B。OBOBO_{B}OBOBO_{B}PA=PBPA=PBP^{A} = P^{B} 多対1チューリングの削減:は、最後のステップでO Bに対して1つのクエリのみを作成できます。したがって、Oracleの応答は変更できません。ただし、O Bへの入力を構築するのにかかる時間は、多項式によって制限される必要はありません。等価(≤ mは多対一還元を表します)MAMAM_{A}OBOBO_{B}OBOBO_{B}≤m≤m\leq_{m} 場合 ∃計算関数 F :Σ * → Σ *ように、F (X )∈ BA≤mBA≤mBA \leq_{m} B∃∃\existsf:Σ∗→ Σ∗f:Σ∗→Σ∗f: \Sigma^{\ast} \to \Sigma^{\ast}。f(X )∈ B⟺X ∈ Af(バツ)∈B⟺バツ∈Af(x) \in B \iff x\in A クックの削減:「多項式時間の多対一の削減」とも呼ばれます:への入力を構築するのにかかる時間を多項式で区切る必要がある多対一の削減。等価(≤ p個のmは多対一還元を表します)OBOBO_{B}≤pm≤mp\leq^{p}_{m} 場合 ∃ポリ時間計算関数 F …

2
チューリングの完全性が正しいのはなぜですか?
このメッセージを書くのにデジタルコンピューターを使用しています。このようなマシンには、考えてみると、実際に非常に注目すべき特性があります。適切にプログラムされていれば、可能な計算を実行できるマシンです。 もちろん、何らかの機械を計算することは古代に戻ります。人々は、加算と減算(算盤など)、乗算と除算(スライド規則など)、および惑星の位置の計算機など、よりドメイン固有のマシンを構築しています。 コンピューターの驚くべきことは、それが実行できることです どんな計算です。すべての計算。そして、すべてマシンを再配線する必要はありません。今日、誰もがこの考えを当たり前のように受け止めていますが、立ち止まって考えてみると、そのようなデバイスが可能なのは驚くべきことです。 実際に2つの質問がありますます: 人類はいつそのような機械が可能であると理解したのですか?深刻な疑いがあったことがありますかそれができるかどうかについてはありましたか?これはいつ解決されましたか?(特に、最初の実際の実装の前または後に解決されましたか?) 数学者はどのように証明しましたかは、チューリング完全なマシンが本当にすべてを計算できるをしましたか? その2番目は面倒です。すべての形式には、計算できないものがあるようです。現在、「計算可能な関数」は「チューリングマシンが計算できるもの」と定義されています。しかし、より多くのものを計算できるわずかに強力なマシンがないことをどのようにして知ることができますか?チューリングマシンが正しい抽象化であることをどうやって知るのでしょうか?

1
製品タイプとタイプ推論
私は、連結言語用のコンパイラに取り組んでおり、型推論のサポートを追加したいと考えています。Hindley–Milnerは理解していますが、型理論を学んでいるので、それをどのように適応させるかわかりません。次のシステムは健全で、決定的に推測できますか? 用語は、リテラル、用語の構成、用語の引用、またはプリミティブです。 e::=x∣∣ee∣∣[e]∣∣…e::=x|ee|[e]|… e ::= x \:\big|\: e\:e \:\big|\: [e] \:\big|\: \dots すべての用語は関数を示します。2つの関数およびe 2の場合、e 1e1e1e_1e2e2e_2並置が逆組成を示しています。リテラルはニラディック関数を示します。e1e2=e2∘e1e1e2=e2∘e1e_1\:e_2 = e_2 \circ e_1 構成以外の用語には、基本的なタイプルールがあります。 x:ι[Lit]Γ⊢e:σΓ⊢[e]:∀α.α→σ×α[Quot],α not free in Γx:ι[Lit]Γ⊢e:σΓ⊢[e]:∀α.α→σ×α[Quot],α not free in Γ \dfrac{}{x : \iota}\text{[Lit]} \\ \dfrac{\Gamma\vdash e : \sigma}{\Gamma\vdash [e] : \forall\alpha.\:\alpha\to\sigma\times\alpha}\text{[Quot]}, \alpha \text{ not free in } \Gamma 連結言語にはアプリケーションルールがないため、アプリケーションのルールは特にありません。 型は、リテラル、型変数、またはスタックからスタックへの関数のいずれかです。ここで、スタックは右ネストされたタプルとして定義されます。すべての関数は、「残りのスタック」に関して暗黙的にポリモーフィックです。 τρσ::=ι∣∣α∣∣ρ→ρ::=()∣∣τ×ρ::=τ∣∣∀α.στ::=ι|α|ρ→ρρ::=()|τ×ρσ::=τ|∀α.σ …

3
DFA最小化のためのBrzozowskiのアルゴリズム
BrzozowskiのDFA最小化アルゴリズムは、以下によってDFA 最小DFAを構築GGGします。 内のすべてのエッジ反転GGG、初期状態を作るAN状態を受け入れ、NFA取得するには、初期状態を受け入れるN′N′N'逆言語に対して、 パワーセット構造を使用して、逆言語のを取得しG′G′G'ます。 のエッジを反転(および初期受け入れスワップ)して、元の言語のG′G′G'NFA を取得します。NNN GminGminG_{\min} もちろん、一部のDFAには指数関数的な大きな逆DFAがあるため、このアルゴリズムは入力のサイズに関して最悪の場合指数関数的に実行されるため、逆DFAのサイズを追跡できます。 場合は入力DFAのサイズは、最小限DFAの大きさで、かつ最小限逆DFAの大きさを、その後の面でBrzozowskiのアルゴリズムの実行時間何であるN、N、およびmは? nは mはNNNnnnmmmNNNnnnmmm 特に、Brzozowskiのアルゴリズムは、とmのどの関係で、HopcroftまたはMooreのアルゴリズムよりも優れていますか?nnnmmm Practice / Applicationの典型的な例では、Brzozowskiのアルゴリズムが他のアルゴリズムよりも優れていると聞いています。非公式には、これらの典型的な例はどのようなものですか?

4
関数は常に漸近的に比較可能ですか?
2つのアルゴリズムの複雑さを比較するとき、通常はまたはg (n )= O (f (n ))(おそらく両方)の場合です。ここでfとg 2つのアルゴリズムの(たとえば)実行時間です。f(n)=O(g(n))f(n)=O(g(n))f(n) = O(g(n))g(n)=O(f(n))g(n)=O(f(n))g(n) = O(f(n))fffggg これは常にそうですか?つまりは、関係の少なくともいずれかを行いとG (N )= O (F (N ))の一般的な機能のためには常に保持、F、G?そうでない場合、どの仮定を行う必要がありますか?(なぜ)アルゴリズムの実行時間について話すときにそれは大丈夫ですか?f(n)=O(g(n))f(n)=O(g(n))f(n) = O(g(n))g(n)=O(f(n))g(n)=O(f(n))g(n) = O(f(n))fffggg

5
チューリング完全でないオートマトンの決定できない特性はありますか?
線形有界オートマトンの決定不可能なプロパティはありますか(空のセット言語のトリックを回避します)?決定論的有限オートマトンについてはどうですか?(難治性は別として)。 チューリングマシンを使用せずに定義された未決定の問題の例(可能であれば)を取得したい明示的にます。 モデルのチューリング完全性は、計算不可能な問題をサポートするために必要ですか?

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