コンピュータサイエンス

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

2
ピアツーピアシステムを扱うコンピュータサイエンス分野
私は学部生で、学者になることを楽しみにしています。博士課程全体を行い、研究を開始します。私はコンピュータサイエンスに関連するさまざまなことに興味がありますが、最近P2Pテクノロジが本当に私の興味を引いています。博士課程の研究を行うには、コンピューターサイエンスの分野の1つを選択する必要があるという印象があるので、P2Pテクノロジーに興味があるので、その方法を考えているところです。P2Pは分散システムなどの領域に該当しますか?コンピュータサイエンスのどの分野がP2Pシステムに最も関連していますか?

1
順列の空間を探す
n個のオブジェクトと、これらのn個のオブジェクトのn個の順列のセット(合計n個の順列のうち)が与えられます。本当の根本的な順列があり、それはn個の順列のセットの1つであると私は知っていますが、どの順列かはわかりません。しかし、神託者は真の順列を知っています。真の順列を見つけるために、2つのオブジェクト間のペアワイズ比較のためにオラクルをクエリすることができます(真の順列ではbの前にaがありますか?)。 素朴な戦略は、バイナリ検索(すべての段階で順列の半分を排除する「正しい」ペアワイズ比較の質問をする)を行い、log nステップで真の順列を見つけることです。私の質問は、これはいつでもできるのですか?または、O(log n)クエリでは不十分なような、順列の敵対的なセットを見つけることができますか? 編集: 例:オブジェクトが1、2、3、4であるとします。順列のセットは{1243、2341、1342、3412}です。私は本当の順列を知りません。「本当の順列では2は4の前ですか?」と尋ねます。神託はイエスを返します。だから私は最初の2つの順列の間でそれを知っています。次に、「真の順列では1は3の前ですか?」と尋ねます。真の順列を見つけるために。

1
Church-Turingの論文は人工知能にも適用されますか?
Church-Turingの論文では、停止問題を決定するアルゴリズムを設計することは不可能です。 この文脈でのアルゴリズムという言葉には人工知能が含まれているかどうか、つまり、チャーチチューリングの論文は人工知能にも当てはまりますか? この問題を決定するために将来インテリジェンスシステムを設計することは可能ですか、それともチャーチチューリングの論文では、AIが停止問題を決定することもできないでしょうか?

2
シンボリックモデルチェックとは正確には何ですか?
シンボリックモデルチェックは、Kripkeモデルのようなモデルを使用したCTLのような式としての状態セットと遷移関係の表現に基づく状態空間トラバーサルであることを知っています。私は理論を知っています。しかし、実際のアプリケーションを理解するのは難しいと感じています。正確にどこで使用されていますか?それは正確には何をし、どのように機能しますか? 誰かが実際の例で説明し、理論を実践に関連付けることはできますか?

1
ワークスペースなしで、シングルキュービット、Toffoli、およびCNOTゲートからより大きな制御されたノットを作成する
NielsenとChuangによるQuantum ComputationとQuantum Informationの演習4.29 は私を困らせました。 作業キュービットを使用せずに、ゲート()を実装する Toffoli、CNOT、および単一キュービットゲートを含む回路を見つけます。O (n2)O(ん2)O(n^2)Cん(X)Cん(バツ)C^n(X)n > 3ん>3n > 3 これは古典的には実行できないことを理解しました。 私は指数関数的に正確なゲートを使用してそれを行う方法を理解しましたそれ自体の内部に、二重制御から単一制御および平方根の操作構造を回ネストします)。O (2ん)O(2ん)O(2^n)n − 2ん−2n-2 上記の構造を一般化して、制御された操作の線形結合を蓄積することを試みました。たとえば、A、B、Cという3つのコントロールがあり、さまざまなケースのベクトル[0、A、B、C、AB、BC、AC、ABC]を作成すると、次のようになります。 操作を無条件に適用すると、[1、1、1、1、1、1、1、1]が追加されます Aの操作を制御すると、[0、1、0、0、1、1、0、1]が追加されます AをCにXorし、Cの操作を制御すると(xorを元に戻す)、[0、1、0、1、1、1、0、0]が追加されます。 toffoliゲートを介してCにXoring(AおよびB)し、Cの操作を制御すると、[0、0、0、1、1、1、1、1、0]が追加されます。 次に、結果が[0、0、0、0、0、0、0、N]となるまで作成できるさまざまなベクトルを加算(Xのルートを適用)および減算(逆平方根を適用)しようとします。 。 しかし、私はさまざまな壁にぶつかり続けます。たとえば、最終的に大きな倍数になるソリューション(つまり、使用しているゲートが指数関数的に正確になり、これはノーノーだと思います)や、システム間の相互作用のためにシステムを解決できないだけです。 AND / XORを使用して要素を生成し、次に+ / *を非標準として解決するか、または指数のゲート数を作成します。 他に試してみる方法は何ですか?

