タグ付けされた質問 「mathematical-foundations」

コンピュータサイエンス(のサブフィールド)と関連する数学的基礎との関係およびそれらの応用に関する質問。

29
数学的な証明を書き留めるのは、コンピューターコードを書くよりもフォールトプルーフなのはなぜですか?
バグなしでコンピュータプログラムを書き留めるよりも、間違いを犯さずに数学的な証明を書き留める方がはるかに簡単だと気づきました。 これは私の経験よりも広く行われているようです。ほとんどの人は、プログラミング中に常にソフトウェアのバグを作成します。また、コンパイラには、常に間違いを教えてくれます。私は一度に間違いのない大きなコンピュータープログラムを書いた人のことを聞いたことがなく、バグがないと完全に確信していました。(実際、バグのないプログラムはほとんどなく、多くの高度にデバッグされたプログラムですらあります)。 しかし、コンパイラーが間違いを犯したことをフィードバックすることなく、場合によっては他人からフィードバックを得ることなく、論文全体または数学的な証明の本を書くことができます。 はっきりさせてください。これは、人々が数学の証明で間違いを犯さないと言うことではありませんが、経験の浅い数学者にとっても、その間違いは通常それほど問題ではなく、あなたの間違い。 実際、これが当てはまらない場合、数学はほとんど不可能に思えます。 だから、これは私に質問をするようになりました:前者が後者よりもはるかに扱いやすいようにする、誤りのない数学的な証明を書くことと誤りのないコンピューターコードを書くこととで何がそんなに違いますか? プログラマーが怠makesになり、コードを厳密に書くために必要なことをできないようにするのは、人々がコンパイラーの「外部の神託」をミスに向けているという事実に過ぎないと言うことができます。この見方は、もし彼らがコンパイラーを持っていなければ、数学者と同じように完璧であることができるということを意味するでしょう。 あなたはこの説得力があると思うかもしれませんが、プログラミングと数学的な証明を書き留めた私の経験に基づいて、これは本当に説明ではないと直感的に思えます。2つの取り組みについては、根本的に異なるものがあるようです。 私の最初の考えは、違いがあるかもしれないが、数学者にとって、正しい証明はすべての論理的なステップが正しいことだけを必要とするということです。すべてのステップが正しい場合、証明全体が正しいです。一方、プログラムにバグがないためには、すべてのコード行が正しいだけでなく、プログラム内の他のすべてのコード行との関係も同様に機能する必要があります。 言い換えれば、ステップ場合の証明では、ステップでミスを作り、その後、正しいなりません台無しステップ今まで。ただし、コード行が正しく記述されている場合、行間違いは行の動作に影響するため、行を記述するときは常に他のすべての行との関係を考慮する必要があります。これを制限するためにカプセル化とそれらすべてを使用できますが、完全に削除することはできません。Y X X Y X XバツXXYYYバツXXバツXXYYYバツXXバツXX つまり、数学的証明のエラーをチェックする手順は、証明ステップの数が本質的に線形ですが、コンピューターコードのエラーをチェックする手順は、コードの行数が本質的に指数関数的です。 どう思いますか? 注:この質問には、さまざまな事実や視点を探求する多数の回答があります。回答する前に、それらすべてを読んで、追加する新しいものがある場合にのみ回答してください。冗長な回答、または事実と意見を裏付けない回答は削除される場合があります。

3
ロジックとは正確には何ですか?
前提条件について別の質問をすることで謝罪するかもしれませんが、出発点については混乱していました。「モーダルロジック」、「テンポラルロジック」、「1次ロジック」、「2次ロジック」、「高次ロジック」などのさまざまな用語に遭遇しました。 この文脈で「論理」とは正確に何を意味するのでしょうか?「論理」という言葉をどのように厳密に定義しますか? 数冊の本の最初のページを読んだ後、「ロジックは何から何を決めるかであり、プログラムを自動的に推論し理解するプログラムの設計を指示し促進するため、プログラミング言語の設計において重要であると結論付けることができます。 2番目の点について少し詳しく説明します。 今、これらのロジックに来ています。 これらのすべての論理、「時相論理」、「モーダル論理」、「一次論理」、「高次論理」は互いに独立していますか、またはこのグループの他のいくつかを理解するためにこれらの論理のいくつかを理解する必要がありますか?一言で言えば、それらの前提条件は何ですか?(いくつかの資料についても提案が得られれば素晴らしいと思います。) PS:親切にしてくれてありがとう

11
コンピューターサイエンスのデータが離散的であると見なされるのはなぜですか?
データの「構造」はブール代数に完全に依存していることを理解していますが、 なぜデータは連続的なものではなく、離散的な数学的実体と見なされるのですか? これに関連する: 次元の連続したエンティティとしてデータを構造化する際に違反する欠点または不変条件は何ですか?rrr 私は学部の数学の学生なので、この分野の専門家ではないので、誰かが私に5歳のように説明してくれたら本当に感謝しています。

