`
anna_zr
  • 浏览: 200535 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

海量数据搜索算法优化

阅读更多
原文地址 http://www.ad0.cn/netfetch/read.php/1134.htm


海量数据库的应用,如国家的人口管理系统,户籍档案管理系统,在这样的海量数据库应用中,数据库的存储设计和结构优化(如索引优化)、数据库的查询优化及分页算法尤为重要!

    随着互联网的日益普及,海量信息的增长,网格运算的到来,海量数据存储产品和海量数据存储技术方案的需求更为市场所需。

    同时,实际的海量数据处理,更是涉及很多细节,包括海量数据存储(物理存储、逻辑存储、海量数据库的备份)、数据采集、海量数据查询(海量数据分页、海量数据排序)、海量数据安全和管理等。


百度、google海量数据搜索算法题解

下面是某同仁在baidu和google的笔试中遇到的两道“百度、google海量数据搜索算法题解”

Google和baidu,人家的数据量在那里摆着,他们的命题思路很明确,不要求具体语言,只要求程序的效率和可行性,题目大多数是关于海量数据搜索的算法问题。

百度、google的海量数据搜索算法题

  1、有1亿个浮点数,请找出其中最大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。

  2、有一篇英文文章(也就是说每个单词之间由空格分隔),请找出“csdn”着个单词出现的次数,要求效率最高,并写出算法的时间级。


Peak Wong的海量数据搜索算法题解

  1、有1亿个浮点数,请找出其中最大的10000个。提示:假设每个浮点数占4个字节,1亿个浮点数就要站到相当大的空间,因此不能一次将全部读入内存进行排序。

  ~~~~~~~~~~~~~

  其实占用内存不算大, 可以接受. 呵呵.

  既然不可以一次读入内存, 那可以这么试试:

  方法1: 读出100w个数据, 找出最大的1w个, 如果这100w数据选择够理想, 那么以这1w个数据里面最小的为基准, 可以过滤掉1亿数据里面99%的数据, 最后就再一次在剩下的100w(1%)里面找出最大的1w个咯~~

  方法2: 分块, 比如100w一个块, 找出最大1w个, 一次下来就剩下100w数据需要找出1w个了.(注意消重,这剩下的100w个数据应该是互不相同的。即每找出一个块里最大的1w个,就应该hash存储。下一个块中若出现了已存储的数据,则不计在此块的top 1w里,这样才能保证最终剩下的100w里面寻找top 1w就接近1亿里面的top 1w。想想:如果每个块的top 1w都基本是重复的,不消重的话,最终的结果有可能就少于1w个。)

  对于上面提到的找出100w个数据里面最大的1w个, 说起来比较罗嗦, 还是说说找到第1w个大的数字的方法:

  用快速排序的方法, 分2堆, 如果大的那堆个数N大于1w个, 继续对大堆快速排序一次分成2堆, 如果大堆个数N小于1w, 就在小的那堆里面快速排序一次, 找第10000-N大的数字; 递归以上过程, 就可以找到第1w大的数. 据说也是STL的search_n()的方法;(更好的一种类似的方法是将这些数以5个为一组,每组通过插入排序找出其中位数,再找出其中位数的中位数,依次递归,找出最终一个中位数x,然后按照x对序列进行快排,且设x是序列的第k大的数,如果要找的是第i大的数,则比较k与i的关系,如果相等,直接返回x,否则如果k>i,则在小的那堆里面继续按照这种方式快排,如果k<i,则在大堆里面找第i-k大的数。)

  参考上面的找出第1w大数字, 相信楼主就可以类似的方法找出前1w大数字了.


  第二个问题,其实很简单。

  假设不区分大小写,由于英文字母有26个,因此,可以将单词映射为数字。csdn被映射成:

  ( 'c '- 'a ')*32*32*32+( 's '- 'a ')*32*32+( 'd '- 'a ')*32+( 'n '- 'a ')

  即:( 'c '- 'a ')*(1 < <15)+( 's '- 'a ')*(1 < <10)+( 'd '- 'a ')*(1 < <5)+( 'n '- 'a ')
因为每位都有0-25,共26个值,所以这里采用了32进制,主要是因为32>26,且32 = 1<<5,利用移位操作使得效率大大提高,不需要再按位比较字符串,通过移位之后比较两英文单词所映射得到的整数值即可(比较一次)。

分享到:
评论

相关推荐

    百度、google海量数据搜索算法题解

    标题中的“百度、google海量数据搜索算法题解”和描述提到了两个主要的算法问题,这些问题都是在处理大规模数据时常见的挑战。这类问题通常需要设计高效且内存优化的解决方案,因为数据量太大,无法一次性加载到内存...

    常用大数据量,海量数据处理方法,算法总结

    海量数据处理方法总结 本文总结了常用的海量数据处理方法,包括 Bloom filter、Hashing 和 bit-map 等。这些方法可以用来解决大数据量的问题,例如数据字典、判重、集合求交集等问题。 Bloom Filter Bloom filter...

    试论一种基于粗糙集的海量数据挖掘算法.pdf

    2.1 离散化算法优化:通过引入属性重要性的概念和聚类的思路,对传统离散化算法进行优化,通过循环遍历和阈值计算,实现对海量数据的有效处理和分类。 2.2 并行离散化算法:利用粗糙集理论进行两步离散化算法并行化...

    基于云计算的海量数据挖掘算法分析研究.pdf

    在数据挖掘的并行策略上,需要针对海量数据的高效性进行改造,如并行关联规则算法、分类算法、聚类算法等。 在分布式并行数据挖掘算法的研究中,算法的有效性分析同样重要。在分布式环境下,数据挖掘分片中的数据...

    云计算环境下海量数据挖掘的优化方法研究.pdf

    本文针对云计算环境下海量数据挖掘的优化方法进行了深入研究,重点探讨了如何在云计算平台中有效地处理和分析海量数据,以及如何将智能优化算法应用到数据挖掘的过程中,以便提高挖掘效率和质量。以下是对本文核心...

    mysql_海量数据库的查询优化及分页算法方案.doc

    MySQL 海量数据库的查询优化及分页算法方案 在大规模数据库中,查询优化和分页算法是两个非常重要的方面。本文将详细介绍 MySQL 海量数据库的查询优化和分页算法方案。 一、查询优化 查询优化是指通过调整查询...

    云计算下海量数据挖掘的优化方法探讨.pdf

    综上所述,文章通过探讨云计算环境下海量数据挖掘的优化方法,阐述了云计算的基本框架、海量数据挖掘的目标和挑战、智能优化算法的集成和应用以及优化模型的建立。这些内容为研究者们提供了一套系统的理论和实践框架...

    大数据分析算法优化.pptx

    大数据分析算法的优化是确保在处理海量数据时能够高效、准确完成任务的关键。优化策略主要包括以下方面: 1. **并行化处理与大规模数据处理**: - **并行化处理**:将大量数据分割成更小的部分,在多台计算机上...

    SQL Server海量算法优化.doc

    在SQL Server中,面对海量数据的...总之,SQL Server海量数据的算法优化涉及到索引设计、查询优化、数据分页策略和数据库维护等多个方面。通过对这些领域的深入理解和实践,可以有效地管理并提高处理大规模数据的效率。

    基于Hadoop平台的海量数据挖掘算法的研究分析.pdf

    基于Hadoop平台的海量数据挖掘算法的研究,旨在开发更高效的数据处理与分析技术,以应对日益增长的数据存储和处理需求。 在研究中,Hadoop的架构设计至关重要。Hadoop通过其核心组件HDFS(Hadoop Distributed File ...

    海量数据处理过程中数据挖掘算法的应用.pdf

    云计算算法是应对海量数据处理的经济高效方式,它通过并行计算和分布式计算模式,在计算集群上实现智能计算,降低了计算成本并提高了稳定性。矩阵压缩算法则是利用矩阵识别和特征值运算,对历史数据进行分析,以找出...

    基于粗糙集的海量数据挖掘算法研究 (1).pdf

    基于粗糙集理论的海量数据挖掘算法主要研究目的在于解决传统数据挖掘算法在处理大规模数据集时遇到的局限性问题。随着信息技术的飞速发展,大量企业与研究机构开始依赖海量数据作为知识资源和决策支持。但是,大数据...

    海量数据库的查询优化及分页算法方案

    海量数据库的查询优化及分页算法方案 随着大规模数据库的出现,如何高效地从这些超大容量的数据库中提取数据、分析、统计以及进行数据分页已经成为一个亟待解决的难题。以下我们将探讨如何在有着1000万条数据的MS ...

    海量数据库的查询优化及分页算法方案.

    通过各种算法使您的数据查询大大提高,这种数据主要适用于在大型项目,多数据处理,如大OA项目中公文的查询,区政府机构一般有几十个委办局,每个委办局每天可能都发文,这样算起来,要是过个一年两年,数据会达到上...

    常用大数据量、海量数据处理方法__算法总结.pdf

    无论是社交网络、电子商务还是搜索引擎公司,都面临着海量数据的存储、查询和分析问题。为了有效应对这些挑战,研究者们提出了一系列的算法来处理大数据。本文对常用的大数据处理算法进行总结,包括Bloom Filter、...

    并行化的Apriori算法在海量医疗文档数据挖掘中的应用及优化.pdf

    因此,本文提出了一系列优化策略,将Apriori算法并行化,并利用MapReduce框架在大规模医疗文档数据上执行数据挖掘任务。 通过MapReduce编程模型,可以对医疗文档数据进行全局一次性扫描,大幅提升处理效率,并减少...

Global site tag (gtag.js) - Google Analytics