コンピュータサイエンス

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

9
計算はどのように/いつコンピュータサイエンスで使用されますか?
多くのコンピューターサイエンスプログラムでは、2つまたは3つの計算クラスが必要です。 私は、計算機が計算機科学でどのように、そしていつ使用されるのかと思っています。コンピューターサイエンスの学位のCSコンテンツは、アルゴリズム、オペレーティングシステム、データ構造、人工知能、ソフトウェアエンジニアリングなどに焦点を当てる傾向があります。

5
同じ目的に役立つさまざまなアルゴリズム/データ構造を学ぶ理由は何ですか?
私は学部生だったので、この質問について疑問に思っていました。これは一般的な質問ですが、以下の例で詳しく説明します。 私は多くのアルゴリズムを見てきました-例えば、最大流量の問題については、問題を解決できる3つのアルゴリズムを知っています:Ford-Fulkerson、Edmonds-Karp&Dinic、Dinicが最も複雑です。 データ構造(たとえば、ヒープ)には、バイナリヒープ、二項ヒープ、およびフィボナッチヒープがあり、フィボナッチヒープは全体的な複雑さが最適です。 私を混乱させているのは、すべてを知る必要がある理由はありますか?なぜ最高の複雑さを学び、慣れるだけではありませんか? すべてを知っているのが最善だと知っています。BでなくAを使用することでしか解決できない問題/アルゴリズムなど、「より有効な」理由があることを知りたいだけです。


3
使用する時間の複雑さの分析の表記をどのように知るのですか?
ほとんどの入門アルゴリズムクラスでは、(Big O)やような表記法が導入されており、学生は通常、これらのいずれかを使用して時間の複雑さを見つけることを学びます。OOOΘΘ\Theta ただし、、およびなどの他の表記法があります。ある表記法が別の表記法よりも望ましい特定のシナリオはありますか?oooΩΩ\Omegaωω\omega

11
数列の再帰関係の解決または近似
コンピューターサイエンスでは、再帰関係を解決する必要があります。これは、再帰的に定義された一連の数値の閉じた形式を見つけることです。ランタイムを検討する際、主にシーケンスの漸近的成長に主に興味があります。 例は 本体が時間f (n )を要するnから000まで下にステップする末尾再帰関数のランタイム:nnnf(n)f(n)f(n) T(0)T(n+1)=0=T(n)+f(n)T(0)=0T(n+1)=T(n)+f(n)\qquad \begin{align} T(0) &= 0 \\ T(n+1) &= T(n) + f(n) \end{align} フィボナッチ数列: F0F1Fn+2=0=1=Fn+Fn+1F0=0F1=1Fn+2=Fn+Fn+1\qquad \begin{align} F_0 &= 0 \\ F_1 &= 1 \\ F_{n+2} &= F_n + F_{n+1} \end{align} n個の括弧ペアを持つDyckワードの数:nnn C0Cn+1=1=∑i=0nCiCn−iC0=1Cn+1=∑i=0nCiCn−i\qquad\begin{align} C_0 &= 1 \\ C_{n+1}&=\sum_{i=0}^{n}C_i\,C_{n-i} \end{align} 長さリストに対するmergesortランタイムの繰り返しnnn: T(1)T(n)=T(0)=0=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1T(1)=T(0)=0T(n)=T(⌊n/2⌋)+T(⌈n/2⌉)+n−1\qquad \begin{align} T(1) &= T(0) = 0 …

5
言語がコンテキストフリーではないことを証明するにはどうすればよいですか?
コンテキストフリー言語のクラスについて学びました。コンテキストフリーの文法とプッシュダウンオートマトンの両方が特徴であるため、特定の言語がコンテキストフリーであることを簡単に示すことができます。CFLCFL\mathrm{CFL} しかし、どのように反対を見せますか?私のTAは、そうするためには、すべての文法(またはオートマトン)に対して、手元の言語を記述できないことを示さなければならないことを固く主張しています。これは大きなタスクのようです! ポンピング補題について読んだことがありますが、本当に複雑に見えます。