2
プログラミング言語の基礎として一般的な再帰関数を使用していますか?
これはナイーブであり、したがって、おそらく不正な形式の質問なので、事前に謝罪します! 私の見解では、チューリングマシンは手続き型/命令型プログラミング言語の計算基盤と見なすことができます。同様に、ラムダ計算は関数型プログラミング言語の基盤です。 私は最近、チャーチ・チューリング・テーゼが計算の第3のモデルである一般的な再帰関数と相互等価性を示していることを学びました。これを計算のモデルとして使用するプログラミング言語はありますか?そうでない場合、技術的な理由があります。すなわち、「誰もまだ試していません」以外に?

6
理論的な文脈でコンピューターサイエンスと数学を正確に区別するものは何ですか?
私は数学を勉強することに大きな情熱を持っているコンピューターサイエンスの大学レベルの学生です。私は、コンピューターサイエンスまたは理論的コンピューターサイエンスは数学と論理の直接的な分岐であり、コンピューターサイエンスの学位は常に数学指向でなければならないという意見も固く信じています。間違っている場合は修正してください。 私は率直に言って違いの多くは、すべてとして率直であることを2つの科目では存在しないことを感じる「計算」が含まれる「計算」をすべてのが、「計算」はないかもしれない「計算」。繰り返しますが、実質的な情報と証拠を提供し、ここで間違えた場合は更新してください。ありがとうございました

6
線形代数のどの部分がコンピューターサイエンスで使用されていますか?
私は線形代数とそのアプリケーションを読んで、コンピューターサイエンスの教材(主に機械学習)の理解に役立てていますが、CSにとって多くの情報が役に立たないことを心配しています。たとえば、線形方程式のシステムを効率的に解く方法を知ることは、新しい方程式ソルバーをプログラムしようとしない限り、あまり役に立ちません。さらに、本は、行列に逆行列がある場合のスパン、線形依存性、独立性、およびこれらの間の関係について多くのことを話しましたが、CSでこれを適用することは考えられません。それでは、線形代数のどの部分がCSで使用されていますか?

3
0.922のシャノンエントロピー、3つの異なる値
値の文字列を考えるログベースで、シャノンエントロピーを になる。私が理解していることから、基数 切り上げられたシャノンエントロピーは、値の1つを表すためのバイナリの最小ビット数です。AAAAAAAABCAAAAAAAABCAAAAAAAABC2220.9220.9220.922222 このウィキペディアのページの紹介から引用: https://en.wikipedia.org/wiki/Entropy_%28information_theory%29 それでは、どのようにして3つの値を1ビットで表現できますか? は 、 は です。しかし、どのようにを表現できます か?AAA111BBB000CCC 前もって感謝します。

1
数学のトピックまたはコンピュータープログラミングの習熟度を高める分野ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 2年前に閉店。 一般に、数学者であるか、数学の背景を持つコンピュータープログラマーは、アルゴリズムとコンピュータープログラミング全般に関して非常に優れています。 私が言っていないこと: 優れたコンピュータープログラマーになるには数学が必要です。プログラミングには数学が必要です。優秀な数学者は優秀なプログラマーであり、その逆も同様です。 私が言っていること 数学を学びたいと思うのは、それが私をより良いプログラマーにすると信じているからです。数学のどの分野/トピックが私がより良いプログラマーになるのに役立ちますか?フォームの回答をmath topic - corresponding cs area歓迎します。 注意:トピック外と宣言されたStackOverflowでこれを尋ねました。暇なときに、コンピュータープログラミングでやっていた方法でそれを学びたいです。前もって感謝します。

2
チューリング機械の停止に相当する数学的推測
この問題は、すべての数学的定理を単一のチューリング機械が停止するかどうかの問題に還元できるかどうかについてです。特に、現在証明されていない推測に興味があります。 例:ウィキペディアによれば、奇妙な完全数があるかどうかは現在不明です。与えられた数値が完全であるかどうかは決定可能であるため、奇数を順番にチェックし、完全な数値が見つかると停止するチューリングマシンを作成できます。(このチューリングマシンは入力を受け取りません。)そのチューリングマシンが停止するかどうかがわかっていれば、予想が正しいかどうかがわかります。逆もまた同様です。 しかし、別の例として、双子の素数の予想はどうですか?与えられた数が双子ペアの最初の素数であるかどうかは決定可能ですが、この場合、問題は無限数があるかどうかに関するものであるため、最初の数が見つかったときに停止することはできません。ツインプライム予想が真である場合にのみ停止するチューリングマシンを作成できるかどうかは、私にはわかりません。 ペア素数算術またはその他の正式なシステム内で双子素数予想が証明可能な場合にのみ停止するチューリングマシンを作成することはできますが、これは別の問題です。 だから私の質問は ツインプライム予想が真である場合にのみ停止するチューリングマシンを作成することは可能ですか?(もしそうなら、どうですか?) 一般に、与えられた数学的な記述が真である場合にのみ停止するチューリングマシンを作ることは可能ですか?このチューリングマシンは、正式なステートメントからアルゴリズムで構築できますか? 一般的に不可能である場合、数学的なステートメントを単一のチューリングマシンの停止、またはオラクルを備えたチューリングマシンなどに相当するものに分類する方法はありますか?もしそうなら、この分類は与えられたステートメントで決定可能ですか?

