コンピュータサイエンス

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

2
オラクルチューリングマシンの使用はどのように矛盾を引き起こさないのですか?
Oracle Turing Machinesを使用する場合、複雑さのクラスについて健全で有効な発言を継続して行うにはどうすればよいですか?私の理解によると(主題に関する導入教科書で与えられた定義に基づいて)、Oracleチューリングマシンは、1つの計算ステップでOracle言語に関する文字列のメンバーシップステータスを決定できます。ただし、よく使用されるオラクル言語は、一定の時間で解決することはおそらく不可能です(たとえば、EXPTIMEで完全なオラクルを考えてみてください)。私にはこれは矛盾に「扉を開く」ようなもので、結局のところ、矛盾から何でも起こります。

2
アナログコンピューターとチャーチチューリング論文
Nielsen&Chuang、Quantum Computation and Quantum Information、10周年記念版、5ページから引用したい(強調は私のもの): 強力なチャーチ・チューリング論文に対する課題の1つのクラスは、アナログ計算の分野から来ています。チューリング以来、研究者の多くの異なるチームは、特定の種類のアナログコンピューターがチューリングマシンでは効率的な解決策がないと考えられている問題を効率的に解決できることに気づきました。一見すると、これらのアナログコンピュータは、チャーチチューリング論文の強力な形式に違反しているように見えます。残念ながら、アナログ計算では、アナログコンピュータのノイズの存在について現実的な仮定が行われると、既知のすべてのインスタンスでその力が失われることがわかりました。チューリングマシンでは効率的に解決できない問題を効率的に解決することはできません。このレッスン–計算モデルの効率を評価する際に現実的なノイズの影響を考慮に入れる必要がある–は、量子計算と量子情報の初期の大きな課題の1つであり、量子誤差の理論の開発によってうまく対処された課題です。 -修正コードとフォールトトレラントな量子計算。したがって、アナログ計算とは異なり、量子計算は原則として有限量のノイズを許容でき、その計算上の利点を保持できます。 これは、ノイズが問題の大きさよりも速くスケーリングすることを示しているのでしょうか、または誰かが私を正しい方向に向けて、これらのスケーリング制限が基本的であるか、単に「エンジニアリングの問題」であるかについて詳しく知ることができますか? 明確にするために、私はノイズのためにアナログコンピュータが効率的にチューリングマシンに勝てないかどうか尋ねています。

3
キーボードエコー中にCPUが関与するのはなぜですか?
現在、コンピューターサイエンスの試験に向けて勉強していて、やや困惑している概念に出くわしました。 キーボードでキーを入力すると、ASCII文字がCPUに送信されます。この文字を受け取ると、CPUは同じ文字を画面に出力します。このプロセスはエコーと呼ばれます。CPUを使用する代わりに、このエコープロセスをキーボード/スクリーンユニット内で実行して、CPUが他の有用な作業を自由に行えるようにしないのはなぜですか。 今、直感的には、キーボード/画面ユニットが定義されておらず、CPUが相互接続ネットワークを介して画面とキーボードの間の通信を担当するデバイスであるためです。しかし、キーボード/スクリーンユニットが言及されているという事実は、重要な概念が欠けていることを意味しているように感じるかもしれません。これは事実ですか?なぜエコープロセスにCPUを使用するのですか?

1
忘却型RAMとは何ですか?
誰かが私に正確に気付かないRAMとは何かを私に説明できますか? 次のような説明がわかりましたが、技術的な側面を理解したいと思います。 暗号化は、プライバシーを確​​保するのに必ずしも十分ではありません。攻撃者が暗号化されたストレージへのアクセスパターンを観察できる場合でも、アプリケーションの動作に関する機密情報を知ることができます。Oblivious RAMは、アクセスされているメモリを継続的にシャッフルすることでこの問題を解決します。これにより、アクセスされているデータ、または以前にアクセスされたデータを完全に隠すことができます。