7
なぜVCの次元が悪いにも関わらず、ディープラーニングが宣伝されるのですか?
Vapnik-Chervonenkis(VC)-dimensionニューラルネットワークのための式の範囲にと、最悪の場合、でエッジの数であり、ノードの数です。一般化を強力に保証するために必要なトレーニングサンプルの数は、VC次元に比例します。O (E)O(E)O(E)O (E2)O(E2)O(E^2)O (E2V2)O(E2V2)O(E^2V^2)EEEVVV つまり、成功するディープラーニングモデルの場合のように、数十億のエッジを持つネットワークの場合、トレーニングデータセットには、最良の場合は数十億、最悪の場合は数千個のトレーニングサンプルが必要です。現在、最大のトレーニングセットには約1,000億のサンプルがあります。十分なトレーニングデータがないため、深層学習モデルが一般化されている可能性は低いです。代わりに、彼らはトレーニングデータをオーバーフィットしています。これは、モデルがトレーニングデータとは異なるデータに対してうまく機能しないことを意味します。これは、機械学習にとって望ましくない特性です。 深層学習が一般化できないことを考えると、VCの次元分析によれば、なぜ深層学習の結果はそれほど誇大宣伝されているのでしょうか?一部のデータセットで単に高い精度を持っているだけでは、それだけでは意味がありません。深層学習アーキテクチャについて、VC次元を大幅に削減する特別なものはありますか? VC次元分析に関連性がないと思われる場合は、深層学習が一般化されており、過剰適合ではないという証拠/説明を提供してください。すなわち、それは良いリコールと精度を持っていますか、それとも単に良いリコールを持っていますか?100%の再現率は、100%の精度と同様、簡単に達成できます。両方を100%に近づけることは非常に困難です。 反対の例として、ディープラーニングが過剰適合であるという証拠があります。過適合モデルは、決定論的/確率的ノイズを組み込んでいるので、だまされやすいです。オーバーフィッティングの例については、次の画像を参照してください。 また、テストデータの精度が高いにもかかわらず、オーバーフィットモデルの問題を理解するには、この質問に対する下位の回答を参照してください。 正則化が大きなVC次元の問題を解決すると回答した人もいます。詳細については、この質問を参照してください。


5
一部のプログラミング言語が他のプログラミング言語よりも「高速」または「低速」なのはなぜですか?
プログラミング言語で構築された一部のアプリケーションまたはアルゴリズム、たとえばC ++ / Rustは、同じマシンで実行されているJava / Node.jsなどで構築されたものよりも高速または高速に動作することに気付きました。これに関していくつか質問があります。 なぜこれが起こるのですか? プログラミング言語の「速度」を支配するものは何ですか? これはメモリ管理と関係がありますか? 誰かが私のためにこれを壊してくれたら本当に感謝しています。

12
画像サイズの単位がPixel²ではないのはなぜですか?
長方形の面積を計算する場合、高さと幅を掛けて単位を二乗するだけです。例:5cm * 10cm =50cm² 対照的に、画像のサイズを計算する場合、高さと幅も乗算しますが、乗算する前の高さと幅の単位であった単位-ピクセル-を取得します。例:実際に計算するのは次のとおりです。3840ピクセル* 2160ピクセル= 8294400ピクセル 私が期待するのは:3840ピクセル* 2160ピクセル= 8294400ピクセル² ピクセルを乗算する単位が二乗されないのはなぜですか?

8
グラフ検索:幅優先と深さ優先
グラフを検索する場合、幅優先と深さ優先の 2つの簡単なアルゴリズムがあります(通常、すべての隣接グラフノードをキュー(幅優先)またはスタック(深さ優先)に追加することによって行われます)。 さて、他のものよりも優れているものはありますか? 私が考えることができるもの: グラフ内のデータがかなり下にあると予想される場合、グラフのより深い部分に非常に高速で進むため、深さ優先の方が早く検索される場合があります。 逆に、データがグラフのかなり上にあると予想される場合、幅優先の方が結果が早くなる可能性があります。 私が見逃したものはありますか、それは主に個人的な好みに帰着しますか?

