コンピュータサイエンス

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

1
自己型は帰納的構造の計算を時代遅れにしますか?
自己型は、言語がスコットエンコーディングでエンコードされた代数的データ型を表現できるようにする、構造の計算[1]の拡張です。Scott Encodingは、でパターンマッチングする機能を提供しますO(1)。これは、CCに帰納的定義を含める主な動機の1つです。しかし、自己型ははるかに単純でエレガントな基本理論を実現し、一見すると強力なようです。 セルフタイプは、理論的な観点から、CICを時代遅れにしますか、それとも、CICがSelf Tyesに関して有利であるいくつかの側面がありますか? [1] http://staff.computing.dundee.ac.uk/pengfu/document/talks/mvd-2012.pdf

2
そこにあるポイントの数を最大にするボールを見つけるための複雑さ
x1,…,xn∈R2x1,…,xn∈R2x_1, \ldots, x_n \in \mathbb{R}^2rrrrrr∑ni=11∥x−xi∥≤r∑i=1n1‖x−xi‖≤r\sum_{i=1}^n \mathbb{1}_{\|x - x_i\| \leq r} ブルートフォースアルゴリズムは、すべてのポイントを調べて、よりも小さい距離にあるポイントの数を数えることです。それは複雑さを与えます。rrrO(n2)O(n2)\mathcal{O}(n^2) より良いアプローチはありますか?

1
場合、ですか?
もし、その後で?他の非決定論的なクラスの場合、常にそれらが決定論的クラスと等しいことを確立しているように見えるので、私はこの質問をしている。P=NPP=NP\mathbf{P} = \mathbf{NP}L=NLL=NL\mathbf{L} = \mathbf{NL}P=NPP=NP\mathbf{P} = \mathbf{NP}

4
NP問題を解決するための進化型人工ニューラルネットワーク
私は最近、Google Research Blogからニューラルネットワークについて話している非常に興味深いブログエントリを読みました。基本的に、このニューラルネットワークを使用して、画像認識などのさまざまな問題を解決します。彼らは遺伝的アルゴリズムを使用して、軸索の重みを「進化」させます。 だから基本的に私の考えは次のとおりです。数字を認識するプログラムを書くことになっていた場合、どうやって始めればよいかわからない(漠然とした考えがあるかもしれませんが、私のポイントは、それは簡単ではなく、簡単ではありません)ですが、ニューラルネットワークを使用する必要はありません。ニューラルネットワークが進化するための適切なコンテキストを作成することにより、私のニューラルネットワークは「正しいアルゴリズムを見つけます」。以下で、記事の非常に興味深い部分を引用しました。そこでは、各層が画像認識のプロセスでどのように異なる役割を果たすかを説明しています。 ニューラルネットワークの課題の1つは、各レイヤーで何が起こっているかを正確に理解することです。トレーニング後、各レイヤーは、最終的なレイヤーが本質的に画像の表示内容を決定するまで、画像のより高いレベルの特徴を段階的に抽出します。たとえば、最初のレイヤーはエッジやコーナーを探している可能性があります。中間層は、基本的な機能を解釈して、ドアや葉などの全体的な形状やコンポーネントを探します。最後のいくつかの層は、それらを組み立てて完全な解釈にします。これらのニューロンは、建物全体や樹木などの非常に複雑なものに応答してアクティブになります。 だから基本的に私の質問は次のとおりです:すべてのNP問題を解決するために遺伝的アルゴリズム+ニューラルネットワークを使用できませんでしたか?適切な進化のコンテキストを作成し、「自然」に解決策を見つけさせるだけです。 インセプショニズム:ニューラルネットワークの詳細 編集:私は多くの場合、ブルートフォースを使用したり、非効率的なソリューションを見つけたりできることを知っています。それが、進化する人工ニューラルネットワークを強調する理由です。私がコメントで言ったように:十分な時間と適切な突然変異率があれば、最適な解決策を見つけることができました(または少なくともそれが私の考えです)。

