热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

概论组合最优化问题、计算复杂性和启发式算法概念(现代优化计算方法)

1.组合最优化问题定义:是通过数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等。描述:最优化问题的数学模型的一般描述是,x为决策

1.组合最优化问题


定义:



是通过数学方法的研究去寻找离散事件的最优编排、分组、次序或筛选等。

描述:

最优化问题的数学模型的一般描述是

x为决策变量,f ( x )为决策函数,R为可行解,R中的任何一个元素都是问题的一个可行解,满足f ( x* ) = min { f ( x ) | x∈R} 的可行解 x* 称为该问题的最优解,函数值f ( x* )称为问题的最优值。组合最优化问题特点在于它的可行域R是一个有限个点组成的集合,一般情况下其可行域R可表示为{ x | x∈D , g ( x ) >= 0 },说人话就是,在最优化问题的可行域上加了一个约束条件g ( x ) >= 0。它的一般形式是


一个组合最优化问题可以用三参数表示(D,R,f),D是x的定义域,R={ x | x∈D , g ( x ) >= 0 }是可行域,f表示目标参数

典型例子:



a.0-1背包问题(回溯,分支界限解空间子集树,时间复杂度下界2^n)



共i个物品,各物品价值为ci,重量为ai,求在背包容积b的大小限制下可装入的最大价值。其数学模型表示为:




b.旅行售货员问题(回溯,分支界限解空间排序树,时间复杂度下界n!)



城市i与城市j之间距离为dij,现要经过每一个城市,求最短距离。其数学模型表示为:


dij表示城市i,j之间的距离,约束条件为1)式三,恰好从城市i走出来1次,2)式四表示,恰好走入城市j1次,3)| S |表示集合S的元素个数,式五用来限制回路产生



猜测:



组合最优化问题属于NPC问题,故其解决方案与NPC问题解决方案相同


2.启发式算法


定义:



一个问题的最优算法求得该问题每一个实例的最优解,启发式算法是相对于最优算法提出的。它是一个基于直观或经验构造的算法,在可接受的代价内,给出待解决的最优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度不一定是事先可以估计的。

例子:贪心解0-1背包问题,对于有些实例来说,贪心给出的可行解就是该实例的最优解,但对于另外一些实例来说,贪心给出的可行解只是一个近似解,甚至这个近似解和最优解的偏离程度很大。

分类:



a.简单直观的算法



1)一步算法



算法特点:不在两个可行解之间比较,在未终止的迭代过程中,得到的中间解有可能不是一个可行解

例子:贪心解0-1背包,每一次迭代选一物品装包直到无法再装,该算法没有在两个可行解之间选择比较,算法结束时得到一解

2)改进算法



算法特点:迭代过程是从一个可行解到另一个可行解的交换

例子:旅行售货员问题

b.数学规划算法



主要包括分支界定启发式、割平面启发式、线性规划松弛再对解可行化、拉格朗日再对解可行化



c.现代优化算法



主要包括禁忌搜索算法、模拟退火算法、遗传算法、蚁群优化、人工神经网络算法等。他们的共性是基于客观世界中的一些自然现象,通过与组合最优化求解类比,找出它们的共性,建立相应的算法,这些算法的目标是希望求解NP难问题的全局最优解

d.其他算法



限制解空间、分解法、混合算法


3.NP,NP完全和NP难


参见已总结博文:http://blog.csdn.net/chinajane163/article/details/49074173


4.邻域


定义:




通俗的说就是:通过某种手段从可行域中取出一部分可行解来,所形成的集合

例子:

TSP问题解的一种表示方法为D = { x = (i1 , i2 , … , in ) |  i1 , i2 , … , in是1,2,…,n的排列},定义它的邻域映射为2-opt,即x中的两个元素进行对换,N(x)中共包含x的Cn2=n(n-1)/2(随机选两个互换位置)个邻居和x本身。
例如:x=(1,2,3,4),则C42=6,N(x)={(1,2,3,4), (2,1,3,4), (3,2,1,4), (4,2,3,1), (1,3,2,4), (1,4,3,2), (1,2,4,3)}

TSP问题解的邻域映射可由2-opt,推广到k-opt。

邻域概念的重要性:



邻域的构造依赖于决策变量的表示,邻域的结构在现代优化算法中起重要作用








推荐阅读
  • 3年半巨亏242亿!商汤高估了深度学习,下错了棋?
    转自:新智元三年半研发开支近70亿,累计亏损242亿。AI这门生意好像越来越不好做了。近日,商汤科技已向港交所递交IPO申请。招股书显示& ... [详细]
  • 建立分类感知器二元模型对样本数据进行分类
    本文介绍了建立分类感知器二元模型对样本数据进行分类的方法。通过建立线性模型,使用最小二乘、Logistic回归等方法进行建模,考虑到可能性的大小等因素。通过极大似然估计求得分类器的参数,使用牛顿-拉菲森迭代方法求解方程组。同时介绍了梯度上升算法和牛顿迭代的收敛速度比较。最后给出了公式法和logistic regression的实现示例。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 读手语图像识别论文笔记2
    文章目录一、前言二、笔记1.名词解释2.流程分析上一篇快速门:读手语图像识别论文笔记1(手语识别背景和方法)一、前言一句:“做完了&#x ... [详细]
  • cs231n Lecture 3 线性分类笔记(一)
    内容列表线性分类器简介线性评分函数阐明线性分类器损失函数多类SVMSoftmax分类器SVM和Softmax的比较基于Web的可交互线性分类器原型小结注:中文翻译 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 2017亚马逊人工智能奖公布:他们的AI有什么不同?
    事实上,在我们周围,“人工智能”让一切都变得更“智能”极具讽刺意味。随着人类与机器智能之间的界限变得模糊,我们的世界正在变成一个机器 ... [详细]
author-avatar
虚实人生轶事
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有