主要是对自己研究领域的多源定位NP问题转换和证明,以及在别人已经有次模函数的基础上,设计有次模性质的函数,(将想法形式化到次模函数中)效果更好(比如时间、比如效果)。

改进思路:    我们首先从一个问题出发,然后借助证明这个问题是NP难问题(规约),然后使用近似算法去解决,从而借助近似算法的理论提供近似比,当前有两种方式,一种是只使用《近似算法设计与分析》上的经典算法及结论来解决你的应用场景np难问题,提供经典近似比。一种是看论文学习新的近似算法,从而提高近似比。(自己证明)

参考文献:《算法导论》34,35章、《近似算法设计与分析》第二章贪婪策略、《离散数学》

目录:

首先是NP难问题及近似算法的理论基础,还有不可近似性的理论基础

《算法导论》34章  NP难问题

1 P,NP,NPC问题

首先给出三种问题的定义

P: 可以在多项式内解决的问题

NP:可以在多项式内验证的问题

NPC:NPC几乎不可能在多项式内解决。

2 判定问题和最优化问题

两者相关性很高,因为最优化问题可以转换为判定问题。为什么转换?因为NP完全性理论适用于判定问题,而不适用最优化问题。而且判定问题更容易一些。因为NP完全性很多时候都是逻辑判断多个变量的0,1(3-CNF)所以适用判定问题。     比如

  1. 最优化问题:给定一个无向图G和两个顶点,要找出两个顶点之间最短路径?
  2. 判定问题:给定一个无向图G和两个顶点,是否存在一条包含至多k条边的路径?

3 目录

34.1 对问题做一个形式化定义,34.2 定义判定问题的NP类,它们是NP的,34.3 讨论如何通过多项式时间的“规约”和研究问题之间关系。它定义了NP完全性,并概述一个“电路可满足性”的问题是NP完全问题的证明过程。找到一个NP问题后,34.4 讨论如何使用规约方法来规约。

34.1 多项式时间(问题的形式化定义)

抽象问题

我们定义抽象问题Q为在问题实例集合I问题解决集合S上的一个二元关系,抽象的判定问题看做从实例集I映射到解集{0,1}的一个函数。

离散数学给予足够多的抽象。

编码

这是从抽象数学到计算机编码的转换,

学习编码的作用在于在后面的规约中两个问题的多项式转换中,需要编码的引理34.1。来证明规约是多项式的。选择某种编码对问题是否多项式可解没有任何影响。

形式化语言

帮助我们形式化问题定义

34.2  多项式时间的验证

34.3  NP完全性和可规约性

帮助我们理解规约是啥样的,用大白话说就是现在有两个问题,如果存在某个多项式可计算函数使得其中一个问题的实例转换到另一个问题,那么就是可以规约的。另外A规约到B,那么如果解决了B,就可以解决A。

    NP完全性

然而从定义出发证明某个问题是NP完全很麻烦,但是一定是有第一个NP完全问题,然后通过定义证明它,然后其他问题都可以依次规约,形成规约树。

那么开始第一个NP完全性问题的证明吧,它是不可规约的,必须实打实的证明。

首先需要证明它是NP类,然后需要证明它是NP完全的。前者就不说了,对于后者我们将描述一个多项式时间的算法F来计算规约函数f,该函数把每个二进制串映射为一个电路C=f(x),是的x属于L当且仅当C属于电路问题。(从定义出发)

书上的看不懂,就贴一个网上的

34.4  NP完全性的证明

这就是一个证明框架了,其的难点在于

1  如何去做寻找一个像NP完全问题的问题

2  如何去找一个已知的NP完全问题?让1问题的问题可以通过规约到2中问题。

书上举个例子

公式可满足性

接下来证明布尔公式可规约到电路可满足性。(来解释该框架是如何运行的):

公式可满足性很容易看出来是NP完全的,因为它有n个布尔变量,自然就有2的n次方可能赋值。但是证明过程需要将

3-CNF可满足性

证明3-CNF是NP完全的,为什么3-CNF是NP完全的?我感觉就三个变量八种可能啊?不是的,它还是有很多个变量,但是其每个子句中只有三个变量而已。3-CNF的出现方便了我们很多的问题的实例去直接规约成3-CNF问题的实例,它足够简单。

34.5    NP完全问题

这是一个NP规约图的较为完整参照,我们可以从低到上面的进行规约。

34.5.1 团问题(就这个我看了很久)

