《大数据算法》一2.3 时间亚线性判定算法概述

简介: 本节书摘来华章计算机《大数据算法》一书中的第2章 ,第2.3节,王宏志 编著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.3 时间亚线性判定算法概述 本节将介绍时间亚线性判定算法。顾名思义,时间亚线性判定算法指的是在输入的亚线性时间完成判定任务的算法。

本节书摘来华章计算机《大数据算法》一书中的第2章 ,第2.3节,王宏志 编著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3 时间亚线性判定算法概述

本节将介绍时间亚线性判定算法。顾名思义,时间亚线性判定算法指的是在输入的亚线性时间完成判定任务的算法。在很多情况下,判定问题无法在要求的时间内得到精确解,需要寻找近似解。
1.ε-远离
我们来看一个例子,考虑图2-3中哪些图片是“猫”。可以看到第一幅和第四幅图片毫无疑问是猫,第二幅图片里面只有汽车,但是第三幅图片就不确定了,里面放只机器猫,并不容易判定是否真的是猫。上述例子代表了判定问题的三种情况:满足待判定性质、远非满足待判定性质和差不多满足待判定性质。当然,可以说“差不多满足待判定性质”或“差不多不满足待判定性质”。

image


根据上述讨论,判定问题的精确解是严格地判断输入是“满足命题”还是“不满足命题”;而判定问题的近似解仅需要区分输入是“满足命题”还是“与命题相差很远”就可以,对于差不多的情况,则不做区分。这里涉及一个问题:如何定义“与命题相差很远”?可以按照如下方式定义。
定义2-1(ε-远离) 对于命题L和输入x,如果从x到L中任意字符串的汉明距离至少为εx,则x是ε-远离L的。
定义2-1是从计算理论的角度定义的,x是字符串集合,L是一个语言,用于描述一个命题。对于具体的问题,ε-远离有不同的定义方法,下面来看一个实例。
2.全0数组判定问题的亚线性时间算法
全0数组判定问题
输入:包含n个元素的0,1数组A。
输出:如果A中的元素全是0则输出“是”;如果A中的元素有1则输出“否”。
这是一个很简单的问题,很自然会想到把里面的数字全部扫描一遍就可以,但是亚线性时间算法要求的运行时间是n的严格低阶函数o(n)。
这个问题的时间复杂度的下界应该是n,因为如果算法访问的数量少于n的话,一定存在没有访问到的数字。因此,可以扮演一个“坏人”,把这个算法访问不到的数字设为1,这样就会让算法出现误报。
由于无法设计亚线性精确算法,就需要考虑设计近似算法。这里,我们用上述ε-远离的概念定义近似程度。首先,对于全0数组判定问题的ε-远离定义如下:
数组含1的个数大于εn,即为ε-远离。
根据这个ε-远离,全0数组判定问题的判断就变成了是否A=00…0或者A中包含1的个数大于εn。
可以设计基于抽样的算法,伪代码如算法2-5所示。算法2-5 全0数组的判定近似算法

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

算法2-5的时间复杂度是O(s),和n无关,因而是一个亚线性算法。
但该算法显然会出现误判,因为如果一些1没有被抽出来,那么就会出现假阳性——判断的结果为是,但实际为否。但如定理2-6所示,结果并没有那么坏,也就是说出现这个情况的概率不是很大。
定理2-6 如果A是全0数组,始终输出“是”;A是ε-远离时,出错的概率是小于1/3的。
证明 显然,如果A是全0数组,其抽样一定全都是0,则必然输出“是”。只有A中包含1,但是没有被抽样抽出来的时候算法才会出现错误。下面分析出错的概率。如果A是ε-远离的,意味着A中1的个数是大于等于εn的,也就是说随机抽出一个数,其是1的概率大于ε,是0的概率就小于等于1-ε。从这个角度来看,当A是ε-远离时出错的概率也就意味着抽样中没有1的概率,这就需要计算抽出的样本全部是0的概率,因为任意一个样本是0的概率小于等于1-ε,则s个抽样全都是0的概率小于(1-ε)s,即image因此,当A是ε-远离时,出错的概率是小于1/3的。
也就是说数组全是0,可以100%地准确区分;当ε-远离的时候,出错的概率很小。因此,这个算法可以达到近似计算的目的。而运行时间很显然和数组的长度没有关系,仅和抽样的个数s有关。■

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
机器学习/深度学习 自然语言处理 算法
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
【模式识别】探秘判别奥秘:Fisher线性判别算法的解密与实战
61 0
|
2月前
|
存储 算法 Java
【数据结构查找算法篇】----线性查找【实战项目】
【数据结构查找算法篇】----线性查找【实战项目】
30 5
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】极限学习机-遗传算法(ELM-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】Elman神经网络-遗传算法(Elman-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】RBF神经网络-遗传算法(RBF-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储 算法
【程序员必须掌握的算法】【Matlab智能算法】GRNN神经网络-遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值
【程序员必须掌握的算法】【Matlab智能算法】GRNN神经网络-遗传算法(GRNN-GA)函数极值寻优——非线性函数求极值
|
3月前
|
机器学习/深度学习 存储 算法
【Matlab智能算法】BP神经网络-遗传算法(BP-GA)函数极值寻优——非线性函数求极值
【Matlab智能算法】BP神经网络-遗传算法(BP-GA)函数极值寻优——非线性函数求极值
|
4月前
|
分布式计算 算法 搜索推荐
阿里巴巴内部:全技术栈PPT分享(架构篇+算法篇+大数据)
我只截图不说话,PPT大全,氛围研发篇、算法篇、大数据、Java后端架构!除了大家熟悉的交易、支付场景外,支撑起阿里双十一交易1682亿元的“超级工程”其实包括以下但不限于客服、搜索、推荐、广告、库存、物流、云计算等。 Java核心技术栈:覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 大数据:Spark、Hadoop
|
4月前
|
消息中间件 存储 算法
【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)
【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)
75 0
|
4月前
|
存储 分布式计算 大数据
【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )
【云计算与大数据技术】大数据系统总体架构概述(Hadoop+MapReduce )
100 0

热门文章

最新文章