《大数据算法》一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有关。■

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
12月前
|
机器学习/深度学习 自然语言处理 算法
大数据选举预测:算票的不只是选票,还有算法
大数据选举预测:算票的不只是选票,还有算法
474 0
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
11月前
|
算法 搜索推荐 大数据
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
1227 8
|
12月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
687 2
|
算法 搜索推荐 大数据
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
481 5
|
传感器 算法 Python
【电机矢量控制算法】基于线性死区补偿的永磁同步电机矢量控制算法仿真
【电机矢量控制算法】基于线性死区补偿的永磁同步电机矢量控制算法仿真
332 3
|
机器学习/深度学习 人工智能 算法
【多智能体编队】基于自适应控制算法非线性输入的多智能体系统编队控制研究(Matlab代码复现)
【多智能体编队】基于自适应控制算法非线性输入的多智能体系统编队控制研究(Matlab代码复现)
306 0
|
机器学习/深度学习 算法 数据格式
MARS算法理论和Python代码实现:用分段回归解决非线性时间序列预测问题
本文将深入探讨MARS算法的核心原理,并详细阐述其在时间序列预测任务中的应用策略与技术实现。
580 0
|
11月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
853 0
|
11月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
525 2

热门文章

最新文章