1
動的グラフの関連コンポーネント情報を維持するための最も効率的なアルゴリズムとデータ構造は何ですか?
無向有限スパースグラフがあり、次のクエリを効率的に実行できる必要があるとします。 私sCo n n e c te d(N1、N2)私sCoんんected(N1、N2)IsConnected(N_1, N_2) -戻るとの間の経路がある場合と、そうでなければN 1 N 2 FTTTN1N1N_1N2N2N_2FFF Co n n e c t e dNo de s (N)CoんんectedNodes(N)ConnectedNodes(N)から到達可能なノードのセットを返しますNNN これは、グラフの接続されたコンポーネントを事前に計算することで簡単に実行できます。どちらのクエリも時間で実行できます。O (1 )O(1)O(1) エッジを任意に追加できるようにする必要がある場合A ddEdge (N1、N2)あddEdge(N1、N2)AddEdge(N_1, N_2) -次に、コンポーネントを分離セットデータ構造に格納できます。エッジが追加されるたびに、異なるコンポーネントの2つのノードを接続する場合、それらのコンポーネントをマージします。これが追加されますO (1 )O(1)O(1)のコストA ddEdgeあddEdgeAddEdgeとO (私nverseAckermann(|Nodes|))O(InverseAckermann(|Nodes|))O(InverseAckermann(|Nodes|))へのコストIsConnectedIsConnectedIsConnectedとCo n n e ctedNode sCoんんectedNodesConnectedNodes(同様かもしれませんO (1 )O(1)O(1))。 エッジを任意に削除できるようにする必要がある場合、この状況を処理するのに最適なデータ構造は何ですか?知っていますか?要約すると、次の操作を効率的にサポートする必要があります。 私s Co n n e …

1
UNIQUE k-SATがPにあることを示している場合、それはP = NPを意味していますか?
Valiant&Vaziraniは、SATが多項式時間のランダム化された確率的削減の下でUNIQUE SATに削減可能であることを証明しました。Calabroのら。UNIQUE k-SATはk-SATと同じくらい難しいことを示しました。ここで問題は、誰かがUNIQUE k-SATがPにあることを示した場合、それはP = NPを意味するのでしょうか? 参考文献 LG ValiantとVV Vaziraniは、「NPはユニークなソリューションを検出するのと同じくらい簡単です。」Theoretical Computer Science 47:85–93、1986。(ScienceDirectのPDF。) C. Calabro、R。Impagliazzo、V。Kabanets、およびR. Paturi、「ユニークなk-SATの複雑さ:k-CNFの分離補題」。 コンピュータとシステム科学誌 74(3):386-393、2008.(PDF ACMのデジタル図書館で、無料のPDF。)

3
関数型プログラミングには不変性が本当に存在しますか?
私は日常生活でプログラマーとして働いており、流行の言語(Python、Java、Cなど)をすべて使用していますが、関数型プログラミングが何であるかについては、まだはっきりとはわかりません。私が読んだことから、関数型言語の1つの特性は、データ構造が不変であることです。私にとってこれだけでも多くの疑問を投げかけます。しかし、最初に、不変性について私が理解していることについて少し書きます。私が間違っている場合は、自由に修正してください。 不変性についての私の理解: プログラムが起動すると、固定データを含む固定データ構造が含まれます これらの構造に新しいデータを追加することはできません コードに変数はありません すでにデータまたは現在計算されているデータから単に「コピー」することができます 上記すべてのため、不変性はプログラムに非常に大きなスペースの複雑さを追加 私の質問: データ構造がそのまま(不変)のままであると想定されている場合、リストに新しいアイテムを追加するにはどうすればよいですか? 新しいデータを取得できないプログラムがあることのポイントは何ですか?プログラムにデータを送りたいセンサーがコンピューターに接続されているとしましょう。これは、受信データをどこにも保存できないことを意味しますか? その場合、関数型プログラミングは機械学習にどのように役立ちますか?機械学習は、プログラムの「知覚」を更新するという仮定から構築されるため、新しいデータを保存します。

