当我们开始进入算法设计和更多离散的计算机科学主题时,我们最终不得不一直证明事情。每次我看到有人问如何变得真正擅长证明时,常见的(可能也是懒惰的)答案是“实践”。
如果你已经掌握了基础知识,练习是可以的,但是你如何进入数学证明的思维模式呢?归纳是什么时候点击的?哪些资源是教授这些主题的最佳资源?在沉迷于校样写作之前,应该研究哪些基础课题?
发布于 2009-08-26 18:53:03
他们不是懒惰,练习是唯一的方法。参加你必须做校对的课程,在网上寻找课堂笔记和旧的测试,这些测试包含了其他大学的答案,这些都是校对过的。
发布于 2009-08-26 18:54:55
我首先承认,作为一名CS学生,我很难掌握一种正式的思维方式,除非你有这方面的天赋,否则这从来都不是一件容易的事情。
恐怕没有比practice和study更好的答案了。
一种正式的数学和算法的思考和设想问题的方式是一种技能,首先需要对你正在处理的主题有非常深刻的理解。其次,它要求你对现有的证据有很好的了解。试着把自己想象成一些伟大的科学家,他们提出了你正在研究的算法。理解你会如何尝试解决这个特定的问题。然后看看他们是如何证明算法的正确性的。
我只能推荐这门课上最好的教科书,那就是Intro to Algorithms by CLRS。如果你从头到尾,包括每一个练习,你会提高你的技能。
发布于 2009-08-26 19:14:22
练习是唯一的方法,但也可以通过阅读校对来帮助你。我不会触及练习,因为其他回答者已经涵盖了我能想到的所有内容,所以我只谈我所说的阅读的意思。
教科书很喜欢写出“重要”的证明。它非常好,因为它们经常被证明是非常强大的语句,并且真的很奇特。但是,正如你不应该从第一天就通过模仿奥运选手来学习成为一名世界级的体操运动员一样(比如,你可能会折断你的脊椎),你也不应该(一开始)阅读任何真正重要的校样。我发现,阅读较小的校对是有帮助的,通常是从退回的家庭作业(我假设你是一个学生),或者偶尔是一本能让你变得明智的教科书。
我之所以认为阅读校对是有帮助的,是因为有一小部分“技巧”或“想法”构成了大量的作业校对,甚至是更高级的校对。数据结构质量和递归关系通常涉及到与归纳证明相关的思考,涉及有限状态机可计算性的证明有时使用diagonalization (非常罕见,不用担心)的概念,以及更少的原理。当然,几乎所有其他的证明都使用了course 的证明。我相信还有其他方便的工具已经忘记了,但我希望您能理解。
弄清楚你何时、如何以及为什么要用一种或另一种特定的方法来解决问题,这需要实践和经验。我建议除了练习之外还要阅读校对,因为它通常可以向你展示使用你已经遇到的证明方法的创造性方法。
最后,试着回想一下你第一次学习编程的时间。你是怎么变好的?在我看来,证明事情和编程事情并没有太大的不同。:)
https://stackoverflow.com/questions/1336703
复制相似问题