18

アルゴリズムの設計やより離散的なコンピューターサイエンスのトピックに取り掛かるとき、私たちは常に物事を証明しなければならないことになります。誰かが証明が本当に上手になる方法を尋ねるのを見るたびに、一般的な(そしておそらく怠惰な)答えは「練習」です。

基本を理解していれば、練習はすべて問題ありませんが、数学的な証明の考え方をどのように理解しますか?誘導はいつクリックしましたか?これらのトピックを教えるのに最適なリソースは何ですか?プルーフライティングにふける前に、どのような基礎トピックを調査する必要がありますか?

4

7 に答える 7

9

彼らは怠惰ではありません、練習が唯一の方法です。あなたが証明をしなければならないクラスを取り、証明を調べる他の大学からの答えでクラスノートと古いテストをオンラインで探してください。

于 2009-08-26T18:53:02.593 に答える
8

私はCSの学生として、正式な考え方を理解するのに非常に苦労したことを認めることから答えを始めます。あなたに才能がなければ、それは決して簡単なことではありません。

練習勉強に勝る答えはないのではないかと思います。

問題を考え、視覚化する正式な数学的およびアルゴリズム的な方法は、最初にあなたが扱っている主題の非常に深い理解を要求するスキルです。第二に、それはあなたが既存の証明についての十分な知識を持っていることを必要とします。あなたが研究しているアルゴリズムを思いついた偉大な科学者の何人かとしてあなた自身を想像してみてください。その特定の問題にどのように取り組もうとしたかを理解してください。次に、彼らがアルゴリズムの正しさをどのように証明したかを見てください。

このテーマで最も優れた教科書であるCLRSによるアルゴリズム入門のみをお勧めします。すべてのエクササイズを含め、最初から最後までそれを実行すると、スキル向上します。

于 2009-08-26T18:54:55.197 に答える
6

練習は本当に唯一の方法ですが、それは証明を読むことによっても助けることができます。他の回答者が私が考えることができるすべてをカバーしているので、私は練習に触れません、それで私は読むことによって私が何を意味するかについて話すだけです。

教科書は「重要な」証拠を書くのがとても好きです。彼らはしばしば非常に強力なステートメントを証明し、本当に空想的であるため、それは非常に素晴らしいです。しかし、オリンピック選手をエミュレートして1日目から世界クラスの体操選手になることを学ぶべきではないのと同じように(おそらく背骨を壊すでしょう)、(最初は)本当に大きな証拠を読むべきではありません。私が役に立ったのは、通常は返却された宿題(私はあなたが学生だと思います)からの小さな証拠を読んだり、時には賢明な教科書を読んだりすることでした。

プルーフを読むことが役立つと思う理由は、学業プルーフの巨大な塊を構成する「トリック」または「アイデア」の小さなセット、およびさらに高度なものがあるためです。データ構造の品質と漸化式には、通常、帰納法による証明に関連する思考が含まれ、有限状態マシンでの計算可能性に関連する証明では、鳩の巣原理が使用されることがあります。まれに、対角化の概念が使用されます(非常にまれですが、心配する必要はありません)。そしてもちろん、他のほぼすべての証明は、矛盾による証明を使用します。他にも手に負えない便利なツールがあると思いますが、ぜひご理解いただければ幸いです。

いつ、どのように、そしてなぜある特定の方法で問題に取り組むのかを理解することは、実践と経験を必要とするものです。練習に加えてプルーフを読むことをお勧めします。これは、すでに遭遇した証明方法を使用する創造的な方法を示すことが多いためです。

最後に、最初にプログラミングを学んだのはいつかを覚えておいてください。どうやって良くなったの?私の意見では、物事を証明することと物事をプログラミングすることはそれほど異質ではありません。:)

于 2009-08-26T19:14:21.520 に答える
3

あなたは数学者になることによって数学的な証明をするための心構えに入ります。私はトートロジー的な方法で最後のステートメントを意味するのではありませんが、数学ジャーナルに公開されている数学的な証明は、修辞的なアーティファクトのようなものであることを理解しています。つまり、数学者の集団がそれが証拠であることに同意するので、それは証拠です。理想的には、証明の引数はすべてシンボリックロジックに還元できますが、これは実際に行われる方法ではありません。コンピューターで生成された証明が貴重な数学を行うのに完全に失敗したことは、これに対するいくつかの証拠を提供します。

私は証明を行い、他の数学者にそれらを受け入れてもらうことで、心に決めました。私は「練習」が不可欠であるという他の人たちに同意します。試して、試して、試してみない限り、証明は行いません。多くの場合、光はゆっくりと夜明けします。

もちろん、最高のリソースは他の数学者と証明を読むことです。数学コミュニティに参加しなくても、真の数学的証明を行うことができる人は、たとえあったとしてもごくわずかです。

于 2009-08-26T19:01:10.033 に答える
2

ここでは「練習」が本当にベストアンサーだと思います。

プログラミングと非常によく似ています。コツをつかむと、問題を特にうまく解決するパターンが見つかり、これまで実装したことのない新しいシステムの高レベルの設計の図を作成できます。ただし、新人プログラマーはパターンに気づいていません。「機能している」ように見える解決策に偶然出くわすまで、コードをハックします。

証明する問題が発生した場合、通常、プロパティを特定できます(「個別のオブジェクトのセットがありますか?」、「順列を生成していますか?」、「値を最小化/最大化しようとしていますか?」など。 )。遅かれ早かれ、証明は漠然と類似したグループにまとめられ、1つの問題を解決するために使用される手法は、新しいバリエーションに簡単に適用できます。

推奨読書:

于 2009-08-26T19:01:22.920 に答える
0

何も思いつきません。おそらくあなたが作曲を上手にできるのと同じ方法です。

決まった戦略に従っていないことを証明しようとすると、問題について考えるだけです。それから[未定義の時間]後で、私の心は結果を返し、私はそれを書き留めるためにジャンプします。

しかし、練習することは間違いなく役立ちます。私がド・モルガンの法則のような非常に単純なステートメントを証明しようとし始めたとき、私は完全に絶望的でした。それで私は座って、与えられたワークシートで50かそこらのオプションの問題例を実行しました。今、何かを証明するのは自然なことです。

于 2009-08-26T18:51:49.273 に答える
0

実践と研究は完全に理にかなっています、同意しました。私が便利だと思ったいくつかのトリック:

  1. あなたが勉強するすべてのものにメモをとってください(私はただ本を読むことを試みました-たくさんの資料がちょうど通り抜けます)。
  2. 前のポイントに加えて:すべて(またはほとんど)の証明を自分で行い、本/講義ノートをガイドとして使用します。多くの証明には、「私たちは今、そのXXXを見ることができます」のようなフレーズが含まれています。そして、XXXは必ずしも些細な結論ではありません。
  3. 演習を行います。たとえば、CLRSの本には、何十もの演習があります。演習は、アルゴリズム/正しい証明の背後にあるアイデアを得る良い方法です。
  4. アルゴリズムの内部をよりよく理解したい場合は、UVaのようなオンラインプログラミングコンテストに参加することを検討してください。
于 2009-08-27T13:16:19.800 に答える