《大数据算法》一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交替的循环数组。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
机器学习/深度学习 算法 搜索推荐
从理论到实践,Python算法复杂度分析一站式教程,助你轻松驾驭大数据挑战!
【10月更文挑战第4天】在大数据时代,算法效率至关重要。本文从理论入手,介绍时间复杂度和空间复杂度两个核心概念,并通过冒泡排序和快速排序的Python实现详细分析其复杂度。冒泡排序的时间复杂度为O(n^2),空间复杂度为O(1);快速排序平均时间复杂度为O(n log n),空间复杂度为O(log n)。文章还介绍了算法选择、分而治之及空间换时间等优化策略,帮助你在大数据挑战中游刃有余。
604 3
|
12月前
|
机器学习/深度学习 自然语言处理 算法
大数据选举预测:算票的不只是选票,还有算法
大数据选举预测:算票的不只是选票,还有算法
480 0
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
数据采集 机器学习/深度学习 算法
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
别急着上算法,咱先把数据整明白:大数据分析的5个基本步骤,你都搞对了吗?
1107 4
|
11月前
|
算法 搜索推荐 大数据
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
当“爆款书”遇上大数据:出版业的老路,正在被算法改写
1234 8
|
算法 搜索推荐 大数据
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
大数据能不能看透消费者的心?聊聊那些“你以为是偶然,其实是算法的必然”
482 5
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
523 0
|
数据采集 机器学习/深度学习 人工智能
大数据中的数据预处理:脏数据不清,算法徒劳!
大数据中的数据预处理:脏数据不清,算法徒劳!
1468 2
|
缓存 算法 大数据
大数据查询优化算法
【10月更文挑战第26天】
783 1
|
机器学习/深度学习 数据采集 算法
大数据中缺失值处理使用算法处理
【10月更文挑战第21天】
2295 3

热门文章

最新文章