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

举的例子有: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. 帝国CMS内容模板IF判断

    [e:loop={'selfinfo',50,0,0,"jingshu=$navinfor[jingshu]","id"}]<?php$class1=&q ...

  2. copy file to docker、

    Docker是个Linux Container管理软件. 今天我们来讲解一下从主机复制文件到Docker的几种方法. 在分享之前, 我们看看Docker社区对这个问题的需求是有多么强(ju)烈(jin ...

  3. PinPhoto On OS X

    把多张图片摆放到屏幕任何位置并保存成文件,下次打开时恢复之前的状态! 一般使用场景: 经常要看的图片,比如说软件快捷键.库的API.英文生词.常用配色等等摆好在屏幕上以便查看和记忆. 用PS等画画.设 ...

  4. Spring 计划

    3.0----------------------------------------------------- SCRUM 流程的步骤2: Spring 计划 1. 确保product backlo ...

  5. 运行TLD

    TLD(跟踪学习检测)是英国萨里大学的捷克学生Zdenek Kalal在其2010的一篇论文中提出的实时性较好的单目标长时间跟踪算法.其主页上有相关的文章下载,源码是从这里下载的,还可以找到安装步骤, ...

  6. url结构说明

    就以下面这个URL为例,介绍下普通URL的各部分组成 http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&pa ...

  7. 关于C#中的new的用法

    修饰符:隐藏基类中的成员(是基类中的成员,所以字段.属性.事件等等都可以隐藏,不单单是方法哦) public class Car { public void WriteName(string name ...

  8. 禁止输入中文 与 禁止输入数字在phonegap api环境效果

    例子如下: <!doctype html> <html> <head> <meta charset="utf-8"> <tit ...

  9. Java学习第三天160818 表单 框架 下拉列表等

    rect 矩形  src 引用 width宽  height  高  iframe  网页内嵌式小窗口(成对出现) auto  自动的  frameborder  边线  scrolling  滚动条 ...

  10. Spring 定时任务2

    转载自http://www.cnblogs.com/nick-huang/p/4864737.html > 版本说明 <dependencies> <dependency> ...