1
用語の書き換え; 重要なペアを計算する
次の演習を解こうとしましたが、すべての重要なペアを見つけようとしていました。 次の質問があります。 どのクリティカルペアが新しいルールを作成したかを知るにはどうすればよいですか? すべての重要なペアを見つけたとどうやって知るのですか? LET ∘がバイナリであるが、私は単項であり、eは定数です。 E = { (X ∘ Y )∘ Z ≈ X ∘ (Y ∘ Z ) X ∘ E ≈ X X ∘ I (X )≈ E }Σ={∘,i,e}Σ={∘,i,e}\Sigma= \left \{ \circ, i, e \right \}∘∘\circiiieeeE=⎧⎩⎨⎪⎪(x∘y)∘z≈x∘(y∘z)x∘e≈xx∘i(x)≈e⎫⎭⎬⎪⎪E={(x∘y)∘z≈x∘(y∘z)x∘e≈xx∘i(x)≈e} E=\left \{ \begin{gather} ( x \circ y ) \circ z …

2
「No mode bit」のData General MV / 8000の利点
私は、Data Generalのチームが新しいマシン(コードネームは「Eagle」、後にMV / 8000と名付けました)を設計するTracy Kidderの「The Soul of a New Machine」を読んでいます。これは、以前のアーキテクチャ(16ビットEclipse)の32ビット拡張です。進化しているテーマの1つは、モードビットを備えたマシンを作成したくないことと、これに成功したことです。 ただし、これが技術的にどのように達成されるかは省略し、モードビットのないマシンを作成することがそれほど魅力的だった理由についても触れていません。この本は技術書ではないため、詳細が多少歪んでいる可能性があります。ただし、この本を読んでいると、「モードビット」ソリューションが当時は一般的であり(したがって実現可能である)、見た目上の理由からエンジニアには魅力がないと見なされていたように感じます。この本はまた、モードビットなしでデザインを作成することは非常に困難な作業のように思われ、この特定のチームによって何らかの形で克服されました。 私はそれがどのように達成されたかについてのこの説明を見つけました: http://people.cs.clemson.edu/~mark/330/kidder/no_mode_bit.txt 基本的には、以前使用されていなかったオペコード空間の部分を新しい命令に使用することのようです。私はそれが「それだけ」だったことに少しがっかりしたことを認めなければなりません。また、これでも未解決の質問がいくつか残っていると思います。 まず、16ビットプロセスは32ビットアドレス空間にどのように存在しましたか。それは、32ビット拡張を「モードビットなしで」作成する際の重要な課題だと思うからです。一方、命令セットの拡張は比較的一般的な作業です。どのようにして起こったのかについての説明がないので、16ビットコードがいつものように単にメモリにアクセスすると想定することができます。おそらく、あるタイプのメモリの仮想化/バンクビュー(新しいCPUレジスタが最初のアドレスの場所を制御する)を見るかもしれません。そんな感じ。しかし、それ以上のものがあるかどうかはわかりません。その場合、一種の「モードビット」ソリューションであると主張することができます。16ビットモードのプロセスは、CPUに追加された特別な機能により、他のプロセスと並行して実行できます。 次に、モードビットのないマシンを作成することがなぜそれほど魅力的だったのでしょうか。この本で宣伝されている利点の多くは、顧客が古いソフトウェアを実行したいと思ったことです。ただし、モードビットを使用する目的は下位互換性を維持することなので、これはモードビットに反するようには見えません。AMDがx86を64ビットに拡張したとき、少なくとも「モードビット」という言葉に対する私の理解によれば、AMDが行ったことは正確にモードビットを追加することでした。CPUを64ビットモードにする特別なビット。また、プロセスを64ビットモードの「サブモード」で実行させるもう1つのビット(32ビットアプリケーションとの互換性を有効にするため)。サブモードの本質は、CPUが命令ストリームを古い32ビット命令として解釈するが、行われた32ビットメモリアクセスは新しいページテーブル形式(64ビット対応オペレーティングシステムによるセットアップ)を使用して解決され、最終的には完全な物理アドレス空間にマッピングされます。また、32ビットのコードは64ビットのコードに取って代わられます。Data Generalソリューションと同様に、これにより、32ビットプログラムを64ビットプログラムの下で実行することもできました(DGの場合は、16ビットと32ビット)。したがって、顧客の観点から見ると、まったく違いがないように見えます。したがって、唯一の利点は実装にあり、設計を簡素化することでしたが、この本はそれが問題であるように聞こえません。モードビットはその時点でも一般的であると思われるためです(そして、それ以降のアーキテクチャでもx64ケースが示すようにそれを採用しました)。 私が見逃したものがあると私は確信しているので、誰かがこの「モードビットなし」の設計の技術的な詳細と長所についてもっと議論できたら素晴らしいでしょう。

1
Earley Parserは、DFAのLevenshtein Automata Algoのようなファジーパーサーにできますか?
DFAと実行時に入力された単語のLevenshtein Automataを実行して、あいまいな解析を実行する方法があります(タイプミスがある場合でも文字列を受け入れます)。Earleyパーサーでも同様のことができますか?アルゴリズムを理解するのは難しいと思います。この質問に答えることは言うまでもありません。

5
安全でない状態が常にデッドロックを引き起こさないのはなぜですか?
私はGalvinのオペレーティングシステムを読んでいて、以下の行に出くわしました。 ただし、すべての安全でない状態がデッドロックであるとは限りません。安全でない状態はデッドロックにつながる可能性があります 誰かがどのようにデッドロックを説明できますか!=安全でない状態?ここでも同じラインを捉えました 安全なシーケンスが存在しない場合、システムは危険な状態にあり、デッドロックを引き起こす可能性があります。(すべての安全な状態でデッドロックは発生しませんが、すべての安全でない状態がデッドロックを引き起こすわけではありません。)

1
強化学習における割引率の意味
アタリのゲームに関するグーグルディープマインドの成果を読んだ後、qラーニングとqネットワークを理解しようとしていますが、少し混乱しています。割引率の概念に混乱が生じます。私が理解していることの簡単な要約。深い畳み込みニューラルネットワークは、アクションの最適な期待値の値を推定するために使用されます。ネットワークは損失関数 どこ E S " [ Y | S 、A ]であり、 E [ R + γ M A X A ' Q (S '、' ; θ - I)| s、a] ここで、Qは累積スコア値、rは選択したアクションのスコア値です。s、a、 sL私= Es 、a 、r[(Es』[ y| s、a]−Q(s、a; θ私))2]Li=Es,a,r[(Es′[y|s,a]−Q(s,a;θi))2] L_i=\mathbb{E}_{s,a,r}\left[(\mathbb{E}_{s'}\left[y|s,a\right]-Q(s,a;\theta_i))^2\right] Es』[ y| s、a]Es′[y|s,a]\mathbb{E}_{s'}\left[y|s,a\right]E [ r + γmは、Xがa』Q (s』、a』; θ−私)∣|s 、a ]E[r+γmaxa′Q(s′,a′;θi−)|s,a] \mathbb{E}\left[r+\gamma …

2
言語のLR(1)オートマトンは、対応するLR(0)オートマトンよりどのくらい大きくできますか?
LR(0)パーサーでは、各状態はLR(0)アイテムのコレクションで構成されます。LR(0)アイテムは、位置で注釈が付けられたプロダクションです。LR(1)パーサーでは、各状態はLR(1)アイテムのコレクションで構成されます。これは、位置と先読み文字で注釈が付けられたプロダクションです。 LR(1)オートマトンの状態が与えられると、各LR(1)アイテムから先読みトークンを削除することによって形成される構成セットは、LR(0)オートマトンのいくつかの状態に対応する構成セットを生成することが知られています。その意味で、LR(1)オートマトンとLR(0)オートマトンの主な違いは、LR(1)オートマトンにはLR(0)オートマトンの状態のコピーが多く、それぞれに先読みが付いていることです。情報。このため、特定のCFGのLR(1)オートマトンは、通常、そのCFGの対応するLR(0)パーサーよりも大きくなります。 私の質問は、LR(1)オートマトンをどれだけ大きくできるかです。ある場合は文法のアルファベットの明確な終端記号は、その後、原則的に、我々は、少なくとも一回のサブセットあたりLR(0)オートマトンの各状態を複製する必要があるかもしれません 1(LRにつながる潜在的に、明確な終端記号)オリジナルのLR(0)オートマトンより倍大きいオートマトン。LR(0)オートマトンの個々のアイテムがそれぞれ異なるLR(0)アイテムのセットで構成されている場合、さらに大きなブローアップが得られる可能性があります。n 2 nんnnんnn2ん2n2^n とはいえ、LR(1)オートマトンが対応するLR(0)オートマトンより大幅に大きい文法のファミリーを構築する方法を見つけることができないようです。私が試したすべてのことで、サイズはわずかに大きくなりました(通常は2〜4倍程度)が、大きな爆発につながるパターンを見つけることができないようです。 LR(1)オートマトンが対応するLR(0)オートマトンより指数関数的に大きい、文脈自由文法の既知のファミリーはありますか?それとも、最悪の場合、実際には指数関数的な爆発が起こらないことがわかっていますか? ありがとう!

1
ユニバーサルチューリングマシンはどのようにして「より大きな」マシンをシミュレーションできますか
ユニバーサルチューリングマシンに関する2つの質問の答えを見つけようとしています。 シミュレーション中のチューリングマシンの状態数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか? シミュレートされているチューリングマシンのアルファベット文字の数が多い場合、ユニバーサルチューリングマシンでチューリングマシンをどのようにシミュレートできますか? 誰もがこれらの質問で私を助けることができますか?

1
任意の自然がある
私はそれを知って定量化するブール式問題式ため φはない数量を含まず、唯一の変数はxは1、... 、xはN、Y 1、... 、Y nが一例であるΠ P 2 -complete問題。しかし、私はあることが知られている任意の天然の問題があるかどうかを疑問に思うΠ Pψ = ∀ X1... ∀ Xん∃ Y1... ∃ Yんφψ=∀バツ1…∀バツん∃y1…∃yんφ \psi = \forall x_1 \ldots \forall x_n \exists y_1 \ldots \exists y_n \phi φφ\phiバツ1、… 、xん、y1、 … 、yんバツ1、…、バツん、y1、…、yんx_1, \ldots, x_n, y_1, \ldots, y_nΠP2Π2P\Pi_2^P -complete、同じように回路の最小化が自然であるΣ P 2 -complete問題(参照多項式階層の詳細については)?ΠP2Π2P\Pi_2^PΣP2Σ2P\Sigma_2^P

1
型理論における「ポジティブポジション」と「ネガティブポジション」の意味は?
型理論の文脈で「ポジティブな位置」と「ネガティブな位置に」とはどういう意味ですか? このトピックに関するボブハーパーのブログ投稿から私が理解した唯一のことは、型理論におけるこの意味での極性と論理における極性との間に関係があるということですが、その関係が何であるかわかりません。


1
DNFからCNFへの変換:簡単または難しい
CNFからDNFへの変換がNP-Hard(および関連するMathスレッド)であることを証明するスレッドに関連して: DNFからCNFへの他の方向はどうですか?簡単ですか、難しいですか。 このペーパーの 2ページ目では、「CNF表現からDNF表現(またはその逆)に切り替えるときのサイズの最大の拡大に関心がある」と言うと、両方向が等しく難しいことを示唆しているようです。 しかし、DNF-SATはPにあり、CNF-SATはNP完全です。したがって、DNF式与えられると、長さが長さの多項式である、等価な CNF式が存在するはずです。また、変換は、ポリ時間で実行できます。これは正しいです?ϕ1ϕ1\phi_1ϕ2ϕ2\phi_2ϕ1ϕ1\phi_1ϕ1→ϕ2ϕ1→ϕ2\phi_1 \to \phi_2 編集:変更同等にequisatisfiable(であるが、追加の変数がで許可されている)。ϕ2ϕ2\phi_2

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