5
ゲーデルの不完全性定理、停止問題、普遍的なチューリングマシンの間に具体的な関係はありますか?
私は常に、上記の質問に対する答えは以下の線に沿って肯定的であると漠然と考えてきました。ゲーデルの不完全性定理と停止問題の決定不能性は、決定可能性についての否定的な結果であり、対角線の議論によって確立されました(そして1930年代)。したがって、それらは何らかの形で同じ問題を見る2つの方法でなければなりません。そして、私はチューリングが普遍的なチューリング機械を使用して、停止の問題が解決できないことを示すと思った。(このmath.SEの質問も参照してください。) しかし、今(計算可能性のコースを教える)私はこれらの問題をより詳しく見て、私が見つけたものにかなり困惑しています。だから私は私の考えをまっすぐにするのに助けが欲しい 一方で、ゲーデルの対角論は非常に微妙であることに気付きます。それは、それ自体の導出可能性について何かを言うと解釈できる算術ステートメントを作成するために多くの作業が必要です。一方、私がここで見つけた停止問題の決定不能性の証明は非常に単純であり、普遍的なチューリングマシンの存在は言うまでもなく、チューリングマシンについても明示的に言及していません。 ユニバーサルチューリングマシンに関する実際的な質問は、ユニバーサルチューリングマシンのアルファベットが、シミュレートするチューリングマシンのアルファベットと同じであることが重要であるかどうかです。適切な対角引数を作成するためにそれが必要だと思っていました(マシンにそれ自体をシミュレートさせる)が、ネット上で見つけたユニバーサルマシンの説明の戸惑うコレクションでこの質問に注意を見つけていません。停止の問題ではない場合、普遍的なチューリングマシンは対角線の引数で有用ですか? 最後に、私はこのさらなるセクションに混乱しています同じWP記事の中で、ゲーデルの不完全性のより弱い形式は、停止する問題から生じていると述べています。矛盾を導き出せなければ理論は一貫していることを知っています。自然数に関する完全な理論は、自然数に関するすべての真の記述がそこから導き出せることを意味するように思えます。私はゲーデルがそのような理論は存在しないと言っていることを知っていますが、そのような仮説の獣がどのように健全である可能性があるのか​​を見ることができません。 、したがって完全性によっても導出可能であり、一貫性と矛盾します。 これらの点のいずれかについて明確化をお願いします。

10
言語が規則的でないことを証明する方法は?
通常の言語のクラスについて学びました。正規表現、有限オートマトン、左線形文法のいずれか1つの概念が特徴であるため、特定の言語が正規であることを簡単に示すことができます。R E GREG\mathrm{REG} しかし、どのように反対を見せますか?私のTAは、そうするためには、すべての正規表現(またはすべての有限オートマトン、またはすべての左線形文法)に対して、手元の言語を記述できないことを示さなければならないことを固く主張しています。これは大きなタスクのようです! ポンピング補題について読んだことがありますが、本当に複雑に見えます。 これは、通常の証明方法と応用例を集めた参考質問であることを意図しています。コンテキストフリー言語に関する同じ質問については、こちらをご覧ください。

4
ブロックチェーンを使用している重要/重要な実世界のアプリケーションは何ですか?
私が現在取り組んでいるブロックチェーン関連の研究の一部として、さまざまな実世界のアプリケーションにブロックチェーンを使用するという概念がゆるやかに投げかけられています。 したがって、次の質問を提案します。 ブロックチェーンを使用している重要/重要な実世界のアプリケーションは何ですか? 最初の質問に追加するには、より具体的には、実際にどのようなアプリケーションがブロックチェーンを実際に必要としますか-現在それを使用するかもしれないし、使用しないかもしれませんか? コメントから、これは暗号通貨の概念を無視することにさらに注意します。ただし、スマートコントラクトの使用には、暗号通貨の領域にもたらすメリットの他に、他の潜在的なアプリケーションがあります
75 blockchain 


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