2
マルコフ連鎖とは何ですか?
私は現在、マルコフチェーンの集中についていくつかの論文を読んでおり、マルコフチェーンと単純な有向加重グラフの違いを確認できません。 たとえば、記事「マルコフチェーンにおける最適な状態空間の集中」では、CTMC(連続時間マルコフチェーン)の次の定義を提供しています。 状態空間が有限CTMC を 遷移率行列 。(S,Q)(S,Q)(\mathcal{S}, Q)S={x1,x2,…,xn}S={x1,x2,…,xn}\mathcal{S} = \{x_1, x_2, \ldots, x_n\}Q:S×S→R+Q:S×S→R+Q: \mathcal{S} \times \mathcal{S} \to \mathbb{R}^+ 彼らはマルコフプロパティにまったく言及しておらず、実際、エッジの重みが確率を表す場合、確率はチェーンの現在の状態のみに依存し、パスを導くパスに依存しないため、マルコフプロパティは自明であると信じていますそれに。 他の記事では、一括性のリレーショナルプロパティについてマルコフチェーンが同様に定義されています。 マルコフ連鎖は、トリプレットとして表されます。 ここで、は有限状態セットであり、は、ある状態から別の状態に移行する確率を示す遷移確率行列であり、はシステムが特定の状態で開始する可能性を表す初期確率分布。MMM(S,P,π)(S,P,π)(S, P, \pi)SSSMMMPPPππ\pi 繰り返しになりますが、過去、未来、独立についての言及はありません。 3番目の論文Simple O(m logn)Time Markov Chain Lumpingがあります。そこでは、エッジの重みが確率であるとは述べられていないだけでなく、次のようにさえ述べています。 多くのアプリケーションでは、値は負ではありません。ただし、が意図的にとして選択され、通常は負になるアプリケーションも存在するため、この仮定は行いません。W(s,s′)W(s,s′)W(s, s')W(s,s)W(s,s)W(s, s)−W(s,S∖{s})−W(s,S∖{s})-W(s, S \setminus \{s\}) さらに、一括は、マルコフプロパティを維持しながら状態の数を減らす方法である必要があると述べられています(「同等の」状態をより大きな状態に集約することによって)。しかし、私にとっては、それは単に確率を合計しているように見え、集約された状態への/からの遷移の結果の可能性が範囲内であることを保証するものでもありません。一括処理は実際に何を保存しますか?[0,1][0,1][0,1] したがって、私が見る可能性は2つあります。 マルコフ連鎖が何であるか理解できなかった、または それらの論文でのマルコフ連鎖という用語の使用は偽物です 誰かが状況を明確にできますか? その用語を使用しているさまざまなコミュニティが実際にあるように見え、それらは大きく異なることを意味しています。これら3つの記事から、マルコフプロパティは取るに足らないか役に立たないかのように見えますが、別の種類の論文を見ると、基本的なように見えます。

2
漸近的に記述された関数を操作して結論を​​出すことはできますか?
この質問は宿題に基づいています(実際の問​​題は使用していません)。 次のような関数があるとします。 f(n)∈O(2n2).f(n)∈O(2n2).f(n) \in O(2n^2) \, . 次に、これを次のように扱いますか? f(n)=2n2f(n)=2n2f(n) = 2n^2 それに数学を実行し、その漸近的な意味を保ちますか? 上記の場合、が意味すると推測できますか(この例では係数が重要であると仮定しています)?f(n)∈O(2n2)f(n)∈O(2n2)f(n) \in O(2n^2)f(n)/2∈O(n2)f(n)/2∈O(n2)f(n) / 2 \in O(n^2)

2
計算可能性、複雑さ、言語の小さな間違い?
本の中で計算可能性、複雑性、および言語(2 回目版)、マーティン・デイビスは、(予選)第1章に書いセクション2(機能): セット上の部分関数 SSS ドメインがそのサブセットである関数です SSS。上の部分的な関数の例NN\mathbb{N} によって与えられます g(n)=n−−√g(n)=ng(n) = \sqrt n、のドメイン ggg 完全な正方形のセットです。 これまでのところ簡単です。しかし、彼は先に進み、セクションの最後に数行書きます。 閉鎖の考え方を時々参照します。もしSSS セットです fff の部分関数です SSS、その後 SSSさの下で閉じ fff の範囲の場合 fff のサブセットです SSS。例えば、NN\mathbb{N} 下に閉じています f(n)=n2f(n)=n2f(n) = n^2、ただし下で閉じられていません h(n)=n−−√h(n)=nh(n) = \sqrt n(どこhhhの総関数ですNN\mathbb{N})。 だから最初の引用で n−−√n\sqrt n オン NN\mathbb{N}は部分関数の例ですが、2番目の引用では、同じ関数が合計関数の例です。 両方の例は互いに矛盾しているようです。または、ここでの閉鎖に関して何か不足していますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.