コンピュータサイエンス

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

1
教科書相互排除アルゴリズムの実際的な関連性は何ですか?
相互排除アルゴリズムについてはかなりの量の研究が行われています。たとえば、その多くは、マルチプロセッサプログラミングのような古典的な教科書で紹介されており、章全体がそれらに向けられています。 一般的な言語とOSが提供する同期プリミティブ(たとえば、pthreadライブラリによって提供される)を使用するのではなく、コンカレントシステムのエンジニアリング中にこれらのアルゴリズムが必要になる可能性がある実際の状況は何でしょうか。 標準のプリミティブが特別に調整されていないと思われる多くの特殊なケースを考えることができます。 -そのような状況での実践において、教科書の相互排除アルゴリズムのいずれかが大幅に改善されていますか? 簡単に言えば、どの相互排除アルゴリズムが、並行処理プリミティブの典型的な言語提供ライブラリをすでに自由に使えるエンジニアに実際に関連していますか?


1
解決漸化式
アルゴリズムの時間の複雑さが入力のスケールで多対数であることを証明したいと思います。 このアルゴリズムの漸化式は、T(2n)≤T(n)+T(na)T(2n)≤T(n)+T(na)T(2n) \leq T(n) + T(n^a)ここで、∈ (0 、1 )。a∈(0,1)a∈(0,1)a\in(0,1) と思わいくつかのためのに依存します。しかし、私はこの不平等を証明することはできません。この再発関係を解決するにはどうすればよいですか? β AT(n)≤logβnT(n)≤logβ⁡nT(n) \leq \log^{\beta}{n}ββ\betaaaa nの上限の多重対数を取得したいだけです。

2
配列の最小差を見つけるアルゴリズム
長さの整数の配列が与えられたときに、配列内の2つの整数間の最小差を見つけるアルゴリズムが必要です。nnn そのようなアルゴリズムの1つは、配列を並べ替えて、隣接する数値のペアをチェックすることです。これには時間がかかります。O(nlogn)O(nlog⁡n)O(n\log n) アルゴリズムなど、より高速な方法はありますか?O(n)O(n)O(n)

1
ハイパーキューブ内のすべてのグリッドポイントをアルゴリズム的に生成する
\def\R{\mathbb{R}}\def\Z{\mathbb{Z}}\def\n#1{\|#1\|_\infty}問題は計算数学から直接生じ、次のように述べた: 正則行列所与の、すべてのベクトルが効果的に見つけるよう、\ N {MVは}の最大成分であります係数のベクトル。M∈ Rd× dM∈Rd×dM\in\R^{d\times d}V ∈ Zdv∈Zdv\in\Z^d∥ MV ∥∞≤ 1‖Mv‖∞≤1\n{Mv}\leq1∥ MV ∥∞‖Mv‖∞\n{Mv} 以下にアルゴリズムを示しますが、グリッドポイントの数よりもはるかに多くのステップがあるため、非常に非効率的です。私の場合はd = 5でも耐えられd= 5d=5d=5ますが、d= 6d=6d=6では完全に失敗します。時間はあまりありません。また、高次元にも対応したいです。 私の現在のアルゴリズムは以下に基づいています(免責事項:より多くの数学が含まれています):最初に、\ n {M ^ {-1}}を計算し∥ M− 1∥∞‖M−1‖∞\n{M^{-1}}ます。次に、\ n {v} \ leq \ n {M ^ {-1}} \ n {Mv} \ leq \ n {M ^ {-1}}が観察され∥ V∥∞≤ ∥はM− 1∥∞∥Mv∥∞≤ ∥はM− 1∥∞‖v‖∞≤‖M−1‖∞‖Mv‖∞≤‖M−1‖∞\n{v}\leq\n{M^{-1}}\n{Mv}\leq\n{M^{-1}}ます。つまり、L …