证明的大概结构

1  团问题是NP的

2 然后描述一种算法,将3-CNF的实例转换为一个图中的实例,

3 证明该过程是多项式的

从而就把3-cnf规约到团问题,能在多项式内解决团问题就可以解决3-CNF问题。

其实上述就是我们要想好要转化的那个问题,然后自己构造实例去转就ok,后一步要难一些。

34.5.2 顶点覆盖问题

34.5.3 哈密顿回路问题

34.5.4 旅行商问题

34.5.5 子集和问题

它们之间的规约证明就没细看了,有空再看。

35 近似算法

近似算法都可能有近似比,但是根据近似算法步骤的不一样,其近似比的构造也不一样,不过一般都是通过近似算法步骤寻找上下界来得到,如何在设计近似算法和分析该近似算法的近似比是一个技术活,这两者需要对大概的近似算法设计思路有个大概了解如何分析近似算法的技术做个了解。

近似算法性能比

给定问题P(NP难),给定算法A,对于任何的问题输入实例I来说,A(I)和A*(I)表示该近似算法产生的代价和最优解代价肯定存在一个因子a,a就是近似比。

目录

前面4节都是介绍一些解决NP完全问题的多项式时间近似算法例子,第5节给出一个完全多项式时间近似方案。

35.1   顶点覆盖问题

该近似算法的分析中,我们有证明过程,利用line4行选出的|A|做为中间变量,得到C和C*的上下界关系,也就是说,可以更紧

近似比的分析技术有哪些?

35.2 旅行商问题

本小节聊了旅行商问题,给出了一个在三角形不等式成立情况下的2-近似比算法,并证明在没有三角形不等式的条件下,旅行商问题没有p近似比近似算法。

待更新,我没看太懂。先贴公理吧。

下面证明在不满足三角形不等式条件下,悲观的结论。

下面是证明过程

证明过程还要花挺多时间看。

这个证明过程在说,反证法,如果有那么一个近似比p的近似算法可以对旅行商有近似比,那么就可以利用算法A设计一个求解哈密顿圈问题的多项式算法,只需要让问题实例规约就可以。但是我们却发现利用该近似算法解决哈密顿圈问题时,当G存在哈密顿圈与否,其近似比代价不一。所以就可以得TSP问题不可近似。 (其实另一个意思就是近似算法的设计是共同的,你设计了一个近似算法,那么应对别的问题也会有固定近似比?而不是变化的)

35.3 集合覆盖问题

这个集合覆盖问题泛指一类覆盖问题,都可以借助次模的简单贪婪算法得到1+lnn的近似比,套用理论最佳实践之一。

它有一个贪心算法,这个证明过程略懂。从代价的角度去分析的,我可能在多源定位的理解中用到。

35.4 随机化和线性规划(听都没听过)

不过我很好奇这种随机化策略的期望代价是如何计算出来的。有如下定理

今天来补充该定理证明过程,理解该过程需要指示器随机变量知识,先来一个小例子理解该指示器作用

https://www.cnblogs.com/xubenben/archive/2012/12/18/2823098.html

       指示器随机变量的功用在于将一个大的问题拆分为n个比较简单的随机变量之和,然后通过计算这些简单的随机变量的数学期望,进而求和得出原问题的数学期望。有点类似分治法的意思。那么就可以来看如何理解该随机化算法

目标是求的max-3cnf满足的子句最大期望数目,对于m个子句。我们知道每个子句的为真的概率为7/8,所以利用指示器随机变量进行求和,将求m个子句的期望变成求m个简单随机变量(期望)之和。

35.4.2    利用线性规划来近似最小权顶点覆盖https://www.cnblogs.com/hapjin/p/4533016.html

参考这个

主要是把原来需要利用整数规划来形式化最小权顶点覆盖问题(整数规划是NP难的),给它松弛下,变成普通线性规划(可以用单纯形法求解其最优解),前者是后者的一个特例,所以松弛后的线性规划的最优解给予0-1规划最优解的一个下界。而求得后者的最优解(在线性规划中是可以求得,这部分需要看下),然后设计近似算法,证明该近似算法近似比为2。

35.5 子集和问题

该子集和问题似乎可以有指数时间的近似算法然后经过修改之后变成一个完全多项式的算法。(这也是NP完全问题的论文其中的套路了,先有一个复杂度高的算法,后有一个复杂度较低的算法(fast算法))