1
並行して最大独立セットを見つける
グラフで、次のプロセスを実行します。G (V、E)G(V,E)G(V,E) 最初、すべてのノードは色付けされていません。VVV には色付けされていないノードがありますが、色付けされていない各ノードは次のことを行います。 VVV ランダムな実数を選択し、それを近隣のすべてに送信します。 その数を近隣の数と比較します。自分の数が厳密に最小の場合、隣人は自分自身を赤く塗りつぶし、隣人に通知します。 隣人が赤くなった場合、このノードは自分自身を黒く塗ります。 例えば: グラフがabcdeというパスであるとします。 最初のステップの数値が次のとおりであるとします:1-2-0-3-4。 ノードaとcは赤く塗られています。ノードbとdは黒く塗られています。 2番目のステップでは、ノードeのみが未着色のままです。最小限に抑えられているため、赤く塗りつぶされます。 私の質問は:すべてのノードが色付けされる前にこのプロセスが実行する平均ステップ数は何ですか? 私の現在の計算では、推定が導かれますが、これは真実であるにはあまりにも良すぎるようです。ここに計算があります:O (1 )O(1)O(1) d個の隣接ノードを持つノードを考えます。vがその近傍の中で最小になる確率は、1 /(d + 1 )です。これが発生した場合、vとそのすべての近傍が色付けされます。したがって、各ステップで色分けされる頂点の予想数は、(d + 1 )/(d + 1 )= 1ノードあたり1です。したがって、各ステップで色分けされる頂点の予想される総数はO (n )なので、O (1vvvdddvvv1 /(d+ 1 )1/(d+1)1/(d+1)vvv(d+1)/(d+1)=1(d+1)/(d+1)=1(d+1)/(d+1)=1 O(n)O(n)O(n)すべてのノードが色付けされる時間。O(1)O(1)O(1) この分析が間違っている場合(おそらくそうです)、実際のステップ数はいくつですか? 編集:@JukkaSuomelaによって指摘されているように、上記のアルゴリズムはMetivier et al、2011によるものであり、これらの講義ノートで説明および分析されています。彼らは、実行時間がことを証明します。O(logn)O(log⁡n)O(\log n) しかし、私はまだこの分析がタイトであると確信していません。チェックしたすべてのグラフで、アルゴリズムは予想時間内に完了したようです。O(1)O(1)O(1) 私の質問は今です:このアルゴリズムが実際に平均でステップを必要とする最悪の場合のグラフは何ですか?O(logn)O(log⁡n)O(\log n)

2
ファイバーが複数のプロセッサを利用できないのはなぜですか?
ファイバーとスレッドの違いは、ファイバーが協調的にスケジュールされるのに対し、スレッドは先制的にスケジュールされることです。スケジューラのポイントは、CPUを「タイムシェアリング」することによって、それ以外の場合はシリアルプロセッサリソースを並列に動作させる方法のように見えます。ただし、各コアが独自のスレッドを実行しているデュアルコアプロセッサでは、シングルプロセッサが「タイムシェアリング」されていないため、一方のスレッドの実行を一時停止してもう一方のスレッドを続行する必要がないと思います。 それで、スレッドとファイバーの違いがスケジューラーによって中断される方法であり、物理的に別々のコアで実行しているときに中断する必要がない場合、スレッドが可能なときにファイバーが複数のプロセッサーコアを利用できないのはなぜですか? 混乱の原因: ..主にウィキペディア http://en.wikipedia.org/wiki/Fiber_%28computer_science%29 欠点は、ファイバーがプリエンプティブスレッドを使用せずにマルチプロセッサマシンを利用できないことです。 http://en.wikipedia.org/wiki/Computer_multitasking#Multithreading ... [ファイバー]は、複数のプロセッサを搭載したマシンのスレッドの利点の一部またはすべてを失う傾向があります。

2
whileループの理論と実装をつなぐ方法は?
私は教育目的で自分の小さなプログラミング言語に取り組んでおり、少し問題に遭遇しました。それにはいくつかの異なる解決策がありますが、それらはすべて洗練されていないように見えます-私が理解している限りでは不要です。しかし、私が持っている本やグーグル検索を読んでも、エレガントな解決策を見つけることができません。 だから問題は、私が理解しているように、基本的なラムダ計算を構築していることです。true / falseを抽象用語として定義しました。これらを関数と組み合わせて、if / then / elseの動作を実行できます。問題はループで発生します。再帰によって基本的なwhileループを定義できますが、実際にはスタックオーバーフローが発生します。私が理解しているように、通常の解決策はテールコールの最適化を実行することですが、どうすればよいかわかりません。条件文は言語で定義されています。そのため、コンパイラーは、whileループの本体が末尾にあることを認識しません。 ドラゴンブックは、ラベルとゴトがあると仮定してループを実装することに焦点を当てています。私は確かにそれをすることができました。ループ構造を組み込まない他の言語は、少なくとも条件文を組み込んでからTCOを行うように見えます。そして、私も確かにそれを行うことができました。しかし、私の理解では、抽象化を適用して削減を実行できる限り、ループ(およびその他すべて)はこれらの基本ブロックから構築できるはずです。 それで私は何が欠けていますか?それとも、「XとYがあれば何でもモデル化できる」が「実際のコンピュータでXとYがあれば何でもモデル化できる」とは異なり、実用的に組み込みが必要なケースの1つですか?目的?

5
オントロジーの実際の用途は何ですか?
オントロジーに関する多くの論文や本を読んだことがあり、実際のプロジェクトでそれらがどのように使用されているかを理解しようとしていますか? たとえば、サッカープレーヤーロボットのオントロジーをどのように定義し、インテリジェントアーキテクチャにするためにコグニティブアーキテクチャで使用できますか? オントロジーは、その知識のドメイン内の用語間の関係(たとえば、ボールとフットの単語と物理的ルールの定義間の関係、およびフットとボールの動きとの関係など)または戦術、戦略、および戦術のさまざまな混合の関係ですか? 実際のプロジェクトでのオントロジーの使用法の明確な例、およびそれらを強化するためのACT-Rなどの認知アーキテクチャとの組み合わせの使用法はありますか認知アーキテクチャでは?

1
NP∩co-NPとNPIとの関係について何を知っていますか?
TAは本日、NPと共同NPについて質問するために立ち寄りました。私も困惑したところに行きました。P、NPI、NP、Co-NPのベン図は、P≠NP(他のケースは退屈です)と仮定するとどのように見えますか? 4つの基本的なオプションがあるようです。 NP∩co-NP = P 特に、co-NPI∩NPI =∅ NP∩co-NP = P∪NPI 特に、co-NPI = NPI? NP∩co-NP⊃P∪NPI∪co-NPI この場合のフォローアップの質問は、NPCとco-NPCがどのように関連しているかです。重複はありますか? 何か他のもの、それは特にNPIからのいくつかの問題はco-NPにあり、他はそうではありません。 どちらが正しいか、少なくともどれが正しくないかを知っていますか? NPIとNP∩co-NPの複雑な動物園のエントリは、何かが知られているという希望を抱かせるものではありませんが、そこに浮かんでいる他のすべてのクラス(およびこの質問への影響)を理解するのに十分なほど複雑な理論には流暢ではありません。 。

1
組み合わせ論理回路と計算理論
私は、組み合わせ論理回路(論理ゲートのみに基づくコンピューター)を、計算理論で最近学んだすべてのものとリンクしようとしています。 組み合わせ論理回路が有限状態機械と同じ方法で計算を実装できるかどうか疑問に思っていました。彼らは根本的に異なるようです: ただし、有限状態機械には、状態の形で明確に定義されたメモリがあります。ただし、組み合わせ論理回路には明確に定義されたメモリがないため、何らかのメモリを必要とするアルゴリズムを実装するには、シリアル接続の奇妙な方法(前の加算器のが次の画像の現在の加算器のにどのように接続かを参照してください)。 CoutCoutC_{out}CinCinC_{in} 根本的に異なるように見えるかもしれませんが、どちらも計算を行っているようです。たとえば、どちらもバイナリ加算(さらにはバイナリ乗算)のアルゴリズムを実装できますが、実装が異なる場合があります。 FSM: 組み合わせ論理回路 (C、および、Carryを表します):CinCinC_{in}CoutCoutC_{out} すべてのFSMを対応する組み合わせ論理回路に変換できると私は(まだ非常に不確かですが)考えています。 だから、私は自分自身に尋ねています: 組み合わせ論理回路もまた、瞬間的な種類の計算モデルと見なすことができますか?空間の複雑性や計算可能性など、計算可能性理論や計算複雑性理論で学んだすべての概念をそれに適用できますか? 一方で、基本的な操作(テープの読み取り/書き込み、関数の削減、論理プログラミングパラダイムの証明探索のステップなど)がないため、計算のモデルとしては適さないようです。瞬時にそれらの計算。 しかし、その一方で、あらゆる種類の計算をモデル化できるため(バイナリ加算は1つの例です)、抽象的に表示できます(真理値表と論理ゲートとそれを実装する可能性のある物理回路を忘れる)。 それで、皆さんはどう思いますか? また、それが本当に(瞬間的な種類の)計算モデルであると考えることができる場合、他の類似した(瞬間的な種類の)計算モデルの例はありますか? よろしくお願いします

2
コルモゴロフ非圧縮性法を使用した平均ケースアルゴリズム分析
非圧縮性メソッドは、平均的なケースのアルゴリズムの分析を簡素化すると言われています。私が理解しているところによると、これは、そのアルゴリズムの可能な入力のすべての組み合わせを計算してから、平均的な複雑さを導き出す必要がないためです。代わりに、単一の非圧縮文字列が入力として使用されます。非圧縮文字列が一般的であるため、この入力は平均的なケースの正確な近似として機能できると想定できます。 非圧縮性メソッドを実際にアルゴリズムに適用することに夢中です。余談ですが、私は数学者ではありませんが、この理論は日常のプログラミングに実用的であると思います。 最終的に、特定のアルゴリズムの平凡なケースでも複雑なケースでも、平均的なケースを推定する方法を学びたいと思います。誰かがこの方法を単純なアルゴリズムにどのように適用できるかを私に実演していただけませんか?たとえば、入力文字列Sが与えられた場合、すべての一意の文字をSに格納し、それぞれを個別に出力します。 void uniqueChars(String s) { char[] chars = chars[ s.length() ] int free_idx = 0; for (int i = 0; i < s.length(); i++) { if (! s[i] in chars) { chars[free_idx] = s[i] free_idx++; } } for (int i = 0; i < chars.length(); i++) { print …


3
「最小」ですか、つまり、はが
仮定ΠΠ\Pi決定可能決定問題です。 DOES Π∉NPΠ∉NP\Pi\not \in NP暗示ΠΠ\PiあるNPNPNP -hard? 編集:\ Pi \ in coNP \ setminus NPが存在する場合Π∈coNP∖NPΠ∈coNP∖NP\Pi\in coNP\setminus NP、これで完了です。未知の仮定なしにクレームに異議を唱えることはできますか?

1
一意の最小全域木に必要かつ十分な条件
これは、Jeff Erickson Lecture 20:Minimum Spanning Trees [Fa'13] による優れた講義ノートからの運動問題(例3)です。 次の条件が満たされる場合に限り、エッジ重み付けされたグラフに一意の最小全域木があることを証明します。GGG の頂点を2つのサブセットに分割する場合、各サブセットに1つの端点がある最小重みのエッジは一意です。GGG 任意のサイクルの最大重みエッジは一意です。GGG "⇒⇒\Rightarrow」方向と次のグラフます。GGG GGGには独自のMSTがあります。ただし、パーティションおよび{ A }{あ}\{A\}{ B 、C}{B、C}\{B,C\}場合、最小重みのクロッシングエッジは一意ではありません。 誤解した点はありますか?または、定理に欠陥がある場合、どうすれば修正できますか?

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