22
上上上上上上 谢谢谢

上帝掷 色子 吗

  • Upload
    yagil

  • View
    70

  • Download
    6

Embed Size (px)

DESCRIPTION

上帝掷 色子 吗. 谢其哲. Introduction. 上帝掷 色子 吗 -> 随机和 概率 能力 : 1. 很大 概率上的正确 解 2. 较 优 解 3. 期望时间 复杂 度 很好的正确解 效果好. 最好写的平衡树 Treap. 期末时当你开始预习数据结构的平衡树是什么感受? AVL , 红黑, AA …… What the f* ck are these ugly trees? 被吓倒了? 来看看居家旅行杀人越货必备之平衡树: Treap. 最好写的平衡树 Treap. 堆 + 排序 二叉树 权 值: key, aux 。 - PowerPoint PPT Presentation

Citation preview

Page 1: 上帝掷 色子 吗

上帝掷色子吗谢其哲

Page 2: 上帝掷 色子 吗

Introduction上帝掷色子吗 -> 随机和概率

能力:1. 很大概率上的正确解2. 较优解3. 期望时间复杂度很好的正确解

效果好

Page 3: 上帝掷 色子 吗

最好写的平衡树 Treap期末时当你开始预习数据结构的平衡树是什么感受?

AVL , 红黑, AA……

What the f*ck are these ugly trees?

被吓倒了?来看看居家旅行杀人越货必备之平衡树: Treap

Page 4: 上帝掷 色子 吗

最好写的平衡树 Treap堆 + 排序二叉树权值: key, aux 。Key :左子树≤根≤右子树(排序二叉树)Aux: 根≤左子树,右子树(堆)

Page 5: 上帝掷 色子 吗

最好写的平衡树 Treap插入:根据 key 找到插入的位置随机生成 aux ,旋转调整

Page 6: 上帝掷 色子 吗

最好写的平衡树 TreapInsert(I, k)

If (i==0) 新建点, aux[i] = rand()

If (k < key[i]) Insert(l[i], k) If (aux[l[i]] < aux[i]) right(i)

Else Insert(r[i], k) If (aux[r[i]] > aux[i]) left(i)

Page 7: 上帝掷 色子 吗

最好写的平衡树 TreapDelete 差不多,只有单旋期望高度: O(logn)平均复杂度: O(logn)

Page 8: 上帝掷 色子 吗

素数判定 Miller-Rabin 算法O() -> O(logn)

费马小定理: (p 为素数 , a<p)

二次探测定理:若P 为合数时, x 取值有很多,如

Page 9: 上帝掷 色子 吗

素数判定 Miller-Rabin 算法令, d 为奇数若或,则称 p 通过以 a 为底的素性测试(为素数)。

原理:若 p 为素数,则 考虑数列 . 最后一位是 1 ,每一位是前一位的平方

%p ,设数列最后一个 1 的前一个是 x ,若 x≠-1 则p 为合数。

例子: a=2 , p=13 , p-1=12=数列: 8, 64%13=12, 144%13=1

Page 10: 上帝掷 色子 吗

素数判定 Miller-Rabin 算法素数一定会通过测试合数有 1/4 的概率通过测试取 6 次不同的底 a ,误判率不到千分之二

取内无误判。

Page 11: 上帝掷 色子 吗

判断 A*B=C?Problem: 给定 A , B , C(n*n 的矩阵 ) ,判断是

否 A*B=C

随机生成 D(1*n 的矩阵 ) ,判断是否 D*A*B=D*C

Page 12: 上帝掷 色子 吗

平面最近点对O(logn)两点距离≥ X 值的差解 1: ( 对随机数据效果很好 )把输入的点按 x 从小到大排序For i = 1 to n for j = i + 1 to n if (x[j] – x[i] < ans) ans = min(ans, distant(i, j)); else break;

Page 13: 上帝掷 色子 吗

平面最近点对What if?....出题人太 ws ,测试数据中点的 x 比较接近

Page 14: 上帝掷 色子 吗

平面最近点对改进:投影到一个随机的向量上,两点距离≥投影点距离按投影位置排序,投影点距离≥ ans ,则 break出题人卡不到

Page 15: 上帝掷 色子 吗

平面最小三角形给定 N 个点,求一个以其中三个点为顶点的三角形,

使其周长最小。

传统算法: O(nlogn) ,难写,常数大O(n^3)随机向量投影, O(n^3)+break 比 O(nlogn) 快

Page 16: 上帝掷 色子 吗

费马点问题给定 n 个点,求一个点到这 n 个点的距离和最小。

Page 17: 上帝掷 色子 吗

费马点爬山算法 : ( 求局部最优解 )随机设置一个初始点 b ,设置初始步长 TWhile T>T_min

Flag=false For i = 1 to k

生成长度为 T 的随机向量 v If b+v 优于 b

b=b+v, flag=trueIf (flag == false) T=T*0.8

Page 18: 上帝掷 色子 吗

模拟退火原理:热力学退火过程,给固体设置一个充分高的温度,温度高时,

原子容易脱离原位置做自由运动。再让其慢慢冷却。冷却时原子会趋向内能最小的地方,但也有一定概率去内能较大的地方,直到温度足够低。

流程:初始温度 T ,初始解 S ,每次迭代次数 L ,降温系数 pWhile T>T_min

Flag=falseFor k = 1 to L

随机长度为 T 的增量 D , S’=S+D 计算 df=f(S’)-f(S) df>0 时 ( 变优了 ) 接受解 S’, flag=true df<0 时 ( 变差了 ) 以接受解 S’

If (flag==false)T=T*p

Page 19: 上帝掷 色子 吗

最小正方形覆盖 (poj3301)枚举正方形一条边的角度,计算最小需要的边长。初始温度 T=pi/2, 角度 S=0 ,每次迭代次数 L=20,

降温系数 p=0.5While T>1e-8

Flag=falseFor k = 1 to L

t = T * (-1 到 1 中的一个随机数 ) df=f(S)-f(S+t) ( f(S) 为一条边角度为 S 时最小正方形边长) df>0 时 接受解 S’,flag=true df<0 时 以接受解 S’ ()

If (flag==false)T=T*p

Page 20: 上帝掷 色子 吗

遗传算法原理:达尔文进化论和遗传学机理有 n 个个体( DNA 序列),按照适应度(权值)从

高到低排序。繁殖:选出两个个体,以高概率选择适应度高的,低

概率选择适应度低的,以一定概率 P交配得出两个新个体代替原来的老个体,新个体的 DNA 是老个体DNA 的组合。

突变:以一定概率随机改变序列的一到两位。重复适应度高的个体得到保存,适应度低的个体淘汰。

Page 21: 上帝掷 色子 吗

拓展遗传算法与蒙娜丽莎

TSP 问题 -> 模拟退火

Page 22: 上帝掷 色子 吗

谢谢!