コンピュータサイエンス

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

5
ソートされた配列に要素を追加する
これを行うための最速の方法は何ですか(アルゴリズムの観点からも、実際的な問題からも)? 私は次の線に沿って何かを考えていました。 配列の末尾に追加して、これに近いベストケース(開始時に完全にソートされた配列)があり、実行時間が線形である(最適な場合)ので、バブルソートを使用できます。 一方、ソートされた配列から開始することがわかっている場合、バイナリ検索を使用して、指定された要素の挿入ポイントを見つけることができます。 私の考えでは、2番目の方法はほぼ最適ですが、そこに何があるのか​​興味があります。 どうすればこれを最適に行うことができますか?

7
停止の問題と熱力学的エントロピーの間には関係がありますか?
Alan Turingは、計算(数、関数など)を行うマシン(Turing Machine、TM)のモデルを提案し、ホールティング定理を証明しました。 TMは、マシン(または必要に応じてエンジン)の抽象的な概念です。停止定理は不可能な結果です。Carnot Engine(CE)は熱機関の抽象的な概念であり、CarnotはCarnot Theoremを証明しました。これは、熱力学的エントロピーに関連するもう1つの不可能な結果です。 TMが物理的に実現可能であるとすれば(少なくともCEと同じくらいですか、そうでないかもしれませんか?) もちろん、アルゴリズム情報理論(例:Chaitin、Kolmogorovなど)およびエントロピー(そのコンテキスト)の観点から、TMおよびHalting Theoremの定式化があります。質問は、エントロピーのより物理的な概念を求めます(潜在的な答えの過程で、アルゴリズムのエントロピーが生じる場合、それは問題ありませんが、質問が正確に求めるものではありません)。 また、Physics.seで、量子不確実性を熱力学の第2法則に関連付けている別の質問を確認することもできます。参照:エントロピーの代数的特性、エントロピーのアルゴリズムの特性評価、エントロピーの様々な製剤間のレビューとの接続を

8
計算の複雑さに関する知識のないプログラマーになることは問題ですか?
私は大学で運動を割り当てられました。私はそれを家に持ち帰り、それを解決するためのアルゴリズムをプログラムしようとしました。 それから、私が思いついた最も些細なことを作り、講師に見せました。簡単な観察の後、彼は私のソリューションの実行時の複雑さは実現不可能であり、より効率的なものを示していると感じました。そして、計算の複雑さについて何も知らないプログラマーの伝統があります(私はそれらの1つでした)。

4
パブで提示できる極めて基本的な非対称暗号とは何ですか?
私は両親にビットコインの基本を説明しようとしています。 ビットコインのコアコンポーネントの1つは、身元を偽装できないようにトランザクションに署名することです。したがって、単純化された非対称暗号を説明する必要があります。 例として使用できる非常に単純な非対称暗号とは何ですか? この簡略化された暗号を署名に使用するにはどうすればよいですか?

2
「文脈自由文法」の「文脈」とは何を指しますか?
文脈自由文法とは何かについてはオンラインで多くの定義がありますが、私の主な問題を満足させるものはありません。 どんな文脈から解放されていますか? 調査するために、「コンテキスト依存文法」をグーグル検索しましたが、「コンテキスト」が何であるかを見つけることができませんでした。 誰かcontextがこれらの名前でこの用語が何を指しているのか説明してください


5
意味:「「大きな整数を因数分解するのが難しいなら、RSAを破ることは難しい」ということは証明されていません」
私はCLRSを読んでいたと言われています: 大きな整数を因数分解するのが簡単な場合、RSA暗号システムを破るのは簡単です。 と知識があれば、公開鍵の知識が秘密鍵を作成するのは簡単だからです。しかし、それは逆の声明を説明しますが、私はそれをまったく理解していません:qpppqqq 大きな整数を因数分解するのが難しい場合、RSAを破ることは難しいという逆のステートメントは証明されていません。 上記の文は正式にはどういう意味ですか?ファクタリングが難しい(正式な方法で)と仮定した場合、なぜRSA暗号システムを破ることが難しいことを意味しないのでしょうか? ここで、ファクタリングが困難であると仮定した場合、およびRSA暗号システムが破られにくいことを意味することを発見したと考えてください。それは正式に何を意味するのでしょうか?

