摘要: 读书笔记 本章主要讲解了使用递归树方法求解递归式; 在递归树中,每个节点表示一个单一子问题的代价,子问题对应某次递归函数调用。我们将树中每层中的代价求和,得到每层代价,然后将所有曾的代价求和,得到所有层次的递归调用的总代价。 递归树适合用来生成好的猜测,然后可用代入法来验证猜测是否正确,但是在某种程 阅读全文
posted @ 2021-01-14 18:27 ijkzen 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 代入法求解递归式分为两步: 猜测解的形式。 用数学归纳法求出解中的常数,并证明解是正确的。 但是并不存在通用的方法来猜测递归式的正确解,但是也是有一些技巧的: 使用递归树辅助猜测 先猜测一个较为宽松的上界和下界,然后缩小范围 课后习题 证明:$T(n) = T(n-1)+n$的解为$O(n 阅读全文
posted @ 2021-01-14 18:25 ijkzen 阅读(528) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 本章主要讲述了用于矩阵乘法的Strassen算法; 首先使用暴力算法给出了矩阵乘法的一个解,由于使用了三重循环,所以时间复杂度为$\theta(n^3)$; 然后使用分治法给出一个解,但是时间复杂度并没有优于暴力算法,仍然是$\theta(n^3)$; 最后引出了Strassen算法,能在 阅读全文
posted @ 2021-01-14 18:23 ijkzen 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 学习笔记 本章给出一张未来17天的股价涨跌折线图,要求获得最大收益; 将相邻的价格相减,把问题转化为求解最大子数组问题,其输入是一个数值数组,算法需要确定具有最大和的连续子数组; 分解 将数组分为左右两块 解决 最大子数组的产生一共有三种基本情况: 左子数组(向下递归) 右子数组(向下递归) 包含左 阅读全文
posted @ 2021-01-14 18:19 ijkzen 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 这一章节主要是回顾了一些关于数学的内容,下面是其中的重要内容。 多重函数 我们使用记号$f^{(i)}(n)$来表示函数$f(n)$重复$i$次作用于一个初值$n$上。形式化地,假设$f(n)$为实数集上的一个函数。对非负整数$i$,我们递归地定义 \[ f^{(i)}(n)= \begi 阅读全文
posted @ 2021-01-14 18:15 ijkzen 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 转载自 https://www.zybuluo.com/codeep/note/163962 一、公式使用参考 1.如何插入公式 \(\LaTeX\) 的数学公式有两种:行中公式和独立公式。行中公式放在文中与其它文字混编,独立公式单独成行。 行中公式可以用如下方法表示: $ 数学公式 $ 独立公式可 阅读全文
posted @ 2021-01-14 18:08 ijkzen 阅读(269) 评论(0) 推荐(1) 编辑
摘要: 读书笔记 渐近记号用来刻画算法的运行时间,但是想要综合性的覆盖所有的输入,需要不同的渐近记号; $\theta$记号,确定一个算法的渐近上界和渐近下界,具体定义如下: \(\theta(g(n))\)= {\(f(n)\): 存在正常量$c_1$和$c_2$和$n_0$,使得对所有的$n\geq$, 阅读全文
posted @ 2021-01-14 18:04 ijkzen 阅读(287) 评论(0) 推荐(0) 编辑
摘要: (在归并排序中对小数组采用插入排序) 虽然归并排序的最坏情况运行时间为$\theta(n\lg)\(,而插入排序的最坏情况的运行时间为\)\theta(n^2)$,但插入排序中的常量因子可能是的它在$n$较小时,在大多数机器上运行得较快;因此,在归并排序中,当子问题的规模足够小时,采用插入排序的方法 阅读全文
posted @ 2021-01-14 18:01 ijkzen 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 首先是递归和分治的思想; 递归:在函数内部再次调用函数本身,但是这个再次调用所处理的问题要小于上一次调用,函数参数也并不相同; 分治:将原问题分解为几个规模较小但是类似原问题的子问题,然后递归地求解这些问题,最后在合并这些子问题的解来建立原问题的解; 详细讲一下分治: 分解原问题为若干子问 阅读全文
posted @ 2021-01-14 17:58 ijkzen 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 分析算法帮助我们选出某个问题的更优算法; 我们应该使用一个统一的标准去衡量算法的优劣,此处使用——RAM(random-access machine),一个通用的单处理器计算模型。 RAM模型对各种指令的执行时间定义为常量,注意,对于不同的指令该常量值不同; 对于插入排序,数据规模n和执行 阅读全文
posted @ 2021-01-14 17:53 ijkzen 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 原址排序: 在排序过程中,只有常数个数据存储在数组外; 插入排序工作过程: for j = 2 to A.length key = A[j] // insert A[j] into the sorted sequence A[1, j-1] i = j - 1 while i > 0 an 阅读全文
posted @ 2021-01-14 17:49 ijkzen 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 算法无论如何总是必要的。 同样的问题,使用不同的算法结果可能天差地别。 课后习题 1.2-1 给出在应用层需要算法内容的应用的一个例子,并且讨论设计的算法功能。 在android studio中需要对strings.xml按照字母顺序排序,使得文件内容更加有秩序; 1.2-2 假设我们正比 阅读全文
posted @ 2021-01-14 17:41 ijkzen 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 读书笔记 定义 算法 是有输入输出的计算过程。 算法解决的问题 解决当前未能解决的问题 为当前已经解决的问题提供更好的解决方案 算法的指标 速率,解决同样的事情所需要的时间。 课后习题 1.1-1 给出现实生活中需要排序的一个例子或者现实说中需要计算凸壳的一个例子? 拍照时,需要按照身高排序; 1. 阅读全文
posted @ 2021-01-14 17:39 ijkzen 阅读(87) 评论(0) 推荐(0) 编辑
摘要: 使用Windows和Ubuntu双系统的同学可能会发现这样的问题,在双系统切换的时候,总会有一个系统的时间不对,这两个系统的显示时间一般是相差8小时。 原因 这是因为这两个系统对于硬件时间处理方法不同,Windows将机器时间视为本地时间,而Ubuntu将机器时间视为相对时间,真正用于显示的本地时间 阅读全文
posted @ 2021-01-14 17:32 ijkzen 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 之前使用Chocolatey这个在Windows下的包管理器,在使用了一段时间后发现了一些问题: 软件没有集中安装在一个目录下 软件所安装的目录下文件无法编辑 命令行软件更新出错 问题 软件没有集中安装在一个目录下 对于这个问题,官方的文档如下: Where are Chocolatey packa 阅读全文
posted @ 2021-01-14 17:31 ijkzen 阅读(444) 评论(0) 推荐(0) 编辑