在证据方面,你如何"得到它"?

Chr*_*ris 17 algorithm computer-science proof

当我们开始进入算法设计和更多离散的计算机科学主题时,我们最终必须一直在证明事物.每当我看到有人问如何变得非常擅长证明时,常见的(也可能是懒惰的)答案就是"练习".

如果你掌握了基础知识,那么练习就没有问题,但是你如何进入数学证明的思维定势?什么时候感应点击?哪些资源最适合教授这些主题?在沉迷于校对之前,应该研究哪些基础课题?

Jar*_*red 9

他们不是懒惰,练习是唯一的方法.参加课程,你必须做校对,并在网上查看课堂笔记和旧测试与其他大学的答案,以及证据.


Yuv*_*dam 8

我会从承认作为一名CS学生开始我的答案开始,我很难掌握一种正式的思维方式,除非你有天赋,否则这从来都不容易.

我担心没有比练习学习更好的答案.

一种正式的数学和算法思维方式和视觉问题是一种技能,首先需要对你正在处理的主题有一个非常深刻的理解.其次,它要求您对现有证据有很好的了解.试着想象自己是一些伟大的科学家,他们提出了你正在研究的算法.了解您将如何尝试解决该特定问题.然后看看它们如何证明了算法的正确性.

我只能推荐这个主题中最好的教科书,即CLRS的算法简介.如果你从头到尾经历它,包括每次运动,你提高你的技能.


ago*_*nst 6

实践是唯一的方法,但它也可以通过阅读证据来帮助.我不打算练习,因为其他的回答者已经涵盖了我能想到的一切,所以我只会谈谈我读到的意思.

教科书非常喜欢写出"重要"的证据.它非常好,因为它们经常被证明是非常强大的陈述,而且非常有趣.但正如你不应该从第1天开始通过模仿奥林匹克运动员来学习成为一名世界级的体操运动员(因为,你可能会打破你的脊椎),你不应该阅读任何真正的大证明(起初).我发现有用的是阅读较小的证据,通常是从返回的家庭作业(我假设你是学生)或偶尔阅读一本教科书.

何故我觉得读证明是有帮助的,是因为有一小部分的"招数",或者说构成功课证明大块的,甚至更高级的"点子".数据结构质量和递归关系通常涉及与归纳证明相关的思考,涉及有限状态机可计算性的证明有时使用鸽子原理,更少有对角化的想法(很少见,不要担心).当然,几乎所有其他证据都使用矛盾证据.我确信还有其他方便的工具让我不知所措,但我希望你能得到这个想法.

弄清楚何时,如何以及为什么用某种特定方法解决问题需要实践和经验.我建议除了练习之外阅读校对,因为它通常可以向您展示使用您已经遇到的证明方法的创造性方法.

作为最后一点,请记住您第一次学习编程的时间.你是如何变得更好的?在我看来,证明事物和编程事物并不是太不相似.:)