コンピュータサイエンス

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

1
「分散ハッシュテーブル」という用語の由来
私は現在、コンピューターサイエンスの学位論文のために、分散ハッシュテーブルの領域に関するトピックを研究しています。当然のことながら、私は質問に来ました。分散ハッシュテーブルという用語の由来です。(私はそれをハッシュテーブルの配布から単に導出することはロケット科学ではないことを知っていますが、誰かがどこかでそれを考え出したに違いありません)。 私が読んだほとんどの論文は、一貫したハッシュとそれを利用した最初のアルゴリズムの1つ(Chordなど)に関するオリジナルの論文を参照していました。私は80年代に分散データベースに関する多くの研究があったことを知っているので、この用語、またはおそらくその背後にある考えは、15年以上古いものである必要があると思います。 この質問の背後にある動機は、以前の日付と、おそらく同様のアイデアの別の用語を知っていると、私の研究のために収集できる有用な情報の範囲が広がる可能性があるということです。たとえば、他の人が私がしたいことと同じように何をしたか、どこで失敗したか。など 構造化オーバーレイネットワークを検索キーワードとして使用して、このトピックについてさらに詳しく調べようとしましたが、結果の定義/論文も非常に若いため、結局、研究トピックはそれほど古くないかもしれません。 分散ハッシュテーブルや構造化オーバーレイネットワークのトピックに関する以前の研究(90年代以前かもしれません)を知っている人はいますか?私がもっと歴史的な論文につながるようなキーワードを聞いてよかったです。

