《大数据算法》一2.5 串相等判定算法

简介: 本节书摘来华章计算机《大数据算法》一书中的第2章 ,第2.5节,王宏志 编著, 更多章节内容可以访问云栖社区“华章计算机”公众号查看。 2.5 串相等判定算法 本节讨论一个通信亚线性算法问题,因为在很多情况下,数据传输时间和数据量大致成正比,因而将通信亚线性算法归到本章讨论。

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

2.5 串相等判定算法

本节讨论一个通信亚线性算法问题,因为在很多情况下,数据传输时间和数据量大致成正比,因而将通信亚线性算法归到本章讨论。
在现实中会有这样的问题,假设A公司总部有一个庞大的数据库,而在分公司B处保存这个数据库的副本,为了数据库的一致性,要定期地比较数据。这就涉及串相等判定问题。
串相等判定问题
输入:串s1和s2。
输出:如果s1=s2输出“是”,如果s1≠s2输出“否”。
很显然,任何一致性检测都要求发送所有n位数据,否则,无法检测未发送位置的错误。但是,对于庞大的数据库,n可能非常大,传输全部n位几乎不可能。
设将s1中的n位数据表示为(a1,…,an),s2中的n位数据表示为(b1,…,bn),一个可能的方法是随机选一些位,然后对随机选择的位进行判断。这样做的问题在于,如果产生的错误在总的串中比例很小(比如仅有一个错误),则这种方法将失效。因而需要具有全局性的方法。
基本想法是为两个字符串制作指纹来体现字符串的全局特征,即我们将数据看成n位的整数a和b,image,定义指纹函数(p为素数):Fp(x)=x mod p。
算法是随机选取素数p,检测Fp(a)=Fp(b)是否成立。
下面讨论p的选取对算法的影响。
根据这个算法,在计算过程中,需要比较的数字最大不超过p,因而需要传输logp位,而不是n位。考虑到传输效率的问题,希望选择一个较小的p。
下面讨论算法的误判概率,在a和b不等且都与p同余的情况下会发生假阳性的误判。
设c =a-b,也就是,当a≠b且c整除p时发生误判。由于c≤2n,c的素因子至多有n个。给定一个p,通过素数定理,大概有p/ln(p)个小于p的素数,此时出错的概率是nlnp/p。
根据上述讨论,现在我们想选择一个素数p,这个数字要足够大以确保有足够多小于p的素数,同时这个数字又要足够小以确保高效的通信。
取p=2n2ln(n)(取这个数是为了计算方便,但这样的p可能不是一个整数,在实际实现中可以取p是一个大于2n2ln(n)但和2n2ln(n)最接近的素数),代入出错概率公式,发生错误的概率不超过2/n,在这种情况下需要传输的位数为O(logn)。
习题
2.1 证明2.1.3节中生成的多边形PA和PB包含点的个数为O(n)。
2.2 为了保障航运安全,旅客不允许携带危险品乘坐飞机,因此在旅客登机前需要由安检人员检测旅客是否携带危险物品。假设共有n名旅客需要登机,用o(n)时间近似判断这n名旅客是否有人携带危险品。
2.3 在输入的正文串(长度为n)中查找某一字符是否出现,若出现,输出1,否则输出0。设计时间复杂度为o(n)的算法求解这个问题。
2.4 miRNA(微小RNA)在生命活动中具有重要功能,由约21个碱基构成,比如AUGUCCUCCUUAUGCCUAUGC可能就是一条miRNA。如果我们想知道细胞内有没有感兴趣的miRNA,可以通过测序解决。测序结果可能是n个21碱基的序列。设计时间复杂度为o(n)的算法,给定包含n个测序结果的集合S(n条序列)和感兴趣的miRNA序列l,判定S是否包含l。
2.5 一幅二值图(有n个像素)仅由0和1组成,设计时间复杂度为o(n)的算法,判断该图的黑色(1)和白色(0)是否各占一半。
2.6 设计亚线性算法检查两个字符串是否相同。
2.7 设计时间复杂度为o(n)的算法,判断一个包含n个数的数组是否有相同的数字。
2.8 设计时间复杂度为o(n)的算法,判定输入规模为n的0,1数组中,是否正好有k(k≤n)个0。
2.9 设计时间复杂度为o(n)的算法,判定一个长度为n的0,1数组是否为0,1交替的循环数组。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
7月前
|
机器学习/深度学习 数据采集 算法
解码大数据:模型与算法的奥秘和应用
解码大数据:模型与算法的奥秘和应用
|
4月前
|
分布式计算 算法 搜索推荐
阿里巴巴内部:全技术栈PPT分享(架构篇+算法篇+大数据)
我只截图不说话,PPT大全,氛围研发篇、算法篇、大数据、Java后端架构!除了大家熟悉的交易、支付场景外,支撑起阿里双十一交易1682亿元的“超级工程”其实包括以下但不限于客服、搜索、推荐、广告、库存、物流、云计算等。 Java核心技术栈:覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 大数据:Spark、Hadoop
|
4月前
|
消息中间件 存储 算法
【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)
【云计算与大数据技术】数据编码LZSS算法、Snappy压缩库及分布式通信系统的讲解(图文解释 超详细)
77 0
|
4月前
|
存储 算法 搜索推荐
大数据管理的重要思想和算法总结----排序(上)
大数据管理的重要思想和算法总结----排序(上)
42 0
|
7月前
|
分布式计算 算法 搜索推荐
阿里巴巴内部:全技术栈PPT分享(架构篇+算法篇+大数据)
我只截图不说话,PPT大全,氛围研发篇、算法篇、大数据、Java后端架构!除了大家熟悉的交易、支付场景外,支撑起阿里双十一交易1682亿元的“超级工程”其实包括以下但不限于客服、搜索、推荐、广告、库存、物流、云计算等。 Java核心技术栈:覆盖了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。 大数据:Spark、Hadoop
|
8月前
|
机器学习/深度学习 人工智能 算法
实用!50个大厂、987页大数据、算法项目落地经验教程合集
大数据、算法项目在任何大厂无论是面试还是工作运用都是非常广泛的,我们精选了50个百度、腾讯、阿里等大厂的大数据、算法落地经验甩给大家,千万不要做收藏党哦,空闲时间记得随时看看! 如果你没有大厂项目经验,对大厂算法、大数据的项目运用不了解建议你看看!
|
9月前
|
算法 Java 关系型数据库
引用计数 vs 根可达算法:深入比较对象存活判定
引用计数 vs 根可达算法:深入比较对象存活判定
138 0
|
11月前
|
算法 大数据 开发者
大数据开发基础的数据结构和算法的算法思想的分治
在大数据开发中,算法的思想对于解决各种问题都非常重要,其中分治算法是一种非常常见的算法思想,特别适合处理一些复杂的问题。
68 0
|
11月前
|
算法 大数据 调度
大数据开发基础的数据结构和算法的算法思想的贪心
大数据开发中,算法的思想对于解决各种问题都非常重要。其中,贪心算法是一种非常常见的算法思想,特别适合处理一些最优化问题。
57 0
|
11月前
|
算法 大数据 图形学
大数据开发基础的数据结构和算法的算法思想的递归
在大数据开发中,递归算法是一种基础算法思想。它通常用于解决复杂问题的求解和实现,通过不断地将一个问题分解成更小的子问题,最终得到问题的解决方案。
73 0

热门文章

最新文章