• 大数据算法(一)亚线性算法


    来源:大数据算法 王宏志 

    一、概述

    大数据定义:在给定的资源约束下,以大数据为输入,在给定时间约束内可以生成满足给定约束结果的算法。

    大数据特点:4V

    大数据算法可以不是:

    • 精确算法
    • 内存算法
    • 串行算法
    • 仅在电子计算机上运行的算法

    大数据算法不仅是:

    • 云计算
    • MapReduce
    • 大数据分析和挖掘的算法

    难度:

    • 访问全部数据时间过长

                   读取部分数据 亚线性算法

    • 数据难以放入内存

                   将数据存储到磁盘上 外存算法

                   仅基于少量数据进行计算 空间亚线性算法

    • 单个计算机难以保存全部数据

                   并行处理 并行算法

    • 计算机能力不足或知识不足

                  人来帮忙 众包算法

    大数据上问题求解计算问题的过程

    大数据的算法设计技术

    • 精确算法设计方法
    • 并行计算
    • 近似计算
    • 随机算法
    • 在线算法/数据流算法
    • 外存算法
    • 面向新型体系结构的算法
    • 现代优化算法

    大数据算法分析

    • 时间空间复杂性
    • IO复杂性
    • 结果质量(近似比、competitive ratio)
    • 通讯复杂性

    二、亚线性算法概述

    1.定义

    时间/空间/IO/通讯/能量等消耗是o(输入规模)

    亚线性时间算法

    • 性质检测算法
    • 亚线性时间近似算法

    亚线性空间算法

    • 数据流算法

    2.空间亚线性算法-水库抽样

    输入:一组数据,其大小未知

    输出:这组数据的k个均匀抽样

    要求:

    • 仅扫描数据一次
    • 空间复杂性为O(k) 和抽样大小有关,和整个数据无关
    • 扫描到数据的前n个数字时(n>k),保存当前已扫描数据的k个均匀抽样

    算法:

    • 申请一个长度为k的数组A保存抽样
    • 保存首先接收到的k个元素
    • 当接收到第i个新元素t时,以k/i的概率随机替换A中的元素(即生成[1, i]间随机数j,若k<=j,则以t替换A[j]

    3.时间亚线性计算算法-平面图直径

    输入:m个顶点的平面图,任意两点之间的距离存储在矩阵D中,即点i到点j的距离为Dij

    • 输入大小是n=m的平方
    • 最大的Dij是图的直径
    • 点之间的距离对称且满足三角不等式

    输出:该图的直径和距离最大的Dij

    要求:运行时间为o(n)

    算法:

    动机:无法在要求的时间内得到精确算法,寻找近似算法

    近似算法

    • 任意选择k<=m
    • 选择使得Dkl最大的l
    • 输出Dkl和(k, l)

    近似比

    Dij <= Dik+Dkj <= Dkl+Dk l<= 2Dkl 因而近似比为2

    近似时间

    4.近似算法 

    什么是近似算法

    • 近似算法主要用来解决优化问题
    • 能够给出一个优化问题的近似优化解的算法

    近似算法解的近似度

    • 问题的每一个可能的解都具有一个代价
    • 问题的优化解可能具有最大或最小代价
    • 我们希望寻找问题的一个误差最小的近似优化解

    我们需要分析近似解代价与优化解代价的差距

    • Ratio Bound
    • 相对误差
    • (1-ε)-近似

    5.时间亚线性判定算法-全0数组判定

    输入:包含n个元素的0,1数组A

    输出:A中的元素是否全是0

    要求:运行时间为o(n)

    判定问题的近似:

    • 无法在要求的时间内得到精确解,寻找近似解

                    判定问题如何近似

    • 输入满足某种性质或者远非满足此性质

     

    •  ε-远离

                对于输入x,如果x到L中的任意字符串的汉明距离至少为ε|x|,则x是ε-远离L的

    全0数组判定问题的近似

    • 是否A=00...0或者其包含1的个数大于 εn?

    算法描述:

    • 在A中随机独立抽取s= 2/ε个位置上的元素
    • 检查抽样,若不包含1,则输出“是”,若包含1,则输出“否”

    判定精确性分析

    • 如果A是全0数组,始终输出“是”
    • 如果A是 ε-远离的,

    运行时间:O(s)

    证据引理:

    • 如果一次测试以大于等于p的概率获得一个证据,那么s=2/p轮测试得到证据的概率大于等于2/3

    判定算法的定义

    三、亚线性算法案例

  • 相关阅读:
    04-基本的mysql语句
    03-MySql安装和基本管理
    02-数据库的概述
    MySql的前戏
    Python3连接MySQL数据库之pymysql模块的使用
    mockjs简单易懂
    GitHub Android 开源项目汇总 (转)
    国内云计算的缺失环节: GPU并行计算(转)
    HDFS+MapReduce+Hive+HBase十分钟快速入门
    同步和异步
  • 原文地址:https://www.cnblogs.com/aidata/p/11555808.html
Copyright © 2020-2023  润新知