0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

近似算法及对某些标准问题的适用性

新机器视觉 来源:机器之心 作者:机器之心 2022-07-06 11:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

新冠大流行给世界带​来了巨大的改变,全球科学家和研究人员在研制有效的疫苗。他们正在做的就是从广阔的样本空间中近似地收紧可能性范围,并尽力得到一些有效解。近似在我们的生活中发挥了重要作用。以在线食品配送为例,我们经常从网上订购食物,享受快速送达的服务。但你想过这些 app 后端运行的什么算法让快递员在更短时间内抵达目的地吗?答案是近似算法。这类问题就是「旅行商问题」。

食品配送:旅行商问题的现实应用。本文将介绍近似算法及其对某些标准问题的适用性,以及哪些因素会影响到特定算法的选择。什么是近似算法?近似算法是一种处理优化问题 NP 完全性的方式,它无法确保最优解。近似算法的目标是在多项式时间内尽可能地接近最优值。它虽然无法给出精确最优解,但可以将问题收敛到最终解的近似值。其目标满足以下三个关键特性:

能够在多项式时间内高效运行;

能够给出最优解;

对于每个问题实例均有效。

背景数学表达式的评估常伴随常量、变量分析和方程的阶,可用于衡量近似的复杂度。此类评估将问题分解为 P 和 NP 难问题。P 问题和 NP 问题的策略P 问题是指可以在多项式时间内求解的问题。NP 表示不确定性多项式时间(nondeterministic polynomial time),NP 问题是指在多项式时间内近似验证答案的问题。但目前人们发现,很多此类问题需要指数时间才能求解。

P 和 NP 策略。真正的争论在于 P=NP 还是 P≠NP。之前的一些研究证明这两种都是对的。如果一个问题是多项式次方,则存在多个最优算法。因此,在 NP 完全问题中,存在两种方法找到近优解,然后选择最适合的算法。如果输入的大小比较小,则具备指数运行时间的算法可能会比较适合。其次,通过用近似算法替代确定性算法,我们仍然能够在多项式时间内找到近优解。近似算法的复杂度可以从输入大小和近似因子中推断出来。接下来,我们通过一些示例,深入探索这些算法如何应用到现实问题中。分区问题(Partition Problem)在计算机科学领域,该问题的定义是:给定多重正整数集 X,它可以被分割为两个元素之和相等的子集 X1 和 X2,即每个子集的数值之和与另一个子集相等。

例如,X={3,4,1,3,3,2,3,2,1} 可以被分割为 X1={3,3,2,3} 和 X2={4,2,3,1,1},二者的数值之和都是 11。类似地,X={1,3,1,2,1,2} 可以被分成 X1={2,1,1,1} 和 X2={3,2},两个子集的数值之和都是 5。有趣的是,这不是唯一解。X1={1,3,1} 和 X2={2,1,2} 的数值之和也为 5,这表明存在多个可能的子集。这就是 NP 完全问题,存在伪多项式时间动态规划解,可获得该问题的近优解。方法和决定步骤现在,我们开始分析这个问题,把它分解成数个单独的标准问题。这里,我们想要找出多重集的元素之和相等的子集,那么该问题就可以分解成以下两个问题:

子集和问题:子集 X 的元素之和等于数字 W。

多路数字分割:给定整数参数 W,确定如何将 X 分割成 W 个等额子集。

近似算法如上所述,将分区问题分解为多路分割与子集和问题后,我们就可以考虑为这些问题而开发的算法,包括:贪婪数字分割(Greedy number Partitioning)该算法循环遍历所有数字,将每个数字分配给总和最小的子集。如果数字未以排序方式排列,则其运行时复杂度为 O(n),近似率约为 3/2。其 Python 伪代码如下:

def find_partition(numbers):    """Separate the available numbers into two eqal sum series.    Args:        numbers: collection of numbers, for example list of integers.    Returns:        Two lists of numbers.    """    X = []    Y = []    sum_X = 0    sum_Y = 0    for n in sorted(numbers, reverse=True):        if sum_X < sum_Y:           X.append(n)           sum_X = sum_X + n        else:           Y.append(n)           sum_Y = sum_Y + n    return (X, Y)

将数字排序,则运行时复杂度增加到 O(n logn),近似率增加到 7/6。如果数字在 [0,1] 范围内均匀分布,则近似率约为 1 + O(log logn/n)。

分区问题图示。上图用二叉树的形式展示所有分区。树的根部表示集合中的最大数,每一级对应输入数字,每个独立分支对应不同的子集。遍历这些集合需要深度优先遍历(depth-first traversal),所需的空间复杂度为 O(n),时间复杂度为 O(2^n)。适用性:该算法可以根据情况进行修改,以便改善运行时复杂度。每一级的首要目标是构建一个分支,将当前数字分配给总和最小的子集。首先通过贪婪数字分割找出总和,然后切换到优化,得到全多项式时间近似解。Karmarkar-Karp 算法Karmarkar-Karp 算法指以降序方式排列数字的最大差分方法,该方法将差值替换掉原来的数字不断放进集合中。其 Java 伪代码实现如下:

