今天的算法课是学习离线算法,在计算机科学中,一个在线算法是指它可以以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入。相对的,对于一个离线算法,在开始时就需要知道问题的所有输入数据,而且在解决一个问题后就要立即输出结果。例如,选择排序在排序前就需要知道所有待排序元素,然而插入排序就不必。

举的例子有:1.沿城墙走找门。2.发扑克牌,最大点数。3.选择item.

听到的重点是:1. Competitiveness的概念。2. 老师反复提到的adversary

Competitiveness,简单来说就是我们设计的算法的收益,代价什么的和最优算法的比值,用这个来衡量我们算法的好坏。对于最优算法OPT,我们并不知道它具体是什么,只知道有这么个算法能得到最优结果。对于如何考虑离线算法,因为不知道全局的情况。 可以考虑有一个敌人(adversary),总是让我们的算法陷入最坏的情况,让我们达不到好的Competitiveness,下面以例子说明。

例子1:一座城墙,有一个城门,初始你在城墙的某个地方,你想到城门那,在你左边或者右边,你不知道城墙的具体位置,方向。这个时候如何走才能使你找到城墙的时候走的距离最小呢?

因为不知道全局情况是什么,所以这里想要设计出比较好的算法比较困难,所以,对于离线算法,首先考虑的是最优算法OPT是什么,再来看看它会怎么“整“你。对于最优算法来说,因为它是知道全局情况的,所以对于他来说直接走到门那里就ok了,假设初始位置离城门的位置是y,那么最优算法OPT走的距离就是y。最优算法我们知道了,现在想的是有个adversary会怎么使我们的算法更坏,使我们的算法走多少个y呢?

假设我现在定的算法是朝着某一方向,加入是左边走x距离,如果没找到门则折回并往反方向右走2x距离,再没找到就再折回,往反方向走上一个距离的2倍。如果是这样的算法的话,那么这个adversary会怎么整我们呢?它可能会将城门的位置设置在x+ε(ε很小)或者设置在与我们走的初始位置反方向的2x+ε处(这里开始我有疑问,为什么不把城门的位置设大点好让我们的算法对此来回走,后来用笔计算了下,这样我们的最优算法OPT也会变大,ALG/OPT的结果反而变小,这不是adversary所希望的)。那么Competitiveness的情况如下:

即Competitiveness的最优值会接近8,就是说最多会走最优解的8倍距离。老师也说了,可以将往回走的值设为3倍及以上也可,计算出来的结果表明取2倍的距离会得到最好的Competitiveness。

例子2:发扑克牌问题,大致意思(我没听错的话)就是adversary从一副扑克牌中依次选10张牌,每次选出一张给你要还是不要,你只能要一张。对于最优算法OPT来说,因为它知道全局情况他可以任意依次选10张牌,但是他的目的是使你的Competitiveness尽可能不利,即这里的adversary的目标是使你选较小的牌,而最优算法会选较大的牌从而使Competitiveness变大(OPT/ALG),那么它的策略是在前九张不会放较大的数字,比如说一直放4,你可能犹豫不觉,到了倒数第二张,如果你选了4,那么adversary就放13(k)。如果你不选4,那么最后一张就放1,这两种情况下的Competitiveness分别为13/4和4/1.

这样总结的到的结论是:对于在线算法,因为没办法知道全局情况(事先的全部输入),所以不可能好过最优算法,我们要考虑的是最坏的情况下怎么取得较好的Competitiveness

例3:工作调度问题(据说是谷歌的面试题),题目的意思我好想理解的有问题。。。。。。,这里暂且不分析了,以后自己搞明白了再回来写

