• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

竹千代

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

随笔分类 -  算法

推荐/预测算法
摘要:基本思路: 对于某一个物体或人(将被预测或者推荐商品),找到K个和它相近的对应物。 然后从这K个对应物中,取平均 常用算法:KNN 阅读全文

posted @ 2016-08-11 07:16 竹千代 阅读(189) 评论(0) 推荐(0)

数据结构与算法应用情景总结
摘要:每两个做输入,先在输入中比大小; 较小者去比较最小记录,较大者去比较最大记录; 建堆; 取K次最大 要求取最大/最小; 可增加、删除元素; 取最大/最小 O(logN) 增加/删除 O(logN) 冲突解决方法: 线性探测法,开链法(申请、释放内存,效率低); 当填充因子较大,需要再哈希 某个; 找 阅读全文

posted @ 2016-04-23 11:36 竹千代 阅读(297) 评论(0) 推荐(0)

分支界限法
摘要:适用: 要求在某约束条件下,求得由n个元素组成的全部解或最优解(解是个集合) 注意是:它同回溯法解决问题类似,关键的不是在于,这个算法解决的问题,解集合中的元素先后顺序是有影响的; 步骤: 1、把解集合的所有可选元素,整理为树状或图状结构 2、由于解集合元素的先后顺序有关。所以,如果,第m个元素选择 阅读全文

posted @ 2016-04-08 21:00 竹千代 阅读(311) 评论(0) 推荐(0)

回溯法
摘要:适用情景: 要求在满足某些限制条件下,求得由小于或等于n个元素组合而成的,全部解或者最优解。 即:1、有约束条件 2、解集合中可包含的元素确定 3、全部解或最优解 步骤: 把解集合,划分成最大层次(n)确定的树状或图状的空间;每一层的节点对应于解的一部分(如第m层对应于是否包含解解集合的第m部分)。 阅读全文

posted @ 2016-04-08 07:43 竹千代 阅读(178) 评论(0) 推荐(0)

动态规划法
摘要:适用情况: 1. 问题可以分为多个阶段(如用1个的阶段,用2个的阶段,.......) 2. 无后效性: 每个阶段可以由前面的阶段决定(这样就减少了运算),但不能有后面的阶段反过去影响前面阶段 3. 重叠性:各阶段存在重复运算,尤其是后阶段依赖前阶段的结果 步骤: 1. 划分阶段 2. 确定阶段转移 阅读全文

posted @ 2015-07-28 10:14 竹千代 阅读(222) 评论(0) 推荐(0)

时空权衡法
摘要:实现思路:对全部输入或者部分做预处理,得到额外信息从而帮助提升算法效率例子:模式匹配/* * 模式匹配 * 直接思路: * 时空权衡法:对模式串进行预处理,构造出额外的移动信息表 */void makeTable(string pattern, char* table) { // t... 阅读全文

posted @ 2015-07-28 10:07 竹千代 阅读(304) 评论(0) 推荐(0)

变治法
摘要:核心数学式: f = g+ h实现思路: 要求解的问题,如何转化为一个或多个容易求解的问题例子: 最小公倍数(先求乘积;再求最大公约数;再相除);检查数组元素唯一性(先排序;再遍历) 阅读全文

posted @ 2015-07-28 10:02 竹千代 阅读(204) 评论(0) 推荐(0)

减治法
摘要:核心数学式:f(n) = f(n-1) + F; 应用:插入排序;生成排序/子集f(n) = f(n/2) + F; 应用:假币问题;俄式乘法f(n) = f(n-k) + F; 应用:查找第k大/小的元素实现思路:考虑对于元素数量为n的集合的执行结果,如何用数量为n-1、n/2或者n-... 阅读全文

posted @ 2015-07-28 09:59 竹千代 阅读(910) 评论(0) 推荐(0)

分治法
摘要:核心数学式:f(n) = F + f([0,n/2]) + f([n/2,n]) 思路: 适用情景: 对一个很大集合,进行内部元素两两处理(比较大小,或者判断方位) 步骤: 1. 分 把问题集合分为独立的几个小集合 2. 治 各自解决 3. 合 把小集合的解合并成最终解 例子:快排、二叉树遍历、最近 阅读全文

posted @ 2015-07-28 09:47 竹千代 阅读(267) 评论(0) 推荐(0)

蛮力法
摘要:蛮力法就是以最直观、最直接,从头到尾,从上到下的思维去尝试解决问题。它主要包括以下三种方式:一个一个地解决:冒泡排序尝试所有可能的迭代:顺序查找、模式匹配尝试所有的排列组合:最近点对、背包问题// 冒泡排序void bubble_sort(array[0,..,n]) { for i=0 to... 阅读全文

posted @ 2015-07-28 09:26 竹千代 阅读(1133) 评论(0) 推荐(0)

如何学习算法
摘要:目前浅显地看过《数据结构与算法分析》《算法设计与分析基础》两本涉及到算法的书。简单认为,学习算法的重点和难点都不在代码实现上,而在:1、数学逻辑式 这个是写出伪代码的关键2、算法正确性证明 证明该算法能得到最优解还是比较优解数学逻辑式,从两方面考虑:一种是迭代,另一种是递归。迭代思维相对... 阅读全文

posted @ 2015-07-22 16:39 竹千代 阅读(356) 评论(0) 推荐(0)

怎么思路写算法?
摘要:写出算法有一个比较通用的方法论,步骤如下: 1、理解问题 先弄清楚具体要解决什么问题 做成怎样的程度就可以满足问题需要?是需要精确值还是近似值? 2、分析问题 用数学思路去描述问题的求解过程 3、确定适当数据结构和流程控制结构 画出流程图 4、用伪代码表述算法 这是很关键的一步,基本是决定成败的一步 阅读全文

posted @ 2015-07-15 11:11 竹千代 阅读(1954) 评论(0) 推荐(0)

 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3