1
DCFLは逆転の下で閉鎖されますか?
このチャートによれば、DCFLは逆転の下でクローズされています。 ただし、これについての直観的な証明(制御する有限状態マシンの矢印を逆にし、プッシュとポップを切り替える)は、初期状態から取得するnull遷移を選択する際の非決定性に依存しているようです(新しい初期状態には、すべての古い最終状態へのnull遷移が含まれます)。 これにより、元のDPDAに複数の最終状態がある場合は常に、DPDAの「リバースPDA」が非決定性になります。 私の議論の誤りは何ですか?または、これを証明する別の方法はありますか?

1
NCの指数関数的アナログ?
Nickのクラス(NC)は、多項式数のプロセッサを使用して、多対数時間で決定できる問題のクラスです。 指数関数的なアナログについて知りたい。これは、指数関数的な数のプロセッサを使用して多項式時間で決定できる問題をカバーするだろう。 私が探しているのは、このクラスの名前と、このクラスと他の複雑性クラスとの間の既知の関係、またはクラスの正規の問題です。NPとco-NPが含まれるのは簡単なようですが、PSPACE内に含まれていると思いますが、それ以外についてはよくわかりません。

4
(ビット)加算とシフトをプリミティブとして使用して平方根を計算する
質問:ビットの自然数与えられた、(ビット)の加算とシフトのみを使用してを計算する方法は?nnnNNN⌈N−−√⌉⌈N⌉\lceil \sqrt{N} \rceilO(n)O(n)O(n) ヒントは、バイナリ検索を使用することです。しかし、必要な複雑さを実現できませんでした(を取得しました)。O(n2)O(n2)O(n^2) それはどういう意味ですかusing only $O(n)$ (bit) additions and shifts: これはアルゴリズムブックの練習問題です。 私の意見では、それは2を追加し、言うことを意味しビットは、自然数は、コストとシフトする、と言うビットは、自然数もコスト。次に、そのような操作を回しか使用できません。 比較のコストについては触れられていません。私はそれを無視することができると思います、または2つ、たとえばビットの自然数を比較することもを要すると仮定することができます。nnnO(1)O(1)O(1)nnnO(1)O(1)O(1)O(1)O(1)O(1)O(n)O(n)O(n)nnnO(1)O(1)O(1) 私のアルゴリズムO(n2)O(n2)O(n^2): ビットの数の範囲を決定の: したがって、 t_1 \ triangleq \ lfloor \ frac {n-1} {2} \ rfloor + 1 \ le t \ le \ lceil \ frac {n} {2} \ rceil + 1 \ triangleq t_2。ttt⌈N−−√⌉⌈N⌉\lceil \sqrt{N} \rceil2n−12≤N−−√≤2n2⇒2⌊n−12⌋≤⌈N−−√⌉≤2⌈n2⌉2n−12≤N≤2n2⇒2⌊n−12⌋≤⌈N⌉≤2⌈n2⌉2^{\frac{n-1}{2}} …

2
ハッシュテーブルのサイズ変更時にサイズ変更のカスケードを回避するにはどうすればよいですか?
個別のチェーンや線形/二次プローブなどの従来の衝突解決方法では、キーのプローブシーケンスを任意に長くすることができます。テーブルの負荷係数を低く維持することで、キーの確率を短くして、高い確率で維持できます。したがって、再ハッシュ中の衝突は負荷率に影響を与えないため、問題にはなりません。 ただし、カッコウハッシュ(および最悪の場合のO(1)ルックアップ時間を提供する他の方法)では、キーのプローブシーケンスが長くなりすぎると、サイズ変更が発生する必要があります。しかし、リハッシュ中にキーがシャッフルされると、1つのキーに対して長すぎるプローブシーケンスが作成され、別のサイズ変更が必要になる場合があります。確率は小さいですが、特に優れたハッシュ関数を使用すると、確率は低くなります。 再ハッシュ中に完全なハッシュ関数を明示的に生成するのではなく、この方法でサイズ変更をカスケードできないようにする方法はありますか?おそらく特定の衝突解決スキームに固有ですか?これまでに出会った文献は、問題を完全に覆い隠しているようです。ハッシュテーブルを成長させるだけでなく、縮小することにも興味があることを覚えておいてください。