算法课堂笔记13—Online Algorithm的更多相关文章

  1. 算法课堂笔记14—NP-COMPLETENESS

    今天的算法课接着上一节,说的是NP问题. 1.关于什么是P和NP问题 所谓P问题是指所有能在多项式复杂度解决的问题,比如排序算法,n*n复杂度解决问题.而对于有些问题,目前可能没有多项式复杂度的解决方 ...

  2. 《linux就该这么学》课堂笔记13 网络会话、ssh、远程会话

    1.常见的网卡绑定驱动有三种模式—mode0.mode1和mode6 mode0(平衡负载模式):平时两块网卡均工作,且自动备援,但需要在与服务器本地网卡相连的交换机设备上进行端口聚合来支持绑定技术. ...

  3. 九章算法系列(#3 Binary Tree & Divide Conquer)-课堂笔记

    前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode ...

  4. 九章算法系列(#5 Linked List)-课堂笔记

    前言 又是很长时间才回来发一篇博客,前一个月确实因为杂七杂八的事情影响了很多,现在还是到了大火燃眉毛的时候了,也应该开始继续整理一下算法的思路了.Linked List大家应该是特别熟悉不过的了,因为 ...

  5. 九章算法系列(#4 Dynamic Programming)-课堂笔记

    前言 时隔这么久才发了这篇早在三周前就应该发出来的课堂笔记,由于懒癌犯了,加上各种原因,实在是应该反思.好多课堂上老师说的重要的东西可能细节上有一些急记不住了,但是幸好做了一些笔记,还能够让自己回想起 ...

  6. 九章算法系列(#2 Binary Search)-课堂笔记

    前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一 ...

  7. 《Algorithm算法》笔记:元素排序(2)——希尔排序

    <Algorithm算法>笔记:元素排序(2)——希尔排序 Algorithm算法笔记元素排序2希尔排序 希尔排序思想 为什么是插入排序 h的确定方法 希尔排序的特点 代码 有关排序的介绍 ...

  8. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  9. ocp11g培训内部教材_052课堂笔记(042)_体系架构

    OCP 052 课堂笔记 目录 第一部分: Oracle体系架构... 4 第一章:实例与数据库... 4 1.Oracle 网络架构及应用环境... 4 2.Oracle 体系结构... 4 3. ...

随机推荐

  1. Silverlight TreeView 动态绑定Xml 文件

      随着应用程序的不断升级,客户的需求不断增多,程序员不得不对自己的应用程序做出相应的修改,如果修改的内容较多,那么就必须找出一种简便方法,下面就为大家介绍一下在SilverLight 中左边导航栏T ...

  2. google bookmarket api

    引用: 最近做了google书签同步的模块,发现google并没有公开bookmark相关的api接口,在网上也找了些资料,通过自己抓包分析,测试,总结下使用bookmark接口的心得,我是在andr ...

  3. ajax+jquery+ashx如何实现上传文件

    第一:建立Default.aspx页面 <html> <head runat="server"> <title>ajax图片上传</tit ...

  4. css3属性之 box-sizing

    w3c plus上有详细介绍及原理http://www.w3cplus.com/content/css3-box-sizing,这里摘录其中重要知识点部分. 本文重点考虑移动开发,所以默认移动端的浏览 ...

  5. Aspect Oriented Programming (AOP)

    切面”指的是那些在你写的代码中在项目的不同部分且有相同共性的东西.它可能是你代码中处理异常.记录方法调用.时间处理.重新执行一些方法等等的一些特殊方式.如果你没有使用任何面向切面编程的类库来做这些事情 ...

  6. jquery之empty()与remove()区别

    要用到移除指定元素的时候,发现empty()与remove([expr])都可以用来实现.可仔细观察效果的话就可以发现.empty()是只移除了 指定元素中的所有子节点,拿$("p" ...

  7. Dynamics AX 2012 R2 为运行失败的批处理任务设置预警

    我们主要有两种类型的系统监视:环境健康监视和性能监视. 环境健康监视一般对系统性能影响非常小,是为了提醒潜在的问题. 性能监视通常更有侵入性.监视期间,添加一个负载到环境.因此,它可以回答特定的问题或 ...

  8. [已解决]Eclipse 插件Maven在使用 add dependency,找不到包,解决办法

    以Eclipse版本[Version: Luna Release (4.4.0),]为例, 依次打开:Window >show view > other > Maven Reposi ...

  9. 解读HTML 5新语法 提高语义价值

    HTML 5的新标记 设计者们需要完成的任务是要给HTML 5开发一个更丰富的和更有含义的语义,当然可以想象这种新方案将会是很灵活和很高效的,同时与所有的现代互联网标准相适应.下面就是一些将要在HTM ...

  10. PetaPoco的几个特性

    在PetaPoco中,Brad并没有定义太多Attribute来修饰Models或Fields.这些为数不多的几个Attribute如下: ColumnAttribute ExplicitColumn ...