一个指数时间的准确算法

一个完全多项式解决方案(没什么会的)

1 不可近似性

第二章  贪婪策略

利用贪婪策略设计近似算法的两个一般方法,分别基于独立系统次模函数这两个概念。

2.1 独立系统

考虑一个独立系统,我们建立起概念,然后对该独立系统求解最大独立子集问题,

下面给出一个求最大独立子集问题得贪婪算法。

该贪婪算法在独立系统中肯定有一个近似比,

虽然非常抽象,但是普适性很高,我们就要这种最模糊抽象的独立系统定义,以及最简单的贪婪算法及其近似比,我们做的是应用数学。然后就可以发现其应用了。

举个例子:(用独立系统及其求解最大独立子集的贪婪算法近似比三个东西,我们将最长哈密顿圈和最长有向哈密顿路两个问题都应用过来)

独立系统及其应用介绍完毕。

2.2  拟阵

它的作用真不知道干啥的?感觉它是独立系统加约束条件下产物。但是它有性质,如果是拟阵,贪婪算法就总能求出最大独立子集问题的一个最优集,而且在给定独立系统的近似比再来一个上界。

2.3 权函数的四边形条件

也不知道啥用,就是独立系统不是一个拟阵的时候,如果目标函数有权函数的四边形条件,那么贪婪算法也可以找到最优解。

上述3小节都是贪婪策略中比较经典包括抽象独立系统、拟阵、和四边形条件。下面关注与目标函数的构建,以便对于任意可以用次模函数替换目标函数,进而得到有性能保证的贪心算法。

2.4 次模势函数(重点,改进方向)

关注理论的定义、公理和定理结论就可以了,这是第一层理解界面,作为计算机的研究生,掌握到这个程度即可。

首先利用一个问题来了解它

对于这个问题,我们可以自己定义次模函数

该算法可以直接得到该近似比,这里的加权就是每个元素就是权重默认为1。我今天想把这个证明过程看明白。

2.6 非次模函数的两个简单处理方法

 1  针对最小连通控制集问题

设计这个贪心函数,找到一个反例,发现其并不能返回可行解。

但是该贪心函数的解再加了了解一些边,可以得到一个H(n)+3的近似比。这个3的由来需要引理才可以。(该引理是有问题特性的)

2  还是针对最小连通控制集问题

重新设计一个势函数,举出一个反例,证明它又不是次模的

然后改动之前证明次模到近似比过程,通过一些步骤啥的又得到一个近似比。

3 还是针对最小连通控制集问题

每次迭代加入更多的集合,一次加入两个,会不会对近似比,有什么改进呢?

那么套用这个可以怎么做呢?

1   找到一个NP问题,规约到现有问题,证明其是NP的,或者不可近似的。

2   定义一个函数,看它是不是次模函数,如果是,可以用次模函数的近似比。或者自己根据次模函数证明近似比。

3 改进方向: 找到的NP问题抽象理解,以及规约到那个现有问题,直接借助该问题的一些结论。

改进次模函数(考虑某些因素)、独立证明近似比等等。

2.5 上述次模理论的应用

2.6 非次模势函数

但是如果不是次模函数,就不一定有2.29的性质了,那怎么办呢?

暂时没看

博士论文第2章

2 非自适应的信息源选择

2.1 引言

2.2  谣言传播模型

基于推和拉的模型

每个已经激活节点都会在邻居集合中随机均匀选择一个感染,一旦进入激活状态,每个回合,将其感染状态发送给邻居节点。

作者为什么要研究这种模型呢?

* 在其上的扩散函数是次模的?

*  在其上的影响力最大化是NP的?

2.3  问题定义

2.4 预备知识

2.4.1 次模函数

2.4.2 基于推模型下的扩散函数次模性

为什么要利用push模型下信息传播过程的等价视角,可以证明源选择问题是次模的呢?好像也可以不利用?