2
任意精度の整数平方根アルゴリズム?
nビット整数の平方根のフロアを計算するための既知のサブ二次アルゴリズムはありますか? 素朴なアルゴリズムは次のようなものです def sqrt(x): r = 0 i = x.bit_length() // 2 while i >= 0: inc = (r << (i+1)) + (1 << (i*2)) if inc <= x: x -= inc r += 1 << i i -= 1 return r これにはO(n)反復が必要であり、各反復にはO(n)時間である加算が含まれるため、O(n^2)全体として時間です。もっと速いものはありますか?乗算の場合、2次時間よりも優れた特別なアルゴリズムがあることは知っていますが、平方根については何も見つかりません。

1
n個の文字列が与えられた場合、それらの1つは別の部分文字列ですか?
nnn文字列のコレクションが与えられたとしますS1,…,SnS1,…,SnS_1,\dots,S_n。これらの文字列のいずれかがコレクション内の他の文字列の部分文字列であるかどうかを知りたいのですが。つまり、次のタスクのアルゴリズムが必要です。 入力:S1,…,SnS1,…,SnS_1,\dots,S_n 出力:i,ji,ji,jようなSiSiS_iの部分文字列であるSjSjS_jとi≠ji≠ji\ne j、またはNoneがない場合は、このようなi,ji,ji,jが存在 これのための効率的なアルゴリズムはありますか? 「部分文字列」を「接頭辞」で置き換える場合、効率的なアルゴリズムがあります(文字列を並べ替えてから、線形スキャンを実行して隣接する文字列を比較します。並べ替えにより、部分文字列が確実に隣接します)。しかし、文字列が他の文字列の部分文字列であるかどうかをテストすることは、より困難に思えます。単純なアルゴリズムは、すべてのペアを反復処理することですが、これにはΘ (n 2)サブストリングテストが必要です。より効率的なアルゴリズムはありますか?i,ji,ji,jΘ(n2)Θ(n2)\Theta(n^2) これを「すべてのペアの部分文字列テスト」などと呼ぶことができると思います。 私の最終的な目標は、コレクション内の何かの部分文字列である各文字列を削除することにより、コレクションをプルーニングして文字列が他の文字列の部分文字列にならないようにすることです。

3
データフロー分析、抽象的な解釈、および型推論の同等性?
最近の質問に対する @Babouの回答は、データフロー分析の同等性(推論または証明できる事実と推論アルゴリズムを実行する時間の複雑さの両方の観点から)に関する論文を読んだことを思い出します、抽象解釈、および型推論。 一部のサブケース(フォワードコンテキスト依存の手続き間データフロー分析と抽象的な解釈の間など)では、同等性は私には比較的明白ですが、他の比較については問題がより微妙に思えます。たとえば、Hindley-Milner型推論を使用して、フロー依存のデータフロー分析で証明できるいくつかのプロパティを証明する方法を理解できません。 データフロー分析、抽象的な解釈、および型推論の間の同等性(または違い)について議論している独創的なリファレンスは何ですか?

1
問題の名前は何ですか?(グラフを3つのカバーに分割)
この問題に名前があるかどうか疑問に思いました: その縁、赤、青、緑に着色されている、単純なグラフ所与、頂点着色あるそのようなすべてのエッジすなわち同じ色の端点がありますか?G=(V,B∪R∪G)G=(V,B∪R∪G)G=(V,B\cup R\cup G)c:V→{B,R,G}c:V→{B,R,G}c:V\to \{B,R,G\} また、これはNP完全であることがわかっていますか? これは、CSP(または2SATの一般化)の特殊​​なケースと見なすこともできます。各制約は、3つの値のいずれかを取る2つの変数の分離であり、同じ変数ペアに2つの制約はありません。

