
算法学习
werweqg
每天进步一点点。
展开
-
排序算法--快速排序
快速排序的基本思想快排的平均运行时间为O(N log N),是一种快速的分而治之的算法,也是已知的最快的排序算法。其基本思想是:1.先从数列中取出一个数作为基准数(代码中采用选取数列第一个 中间 和最后一个这三个元素的中间值作为基准值)。2.分区过程,将比这个数小或等于的数全放到它的右边,大于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数,或者区间小于某个长度时采用常规原创 2015-03-01 23:22:39 · 646 阅读 · 0 评论 -
动态规划--最大公共字串
问题定义 一个字符串S,去掉零个或者多个元素所剩下的子串称为S的子序列。 最长公共子序列就是寻找两个给定序列的子序列, 该子序列在两个序列中以相同的顺序出现,但是不必要是连续的。例如序列X=ABCBDAB,Y=BDCABA。 序列BCA是X和Y的一个公共子序列,但是不是X和Y的最长公共子序列, 子序列BCBA是X和Y的一个LCS,序列BDAB也是。寻找LCS的一种方法是枚举X所有的子序列,原创 2015-03-14 01:08:54 · 560 阅读 · 1 评论 -
编程之美 买书问题
问题描述 《哈利波特》系列一共有五卷,每一卷售价均8欧元。同时买不同的卷(各一本)有折扣,具体如下表所示。 购买方案 折扣 2卷 5% 3卷 10% 4卷 20% 5卷 25%在一份订单中,根据购买的卷数及本数,可以有多种不同折扣规则。但一本书只能应用一个折扣规则。 设计一个算法,计算购书组合,使得所购买的一批书花费最少。求解及分析 假设输入为:1本卷1,2本卷2,2本原创 2015-03-13 01:05:38 · 481 阅读 · 0 评论 -
Dijkstra算法
一、算法正确性证明 归纳法 设V为所有顶点集合,S为已经找到最短路径的顶点的集合。s为源点。 (1)初始条件 初始时,S中仅有节点s,s到s的距离为0,所以肯定是最小距离 (2)假设条件 假设S中已经有k个节点,s到这k个节点的最短距离均已被找到。 (3)推导 此时按照Dijkstra算法添加第k+1个节点p到S中,则其最短距离一定是经由S中的某些节点原创 2015-04-09 23:56:03 · 589 阅读 · 0 评论 -
理解卡尔曼滤波器
核心要点假设系统噪声和测量噪声符合高斯分布,协方差代表不确定度。两个高斯分布的乘积依然是高斯分布,代表了两个分布的融合所以kalman的核心思想即:综合通过前一时刻得到的预测信息(第一个高斯分布)和当期传感器测量的信息(第二个高斯分布),融合两个高斯分布得到当期系统状态的最佳估计。(1) 根据上一时刻系统最佳估计和系统状态方程预测当前时刻的系统状态,得到一个预测值的高斯分布predic...原创 2018-10-31 11:37:52 · 398 阅读 · 0 评论 -
理解paxos算法--事前咨询,事中决定,事后提交
要点:(1)Paxos算法描述的过程发生在“一次选举”的过程中,一次选举包括多轮的提案(proposal)提交,批准,决议的过程(2)一个proposal(提案)包含该提案的唯一编号(number)以及提案内容(value),有提出(propose)—>accept(批准)----->chosen(决议)三个阶段。(3)协议角色包括proposer和acceptor,(也包括le...原创 2018-11-02 15:51:51 · 170 阅读 · 0 评论