启发式算法之模拟退火算法

文章目录

  • 1. 模拟退火算法概述
    • 1.1 算法起源与发展
    • 1.2 算法基本原理
  • 2. 算法实现步骤
    • 2.1 初始化过程
    • 2.2 迭代与降温策略
  • 3. 模拟退火算法的优化策略
    • 3.1 冷却进度表的设计
    • 3.2 参数调整与策略
  • 4. 模拟退火算法的应用领域
    • 4.1 组合优化问题
      • 4.1.1 旅行商问题(TSP)
      • 模拟退火算法流程图
      • 4.1.2 图着色问题
    • 4.2 实际应用案例分析
      • 4.2.1 神经网络训练
      • 4.2.2 作业调度
      • 4.2.3 经济调度问题
      • 4.2.4 机器学习特征选择
  • 5. 模拟退火与其他优化算法的比较
    • 5.1 算法优势与局限性
    • 5.2 算法适用性分析
  • 6. 结论与展望
    • 6.1 算法的总结评述
    • 6.2 未来研究方向与应用前景

1. 模拟退火算法概述

1.1 算法起源与发展

模拟退火算法(Simulated Annealing,SA)最早由N. Metropolis等人于1953年提出。该算法的思想来源于固体物理中的退火过程,1983年,S. Kirkpatrick等人将其引入到组合优化问题中。模拟退火算法是一种基于概率的启发式搜索算法,通过模拟固体物质的退火过程来寻找问题的全局最优解。

1.2 算法基本原理

模拟退火算法的核心思想是利用温度参数控制搜索过程中的随机性,以概率方式跳出局部最优解,从而趋向全局最优解。算法的基本流程包括初始化、产生新解、计算目标函数差、接受或舍弃新解,以及温度的逐渐降低。

以下是模拟退火算法的伪代码实现,其中包含了关键的Metropolis准则概率接受公式:

s:=s0; e:=E(s) // 设定当前状态为初始状态s0,其能量为E(s0)
k:=0 // 评估次数初始化为0
while k<kmax and e>emax: // 当评估次数未达到最大且结果未达到最优时sn:=neighbour(s) // 随机选取一临近状态snen:=E(sn) // sn的能量为E(sn)if random()<P(e, en, temp(k/kmax)): // 根据Metropolis准则决定是否移至临近状态sns:=sn; e:=en // 移至临近状态snk:=k+1 // 评估次数加一
returns // 返回最终状态s

其中,P(e, en, temp) 是Metropolis准则的概率函数,公式如下:

