0401概述-分治策略-算法导论第三版

文章目录

      • 1 概述
      • 2 递归式
      • 3 递归式技术细节
    • 结语

1 概述

在分治策略中,我们递归地求解一个问题,在每层递归中应用如下三个步骤:

  • 分解:将问题划分为一些规模更小形式一样的子问题。
  • 解决:递归求解子问题。如果子问题规模足够小,停止递归,直接求解。
  • 合并:将子问题的解组合成原问题的解。

当子问题规模足够大,需要递归求解时,我们称之为 递归情况。当子问题变得足够小,不需要递归时,进入 基本情况。有时,除了与原问题形式完全一样的规模更小的子问题外,还需要求解与原问题形式不完全一样的子问题。我们将这些子问题的求解看做合并步骤的一部分。

2 递归式

递归式与分治方法是紧密相关的,因为使用递归式可以很自然地刻画分治算法的运行时间。一个递归式就是一个不等式或等式,它通过更小的输入上的函数值来描述一个函数。

递归式有很多形式。

子问题的规模不必是原问题规模的一个固定比例。

求解递归式的方法,可得出算法 Θ 或 O \Theta 或\Omicron ΘO渐进界

  • 代入法:我们猜测一个界,然后用数学归纳法证明这个界是正确的。
  • 递归树法:将递归式转换为一棵树,其结点表示不同层次的递归调用产生的代价。然后采用边界和技术来求解递归式。
  • 主方法:可求解形如下面公司的递归式的界。 T ( n ) = a T ( n / b ) + f ( n ) T(n)=aT(n/b)+f(n) T(n)=aT(n/b)+f(n) ,其中 a ≥ 1 , b > 1 , f ( n ) a\ge 1,b\gt 1,f(n) a1,b>1,f(n)是一个给定的函数。这种形式的递归式很常见,它刻画了一个分治算法:生成a个子问题,每个子问题的规模是原问题规模的 1 b \frac{1}{b} b1,分解和合并步骤总共花费时间为 f ( n ) f(n) f(n)

我们遇到不是等式而是不等式的递归式,例如 T ( n ) ≤ 2 T ( n / 2 ) + Θ ( n ) T(n)\le 2T(n/2)+\Theta(n) T(n)2T(n/2)+Θ(n),该递归式描述了 T ( n ) T(n) T(n)的一个上界,可以用 O \Omicron O来描述其解。同样的,如果是不等式 T ( n ) ≥ 2 T ( n / 2 ) + Θ ( n ) T(n)\ge 2T(n/2)+\Theta(n) T(n)2T(n/2)+Θ(n),可以用 Ω \Omega Ω来描述其解。

3 递归式技术细节

在实际应用中,我们会忽略递归式声明和求解的一些技术细节。例如,如果对n个元素调MERGE-SORT,当n位奇数时,两个子问题的规模分别为$\lfloor \frac{n}{2}\rfloor和\lceil\frac{n}{2}\rceil , 准确来说都不是 ,准确来说都不是 ,准确来说都不是\frac{n}{2}$.

边界条件是另一类我们同忽略的细节。由于对于一个常量规模的输入,算法的运行时间为常量,因此对于足够小的n,表示算法运行时间的递归式一般为 T ( n ) = Θ ( 1 ) T(n)=\Theta(1) T(n)=Θ(1).

当声明、求解递归式时,我们常常忽略向下取整、向上取整及边界条件。我们先忽略这些细节,稍后在确定这些细节对结果是否有较大的影响。通常影响不大,但需要知道什么时候影响不大,一方面依靠经验判断,另一个方面,一些定理也表名,对于很多刻画分治算法的递归式,这些细节不会影响其渐进界。

能不能用树形结构+线程池实现递归?

结语

欢迎小伙伴一起学习交流,需要啥工具或者有啥问题随时联系我。

❓QQ:806797785

⭐️源代码地址:https://gitee.com/gaogzhen/algorithm

[1]算法导论(原书第三版)/(美)科尔曼(Cormen, T.H.)等著;殷建平等译 [M].北京:机械工业出版社,2013.1(2021.1重印).p37-38

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为ensp中BFD和OSPF联动(原理及配置命令)

作者主页:点击! ENSP专栏:点击! 创作时间:2024年5月6日20点26分 BFD通常指的是双向转发检测。BFD是一个旨在快速检测通信链路故障的网络协议,提供了低开销、短延迟的链路故障检测机制。它主要用于监测两个…

【复试分数线】C9历年分数线汇总(第二弹)

今天我将分析C9中主要考信号的5所院校:复旦大学、上海交通大学、南京大学、哈尔滨工业大学、西安交通大学。 这次会为大家整理四电四邮的整理了近三年各院校的复试分数线作为参考,大家可以参考! 大多数院校采取的是1.2:1差额的形式复试。举…

egg数据统计之mysql数据库创建视图并可当表使用并查询

