`
RednaxelaFX
  • 浏览: 3052542 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

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

阅读更多
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问题的现成的解决方案,可惜没有。唯一相关的内容就是这道题目了。放在这一章里,很明显就是要用动态规划来做了,于是会用个二维矩阵之类的数据结构吧。这个问题另外一种常见的解决方法是使用后缀树,不过后缀树也没有什么现成的实现可用,自己实现也挺麻烦的……挠挠头,放下了。
分享到:
评论
4 楼 RednaxelaFX 2008-02-23  
...前面举的例子是示意...
编译命令式语言的时候,如果编译器的优化做得好,也会采用SSA形式的中间代码.这个时候优化器会完成相应的转换,不用我们手工做.

至于这本算法书,它说的是可以把自己自觉的以单赋值的方式来使用局部变量.这样就能比较清楚的观察局部作用域内的数据流,方便分析算法的性质和复杂度之类.
3 楼 lwwin 2008-02-23  
难道需要手动修改符号么……
嗯……应该是在一定的范围内部进行特殊处理……?
2 楼 RednaxelaFX 2008-02-23  
SA就是上面说的Single-Assignment啊,也就是单赋值。SSA是Static Single-Assignment。
当一个变量最多只被赋值一次的时候,就能比较清晰的分析数据流。编译的时候,为了让优化器能更好的理解程序的实际状况,会将中间代码转变为SSA形式的代码,这样就能很方便的找出冗余赋值、无用变量等状况。

例如说原本是这样的代码:
int x, y;
x = 1;
y = x + 1;
x = 0;


可以转变为:
int x1, x2, y1;
x1 = 1;
y1 = x1 + 1;
x2 = 0;


这样,即使在比较复杂的状况下也能够清晰的看出数据流动的路径。
1 楼 lwwin 2008-02-23  
“也就是说一个变量只能被赋值一次。 ”怎么想到了CD-R ……
当然CD-R多了会觉得太麻烦所以CD-RW诞生了-v-+,
PS另外CD-R有时候价格太贵了……

SA是啥FX大需要解释一下的……

相关推荐

    计算机算法——设计与分析导论(第三版).pdf

    在《计算机算法——设计与分析导论》这本书中,我们可以发现以下几个重要的知识点和概念: 首先,我们了解了算法的基本概念。算法是一个明确的指令集合,用来解决特定的问题或者计算某个函数的值。在20世纪30年代,...

    计算机算法——设计与分析导论(第三版 影印版) by Sara Baase.pdf

    计算机算法——设计与分析导论(第三版 影印版)

    计算机算法——设计与分析导论(第三版)影印版

    《计算机算法——设计与分析导论》是计算机科学领域中一本经典的教材,主要涵盖了算法设计的基本原理、分析方法以及实际应用。第三版的更新通常会包含新的研究成果、改进的教学方式和更多的实例,以适应不断发展的...

    《计算机算法-设计与分析导论》中文翻译版

    ### 《计算机算法-设计与分析导论》中文翻译版 #### 1. 算法基础 **1.1 引言** 本章节作为全书的开篇,旨在为读者介绍计算机算法的基础概念,包括算法的基本定义、设计原则以及评估方法等。通过这部分内容的学习...

    算法设计与分析——清华大学王晓东

    《算法设计与分析》是清华大学计算机科学领域著名教授王晓东所著的一本经典教材,它深入浅出地探讨了算法的设计、分析以及实现方法。在IT行业中,算法设计与分析是计算机科学的基础,也是解决复杂问题的关键技能。...

    算法导论————————————

    这本书深入浅出地介绍了计算机算法的设计、分析以及应用,旨在为读者提供全面的算法学习体验。 书中涵盖了广泛的算法主题,包括排序、搜索、图算法、动态规划、贪婪算法、分治法、回溯法、近似算法以及计算几何等。...

    MIT公开课——算法导论教材

    《MIT公开课——算法导论教材》是一份源自美国麻省理工学院(MIT)的珍贵教育资源,专注于教授计算机科学中的核心概念——算法。这份教材涵盖了排序、树和Hash等基础但至关重要的算法,对于学习和理解计算机科学的...

    计算机四大名著之——算法导论(原版 算法 数据结构)

    每一章都围绕一个算法、一种设计技巧、一个应用领域或相关主题展开,不仅提供了算法的详细描述,还通过大量的实例和伪代码解释了其工作原理,使不同层次的读者都能理解并掌握算法的设计与分析。 #### 可读性与深度...

    算法导论——教师手册

    《算法导论》不仅涵盖了算法的基础知识,还深入探讨了各种高级算法的设计与分析方法。通过对本书的学习,读者可以系统地掌握算法的基本原理,并能够在实际工作中灵活运用这些知识解决问题。教师手册为教师提供了丰富...

    (part 4)Computer Algorithms Introduction to Design and Analysis》) (Third Edition) ,Sara Baase Allen Van Gelder

    计算机算法——设计与分析导论(第三版)影印版

    (part 2)Computer Algorithms Introduction to Design and Analysis》) (Third Edition) ,Sara Baase Allen Van Gelder

    计算机算法——设计与分析导论(第三版)影印版

    (part 3)Computer Algorithms Introduction to Design and Analysis》) (Third Edition) ,Sara Baase Allen Van Gelder

    计算机算法——设计与分析导论(第三版)影印版

    经典原版教材——算法导论

    总的来说,《算法导论》是一本内容丰富、覆盖全面的算法教材,它不仅提供了算法设计与分析的坚实基础,还通过大量的实例和练习帮助读者深化理解。无论是对计算机科学的学生还是对算法感兴趣的开发者来说,这本书都是...

    算法导论——RandomizedAlgorithms

    在计算机科学与算法设计领域中,随机化算法(Randomized Algorithms)作为一种独特的算法范式,在解决复杂问题时展现出了其独特的优势与魅力。本篇将围绕“算法导论——随机化算法”这一主题进行深入探讨。 #### 一、...

    中科大算法设计与分析试卷

    在本试卷——“中科大算法设计与分析试卷 2013年 研究生”中,我们可以预见到一系列针对研究生水平的算法相关问题,这些问题可能涵盖了基础算法、数据结构、复杂度分析等多个方面。 **基础算法** 基础算法通常包括...

    算法导论——习题解答

    通过上述章节内容的概述,我们可以看出,《算法导论——习题解答》不仅是一本配套教材的习题解答集,更是一部系统学习算法设计与分析的宝贵资源。通过深入浅出的讲解和丰富的习题解答,本书能够帮助读者建立起坚实的...

    算法导论读书笔记

    《算法导论》是计算机科学领域的一本经典之作,它深入浅出地介绍了算法的设计、分析和实现。这本书的第二到第八章涵盖了诸多基础且重要的算法知识,是学习算法的基石。以下是对这些章节主要内容的详细解读: 第二章...

    计算机专业基础——导论2

    计算机专业基础——导论2,这部分内容主要涵盖了计算机科学与技术领域的基础知识以及未来可能的发展方向,为初入这个专业的学生提供了宝贵的指引。课程通过一系列PPT文件深入浅出地讲解了计算机领域的核心概念。 ...

    算法导论(英文第四版)非扫描

    - **2.1 插入排序**:通过一个简单的例子介绍了一种基本的排序算法——插入排序。 - **2.2 分析算法**:探讨了如何评估算法的效率,包括时间复杂度和空间复杂度。 - **2.3 设计算法**:讨论了设计高效算法的基本...

Global site tag (gtag.js) - Google Analytics