3
コンピューターは他のことをしながらどのようにビデオを再生しますか?
コンピューターでのビデオ再生はどのように行われますか?ユーザーがYouTubeコメントフィールドに入力するなどの別のアクティビティを実行すると、ビデオの再生が続行されるため、CPUだけに依存しているわけではありません。ストリーミングビデオの場合、このタスクはさらに複雑に思われますが、データはおそらくネットワークインターフェイスからビデオ/グラフィックスコントローラーに転送される必要があります。 編集:私は、CPUが常に複数のプロセスとスレッドを切り替えることを理解していることを明確にすべきでした。私の質問は、ビデオの再生についてより具体的にすることを意図していた。ビデオ処理はグラフィックチップセット/カードで行われますか?それらは通常バッファリングを提供していますか?または、すべてを他のタスクのために時間を割いてシングルコアCPUで処理できますか、またはローエンドCPUが(ネットワークではなく)遅延なしにビデオを再生できると思うのは間違っていますか?

2
あるセットの要素と別のセットの要素を一意に組み合わせることにより、合計距離の最小値を見つける
入力として、私はR Nに2セットのポイントを持っています。通常、大きなNの場合、たとえばN = 40です。両方のセットにm個の要素があるとします。 S = s 1 ... s m T = t 1 ... t m 意味的には両方のセットは等しいですが、R ^ Nポイントの(あらゆる種類の)ノイズにより、意味的に同じであるはずの要素の距離は0よりも大きくなります。 私が見つけたいのはmのタプル(s i、t j)で、距離の合計(s i、t j)が最小化され、k = 1のタプルのセットでs kとt kが1回だけ発生します。 ... m 基本的に(i、j)は、合計距離を最小限に抑えながら、互いにぶつからないチェス盤の塔として選択する必要があります。 言い換えれば、SとTの間の「アイデンティティマップのようなものですが、ノイズに対してロバスト」な1対1のマップを見つけたいのです。距離の測定は、類似した要素の類似性を示す良い指標であると想定しています。 基本的に私は1 ... Nの順列を見つける必要があります。したがって、この問題はTSPに非常に似ているため、NP困難またはNP完全のどちらかであると思います。ただし、TSPの問題をここでの問題のサブセットに書き換えることはできません。 この問題は、大きなNに対して現実的に解決できますか?この問題に名前はありますか?実現可能な解決策は何でしょうか?合計距離よりも優れている可能性のある別の基準はありますか? 私は貪欲なアプローチを考えました、Dを距離の行列としましょう、d ij = distance(s i、t j)。 T = {} while D is …

2
非循環NFAで受け入れられた単語の数を数える
してみましょう非環式NFAなります。MMM は非環状なので、は有限です。MMML(M)L(M)L(M) を計算できますか 多項式時間で?|L(M)||L(M)||L(M)| そうでない場合、近似できますか? ワード数はの受け入れパスの数と同じではないことに注意してください。これは簡単に計算できます。MMM 機能しない明らかなアプローチの1つについて説明します。NFAをDFA(これも非循環になります)に変換し、DFA内の受け入れパスの数を数えます。これは多項式時間アルゴリズムにはなりません。変換によってDFAのサイズが指数関数的に増大する可能性があるためです。

5
base 80を使用したファイルの圧縮
80ベースの番号である独自の番号付けシステムを使用してファイルサイズを圧縮したいのですが、これが可能かどうかを本当に知りたいのですか?16進数はA、B、C、D、E、Fのような記号を使用して10、11、12、13、14、15を表すことを学びました-そしてそれは私が自分の番号付けシステムにしたいのですが、より大きなスケールで。何か不足している場合は修正してください。 出来ますか ?

4
プログラマーのためのコンピューターサイエンス
私は独学のプログラマーであり、8年間コーディングを行っています。この経験により、私はプログラミングの原則(ifステートメント、クラス、ポリモーフィズムなど)にすでに精通しています。 しかし、私は「コンピュータサイエンス」を学んだことがなく、プログラミングだけを学びました。コンピューターサイエンスを独習する立場にある人にとって、優れたリソースとは何ですか。つまり、速いペースで動き、基本的なプログラミングの知識を前提としているリソースです。


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