NP难问题以及近似算法(基于次模)相关推荐

  1. 科普,什么是“NP难”的问题。专业的解释俺看不懂。这个文章里面举了几个例子,俺一下就明白了。

    NP难问题求解综述 彭茗菁 2008221104210521 [摘要]: 上世纪70年代开始,诞生了一种许多数学家及电子计算器学家所关心的大问题-NP难问题, "P=NP?"这个问 ...

  2. 排序 np_P问题、NP问题、NP完全问题和NP难问题理解

    P 问题 P类问题(P:polynominal,多项式):存在多项式时间算法的问题.以排序为例,在排序这个大问题里,是可以找到一种时间复杂度为多项式o(n^2),o(nlogn)的算法(如冒泡排序法, ...

  3. P、NP、NP完全问题、NP难问题

    可以在多项式时间内求解的问题称为易解的,而不能在多项式时间内求解的问题称为难解的. P类问题:多项式类型,是一类能够用(确定性的)算法在多项式的时间内求解的判定问题. 只有判定问题才属于P 不可判定问 ...

  4. 为什么L0正则化是一个NP难解问题?

    1. 矩阵的L0范数 矩阵的L0范数就是非0元素的个数,通常用它来表示稀疏,L0范数越小0元素越多,也就越稀疏.例如 A=[-1, 2, -3; 4, -6, 6]的L0范数就是:6. 2. 为什么L ...

  5. P/NP/NP完全/NP难问题

    P问题 存在多项式时间复杂度求解算法的问题,即P类问题的时间复杂度 为O(n^k),其中k为某一常数,n为问题的规模. NP问题 此类问题的解都能够在O(n^k)时间复杂度内被验证.根据P问题和NP问 ...

  6. NP-Hard?大白话学习P问题、NP问题、NP完全问题和NP难问题

    ## 该笔记自用为主,记录一些日常学习过程中看到的不熟悉的知识和从未接触过的知识,用于回看和记录.其中有一些个人理解,如有错误请讨论指正. 前言 在讨论这一串问题之前,我们需要复习两个概念. 1.多项 ...

  7. 算法中的P问题、NP问题、NP难问题和NP完全问题

    P问题:该问题存在一个可以在多项式时间内解决该问题的算法.(P:polynominal,多项式) 为什么我们要研究这个?因为计算机处理的输入常常不是那么几十个几千个那么一点点,想象一下,当计算机处理的 ...

  8. P问题,NP问题,NP难问题

    转自:https://blog.csdn.net/csshuke/article/details/74909562 有一则程序员界的笑话,就是有一哥们去google面试的时候被问到一个问题是:在什么情 ...

  9. 【看了就懂】P问题、NP问题、NP完全问题和NP难问题

    为了避免对这四个问题有一定理解基础的人看的很烦,个人简单理解的四个问题: P问题:有多项式时间算法,算得很快的问题. NP问题:算起来不确定快不快的问题,但是我们可以快速验证这个问题的解. NP-co ...

最新文章

  1. hive 安装_7.Hive介绍以及安装
  2. source insight 4.0 护眼背景色设置
  3. enable 华为交换机ntdp_关于华为交换机bpdu enable. ntdp enable. ndp enable解析
  4. memset()的效率以及源码分析
  5. java返回datatable_(转)在JAVA实现DataTable对象(三)——DataTable对象实现
  6. 2017.10.28 排序 思考记录
  7. 宅男、游戏、美女,一场不一样的技术公开课让你老泪纵横
  8. 30 位 90 后霸榜福布斯,有颜、有才、有头脑!
  9. Topological Spaces(拓扑空间)
  10. 3. redis的超时,事务,watch
  11. Dubbo入门----搭建一个最简单的Demo框架
  12. 【大数据部落】用R语言挖掘Twitter数据
  13. CTreeCtrl 类的InsertItem成员函数
  14. 前瞻性研究(Prospective study)
  15. html列表自动无限循环滚动,js 无限循环垂直滚动列表
  16. python金融基础知识_python金融实务从入门到精通(23节课)
  17. lay和lied_lie-lie-lay三个动词的区别
  18. 教学打铃单片机实现(课程设计)
  19. JarvisOJ Basic部分题目wp
  20. Getting Started with ARI(ARI入门)

热门文章

  1. 43个不可不知的健康常识,终生受益!
  2. Elasticsearch——1:Elasticsearch 概述
  3. 天九共享加持指尖生活派打造快递便民服务店
  4. springboot + EasyExcel 实现操作Excel文件
  5. 计算机黑屏如何重启,电脑黑屏,小编教你电脑黑屏重启还是黑屏怎么办
  6. 在angular7中HTML动态加载背景图片
  7. Vue.js--计算属性
  8. 通过JAVA swing 实现简单的计算器功能(待完善)
  9. 厂商是怎么样查到公司在用盗版,有什么方法可以核实真假?
  10. catia草图线束--不然固定不了---约束后变为绿色