コンピュータサイエンス

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


1
チューリングマシンは、NFAが素数の文字列を受け入れるかどうかを決定できますか?
次の問題が決定可能かどうかを知りたい: インスタンス:n個の状態を持つNFA A 質問:Aが長さpの文字列を受け入れるような素数pが存在しますか。 私の考えでは、この問題は決定不能ですが、証明することはできません。決定者は、特定の数値が素数であるかどうかを判断するアルゴリズムを簡単に持つことができますが、NFAを分析して、生成できる長さを正確に知る方法が十分にわかりません。NFAを使用して文字列のテストを開始できますが、無限言語の場合、停止することはありません(したがって、決定者ではありません)。 もちろん、ソリューションで必要な場合は、NFAをDFAまたは正規表現に簡単に変更できます。 この質問は、2週間後に出てくる決勝戦のための自作の準備質問として考えていました。

1
ペアワイズ和のFFTなしの
仮定し、私たちは、与えられたの異なる整数はように、いくつかの定数の、およびすべてのための。1、2、... 、nは 0 ≤ I ≤ K N K > 0 Innna1,a2,…,ana1,a2,…,ana_1, a_2, \dots, a_n0≤ai≤kn0≤ai≤kn0 \le a_i \le knk>0k>0k \gt 0iii 可能なすべてのペアワイズ和のカウントを見つけることに興味があります。(が許可されます)。 i = jSij=ai+ajSij=ai+ajS_{ij} = a_i + a_ji=ji=ji = j 1つのアルゴリズムは、次数の多項式をし、フーリエ変換法を使用してその平方を計算し、結果の多項式の係数。これは、時間アルゴリズムです。 ≤ K N O (N ログN )P(x)=∑nj=1xajP(x)=∑j=1nxajP(x) = \sum_{j=1}^{n} x^{a_j}≤kn≤kn\le knO(nlogn)O(nlog⁡n)O(n \log n) 2つの質問があります。 そこで FFTを使用していないアルゴリズムは?O(nlogn)O(nlog⁡n)O(n \log n) …