int karmarkarKarpPartition(int[] baseArr) {        // create max heap        PriorityQueue heap = new PriorityQueue(baseArr.length, REVERSE_INT_CMP);
    for (int value : baseArr) {                heap.add(value);        }
    while (heap.size() > 1) {        int val1 = heap.poll();            int val2 = heap.poll();            heap.add(val1 - val2);    }
    return heap.poll();}

该算法包含输入集 S 和参数 k。将 S 分割成 k 个子集,使这些子集中的数字总和相等,从而构建期望输出。该算法包含如下关键步骤:

以降序方式排列数字;

用差值替换掉原来的数字,直到只有一个数字;

采用回溯算法,完成分区。

适用性:该算法通过构建二叉树来假设分区。每一级表示一对数字,左侧的分支表示用差值替换数字,右侧的分支表示将差值放置在同一个子集中。该算法先通过最大差分求得解,然后继续寻找更好的近似解。它所需的空间复杂度为 O(n),但最糟糕的情况下所需的时间复杂度可能会达到 O(2^n)。装箱问题装箱问题有多种现实应用。例如,如何从根本上改善印度的垃圾管理系统。这个问题就可以通过装箱问题来解决,帮助当局决定 x 量的垃圾需要多少个垃圾箱。

在计算机科学领域中,该问题可用于多种内存管理技术。在该算法中,我们可以通过去除冗余和最小化空间浪费来包装不同形状和大小的对象。例如:给定一个包含 n 个项的集合,每个项的大小分别为 s1,s2,。.,sn (0《=si《=1, 1《=i《=n),如何将它们装进最少数量的箱子?经典方法:1. 邻近适应算法 (Next Fit):查看当前项是否适合当前箱子。如果适合,则将物品放置在箱子里,否则开启一个新的箱子。我们来看一个示例:项是 0.5, 0.7, 0.5, 0.2, 0.4, 0.2, 0.5, 0.1, 0.6,箱子大小均为 1。

基于邻近适应算法的装箱解决方案(M = 箱子总数 = 6)。2. 最先匹配法 (First Fit):按顺序浏览箱子,在第一个箱中放置新的项,直到放不下再启用新的箱子。我们来看一个示例:项是 0.5, 0.7, 0.5, 0.2, 0.4, 0.2, 0.5, 0.1, 0.6,箱子的大小均为 1。

基于最先匹配法的装箱解决方案(M = 箱子总数 = 5)。3. 最优匹配法 (Best Fit):按顺序浏览箱子,将每一个新的项放在最适合的箱子里。如果不适合,则创建一个新的箱子。我们来看一个示例:项是 0.5, 0.7, 0.5, 0.2, 0.4, 0.2, 0.5, 0.1, 0.6,箱子的大小均为 1。

基于最优匹配法的装箱解决方案(M = 箱子总数 = 5)。该方法的输出与最先匹配法相同,但该方法的优点是实现速度比 FFD 快,即时间复杂度为 O(nlogn)。自然方法:如果我们提前知道所有项的大小,那么自然的解决方案就是首先按照从大到小排序,然后应用以下启发式方法:

最先匹配递减法

最优匹配递减法

假设有相同的示例 0.7, 0.6, 0.5, 0.5, 0.5, 0.4, 0.2, 0.2, 0.1,则排序为 0.7, 0.6, 0.5, 0.5, 0.5, 0.4, 0.2, 0.2, 0.1。

优化方法(M = 箱子总数 = 4)。

审核编辑:郭婷


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7764

    浏览量

    92692
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89598