2
機能的リアクティブプログラミングとアクターモデルはどのように相互に関連していますか?
FRPは、純粋な機能によるイベントと動作のストリーミングに関するものです。少なくともAkkaで実装されているアクターモデルは、アクターと呼ばれる不純なオブジェクトを介した不変メッセージ(離散イベントと見なすことができます)のストリーミングに関するものです。 したがって、表面上はそれらは関連しているように見えます。 それらがどのように関連しているかについて、他に何を言えますか?また、それらのどれが異なるアプリケーションドメインにより適切であるかもしれないかについて何が言えるでしょうか?

2
Büchiオートマトンと線形 -calculusの等価性
すべてのLTL式がBüchi -automaton で表現できることは既知の事実です。しかし、明らかに、Büchiオートマトンはより強力で表現力豊かなモデルです。Büchiオートマトンは線形時間の -calculus(つまり、通常の固定点と1つの時間演算子のみを含む -calculus)と同等であると聞いたことがあります:。ωω\omegaμμ\muμμ\muXX\mathbf{X} この平等のアルゴリズム(建設的証明)はありますか?

1
非意味的性質に関するライスの定理
ライスの定理は、チューリングマシンの唯一のセマンティックプロパティ(つまり、マシンによって計算される関数のプロパティ)が2つの自明なプロパティ(つまり、常にtrueと常にfalse)であることを示しています。 しかし、決定できないチューリングマシンの他のプロパティがあります。たとえば、特定のチューリングマシンに到達不能な状態があるというプロパティは決定不能です†。††^{\dagger} 同様の特性の決定可能性を分類するライスの定理に類似した定理はありますか?正確な定義がありません。私が挙げた例をカバーする既知の定理は、私にとって興味深いものです。 KleeneのRecursion / Fixed Point定理を使用して、このセットが決定不能であることを証明するのは簡単です。††^\dagger

9
コンピューターサイエンスとコンピューターリテラシーの違いを説明する[非公開]
古典的なコンピューターサイエンスと「MS-Windowsの使用に長けている」との違いを英語の主要な人に説明するのに良いメタファーまたは例は何ですか コンピュータサイエンス コンピュータープログラミング コンピューターを使用して 3つの大きく異なるもの。ほとんどの人は、コンピューターサイエンスとは何かさえ知りません。彼らは「コンピューター」という言葉を見るだけです。したがって、「彼はコンピューターサイエンス専攻です」は「彼は私のプリンターを接続できる」と解釈できます。または、彼は「コンピューターに長けている」。さらに少ない人は、コンピュータープログラミングとコンピューターサイエンスの違いを知っています。 コンピュータサイエンスは計算理論です。CSは、実際のコンピューターがなくても学習できます。CPUマイクロアーキテクチャ。数値の並べ替え方法、リストの走査方法など。ステートマシン。アルゴリズム、big(Oh)など。プログラミング言語またはコンパイラの設計方法。 プログラミングとは、コンピューター科学者が作成した言語とコンパイラーでコードを作成し、アプリケーションを作成することです。 最後に、コンピューターを使用しています(GUI、マウス、キーボードを使用します。インターネット、MS-Officeなど) しかし、これらの3つはすべて、素人でも同じ意味で使用されています。 古典的なコンピューターサイエンスと「MS-Windowsの使用に長けている」との違いを英語の主要な人に説明する良い例えです。

2
量子TMと非決定的TMの違いは何ですか?
量子チューリングマシンを定義する方法の質問に関する議論を行っていた。そして、量子TMと非決定論的 TMは同じものだと感じています。他の質問への答えはそれに触れません。これらの2つのモデルは同じですか? いいえの場合、 量子TMとNDTMの違いは何ですか? NDTMがQuantum TMよりも速く計算する計算はありますか? この場合、quantum TMはDTMであり、なぜこのテクノロジーにそれほどファジーがあるのか​​、すでに非常に多くのDTMがあります。最後に新しいDTMを設計する理由は何ですか?

