学习记录 2020/6/21-29

研一


人越懒越懒,应该把写博客当成每天必完成的任务的

算法导论

这几天主要为了期末考试做准备,算法的东西看的比较多。

动态规划

动态规划用于找到问题的最优解;适用于在求解过程中会重复遇到同一子问题,且问题在划分到最底层的时候可以找到定义好的值的问题。动态规划不需要创建生成树来解决问题,但需要一个数组来额外存储每一个得到的子问题的最优解。该数组是动态规划最核心的东西,动态规划与蛮力法相比降低算法复杂的关键即是通过查表来减少重复计算的工作量。而设置该数组的前提条件即是问题有重复求解的要求,即开头所说的重叠子问题的特性。
在算法导论书中,动态规划分为自顶而下和自下而上两种类型,然而仔细观察不难发现,所谓的自顶向下的求解法也是通过递归的方法首先定位到最简子问题开始求解的,所以可以说动态规划的求解顺序本质上就是从下而上。

回溯法

回溯算法用于找到问题的最优解;适用于不得不用到穷举法的问题中。与穷举法不同的是,回溯算法是有组织地穷举:在遇到就一个解没有必要继续深入穷举的情况下,果断停止穷举并回溯到子问题的父问题中穷举该父问题的其他子问题。回溯法采用构造决策树和深度遍历法,逐步深入完善解的结构,完成对最优值的发现。

分支定界

分支定界采用了回溯法的思想,并进一步增加了一些功能以进一步减少搜索量。分支定界法也可以用于寻找问题的最优解;适用于不得不用到穷举法的问题中。分支定界法首先也是创建一个供搜索的决策树,按广度遍历的顺序计算每一个决策树的子节点下的问题可能达到的解的一个界限,然后根据这个界限的大小决定下一步遍历哪个节点(优先队列法)。分支定界优于回溯法的地方就在于界限值的设置,使得每次遍历都向着最有可能得到最优解的地方前进。

分治算法

分治算法可能会使用到递归的方法,但也可以不使用递归来解决问题。分治算法的分为三个步骤:分解,解决和合并。之所以使用递归方法是因为递归算法可以分解问题的特性比较迎合分治算法而已。
分治算法简化算法复杂度的部分在合并的部分。分解和解决的部分都不过是将问题拆分为小问题解决,但是如果这些部分的计算不是为合并做准备的话,其实并没有将复杂度降低,反而会因为做了额外的拆分工作而将复杂度的隐藏系数增加了。“合并”步骤如果能巧妙使用之前在“解决”步骤下提供的结果的话才真正可以将复杂度降低。如在归并排序中,“合并”步骤通过顺序比较左右两个子数组中的值将两个子数组合并成为一个新的有序数组。而如果没有之前分解和解决步骤提供的有序数组的话,合并步骤就只能将左右两个数组中的每一个数分别与另一个数组中的所有数进行比较,这样一来复杂度依然是O(n2)。

NP理论

在这里插入图片描述

makefile

学习了makefile的自动化变量和函数部分,条件语句部分需要对操作系统和编译环境进一步了解,所以没有太深入学,等以后在项目中再边接触边学。

openssl

asn1和base64模块。
Base64模块主要函数有8个,其中编解码各4个函数。

EVP_EncodeInit #编码前初始化上下文。
EVP_EncodeUpdate #进行BASE64编码,本函数可多次调用。
EVP_EncodeFinal #进行BASE64编码,并输出结果。
EVP_EncodeBlock #进行BASE64编码。

EVP_DecodeInit #解码前初始化上下文。
EVP_DecodeUpdate #BASE64解码,本函数可多次调用。
EVP_DecodeFinal #BASE64解码,并输出结果。
EVP_DecodeBlock #BASE64解码,可单独调用。

ASN1的基本的数据类型一般都有如下函数:new、free、i2d、d2i、i2a、a2i、print、set、get、cmp和dup。其中new、free、i2d、d2i函数通过宏定义实现。new函数用于分配空间,生成ASN1数据结构;free用于释放空间;i2d函数将ASN1数据结构转换为DER编码;d2i将DER编码转换为ASN1数据结构,i2a将内部结构转换为ASCII码,a2i将ASCII码转换为内部数据结构。set函数用于设置ASN1类型的值,get函数用于获取ASN1类型值;print将ASN1类型打印;cmp用于比较ASN1数据结构;dup函数进行数据结构的拷贝。

组织分工

组织分工需要有一定影响力的人来协调,如果没有影响力的话,最好也能调动其他组里成员的积极性,这方面类似天时地利人和这些玄而又玄的东西,需要自己参悟。分工的人会比较累,需要提前就能想好整个工作从头到尾哪里会出问题,哪里需要重点多花时间因此需要多调派人手……越全面的提前规划,在后面越少容易出问题,在后面也越能提升个人的影响力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值