打开视图---->新建视图-----> 运行sql ----> 保存 统计地区的愿望数量 sql语句 select user.id AS id,count(userplant.userid) AS amount,user.locationid AS locationid,user->location.name AS locationname from ((userplants userplant left join users us…

macOS12安装 php7.1和apache

1. 安装php 7.1 macOS12不再自带php brew tap shivammathur/php 查看可安装版本 brew search php 安装指定版本(禅道适用PHP运行环境(7.0/7.1/7.2版本)) brew install php7.1 环境配置 vim ~/.zshrc export PATH"/usr/local/opt/php7.1/bin:…

Rust 使用egui创建一个简单的下载器demo

仓库连接: https://github.com/GaN601/egui-demo-download-util 这是我第一个rust gui demo, 学习rust有挺长时间了, 但是一直没有落实到实践中, 本着对桌面应用的兴趣, 考察了slint、egui两种框架, 最后还是选择了egui. 这篇博客同时包含我当前的一些理解, 但是自身技术有限,…

Java 7大排序

🐵本篇文章将对数据结构中7大排序的知识进行讲解 一、插入排序 有一组待排序的数据array,以升序为例,从第二个数据开始(用tmp表示)依次遍历整组数据,每遍历到一个数据都再从tmp的前一个数据开始&#xff0…

LeetCode-2960. 统计已测试设备【数组 模拟】

LeetCode-2960. 统计已测试设备【数组 模拟】 题目描述:解题思路一:模拟解题思路二: 一次遍历,简洁写法解题思路三:0 题目描述: 给你一个长度为 n 、下标从 0 开始的整数数组 batteryPercentages &#xf…

Jenkins的原理及应用详解(六)

本系列文章简介: Jenkins是一种自动化构建工具,它的出现使得软件开发过程变得更加高效、可靠和可持续。它采用了一种事件驱动的架构,能够通过触发不同的事件来执行相应的构建任务和操作。Jenkins支持多种版本控制系统的集成,可以自…

【C++】字符串出现次数

文章目录 题目题目描述输入样例输入样例输出 思路AC代码 题目 题目描述 一个字符串中任意个连续的字符组成的子序列为该字符串的子串。给定子串s1和它的一个字符串s2,求s1在s2中出现的次数。 输入 第一行,表示字符串s1, 第二行&#xff0…

自动驾驶纵向控制算法

本文来源——b站忠厚老实的老王,链接:忠厚老实的老王投稿视频-忠厚老实的老王视频分享-哔哩哔哩视频 (bilibili.com),侵删。 功率和转速之间的关系就是:功率P等于转矩M乘以转速ω。并不是油门越大加速度就越大。 发动机和电机的转…

AngularJS基本概念

版本: AngularJs 1.x:https://angularjs.org/ AngularJs 2:https://angular.io/ 或 https://angular.cn/ 实现语言: Angular 1.x:使用ES(avaScript)编写,可直接在浏览器中运行。 Angular 2&#xff1a…

【机器学习】AI时代的核心驱动力

机器学习:AI时代的核心驱动力 一、引言二、机器学习的基本原理与应用三、机器学习算法概览四、代码实例:线性回归的Python实现 一、引言 在数字化浪潮席卷全球的今天,人工智能(AI)已经不再是科幻小说中的遥远概念&…

[muduo网络库]——muduo库三大核心组件之Channel类(剖析muduo网络库核心部分、设计思想)

接着上文[muduo网络库]——muduo库的Reactor模型(剖析muduo网络库核心部分、设计思想),接下来详细介绍一下这三大核心组件中的Channel类。 先回顾一下三大核心组件之间的关系。 接着我们进入正题。 Channel Channel类封装了一个 fd 、fd感兴…

MySQL安全性:用户、权限管理、ACL、加密连接及SQL安全

在数据库管理系统中,安全性始终是一个核心关注点。MySQL,作为广泛使用的开源关系型数据库管理系统,自然也不例外。本文将深入探讨MySQL的安全性,特别是用户和权限管理、访问控制列表(ACL)、加密连接&#x…

【STM32 |程序实测】LED灯闪烁、LED灯流水线、蜂鸣器

LED闪烁&LED流水灯&蜂鸣器的面包板接线图,及对应程序示例 LED闪烁 面包板接线图如下 开启APB2时钟,并且在GPIOA上进行配置,推挽输出,引脚A0,50HZ速度 #include "stm32f10x.h" /…

[Linux][网络][网络层][IP协议]详细讲解

目录 0.基本概念1.IP协议头格式2.IP分片与组装1.为什么要分片?2.分片后谁来组装?3.这个分片操作传输层知道吗?4.如何识别报文和报文的不同?5.接收端,如何得知报文是独立的还是一个分片?6.如何区别哪些分片是…

【论文泛读|附源码】如何进行动力学重构? 神经网络自动编码器结合SINDy发现数据背后蕴含的方程

这一篇文章叫做 数据驱动的坐标发现与方程发现算法。 想回答的问题很简单,“如何根据数据写方程”。 想想牛顿的处境,如何根据各种不同物体下落的数据,写出万有引力的数学公式的。这篇文章就是来做这件事的。当然,这篇论文并没有…

数据结构--图。

在前面,我们学习了线性表和树,而接下来我们要学习的图相较于他们就更加复杂。 目录 一.图的有关概念 一.图的有关概念 1.定义 图(graph)G由两个集合V和E组成,记为G(VE)。V是顶点的有穷非空集合;E是边的集合,边是V中顶点的无序对…

xml怎么用【C#,XML】

作用&#xff1a; 用来保存class对象的全部属性。 语法&#xff1a; < > 必须成对出现 <!--这个是注释--> <Student> </Student> 必须成对出现&#xff0c;Student也叫元素标签 <Name&g…

【Linux】传输文件,补充:VMware中Linux系统无法连接网络的解决方法

Linux系统可以和其他系统之间进行传输文件&#xff0c;只要通过ssh连接成功以后&#xff0c;就能进行文件传输。 Linux系统也可以通过URL规则和网页之间进行传输文件&#xff08;即上传/下载&#xff09;。 1、Linux系统之间传输文件&#xff1a;scp centos7自带ssh服务&…