《计算机算法——设计与分析导论》 边读边记

Chapter 1

1.3 Mathematical Background
这段太……太勾起回忆了。这东西一看就是离散数学和概率统计 T T
对我来说不算是什么好的回忆,不过这些数学知识确实很重要。我得加把劲把数学赶上来才行。


Chapter 3

3.5.3 The Single-Assignment Paradigm
我们软工专业对算法的要求也真是太低了。课程里都没怎么多涉及算法分析。结果看到这个小节的时候觉得一懵:我手上这本不是编译器相关的书?
原来是我少见多怪了。为了写出更容易被证明的代码,需要尽量减少两种结构的使用:goto和赋值语句。在命令式语言中,赋值语句不太可能被去除,所以研究人员从去除goto着手而创立了结构化程序设计的领域。结构化的程序有助于控制流的分析,但对数据流还是没什么帮助。后来,研究人员发现为了能清晰的分析一个算法,并不是要避免所有的赋值语句,而只要避免“重写赋值”就行。也就是说一个变量只能被赋值一次。
在函数式语言中,SA的概念已经很常见了。不过一般就不把赋值称为赋值,而是成为“绑定”或者“定义”吧?
命令式语言本身可能难以避免对同一变量的多次赋值问题,不过在编译的时候却经常会为了更有效的分析数据流而采用SSA形式。而我之前对SA的认识一直就是与SSA相关联,所以一看到SA就以为是看到了编译相关的书了……


Chapter 10 Dynamic Programming

exercise 10.18, P478
本来是想找找这书上有没有解决longest common substring问题的现成的解决方案,可惜没有。唯一相关的内容就是这道题目了。放在这一章里,很明显就是要用动态规划来做了,于是会用个二维矩阵之类的数据结构吧。这个问题另外一种常见的解决方法是使用后缀树,不过后缀树也没有什么现成的实现可用,自己实现也挺麻烦的……挠挠头,放下了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值