2
ラムダ計算の「適用順序」と「通常順序」
適用順序:関数自体を評価する前に、常に関数の引数を完全に評価します- (λx.x2(λx.(x+1) 2)))→(λx.x2(2+1))→ (λx.x2(3))→ 32 → 9(λx.x2(λx.(x+1) 2)))→(λx.x2(2+1))→ (λx.x2(3))→ 32 → 9(\lambda x. x^2(\lambda x.(x+1) \ \ 2))) \rightarrow (\lambda x. x^2(2+1))\rightarrow \ (\lambda x. x^2(3)) \rightarrow \ 3^2 \ \rightarrow \ 9 通常の順序:式はのように外側から縮小されます- (λx.x2(λx.(x+1) 2))→ (λx.(x+1) 2)2→ (2+1)2 →32 → 9(λx.x2(λx.(x+1) 2))→ (λx.(x+1) 2)2→ (2+1)2 →32 → 9(\lambda x.x^2 …

1
ソートに関する興味深い問題
番号付きのボール(ランダム)が付いたチューブを考えます。チューブにはボールを取り除くための穴があります。1つの操作について次の手順を検討してください。 穴から1つまたは複数のボールを選択し、ボールを選択した順序を覚えておくことができます。 パイプを左側に傾けて、パイプ内の残りのボールが左側に移動し、ボールを取り除いてできた空のスペースを占有する必要があります。 番号の付いたボールをパイプから選んだ順序を変更することは想定されていません。ここで、ボールの動きによって作成された空いているスペースを使用して、再びパイプに戻します。 手順1〜3は1つの操作と見なされます。 番号の付いたボールを昇順に並べ替えるのに必要な最小限の操作を見つけます。 例:チューブに次が含まれる場合:[1 4 2 3 5 6][1 4 2 3 5 6][1\ 4\ 2\ 3\ 5\ 6] 次にととを取り出し、パイプを左に傾けるとを取得し、パイプの最後にをこの順序で挿入して取得します。444555666[1 2 3][1 2 3][1\ 2\ 3](4 5 6)(4 5 6)(4\ 5\ 6)[1 2 3 4 5 6][1 2 3 4 5 6][1\ 2\ 3\ 4\ 5\ 6] …

1
有向非巡回グラフの推移閉包を取得するための効率的なアルゴリズム
グラフの問題を解決しようとしています(宿題ではなく、単にスキルを練習するためです)。DAGが与えられます。ここで、は頂点のセット、はエッジです。グラフは隣接リストとして表されるため、はすべての接続を含むセットです。私の仕事は、各頂点から到達可能な頂点を見つけることです。私が使用するソリューションは複雑さを持ち、 推移的閉包を持ちますが、ブログで読むと高速になる可能性がありますが、方法は明らかになりませんでした。DAGの推移的閉包問題を解決する別の方法(より複雑な方法)を教えてもらえますか?G(V,E)G(V,E)G(V,E)VVVEEEAvAvA_vvvvv∈Vv∈Vv\in VO(V3)O(V3)O(V^3)

3
理論的なCSおよび数学-自習の推奨事項
私は非CSの卒業生であり、私の研究分野はCSとは無関係です。しかし、コンピューター科学者になるという大規模な計画の一環として、CSに関連する理論的なコンピューターサイエンスと数学の強固な背景を得たいと思います。私はたくさんの研究を行い、CSと数学のトピックに関する以下の最高/本当に良い本を選びました。あなたの意見を聞きたいです: カバーされているトピックの完全性(私が見逃したものをお勧めします) 重なった素材のカバー/オーバーキルエリア(リストから削除する必要がある本を推奨してください) 本を勉強する順序 リストは長すぎると感じているので、CSに必要なコア知識を失うことなく、いくつかの本を削除することをお勧めします。 したがって、本は次のとおりです。 WWソーヤーによる数学者の喜び 証明方法:ダニエルJ.ヴェレマンによる構造化アプローチ 解決方法:G. Polyaによる数学手法の新しい側面 グレッグ・マイケルソンによるラムダ計算による関数型プログラミングの紹介 Al AhoとJeff Ullmanによるコンピューターサイエンスの基礎(http://i.stanford.edu/~ullman/focs.html) 具体的な数学:グラハム、クヌース、パタシュニックによるコンピューターサイエンスの基礎 Michael Sipserによる計算理論の紹介 オートマタ理論、言語、および計算入門:John E. Hopcroft、Rajeev Motwani、Jeffrey D. Ullman 計算の複雑さ:Oded Goldreichによる概念的展望 計算の複雑さ:ボアズ・バラクのサンジーエフ・アローラによる現代的アプローチ JH van Lint、RM Wilsonによる組み合わせ論コース 計算可能性:Nigel Cutlandによる再帰関数理論の紹介 コンピューターと難治性:NP完全性理論のガイド(MR Garey、DS Johnson) Hartley Rogersによる再帰関数の理論と効果的な計算可能性 GHハーディ、JEリトルウッド、G。ポリアによる不平等 数理論理学:演習を含むコース(パートI):命題微積分、ブッケ代数、述語微積分byRenéCori、Daniel Lascar 数理論理学:演習を含むコース(パートII):再帰理論、ゲーデルの定理、集合論、モデル理論、ルネコリ、ダニエルラスカー
14 books 

2
Bellman-Fordアルゴリズム-エッジを順不同で更新できるのはなぜですか?
ベルマン-フォード法は、ソースからの最短経路決定他のすべての頂点にします。最初にと他のすべての頂点間距離は設定されます。次に、から各頂点まで最短パスが計算されます。これは、回の反復で続き ます。私の質問は:秒∞ 秒| V | − 1ssssss∞∞\inftysss| V| −1|V|−1|V|-1 なぜ回の反復が必要なのですか?| V| −1|V|−1|V|-1 別の順序でエッジをチェックした場合、問題になりますか? たとえば、最初にエッジ1、2、3をチェックしてから、2回目の反復で2、3、1をチェックするとします。 MITのEric教授は順序は重要ではないと言ったが、これは私を混乱させる:値がエッジに依存しているがが後に更新される場合、アルゴリズムはエッジ基づいてノードを誤って更新しないか?x 1 x 1 x 2バツ2バツ2x_2バツ1バツ1x_1バツ1バツ1x_1バツ2バツ2x_2


2
入力を広げる機能
次の特性を持つnビット数からnビット数までの関数があるかどうかを知りたいfff: fffは全単射で必要があります 両方の及び計算可能かなり高速であるべきですffff−1f−1f^{-1} fffは、入力と有意な相関関係のない数値を返す必要があります。 その理由は次のとおりです。 データを操作するプログラムを書きたい。データの一部の情報は、検索キーがアルファベットの記号であるバイナリ検索ツリーに保存されます。時間とともに、アルファベットにさらに記号を追加します。新しいシンボルは、利用可能な次の無料番号を取得するだけです。したがって、ツリーは常に小さなキーに対して小さなバイアスを持ち、必要以上にリバランスが発生します。 私のアイデアは、シンボル番号を範囲全体に広く広がるようにマングルすることです。シンボル番号は、一度だけ発生する入出力中にのみ重要であるため、このような関数を適用することはそれほど高価ではありません。fff[0,264−1][0,264−1][0,2^{64}-1] Xorshift乱数ジェネレーターの1つの反復について考えましたが、理論的には可能であるはずですが、元に戻す方法は実際にはわかりません。 誰もがそのような機能を知っていますか? これはいいアイデアですか?

2
類似度の設定-二次複雑性なしでJaccardインデックスを計算
n個のセットのグループがあり、それらに対して「一意性」または「類似性」の値を計算する必要があります。適切な指標としてJaccardインデックスに決めました。残念ながら、Jaccardインデックスは一度に2つのセットでのみ動作します。すべてのセット間の類似性を計算するには、 Jaccard計算の順序で必要になります。nnnn2n2n^2 (それが役立つ場合、は通常10と10000の間であり、各セットには平均500個の要素が含まれます。また、最終的に、2つの特定のセットがどれだけ似ているかは気にしません-むしろ、内部の類似性だけを気にしますセットのグループ全体の(つまり、グループ内のすべてのJaccardインデックスの平均(または少なくとも平均の十分に正確な近似))nnn 2つの質問: 複雑さなしでJaccardインデックスを使用する方法はありますか?n2n2n^2 上記で提案した方法よりも、セットのグループ全体でセットの類似性/一意性を計算するより良い方法はありますか?

2
ランダム化アルゴリズムの分類
ウィキペディア乱択アルゴリズムについて 予想される実行時間またはメモリ使用量を減らすためにランダム入力を使用するアルゴリズムを区別する必要がありますが、限られた時間内で常に正しい結果で終了します。また 、ランダム入力に応じてチャンスがある確率的アルゴリズム間違った結果を生成する(モンテカルロアルゴリズム)または失敗を通知するか終了しないことで結果を生成しない(ラスベガスアルゴリズム)。 最初の種類のアルゴリズムでは、ランダム入力を使用して、予想される実行時間またはメモリ使用量を削減しますが、制限された時間内に正しい結果で常に終了する方法を疑問に思いましたか? 結果の生成に失敗する可能性があるラスベガスアルゴリズムとラスベガスアルゴリズムの違いは何ですか? 正しく理解すれば、確率的アルゴリズムとランダム化アルゴリズムは同じ概念ではありません。確率的アルゴリズムはランダム化アルゴリズムの一種であり、他の種類はランダム入力を使用して予想実行時間またはメモリ使用量を削減しますが、制限された時間内に常に正しい結果で終了しますか?

1
Planar 1-in-3 SATの平面性条件
Planar 3SATはNP完全です。平面3SATインスタンスは、次のルールを使用して作成されたグラフが平面である3SATインスタンスです。 すべてのおよび頂点を追加しバツ私xix_iバツ私¯xi¯\bar{x_i} すべての節頂点を追加しCjCjC_j ペアごとにエッジを追加します(x私、x私¯)(バツ私、バツ私¯)(x_i,\bar{x_i}) 頂点(または)から、それを含む節を表す各頂点にエッジを追加しますバツ私バツ私x_iバツ私¯バツ私¯\bar{x_i} 2つの連続する変数間にエッジを追加します (x1、x2)、(x2、x3)、。。。、(xn、x1)(バツ1、バツ2)、(バツ2、バツ3)、。。。、(バツn、バツ1)(x_1,x_2),(x_2,x_3),...,(x_n,x_1) 特に、ルール5は、句を2つの異なる領域に分割する「バックボーン」を構築します。 Planar 1-in-3 SATもNP完全です。 しかし、平面1-in-3 SATの場合、平面条件はPlanar 3SATと同じ方法で定義されますか?特に、変数をリンクするバックボーンがあると仮定でき ますか? (x私、xi + 1)(バツ私、バツ私+1)(x_i,x_{i+1})

3
Insert、Delete、MostFrequentをサポートする効率的なデータ構造
セットあり、各メンバーがデータとキーのペアであると仮定します。次の操作をサポートするデータ構造が必要です。DDDDDDD にを挿入し、D(d,k)(d,k)(d,k)DDD メンバー削除します(を見つけるために検索する必要はありません。たとえば、はメンバーを指します)。e e DeeeeeeeeeDDD MostFrequentは、が最も頻度の高いキーの1つであるようなメンバーを返します(最も頻度の高いキーは一意である必要はありません)。E 。k e y De∈De∈De \in De.keye.keye.keyDDD このデータ構造の効率的な実装は何でしょうか? 私の解決策は、キーとその周波数によって優先順位付けされた周波数のヒープと、ハッシュ関数が同じキーを持つメンバーをハッシュテーブルの同じスロットにマップするハッシュテーブルです(各部分から他へのポインターを使用)。 これにより、最初の2つの操作にが、3番目の操作(最悪の場合の実行時間)にられます。Θ (1 )Θ(lgn)Θ(lg⁡n)\Theta(\lg n)Θ(1)Θ(1)\Theta(1) より効率的な解決策があるのだろうか?(または同じ効率のよりシンプルなソリューション?)

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