原文标题:什么是近似算法?它适用于哪些问题?这篇文章给你答案

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Leadway电机方案的适用性

    :通过优化电路设计与散热结构,降低系统设计复杂度,提升整体能效。一站式配套服务完整解决方案:提供电源模块+旋变信号转换+EtherCAT从站远程I/O的一站式配套服务,降低客户开发成本与周期。多领域适配适用于工业自动化、机器人、电机控制、高精度工业仪器设备等多个领域,
    发表于 11-05 09:50

    IEC 62368标准适用于哪些产品

    IEC62368-1标准是国际电工委员会(IEC)制定的一项安全标准适用于音视频设备、信息技术设备以及通信设备。该标准的全称是:IEC62368-1:Audio/video,info
    的头像 发表于 10-29 14:47 416次阅读
    IEC 62368<b class='flag-5'>标准</b><b class='flag-5'>适用</b>于哪些产品

    查找表与多项式近似算法实现初等函数

    查找表与多项式近似结合算法是一种把查找表算法和多项式近似算法综合到一起的算法。这种算法综合了两种
    发表于 10-28 08:10

    加密算法的应用

    加密算法和非对称加密算法两类。 对称加密是一种加密方式,也称为共享密钥加密。加密和解密使用同一个密钥。这种加密算法的优点是加密和解密速度快,适用于数据量较大的场景。但是,密钥的传输和管
    发表于 10-24 08:03

    全面解析HT97226耳机放大器:性能、适用性

    以及广泛的适用性,在音频消费电子领域占据着重要地位,接下来将从多个维度对其进行详细解析。        HT97226 首先具备灵活的输入方式和强劲的输出驱动能力,它支持差分输入与单端输入两种模式,能够根据不同的电路设计需求进行灵活适配,满足
    的头像 发表于 10-13 15:52 260次阅读
    全面解析HT97226耳机放大器:性能、<b class='flag-5'>适用性</b>

    哪些数字滤波算法适用于电能质量在线监测装置?

    / 中断)等参数的测量准确。选择算法时需兼顾 实时(装置算力约束)、准确(误差≤0.5%~1%)、抗干扰(适应电网复杂噪声) 三大
    的头像 发表于 09-18 11:28 479次阅读

    如何判断电能质量在线监测装置认证标准的有效

    LZ-100电能质量在线监测装置 判断电能质量在线监测装置认证标准的有效,核心是验证标准的 时效适用性、认证关联
    的头像 发表于 09-03 16:26 557次阅读
    如何判断电能质量在线监测装置认证<b class='flag-5'>标准</b>的有效<b class='flag-5'>性</b>?

    步入式高低温试验室支持哪些测试标准?一次梳理清楚

    。   本篇将围绕步入式高低温试验室常涉及的国家标准、行业标准及国际标准进行系统整理,助你从标准角度判断设备的适用性与专业度。
    的头像 发表于 07-12 15:11 1406次阅读
    步入式高低温试验室支持哪些测试<b class='flag-5'>标准</b>?一次<b class='flag-5'>性</b>梳理清楚

    PanDao应用:选择或排除需纳入考量的光学制造技术(OFTs)

    在PanDao的“Cockpit”模块中,可以基于“适用性”与“技术成熟度等级”这两项标准来筛选光学制造技术特性: a) 适用性(Applicability):在输入界面的“Cockpit”模块中
    发表于 06-04 08:44

    VirtualLab 应用:薄元近似(TEA)与傅里叶模态法(FMM)的光栅建模

    (General Grating Component)允许用户在模拟中选择不同的求解算法。用户可以在严格的傅里叶模态法(FMM)和近似,但更快的薄元近似(TEA)之间进行选择。关于解算器的更多信息可以在这里找到
    发表于 05-22 08:56

    飞思卡尔三相无刷无感电路

    设计展现出MC9S12ZVML128微控制器对于电机控制的适用性和优势。这是一个使用飞思卡尔16位S12 MagniV混合信号MCU设计BLDC控制的示例。 文件过大,请下载附件,免积分的哦~~~~
    发表于 03-12 17:47

    VirtualLab Fusion应用:非近轴衍射分束器的设计与优化

    地介绍了这一部分。 非近轴衍射分束器的严格分析 采用傅里叶模态法(FMM)对非近轴衍射分束器进行了严格的评价,该方法最初采用迭代傅里叶变换算法(IFTA)和薄元近似算法(TEA)进行设计。 高数值孔径分
    发表于 03-10 08:56

    hdi高密度互连PCB电金适用性

    元器件的数量和体积。 激光钻微孔技术:与传统PCB相比,HDI PCB可以利用激光钻孔技术实现更小的孔径,从而提高线路密度。 高信号完整和高元器件密度:提供了更好的信号完整,并比常规PCB有更高的层数,具有更高的元器件密度和更小的体积。 二、电金技
    的头像 发表于 01-10 17:00 1409次阅读
    hdi高密度互连PCB电金<b class='flag-5'>适用性</b>

    AI大潮下通讯基板材料的普遍适用性(下)

    本篇文章从5G材料的应用角度展望了基板材料在AI浪潮下面临的新机遇与挑战。在上期的分享中,我们深入分析了通讯基板材料的广泛适用性,并探讨了PPO树脂改性的高速基板材料如何逐渐展现出更强的市场竞争力
    的头像 发表于 01-08 11:09 1257次阅读
    AI大潮下通讯基板材料的普遍<b class='flag-5'>适用性</b>(下)

    AI大潮下通讯基板材料的普遍适用性(上)

    02.   通讯基板材料的 “普遍适用性” 开篇,笔者想引用一句耳熟能详的名言:“电子电路,材料是基石。”这句话深刻地揭示了材料在电子电路设计与制造中的重要。 众所周知,传统的FR-4基板材料主要由树脂、玻璃增强材料、陶瓷粉填充物和铜箔组
    的头像 发表于 01-06 09:15 2043次阅读
    AI大潮下通讯基板材料的普遍<b class='flag-5'>适用性</b>(上)