1
逆伝播アルゴリズムの運動量項はどのように機能しますか?
運動量項を含むバックプロパゲーションアルゴリズムを使用してニューラルネットワークの重みを更新する場合、学習率を運動量項にも適用する必要がありますか? 運動量の使用に関して私が見つけることができるほとんどの情報は、次のような方程式を持っています。 W′i=Wi−αΔWi+μΔWi−1Wi′=Wi−αΔWi+μΔWi−1W_{i}' = W_{i} - \alpha \Delta W_i + \mu \Delta W_{i-1} ここで、は学習率、は運動量項です。αα\alphaμμ\mu 場合用語がより大きくなる次の繰り返しで、その後長期前の反復からは、現在のものよりも重量に大きな影響を持つことになります。μμ\muαα\alphaΔWΔW\Delta W これは勢い用語の目的ですか?または方程式はもっとこのように見えるべきですか? W′i=Wi−α(ΔWi+μΔWi−1)Wi′=Wi−α(ΔWi+μΔWi−1)W_{i}' = W_{i} - \alpha( \Delta W_i + \mu \Delta W_{i-1}) すなわち。すべてを学習率でスケーリングしていますか?

1
Software Foundationsによるbaz_num_elts演習
私はSoftware Foundationsで次の演習に参加しています。 (** **** Exercise: 2 stars (baz_num_elts) *) (** Consider the following inductive definition: *) Inductive baz : Type := | x : baz -> baz | y : baz -> bool -> baz. (** How _many_ elements does the type [baz] have? (* FILL IN HERE *) [] …
9 coq 

1
MMUを使用しないプロセッサ用のマルチタスクオペレーティングシステムの作成
一部のARMプロセッサ用の趣味のオペレーティングシステムを書くことを考えています。ARM MPUを搭載した人気のあるシングルボードコンピューターはたくさんあるので、そのうちの1つを購入したかっただけです(より多くのオープンドキュメントがあるコンピューターを選択)。本当に十分なメモリを備えたボードでさえ、メモリ管理ユニットを備えたMPUを持っていないことに気づいたとき、私は驚きました。 私は常にi386 +プロセッサで作業しており、それ以外は何もしていないため(一部のMicrochip PICを除く)、私は混乱しており、書かれたOSと比較すると機能が制限されない機能するオペレーティングシステムを書くことができるかどうかわかりませんMMUを備えたMPU用。 MMUを「置換」または「シミュレーション」するためのいくつかの解決策を考えることができ、いくつか質問があります。 16ビットモードと32ビットモードのIntelプロセッサでは、セグメントとセグメントセレクターを使用して、異なるタスクで異なるメモリブロックを使用する方法があります。これは、x86でタスクスイッチを実行するときに、セグメントレジスタの内容を変更することでメモリ空間を変更できることを意味します。ARMアーキテクチャで使用できるメモリセグメンテーションの一般的な概念はありますか? 実行可能ファイルの代わりにリンクされたオブジェクトファイルをロードすることで、ページング構造を使用してメモリをマップした場合と同じ方法で、再配置(修正)または位置独立コードを使用してメモリの一部にタスクをポイントできます。これで十分でしょうか? ARMプロセッサのメモリ保護ユニットについても読んだことがあります。これらは役に立ちますか? MMUのないシステムでタスクを管理する「通常の」方法はありますか?

1
確率分布と計算の複雑さ
この質問は、確率論と計算の複雑さの交差についてです。重要な観察の1つは、一部の分布は他の分布よりも生成が容易であることです。たとえば、問題 数所与、一様に分布数を返す私はで0 ≤ iが&lt; N。nnniii0≤i&lt;n0≤i&lt;n0 \leq i < n 解決は簡単です。一方、次の問題は、はるかに困難であるか、そのように見えます。 数値nnn、iがペアノ演算で長さnの有効な証明(のゲーデル数)になるような数値返します。さらに、そのような証明の数がp r (n )である場合、長さnの特定の証明を取得する確率 は1でなければなりません。iiiiiipr(n)pr(n)pr(n)nnn1pr(n)1pr(n)\frac{1}{pr(n)}。 これは、確率分布には計算の複雑さの概念が伴うことを私に示唆しています。さらに、この複雑さはおそらく、潜在的な決定問題(PPP、EXPEXPEXPなどの再帰的、再帰的、再帰的に列挙可能、またはそれより悪いかどうか)と密接に関連しています。 私の質問は、確率分布の計算の複雑さをどのように定義するか、特に根本的な決定問題が決定可能でない場合です。これはすでに調査されていると思いますが、どこを見ればよいかわかりません。

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