柴夥說算法(5)--對偶

摘要: 對偶原理在現代數學特別是幾何學,代數學和拓撲學等學科中有着廣泛的應用。 --題記 對偶算法的目的是將原問題轉化爲相應的對偶問題,並求解對偶問題的解,如果對偶問題的解和原問題的解等價的話,那麼就得到了原問題的解。這裏需要說明兩點,一,要求對偶問題的求解比原問題求解簡單;二,對偶問題的解和原問題的解等價 阅读全文
posted @ 2018-07-01 10:57 caicailiu 阅读(175) 评论(0) 推荐(0) 编辑

柴夥說算法(4)--再說樹

摘要: 當年上大學時學的很多東西都忘記了,但是樹這個知識點卻印象深刻,因爲工作中的很多內容都可以拿樹的理論來理解和解釋。 --大學舍友 樹,數據結構中都要涉及這個概念,其中的二叉樹是主要研究內容之一。從直觀意義上來看,樹和家族裏面的宗譜相似,以前也一直是這樣來理解樹結構的。直到最近,我才從另一個角度來重新分 阅读全文
posted @ 2018-06-23 09:38 caicailiu 阅读(120) 评论(0) 推荐(0) 编辑

柴夥說算法(3)--交替迭代

摘要: 變化越少,解決越易。 --題記 多變量問題(比如方程組求解,或者優化目標函數,這裏不妨假設有個變量)是經常涉及到的一類問題,相較於單變量的優化問題,顯然這類問題更難以求解。交替迭代方法的基本思想是將多變量問題轉化爲單變量問題的求解,即,在一步計算時,保持其他的變量固定不變,只求解一個變量的問題,下一 阅读全文
posted @ 2018-06-23 09:37 caicailiu 阅读(1157) 评论(0) 推荐(0) 编辑

柴夥說算法(2)--遞歸

摘要: 計算機的思維方式是自頂向下的,即遞歸。 吳軍 遞歸算法的思想是將一個原始的大問題不斷分解成小問題,直到所有的小問題都可以解決,然後就能夠得到原始問題的解;遞歸算法分爲三個部分,分解的終止條件(否則會陷入死循環中),可解的子問題(對應原問題可求解),以及每次迭代過程中對子問題的處理(該部分可以參見後面 阅读全文
posted @ 2018-06-23 09:35 caicailiu 阅读(159) 评论(0) 推荐(0) 编辑

柴夥说算法(1)-迭代法

摘要: 迭代算法是计算机解决问题的一种基本方法。 --题记 假设站在山脚下,目标是爬到山顶。如果把爬山的过程细化成很多步,那么每一步需要做的两件事情是:确定行进的方向和距离。确定好行进的方向和距离的一个原则是:每行进一步后,更接近山顶。当然,如果你的全局观足够好,这个时候每步行进的方向就能够选择地更好,能够 阅读全文
posted @ 2018-06-23 09:33 caicailiu 阅读(362) 评论(0) 推荐(0) 编辑

开源软件使用之CMake篇

摘要: CMake是一个跨平台的安装编译工具,可以用简单的操作(语句或对话框)来描述所有平台的安装编译过程。 --Cmake官方介绍 这里讲述为什么要使用CMake以及使用时的注意事项。 使用 CMake 的原因 编程界有一句流传已久的话,“不要重复地造轮子”,即如果有现成的程序的程序可以实现想要的功能,你 阅读全文
posted @ 2018-01-26 15:17 caicailiu 阅读(377) 评论(0) 推荐(0) 编辑

数值分析之数值稳定性篇

摘要: 稳定性是数值分析的一个基本问题。 --L N. Trefethen 一个问题定义为由数据的向量空间 X 到解空间 Y 的一个函数 f:X->Y。相应地,一个算法可以看成是两个相同空间之间的另外一个映射 f{bar}:X->Y。注意,前者大部分情况下是一个连续系统,而由于计算机浮点数表示的原因后者是离 阅读全文
posted @ 2017-01-01 21:09 caicailiu 阅读(10042) 评论(0) 推荐(1) 编辑

数值分析之QR因子分解篇

摘要: 在数值线性代数中,QR因子分解的思想比其他所有算法的思想更为重要[1]。 --Lloyd N. Trefethen & David Bau, lll 在给出QR因子分解定理之前,先回顾两个知识点,一是正交矩阵(它的重要性在数值线性代数中似乎怎么强调都不过分),二是线性代数中的 Gram-Schmid 阅读全文
posted @ 2016-12-20 20:13 caicailiu 阅读(1488) 评论(0) 推荐(0) 编辑

递归函数的设计--以二叉树查找为例

摘要: 工作后发现,大学计算机课程里面的树结构相当有用,很多现实中的东西把它看成树就容易理解多了。 大学舍友 最近和二叉树有关的代码频繁地打交道。由于函数的递归实现占用巨大的计算机运行时间(尤其是深层递归调用,存储函数参数的程序栈会占据很大的运行时间,参见图1),我的目的是将递归实现改为非递归的循环实现(以 阅读全文
posted @ 2016-12-18 22:51 caicailiu 阅读(1119) 评论(0) 推荐(0) 编辑

数值分析之奇异值分解(SVD)篇

摘要: 在很多线性代数问题中,如果我们首先思考若做SVD,情况将会怎样,那么问题可能会得到更好的理解[1]。 --Lloyd N. Trefethen & David Bau, lll 为了讨论问题的方便以及实际中遇到的大多数问题,在这里我们仅限于讨论实数矩阵,注意,其中涉及到的结论也很容易将其扩展到复矩阵 阅读全文
posted @ 2016-12-09 22:50 caicailiu 阅读(10751) 评论(0) 推荐(0) 编辑