算法学习day11

参考资料《我的第一本算法书》
第7章 其他算法

1、欧几里得算法(辗转相除法)
用于计算两个数的最大公约数。
(1)具体算法流程(以1112和695为例)
*用较大数字除以较小数字,求出余数。
(1112 mod 695=417)
*再继续用较大数字除以较小数字,求出余数。
(695 mod 417=278)
*不断操作,直到结果为0,最后一次运算中的除数即为最大公约数。
(417 mod 278=139;278 mod 139=0,即139为1112和695的最大公约数。)

(2)优势:不管多大数字,都可以高效求出最大公约数。

2、素性测试
是判断一个自然数是否为素数的测试。
(1)素数:只能被1和其自身整除,且大于1的自然数。在RSA算法(一种安全加密算法)中广泛用到大素数。

(2)“费马测试”(概率性素性测试):根据是否满足费马小定理来判断一个数是否为素数的方法。

(3)费马小定理(素数的性质):
当p=素数,n<p,则有n^p mod p=n。

(4)一般使用费马测试时,随机选择3个n即可。

(5)如果p是素数,则一定满足费马小定理,但反过来,有可能不成立。因为在极低概率下会出现所有n都满足条件的合数(非素数的自然数),这样的合数叫作“卡迈客尔数”,也叫“绝对伪数”。

3、网页排名(佩奇排名)
是一种在搜索网页时,对搜索结果进行排序的算法。利用网页之间的链接结构计算出网页价值的算法。在网页排名中,链入页面越多的网页,它的重要性也就越高。
链入网页的方法一般是超链接。
(1)将重要性数值化
*假设没有链入页面的网页权重为1。
*有链入页面的网页权重是其链入页面的权重之和。
(或如果有一个页面链向多个页面,那么其链向的所有页面将平分它的权重)

(2)“随机游走模型”
但是在上面数值化的过程中,如果遇到环状链接,就会出现问题(权重不断增长),此时可以使用“随机游走模型”来解决问题。
即将权重替换为概率来计算(概率越大,越重要)。

4、汉诺塔
是一种移动圆盘的游戏,同时也是一个递归算法应用示例。
(1)过程如下
假设有三个圆柱(A,B,C),其中A上有圆盘,从上到下依次叠放圆盘1,2,3…n个,B,C圆柱是空的。可实现A,B(或C)圆柱是空的,C(或B)圆柱从上到下依次叠放圆盘1,2,3…n个圆盘。
用数学归纳法可证明:
*只有1个圆盘时,直接将圆盘从A移到C(或B)。
*假设n个圆盘时,上述成立。
*当有n+1个圆盘时,先移动n个圆盘到B(或C),剩最后一个n+1圆盘,将其移到C(或B),再将n个圆盘移至C(或B)。即实现。

参考资料《我的第一本算法书》内容完。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值