P ( Δ E , T ) = { 1 if  Δ E < 0 e − Δ E / T if  Δ E ≥ 0 P(\Delta E, T) = \begin{cases} 1 & \text{if } \Delta E < 0 \\ e^{-\Delta E / T} & \text{if } \Delta E \geq 0 \end{cases} P(ΔE,T)={1eΔE/Tif ΔE<0if ΔE0

这里,ΔE 是新解与当前解的能量差,T 是当前温度。当ΔE 为负时,即新解更优,接受新解;当ΔE 为正时,以指数衰减的概率接受新解,允许算法跳出局部最优。

Simulated Annealing Process

上图展示了模拟退火算法的搜索过程,随着温度的降低,解的状态逐渐稳定。

2. 算法实现步骤

2.1 初始化过程

初始化是模拟退火算法的第一步,它为算法的运行设定了起始点和基础条件。

  • 初始温度设定:选择一个足够高的初始温度 T 0 T_0 T0 ,确保在算法初期可以接受较大的解变动。
  • 初始解的随机选择:从解空间中随机选取一个初始解 x 0 x_0 x0 作为起点。

2.2 迭代与降温策略

迭代过程是模拟退火算法的核心,通过不断迭代寻找全局最优解。

  • 迭代过程:在每次迭代中,通过随机扰动当前解 ( x_i ) 生成新的解 x ′ x' x ,并根据目标函数值决定是否接受新解。
    • 如果 E ( x ′ ) < E ( x i ) E(x') < E(x_i) E(x)<E(xi) ,则接受新解 x ′ x' x 作为当前解。
    • 如果 E ( x ′ ) ≥ E ( x i ) E(x') \geq E(x_i) E(x)E(xi) ,则以一定的概率 P = exp ⁡ ( − E ( x ′ ) − E ( x i ) T i ) P = \exp\left(-\frac{E(x') - E(x_i)}{T_i}\right) P=exp(TiE(x)E(xi)) 接受新解。
  • 降温策略:根据预定的降温函数逐步降低温度 T i T_i Ti ,常用的降温方法包括线性降温和指数降温。
  • 停止条件:当温度降至某一阈值 T m i n T_{min} Tmin 或达到最大迭代次数时,算法终止。
  • Metropolis准则:用于决定是否接受新解的概率,是模拟退火算法的关键部分。
    P = exp ⁡ ( − E ( x ′ ) − E ( x i ) T i ) P = \exp\left(-\frac{E(x') - E(x_i)}{T_i}\right) P=exp(TiE(x)E(xi))
  • 初始温度的选择 对算法的效果有显著影响,过高可能导致算法收敛慢,过低则可能过早陷入局部最优。
  • 降温速度 决定了算法探索解空间的深度和广度,需要根据具体问题进行调整。
  • 算法终止条件 可以是温度降至某一低值或达到预设的迭代次数,确保算法不会无限运行。

3. 模拟退火算法的优化策略

3.1 冷却进度表的设计

冷却进度表是模拟退火算法中控制温度下降过程的关键工具。它决定了算法的搜索广度和深度,直接影响算法的全局优化能力。

  • 几何冷却:温度按照指数规律下降,公式表示为 T n + 1 = α ⋅ T n T_{n+1} = \alpha \cdot T_n Tn+1=αTn,其中 α \alpha α 是小于1的降温系数。

  • 线性冷却:温度按照线性规律下降,公式表示为 T n + 1 = T n − Δ T T_{n+1} = T_n - \Delta T Tn+1=TnΔT,其中 Δ T \Delta T ΔT 是每次降温的固定量。

  • 适应性冷却:根据算法的搜索效果动态调整降温速率,以达到更好的搜索平衡。

3.2 参数调整与策略

参数调整是模拟退火算法中的另一个关键环节,合理的参数设置可以显著提高算法的性能。

  • 初始温度 T 0 T_0 T0:初始温度通常设置得较高,以保证算法在开始阶段具有足够的搜索能力。

  • 终止温度 T f T_f Tf:终止温度决定了算法搜索的精细度,较低的终止温度有助于找到更精确的解。

  • 降温系数 α \alpha α:降温系数控制了温度下降的速率,需要根据问题特性和搜索要求进行调整。

  • 迭代次数 L L L:每个温度下的迭代次数,影响算法的搜索深度。

  • 随机扰动策略:新解的产生通常通过在当前解的基础上添加一个小的随机扰动来实现,扰动的大小与当前温度相关。

通过上述策略的合理设计和调整,模拟退火算法可以有效地应用于各种复杂的优化问题,寻找到全局最优解或近似最优解。

4. 模拟退火算法的应用领域

4.1 组合优化问题

模拟退火算法在组合优化问题中具有广泛的应用,特别是在解决旅行商问题(TSP)、图着色问题、调度问题等NP-hard问题上表现出色。这些问题的共同特点是存在大量的局部最优解,而模拟退火算法通过模拟物理退火过程,能够有效地跳出局部最优,寻找全局最优解。

4.1.1 旅行商问题(TSP)

旅行商问题是模拟退火算法的经典应用之一。问题的目标是寻找一条最短的路径,使得旅行者访问每个城市恰好一次并最终返回起点。模拟退火算法通过随机扰动当前解,并根据Metropolis准则接受或拒绝新解,从而逐步逼近最优路径。

  1. 初始化:设定初始温度 T T T,初始路径 P P P,以及终止温度 T m i n T_{min} Tmin
  2. 当前解:以当前路径 P P P 作为起点。
  3. 产生新解:通过交换、反转或插入等操作在当前路径的基础上产生一个新的路径 P ′ P' P
  4. 计算代价:计算当前路径 P P P 和新路径 P ′ P' P 的代价(路径长度)。
  5. 接受准则:如果 P ′ P' P 的代价更低,则接受 P ′ P' P 作为新的当前解。如果 P ′ P' P 的代价更高,则以概率 exp ⁡ ( − Δ c o s t T ) \exp(-\frac{\Delta cost}{T}) exp(TΔcost) 接受 P ′ P' P,其中 Δ c o s t \Delta cost Δcost P ′ P' P P P P 代价之差。
  6. 降温:按照预定的降温方案降低温度 T T T
  7. 终止条件:如果达到终止温度 T m i n T_{min} Tmin 或满足其他终止条件,则结束算法。

模拟退火算法流程图

新路径更优
新路径较差
开始
初始化参数和路径
生成新路径 P'
比较新旧路径代价
接受新路径 P'
计算接受概率
接受新路径 P'?
降温
是否达到终止条件
输出最优解

4.1.2 图着色问题

图着色问题要求为图中的每个顶点分配颜色,使得没有两个相邻的顶点具有相同的颜色,同时尽量减少颜色的使用。模拟退火算法在这个问题上的应用可以通过随机改变顶点的颜色分配,并接受或拒绝新的颜色分配方案来寻找最优解。

  1. 初始化:设定初始温度 T T T,初始着色方案 C C C,以及终止温度 T m i n T_{min} Tmin
  2. 当前解:以当前着色方案 C C C 作为起点。
  3. 产生新解:通过随机交换顶点颜色或重新着色部分顶点产生一个新的着色方案 C ′ C' C
  4. 计算冲突数:计算当前着色方案 C C C 和新方案 C ′ C' C 的冲突数(相邻同色顶点对的数量)。
  5. 接受准则:如果 C ′ C' C 的冲突数更少,则接受 C ′ C' C 作为新的当前解。如果 C ′ C' C 的冲突数更多,则以概率 exp ⁡ ( − Δ c o n f l i c t s T ) \exp(-\frac{\Delta conflicts}{T}) exp(TΔconflicts) 接受 C ′ C' C,其中 Δ c o n f l i c t s \Delta conflicts Δconflicts C ′ C' C C C C 冲突数之差。
  6. 降温:按照预定的降温方案降低温度 T T T
  7. 终止条件:如果达到终止温度 T m i n T_{min} Tmin 或满足其他终止条件,则结束算法。
新方案冲突少
新方案冲突多
开始
初始化参数和着色方案
生成新着色方案 C'
比较新旧方案冲突数
接受新着色方案 C'
计算接受概率
接受新着色方案 C'?
降温
是否达到终止条件
输出最优着色方案

4.2 实际应用案例分析

模拟退火算法不仅在理论上具有重要意义,而且在实际应用中也展现出了巨大的潜力。以下是一些模拟退火算法在实际问题中的应用案例。

4.2.1 神经网络训练

在神经网络训练中,模拟退火算法可以用来优化网络权重,提高学习效率和模型性能。通过模拟退火过程,可以在权重空间中进行更广泛的搜索,避免陷入局部最优解。

不可接受
可接受
开始
初始化神经网络权重
前向传播计算输出
能量函数评估
调整温度参数
更新权重
进行下一轮迭代
是否达到终止条件
结束训练

4.2.2 作业调度

在作业调度问题中,模拟退火算法可以用来确定作业的最优执行顺序,以最小化完成所有作业所需的总时间或成本。算法通过随机调整作业顺序,并根据目标函数的变化接受或拒绝新序列。

ΔE<0
ΔE>0
开始
初始化作业序列
计算目标函数值
随机扰动生成新序列
计算新序列目标函数值
比较新旧序列目标函数值
接受新序列
计算接受概率
接受新序列
更新作业序列
是否达到终止条件
结束调度

4.2.3 经济调度问题

模拟退火算法在经济调度问题中也有应用,例如在电力系统的机组调度中,通过优化机组的启停和出力,可以提高能源利用效率,降低运营成本。

ΔC<0
ΔC>0
开始
初始化机组状态
模拟发电量与成本
计算总成本
随机调整机组状态
模拟新状态发电量与成本
计算新状态总成本
比较新旧状态总成本
接受新状态
计算接受概率
接受新状态
更新机组状态
是否达到终止条件
结束调度

4.2.4 机器学习特征选择

在机器学习中,特征选择是一个关键步骤。模拟退火算法可以用来在特征空间中搜索最优的特征子集,提高模型的泛化能力和性能。

性能提升
性能下降
开始
初始化特征子集
训练模型
评估模型性能
随机扰动生成新特征子集
训练新特征子集模型
评估新模型性能
比较新旧模型性能
接受新特征子集
计算接受概率
接受新特征子集
更新特征子集
是否达到终止条件
结束特征选择

通过上述案例分析,我们可以看到模拟退火算法在多个领域中的实用价值,其全局搜索能力和对初始条件不敏感的特点使其成为解决复杂优化问题的强大工具。

5. 模拟退火与其他优化算法的比较

5.1 算法优势与局限性

模拟退火算法(Simulated Annealing, SA)是一种概率型全局优化算法,其核心优势在于能够跳出局部最优解,以一定的概率接受更差的解,从而有助于寻找全局最优解。这种特性使得SA算法特别适合于解决复杂的优化问题,尤其是那些具有多个局部最优解的问题。

优势:

  • 全局搜索能力:SA算法通过模拟物理退火过程,能够在高温阶段接受较劣解,从而有效避免陷入局部最优。
  • 简单易实现:算法原理直观,易于理解和编程实现。
  • 适用性广泛:适用于各种类型的优化问题,包括连续和离散的优化问题。

局限性:

  • 收敛速度:相较于一些确定性算法,SA算法的收敛速度可能较慢,特别是在参数设置不佳时。
  • 参数敏感性:算法性能对初始温度、冷却速度等参数较为敏感,需要仔细调整以获得良好性能。
  • 无法保证最优:SA算法不能保证一定找到全局最优解,特别是在多模态问题中。

5.2 算法适用性分析

模拟退火算法的适用性分析主要考虑其在不同类型问题上的表现和适用条件。

适用场景:

  • 多峰值问题:在存在多个局部最优解的多峰值问题中,SA算法能够通过概率接受机制,提高找到全局最优解的机会。
  • 大规模问题:对于变量数量众多的大规模优化问题,SA算法不需要二阶导数信息,适合于复杂系统。
  • 非线性问题:SA算法不依赖于问题的具体形式,适用于非线性和非凸优化问题。

不适用场景:

  • 实时性要求高的问题:由于SA算法可能需要较长时间才能收敛,对于需要快速响应的实时问题可能不适用。
  • 参数难以调整的问题:如果问题难以确定合适的初始温度和冷却策略,SA算法可能难以发挥最佳性能。

在与其他优化算法的比较中,模拟退火算法在处理复杂性和多样性方面具有明显优势,但在收敛速度和参数调整上可能不如一些特定问题设计的算法。例如,遗传算法(Genetic Algorithms, GA)在搜索全局最优解时也很有效,但可能在某些问题上不如SA算法那样容易跳出局部最优。粒子群优化(Particle Swarm Optimization, PSO)算法在连续空间问题上表现出色,但在处理离散问题时可能不如SA算法灵活。

通过这些分析,我们可以看到模拟退火算法在解决优化问题时的独特地位和潜在的应用范围。尽管存在一些局限性,但通过合理的参数调整和与其他算法的结合,SA算法仍然是一个非常有力的工具。

6. 结论与展望

6.1 算法的总结评述

模拟退火算法(Simulated Annealing, SA)是一种基于概率的启发式搜索算法,其灵感来源于固体材料的退火过程。该算法通过模拟物理退火过程中的降温来逐步寻找到问题的全局最优解。
SA算法在解决组合优化问题时具有显著的优势,特别是在处理具有多个局部最优解的复杂问题时。算法的关键在于如何控制温度的下降速率以及如何设计初始温度和终止温度,这些参数直接影响算法的性能和最终解的质量。

6.2 未来研究方向与应用前景

模拟退火算法在未来的研究和应用中仍具有广阔的发展空间。以下是一些可能的研究方向和应用前景:

  1. 算法改进:研究更高效的降温策略,提高算法的搜索效率和收敛速度。例如,自适应退火算法可以根据解的质量动态调整温度参数。

  2. 参数自动调整:开发智能的参数调整机制,如基于机器学习的方法,以自动优化算法参数,提高算法的适应性和鲁棒性。

  3. 并行计算:利用现代计算架构的并行能力,如GPU加速,来实现模拟退火算法的并行化,以处理更大规模的优化问题。

  4. 混合算法:将模拟退火与其他优化算法结合,如遗传算法、粒子群优化等,以利用各自的优点,形成更强大的混合优化策略。

  5. 实际应用:探索模拟退火算法在新兴领域的应用,如深度学习中的网络结构搜索、物联网设备的资源分配、以及生物信息学中的序列比对等。

  6. 可视化工具:开发直观的可视化工具,帮助研究人员和开发者更好地理解算法的工作原理和过程,如图示能量变化和状态转移。

  7. 算法理论:深入研究算法的理论基础,包括收敛性和性能分析,为算法的改进提供理论支持。

  8. 跨学科应用:推动模拟退火算法在不同学科领域的应用,如经济学、物理学、化学等,以解决跨学科的复杂优化问题。

随着计算技术的发展和算法研究的深入,模拟退火算法有望在未来解决更多具有挑战性的优化问题,并在多个领域发挥重要作用。

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

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

相关文章

YOLO好像也没那么难?

“学YOLO的念头是想整个游戏外挂&#xff01;” 目录 基本原理 模型推理 IOU交并比 NMS非极大值抑制 模型训练 损失函数LOSS 代码实现 YOLO学习渠道 基本原理 模型推理 学习一个新的神经网络结构&#xff0c;作者认为整明白输入和输出是怎么回事就OK了&#xff0c;至于…

HTML静态网页成品作业(HTML+CSS)——安徽宣笔设计制作(5个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

回调函数,字符函数,字符串函数

前言&#xff1a;上一趴我们学习了指针。那么今天我们来学习新的知识&#xff0c;回调函数&#xff0c;字符函数&#xff0c;字符串函数。 1 回调函数 什么是回调函数呢&#xff1f;回调函数就是通过函数指针调用的函数。 如果你把函数的指针&#xff08;地址&#xff09;作…

【Docker系列】Docker 容器时区设置指南

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

尚硅谷MYSQL(5-6章)

排序和分页 排序 如果没有使用排序操作的话 查询出来的数据是按添加的顺序排序的 ORDER BY是来进行排序的 后面可以添加ASC升序 DESC降序 如果后面没有显示指明排序的方式的话 则默认按照升序排序 where中不能使用列的别名 我们在使用sql语句的时候 她的执行顺序不是从第一…

FastCopy文件快速复制v5.7.15

软件介绍 FastCopy文件快速复制工具。Windows平台上最快的文件复制、删除软件&#xff01;功能强劲&#xff0c;性能优越&#xff01;它是源于日本的高效文件复制加速软件&#xff0c;支持拖拽操作&#xff0c;三种不同HDD模式&#xff1b;支持通配符&#xff0c;任务管理/命令…

微信小程序保存图片到相册

申请权限 代码如下 wx.downloadFile({url: image, //仅为示例&#xff0c;并非真实的资源success(res) {// 只要服务器有响应数据&#xff0c;就会把响应内容写入文件并进入 success 回调&#xff0c;业务需要自行判断是否下载到了想要的内容if (res.statusCode 200) {consol…

XSS Game练习

1.Ma Spaghet 直接get传参 ?somebodyaaaa直接使用img标签 ?somebody<img%20src1%20onerror"alert(1337)">官方文档 应使用innertext&#xff0c;安全性更高 2.Jefff 通过代码可以知道是通过eval的代码执行&#xff0c;setTimeout中的内容表示在一秒后执行…

uniapp预览图片uni.previewImage图片放大

<image v-if"file.image!" :src"file.image" click"previewImage(file.image)"></image>file: {image: ,status: 1}, // 预览 图片previewImage() {uni.previewImage({current: 1,urls: [this.img] // 是个 数组 单张的&#xff08…

JAVA打车小程序APP打车顺风车滴滴车跑腿源码微信小程序打车系统源码

&#x1f697;&#x1f4a8;打车、顺风车、滴滴车&跑腿系统&#xff0c;一键解决出行生活难题&#xff01; 一、出行新选择&#xff0c;打车从此不再难 忙碌的生活节奏&#xff0c;让我们常常需要快速、便捷的出行方式。打车、顺风车、滴滴车系统&#xff0c;正是为了满足…

[C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰

【训练源码】 https://github.com/JianghaiSCU/Diffusion-Low-Light 【参考源码】 https://github.com/hpc203/Diffusion-Low-Light-onnxrun 【论文地址】 https://arxiv.org/pdf/2306.00306.pdf 【算法原理图】 【效果展示】 【测试环境】 vs2019 netframework4.7.2 …

ffmpeg采用gpu加速增加水印

1.环境需要 系统 windows10 ffmpeg&#xff0c;ffprobe 字体文件 python3以上版本 2.环境配置 从官网上下载ffmpeg版本https://github.com/BtbN/FFmpeg-Builds/releases&#xff0c;这里我用的是这个&#xff0c;解压之后里面包含ffmpeg&#xff0c;ffprobe&#xff0c;f…

【uniapp】vue3+vite配置tailwindcss

安装 npm install autoprefixer tailwindcss uni-helper/vite-plugin-uni-tailwind -Dautoprefixer &#xff1a;自动管理浏览器前缀的插件&#xff0c;可以解析css文件并且添加前缀到css内容里。uni-helper/vite-plugin-uni-tailwind: 将 Tailwind CSS 框架集成到使用 Vite 作…

Cesium天空盒子(Skybox)制作(js代码)和显示

介绍 在Cesium中&#xff0c;星空背景是通过天空盒子方式&#xff08;6张图片&#xff09;来显示的&#xff0c;原生的图片分辨率太低&#xff0c;本项目用于生成天空盒子的6张图片。最终生成的6个图片大小约为500kb(每个)&#xff0c;格式为jpg&#xff0c;总共的恒星数目约为…

最新保姆级Anaconda和Pycharm安装激活过程(2024最新版本)

Anaconda和Pycharm安装过程 Anaconda安装过程第一步第二步第三步第四步第五步第六步第七步第八步第九步Pycharm 安装过程&#xff1a;第一步第二步第三步第四步第五步第六步---激活过程第七步第八步第九步第十步第十一步第十二步第十三步第十四步Anaconda和Pycharm软件百度网盘…

Video视频抽帧和WebCodecs API视频抽帧介绍

目录 mp4Box抽帧 ffmpeg抽帧 video元素抽帧 WebCodecs 核心API 视频文件是一个容器&#xff0c;里面有很多不同的轨道信息。如&#xff1a;图像、声音、字幕等。而视频图像信息又是由一系列图片序列帧的集合。如10秒时长的视频&#xff0c;假设每秒30帧。那大概有300条图像…

大公报发表欧科云链署名文章:发行港元稳定币,建Web3.0新生态

欧科云链研究院资深研究员蒋照生近日与香港科技大学副校长兼香港Web3.0协会首席科学顾问汪扬、零壹智库创始人兼CEO柏亮&#xff0c;在大公报发布联合署名文章 ——《Web3.0洞察 / 发行港元稳定币&#xff0c;建Web3.0新生态》&#xff0c;引发市场广泛讨论。 文章就香港稳定币…

2024年【汽车驾驶员(技师)】考试报名及汽车驾驶员(技师)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车驾驶员&#xff08;技师&#xff09;考试报名参考答案及汽车驾驶员&#xff08;技师&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及汽车驾驶员&#xff08;技师&#xff09;操作证已考过的学员汇总…

【二分查找】--- 初阶题目赏析

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 算法Joureny 上篇我们讲解了关于二分的朴素模板和边界模板&#xff0c;本篇博客我们试着运用这些模板。 &#x1f3e0; 搜索插入位置 &#x1f4cc; 题目…