当前位置: 首页 > 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.rkmt.cn/news/58551.html

相关文章:

  • 数论部分
  • java和python做出什么
  • 2025 ICPC 西安区域赛 VP
  • 完整教程:人脸识别4-Windows下基于MSVC编译SeetaFace6
  • 2025-09-10-Wed-T-Kubernetes
  • 2025年11月小程序开发公司TOP5评测:功能落地与适配筛选标准,西南地区企业选择指南
  • 第二讲下梯度下降算法
  • 11.23
  • Java云计算技术如何确保稳定
  • 二分查找刷题总结
  • zjoi2019 语言
  • 2025-07-21-Mon-T-RocketMQ
  • P24_现有网络模型的使用及修改
  • 20232403 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 【计算机网络】深入浅出DNS:网络世界的地址簿与导航系统 - 教程
  • 2025-01-24-Fri-T-如何做一个开源项目
  • 利用大语言模型分析技术支持诈骗Facebook群组的网络犯罪研究
  • [CISCN 2022 华东北]duck WP
  • 20232320 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • 2025-01-14-Tue-T-实体关系图ERD
  • HTML游戏创建:利用视频作为特效自动播放的方法
  • 第四章-Tomcat线程模型与运行方式 - 指南
  • 11-24
  • 2023-10-15-R-如何阅读一本书
  • 2023-09-19-R-金字塔原理
  • 11-18
  • 11-12
  • 11-11
  • 苹果app开发上架流程
  • P14566 【MX-S12-T1】取模