我选择阅读的数是《编程之美》,自己的编程能力和算法理解尚且粗浅,看起来感觉问题很吸引人但是书上提到的想法会比较难去理解,在读书的过程中
我也发现现在我思考问题的时候往往也只是偏向于普通的解法而不能再优化上有所多思,类似的书籍还是能帮助自己提升这方面的能力,所以多多益善。
读书的时候自己也会有很多不理解的问题,有的查阅相关文字能有所深入,有些问题我也进行了一些扩展,也就有了下面的一些记录:
1.在光影切割问题上,通过光线的条数和交点的个数可以得出被瓜分的块数,但是如果深入的想到,如果不是直线来瓜分一片区域,是一个折线(貌似角度
可以变化,那么可以分成多少块)?
在查阅相关资料后,我发现这个和直线的情况其实是相似的。每加入1条弯曲线,就像加入了2条直线,只是这“两条”直线在交点处没有延伸,因此导致了
区域的合并(3变1),每加入1条新弯曲线,在新增加区域的数量中都要至少减去2。同时,如果把拐点地放到一个开区域,使得隐去的直线不会与原来的直线
相交,我们只会减少2个区域,所以也就是说,新弯曲线增加的区域数为2n – 2(先像2条直线一样考虑区域的剖分,得到2n,再考虑区域的合并,得到-2)Zn
= Zn-1 + 2n - 2,递归也就能得出所求问题的解法。(新的想法都可以借鉴从之前的经验,这也是一种创新的源泉)
2.在高效率的安排活动的一章中,如果可以用的总时间固定而且只有少于活动个数的场地安排活动(活动时间会有相互冲突),应该如何安排活动使得每个人
能够参加的活动的总和最大?
我觉得这个涉及到贪心的算法但是比较复杂,网上有对于单个的最优化的思路,但是综合每一个人的需求,似乎还得复杂一些,贪心的思路是否还能扩展一下?
3.在翻烙饼的一章中,如果在它翻转的基础上我们可以作弊一次,比如说可以移动中间夹着的一个烙饼,那么我们可以使翻转完成的次数减少多少次?能否能有
一个最优的作弊方法?这个问题网上好像没有查到= =,希望高人解答思路、
4.在cpu的占用一章中,我们通过调节cpu的占用率的举措,在实际的电脑行为中,我们可以通过控制进程来平滑cpu的使用率避免cpu的峰谷变化过快。那么我们
可以实现一个软件,能够针对不同的cpu运算调节其忙、闲比提高其效率达到适应性强的效果呢?对于多cpu的电脑,在忙、闲比的调节上以及进程的分配上又有怎样
的不同呢?
5.在第一遍读完这本书后,我有了很大的启发,一个问题的解决不是结束,我们可以从中得到更多的问题,但是在解决这些问题上,我们也可以借鉴之前的解法加
以变换来解决问题,所以这告诉了我们举一反三的重要性以及发现问题解决问题的思路。
问题都是从实际中得到的,我们要学会发现问题,学会借鉴方法,就能有一定的突破。解决了问题不是最好的,我们要做的也就是发现更多的问题,并且得到更好
的解决办法,往往优化比解题更能提升我们的能力。