码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 38 _ 分治算法:谈一谈大规模计算框架MapReduce中的分治思想


    MapReduce是Google大数据处理的三驾马车之一,另外两个是GFS和Bigtable。它在倒排索引、PageRank计算、网页分析等搜索引擎相关的技术中都有大量的应用。

    尽管开发一个MapReduce看起来很高深,感觉跟我们遥不可及。实际上,万变不离其宗,它的本质就是我们今天要学的这种算法思想,分治算法。

    如何理解分治算法?

    为什么说MapRedue的本质就是分治算法呢?我们先来看,什么是分治算法?

    分治算法(divide and conquer)的核心思想其实就是四个字,分而治之 ,也就是将原问题划分成n个规模较小,并且结构与原问题相似的子问题,递归地解决这些子问题,然后再合并其结果,就得到原问题的解。

    这个定义看起来有点类似递归的定义。关于分治和递归的区别,我们在排序(下)的时候讲过,分治算法是一种处理问题的思想,递归是一种编程技巧。实际上,分治算法一般都比较适合用递归来实现。分治算法的递归实现中,每一层递归都会涉及这样三个操作:

    • 分解:将原问题分解成一系列子问题;

    • 解决:递归地求解各个子问题,若子问题足够小,则直接求解;

    • 合并:将子问题的结果合并成原问题。

    分治算法能解决的问题,一般需要满足下面这几个条件:

    • 原问题与分解成的小问题具有相同的模式;

    • 原问题分解成的子问题可以独立求解,子问题之间没有相关性,这一点是分治算法跟动态规划的明显区别,等我们讲到动态规划的时候,会详细对比这两种算法;

    • 具有分解终止条件,也就是说,当问题足够小时,可以直接求解;

    • 可以将子问题合并成原问题,而这个合并操作的复杂度不能太高,否则就起不到减小算法总体复杂度的效果了。

    分治算法应用举例分析

    理解分治算法的原理并不难,但是要想灵活应用并不容易。所以,接下来,我会带你用分治算法解决我们在讲排序的时候涉及的一个问题,加深你对分治算法的理解。

    还记得我们在排序算法里讲的数据的有序度、逆序度的概念吗?我当时讲到࿰

  • 相关阅读:
    “富二代”极氪,辉煌过后总要独自长大
    vue.js毕业设计,基于vue.js前后端分离订座预约系统(H5移动项目) 开题报告
    【中国知名企业高管团队】系列23:金山软件KINGSOFT
    LeetCode //C - 124. Binary Tree Maximum Path Sum
    【Linux网络编程】- 服务器框架设计
    如何将 Bootstrap CSS 和 JS 添加到 Thymeleaf
    韦东山 嵌入式Linux驱动开发基础知识 【hello驱动 像单片机那样驱动 用结构体封装驱动
    前端(二十四)——轮询与 WebSocket的battle
    【自然语言处理(NLP)】基于注意力机制的中-英机器翻译
    【蜂鸟E203内核解析】Chap.4 累加运算NICE协处理器的设计
  • 原文地址:https://blog.csdn.net/fujuacm/article/details/134250145
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号