算法课笔记系列(一)—— 分治算法

本文是算法课笔记的第一部分,重点介绍了分治算法的基本思想、适用条件和经典应用,如乘法运算、Merge排序、求中位数以及矩阵乘法。通过对分治算法的分析,展示了如何通过Master Theorem计算复杂度,并以二分查找为例说明其运行效率。此外,还提及了Sorting Network的构造过程,包括Bitonic Sorter和Merger的构建。
摘要由CSDN通过智能技术生成

首先必须强调的是,我是个算法渣,多少年了~~还是渣/(ㄒoㄒ)/~~

这学期在上英文算法课,机缘巧合选了英文,觉得老师讲得还不错,所以没换到中文。想要通过这样总结一下加深算法理解,考试时也方便复习。

第一次课是对学习算法课需要的数学基础知识的复习,如集合以及集合的操作,函数,关系等,和一些数学证明方法的介绍,包括通过构造证明,通过对照证明(举反例,找矛盾),通过案例证明(可以理解为分情况讨论证明同一个结论对任一情况都成立),通过数学归纳法证明(包含最小反例法则,数学归纳的强法则)。

第二次课是接触算法必须的算法复杂度分析,包括时间和空间上的复杂度分析。通过列举了几个算法实际案例进行的分析,包括两种搜索方法(线性搜索,二分搜索),一个合并算法(将两个已经排好序的列表合并)和三种排序算法(选择排序,插入排序和合并排序)。

                                        

 第一个详细讲的算法是分治算法,该算法主要用于解决这样条件下的问题:

(1)      可以被分解成若干个相同的更小的子问题,即该问题具有最优子结构性质;分解到一定的程度就会很容易解决;

(2)      可以循环解决这些子问题;

(3)      最后可以合适的将子问题的解合并为该问题的解;

(4)      该问题分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题

实际问题就是逐一地解决这三个步骤:在将问题分解成子问题;在递归的最后一步,当问题变得足够小的时候,可以被直接解决了;以及将子问题的答案合并。

使用分治算法的经典例子如下:

(一)  乘法运算

(二)  Merge排序

(三)  求中位数

(四)  矩阵的乘法

先就

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值