当前位置: 首页 > news >正文

4.典型的分治算法

4.1选最大与最小

1.选择问题

概念

image

问题

选最大问题:顺序比较
image

伪码:
image

同时选最大最小问题:
通常算法:先选出最大数,再从剩下的n-1个数里选最小数
image

算法

分组算法:两两数分成一组,每组进行比较,在所有大的数+轮空数里选出最大数,在所有小的数+轮空数里选出最小数
image

伪码:先分组再比较再选数
image

最坏情况时间复杂度:
image

分治算法:递归
image

最坏情况时间复杂度:
image

2.小结:

  • 选最大:顺序比较,比较次数 n - 1
  • 选最大最小:
    • 1.选最大+选最小:比较次数 2n - 3
    • 2.分组:比较次数 ⌈3n/2⌉ - 2
    • 3.分治:n = 2ᵏ 比较次数 3n/2 - 2


4.2选第二大

1.选第二大问题+算法

蛮力算法

顺序比较:
image

锦标赛算法:用空间换时间

提高效率的途径:
image

锦标赛算法:
image

伪码:
image

实例:
image

时间复杂度分析

image

image

image

2.小结:

  • 常规算法蛮力解决:调用2次找最大:2n - 3
  • 锦标赛算法:n + ⌈logn⌉ - 2
  • 思路:用空间换时间


4.3一般性选择问题:选第k小的数

1.一般性选择问题

问题

image

算法

简单的算法:
image

分治算法:
image

m*的选择与划分过程:
image

实例:n = 15,k = 6
image

归约为子问题:
image

伪码:
image

2.小结:

  • 选第k小的算法:
    • 分治策略
    • 确定m*
    • 用m*划分分数组归约为子问题
    • 递归实现


4.4选择问题的算法分析

1.算法分析

详情

用m*划分:
image

子问题规模估计:
image

时间复杂度递推方程:
image

递归树:W(n) = W(n/5) + W(7n/10) + cn
image

2.递归调用:
1.求m*的工作量与|M| = n/t 相关,t为每组元素数,t大,|M|小
2.归约后子问题大小与分组元素数t有关,t大,子问题规模大

3.三分组时的子问题规模:假设t=3,3个一组

时间复杂度

image

算法的时间复杂度:
image

4.小结:

  • 选第k小算法的时间分析:
    • 递推方程
    • 分组时每组元素数的多少对时间复杂度的影响


4.5卷积及应用

1.卷积的定义

向量定义&矩阵解释

定义:
image

矩阵理解:
image

实例:
image

2.卷积与多项式乘法的关系

详情

image

3.卷积的应用:信号平滑处理

详情

image

实例:两边有误差
image
image

4.小结:

  • 卷积的定义
  • 卷积与多项式乘法的关系
  • 卷积的应用--信号平滑处理


4.6卷积计算

1.蛮力算法

详情

image

卷积a*b计算等价于多项式相乘
蛮力算法的时间:O(n²)

2.多项式 高斯滤波

详情

计算2n-1次多项式C(x):
image

高斯滤波的权值函数:
image

2n个数的选择:1的2n次根:
image

实例:
image

快速傅里叶变换FFT
image
image

算法

image

3.小结:

  • 蛮力算法O(n²)
  • 快速傅里叶变换FFT算法:
    • 确定x的取值:1的2n次根
    • 关键步骤:多项式对x求值


4.7多项式求值算法

1.蛮力算法

详情

image

2.改进的求值算法

详情

image

偶系数与奇系数多项式
image
image

分治求值算法设计
image
image

3.FFT算法

详情

伪码:
image

时间复杂度:
image

4.小结:

  • 多项式求值算法:
    • 蛮力算法:O(n³)
    • 改进的求值算法:O(n²)
    • FFT算法:O(nlogn)


4.8平面点集的凸包

1.平面点集的凸包

问题

image

分治算法

image
image

伪码:
image

算法分析--时间复杂度
image

2.小结:

  • 平面点集的凸包是分治算法的一种应用
http://www.jsqmd.com/news/48749/

相关文章:

  • Serilog 日志库简单实践(三)集中式日志与分析平台 Sinks(.net8)
  • 数论部分
  • Java的ConcurrentModificationException异常介绍和解决方案
  • 深入理解 Dart 中的 const 与 final:编译时常量与运行时常量
  • python: 缩放图片
  • java和python做出什么
  • java和linux
  • 湖南工程学院 学科实践与创新协会电气部 幕后揭示
  • KEYDIY PAK06-ZB Phone As Key: Replace Your Car Key with Your Smartphone for European/American Cars
  • 湖南工程学院 学科实践与创新协会电气部 新生选拔赛
  • It Calculus
  • 20232412 2024-2025-1 《网络与系统攻防技术》实验六实验报告
  • 20232309 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2025 ICPC 西安区域赛 VP
  • K8s学习笔记(二十二) 网络组件 Flannel与Calico - 详解
  • 完整教程:人脸识别4-Windows下基于MSVC编译SeetaFace6
  • CF1483D-Useful Edges
  • Paddle-CLS图像分类_环境安装
  • 2025年11月短视频运营公司最新TOP5推荐:业绩增长与效率筛选标准
  • 实用指南:【10】MFC入门到精通——MFC 创建向导对话框、属性页类、属性表类、代码
  • 2025-09-10-Wed-T-Kubernetes
  • 一文入门 Dify平台的插件开发
  • 20232326 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2025年11月小程序开发公司TOP5评测:功能落地与适配筛选标准,西南地区企业选择指南
  • 2025年11月云南数字人供应商最新TOP5推荐:精细建模优质选择
  • 第二讲下梯度下降算法
  • Java云计算技术怎样应对故障
  • 2025-08-02-Sat-T-RabbitMQ
  • Nand2Tetris 笔记
  • 审美积累暗色UI设计超越美学的用户体验