1
ハッシュテーブルとバイナリツリー
辞書を実装する場合(「顧客IDで顧客データを検索したい」)、使用される一般的なデータ構造はハッシュテーブルとバイナリ検索ツリーです。たとえば、C ++ STLライブラリは(バランスのとれた)バイナリ検索ツリーを使用して辞書(マップと呼びます)を実装し、.NETフレームワークは内部でハッシュテーブルを使用することを知っています。 これらのデータ構造の長所と短所は何ですか?特定の状況で合理的な他のオプションはありますか? キーが強力な基礎構造を持っている場合、たとえば、キーがすべて1からnまでの整数である場合など、特に興味がないことに注意してください。

2
プログラミング言語と数学の基礎はどのように関係していますか?
基本的に私は数学の3つの基礎を知っています 集合論 型理論 カテゴリー理論 それでは、プログラミング言語と数学の基礎はどのように関係していますか? 編集 元の質問は「数学の基礎に基づいたプログラミング言語」でした 追加されたパラガルフ そして理論の実装 1. Coqの型理論 2. SETLの集合論 3. Haskellのカテゴリー理論 提案に基づいて、これは「プログラミング言語と数学の基礎はどのように関係しているのか」に変更されました。 これは私が尋ねていることについて十分に知らなかったが何かを学びたいと思った質問の1つであるため、質問を変更して、学習や他の人にとってより価値のあるものにしますが、Andrej Bauerによる現在の答えは話題から外れているようです。 これまでのすべてのコメントと回答に感謝し、私はそれらから学んでいます。

2
すべての赤黒の木のバランスが取れているわけではありませんか?
直感的に、「バランスの取れたツリー」は、各ノードの左右のサブツリーが「ほぼ同じ」数のノードを持たなければならないツリーでなければなりません。 もちろん、赤黒木*(最後の定義を参照)のバランスについて話すとき、実際には、それらは高さのバランスが取れており、その意味で、バランスが取れていることを意味します。 上記の直観を次のように形式化しようとするとします。 定義:バイナリツリーはμμ\mu -balanced と呼ばれ、、ノードごとに不等式0≤μ≤120≤μ≤120 \le \mu \leq \frac{1}{2}NNN μ≤|NL|+1|N|+1≤1−μμ≤|NL|+1|N|+1≤1−μ \mu \le \frac{|N_L| + 1}{|N| + 1} \le 1 - \mu がすべて保持され、上記のステートメントが失敗するノードがあります。は、および左サブツリー内のノードの数ですがルート(ルートを含む)であるツリーの下のノードの数です。μ′>μμ′>μ\mu' \gt \mu|NL||NL||N_L|NNN|N||N||N|NNN このトピックに関する文献のいくつかでは、これらはウェイトバランスツリーと呼ばれています。 ノードを持つバイナリツリーが -balanced(定数)である場合、ツリーの高さはであるため、適切な検索を維持できることがわかります。プロパティ。nnnμμ\muμ>0μ>0\mu \gt 0O(logn)O(log⁡n)\mathcal{O}(\log n) 質問は次のとおりです。 いくつかありますすべてのビッグ十分な赤黒木があるように、 -balancedは?μ>0μ>0\mu \gt 0μμ\mu 使用する赤黒木の定義(Cormenらによるアルゴリズムの紹介から): 各ノードが赤または黒に色付けされているバイナリ検索ツリー 根は黒です すべてのNULLノードは黒です ノードが赤の場合、その子は両方とも黒です。 各ノードについて、そのノードから子孫NULLノードへのすべてのパスには、同じ数の黒いノードがあります。 注:上記の -balancedの定義では、NULLノードはカウントしません。(私たちがそうするかどうかは問題ではないと思いますが)。μμ\mu

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