1
再発関係の解決
反復関係解く。 この例の本は、を推測してから、であると誤って主張しています。 T(n)=2T(⌊n/2⌋)+nT(n)=2T(⌊n/2⌋)+nT(n) = 2T(\lfloor n/2 \rfloor) + nT(n)=O(n)T(n)=O(n)T(n) = O(n)T(n)≤cnT(n)≤cnT(n) \leq cn T(n)≤2(c⌊n/2⌋)+n≤cn+n=O(n)⟵ wrong!!T(n)≤2(c⌊n/2⌋)+n≤cn+n=O(n)⟵ wrong!!\qquad \begin{align*} T(n) & \leq 2(c \lfloor n/2 \rfloor ) + n \\ &\leq cn +n \\ &=O(n) \quad \quad \quad \longleftarrow \text{ wrong!!} \end{align*} 以来、 constant.Theエラーである私たちが証明していないことである正確な誘導仮説の形を。ccc 上記では、本の内容を正確に引用しています。ここで私の質問は、なぜにを書けないのか、そしてあり、したがってでしょうか?cn+n=dncn+n=dncn+n=dnd=c+1d=c+1d=c+1T(n)≤dnT(n)≤dnT(n) \leq dnT(n)=O(n)T(n)=O(n)T(n) = O(n) 注意: 正解はT(n)=O(nlogn).T(n)=O(nlog⁡n).T(n) =O(n …

6
すべての言語に意味的および論理的なエラーがある可能性はありますか?
私はPHPについて読んでおり、多くの著者がセマンティックエラーと論理エラーを別々に言及しています。セマンティックエラーの例として、不正な数のパラメーターで呼び出される関数が提供されます。これはパーサーによってキャッチされませんが、実行時にエラーをスローします。 しかし、C ++などの言語では、これはコンパイラーによってキャッチされます。その時それは構文エラーだと思います。意味的エラーと論理的エラーの違いは何ですか? たとえば、「コンピュータサイエンティストのように考える方法」では、著者は「論理エラー」と「意味エラー」を同じ意味で使用しています。一方、Visual Basic .NETでは。Primer Plusでは、「論理エラー」は「セマンティックエラー」から分離されています。

1
コンピュータサイエンスと力学系理論の歴史的関係
私はmath.stackexchangeでこの質問をしましたが、ここにリダイレクトされました。 私の質問は、動的システムの分野(および最適制御などの関連分野)と(理論的)コンピュータサイエンスの間に歴史的な関係があるかどうかです。私がこの質問をする理由は、現在主に理論的なコンピューターサイエンスに焦点を当てていると考えられているいくつかの古い主要なジャーナルが、もともとコンピューターサイエンスと動的システムの両方に捧げられていたためです。 そのようなジャーナルの例としては、例えば、Journal of Computer and System Sciencesがあります。主にその始まり(しかし、私はこれらの時間を覚えるには若すぎます)で、コンピューターサイエンスとシステムサイエンスの両方に関する論文を発表しました。どちらの分野も等しく重要であるように思われました。さらに、ジャーナルInformation and Controlの名前も、最適な制御との関係を示唆しています。ただし、このジャーナルは常に理論的なコンピュータサイエンスと情報理論に焦点を当てていました。 したがって、これらのフィールド(今日では、私の知る限り、大幅に異なると見なされている)に共通点があるのか​​、またはこれらのフィールドを関連があると見なす目的があるのか​​と思います。
7 history 

2
変数の数に指数関数的に多くの節がある場合、SATはPにありますか?
少なくとも句を含むように長いCNFを定義します。ここで、はその変数の数です。ましょうは、満足できる長いCNF式です。2ん22ん22^\frac{n}{2}んんnLong-SAT = { ϕ :ϕ長期土={φ:φ\text{Long-SAT}=\{\phi: \phi}}\} なぜなのか知りたいのですが。からへの多項式時間の短縮ができるので、最初はだと思いました。ロング-SAT ∈ P長期土∈P\text{Long-SAT} \in PNPCNPC\text{NPC}土土\text{SAT}長期土長期土\text{Long-SAT} しかし、多分私はを削減できますか?それ、どうやったら出来るの?2-土2-土\text{2-SAT}長期土長期土\text{Long-SAT}

1
貪欲な選択とマトロイド(greedoids)
貪欲なアプローチについての資料を調べていたとき、マトロイド(貪欲)に関する知識が問題への適切なアプローチに役立つことを知りました。マトロイドについて読んだ後、私はマトロイドが何であるかを大まかに理解しました。しかし、与えられた最適化問題を解決するためにマトロイドの概念をどのように使用しますか? たとえば、活動選択問題を考えてみましょう。問題を解決するためにマトロイド理論を使用する手順は何ですか?

1
グラフをテストするアルゴリズム
グラフを与えられたアルゴリズムを探しています GGG そして自然数 ttt、決定する GGG です ttt-推移的。 この問題がP、NP、NPC、またはその複雑さのクラスに関するその他の興味深い事実にあるかどうかを知ることにも興味があります。

2
サボテングラフのエッジのバランスのとれた重み付け
与えられたサボテン、私たちは、このような方法という点で、その辺を重み付けしたいです 各頂点について、頂点に入射するエッジの重みの合計は1以下です。 すべてのエッジの重みの合計が最大化されます。 明らかにその答えは ん2ん2\frac{n}{2} ために んんn 頂点(Σd私= 2 DΣd私=2D\sum d_i = 2D どこ d私d私d_i 1つの頂点の合計であり、 DDDすべてのエッジの合計です)。この境界は、各エッジを1/2に重み付けすることにより、サイクルグラフで達成できます。 木に貪欲なアルゴリズムを見つけました。葉に付随するエッジに1を割り当て、繰り返しパスでグラフからそれらとその近傍を削除します。これにより、サボテンが相互接続された一連のサイクルまで剪定されます。この時点で、残りのサイクルは相互接続されておらず、各エッジに1/2の重みが付けられていると想定しました。これは9/10のテストケースを取得しましたが、もちろん不完全です。 では、サボテンの一般的な問題をどのように解決すればよいでしょうか?私は完全な解決策よりもヒントを好みますが、どちらでもかまいません。 この質問には、InterviewStreet CompanySprintからの問題が含まれます。私はすでに競争しましたが、問題についてのいくつかの考えが欲しいです(解決策はリリースされていません、そして私はこの問題について壁に頭をぶつけています)

2
このグラフ操作に正式な名前はありますか?
ある方法でグラフを変更する小さな関数を書いていて、その操作に正式な名前があるかどうか疑問に思っていました。この操作は2つの異なるエッジを取り、各エッジの既存のノード間に新しいノードを挿入してから、2つの新しいノード間にエッジを追加します。例えば: add new nodes a and b to the graph let edge1 = (x,y), let edge2 = (u,v) delete edge (x,y) create edges (x,a), (a,y) delete edge(u,v) create edges(u,b), (b,v) create edge (a,b)

1
3つの点が同一線上にある場合
セットを考える SSS ポイントの p1、。。、p2p1、。。、p2p_1,..,p_2 セットの3点が同一線上にあるかどうかを判断するための最も効率的なアルゴリズムを提供します。 問題は、一般的な定義から始めましたが、実際に問題を解決し続けることができません。 同一線上の点、一般的には3つの点について何が言えるか a 、b 、ca、b、ca,b,c 距離が同一線上にある場合 d(a 、c )= d(a 、b )+ d(b 、c )d(a、c)=d(a、b)+d(b、c)d(a,c) = d(a,b)+d(b,c) 場合 bbb は間に aaa そして ccc。 素朴なアプローチには O (n (n − 1 )(n − 2 ))= O (ん3)O(ん(ん−1)(ん−2))=O(ん3)O(n(n-1)(n-2))=O(n^3) 時間の複雑さ。 この問題を解決するには、次のステップは何ですか?

4
この関数の時間の複雑さはどれくらいですか?
これは私の講義ノートの例です。この関数は時間の複雑さを伴いますかO (n ログn )O(nlog⁡n)O(n \log n)?。最悪のケースは機能がelse分岐に入るので、時間の複雑性が2つの入れ子になったループログんlog⁡n\log n そして んnn、そうです O (n ログn )O(nlog⁡n)O(n \log n)。私は正しいですか? int j = 3; int k = j * n / 345; if(k > 100){ System.out.println("k: " + k); }else{ for(int i=1; i<n; i*=2){ for(int j=0; j<i; j++){ k++; } } }



4
RAID 6の2番目のパリティビットは簡単な計算ですか?
RAID 6で2番目のパリティビットまたはバイトがどのように設定されるかを理解しようとしています。H。Peter Anvinの論文を読んでいますが、それはガロア体代数に入ります。とにかく、HPの担当者がRAID 6について説明してくれたので、彼女はそれが2回のXOR操作だと思った。これは私には意味がありませんが、私はまだ論文を検討しているので、RAID nではなくRAID 6の単純なものに減少するかどうかはわかりません。2番目のパリティビットは、XORベースの1番目のパリティビットよりもかなり複雑に思えます。本当?

1
スレッドはどのように異なるOSに実装されていますか?
私はこれに出くわしたRobert LoveによるLinuxカーネル開発を読んでいました Linuxは、スレッドのサポートに興味深いアプローチを採用しています。これは、スレッドと通常のプロセスを区別しません。カーネルにとって、すべてのプロセスは同じです。たまたま、リソースを共有するプロセスもあります。 OS(詳細はアスパイア)とカーネルについてはあまり知りません。そのため、上記の引用は、さまざまなOS(少なくともWindows、Linux、Unixなどの一般的なOS)でのスレッド実装について疑問を投げかけました。 誰かがOSでスレッドサポートを提供するためのさまざまな手法を説明できますか?(そしてオプションでそれらを対比する)

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