\(\S\) 结论

TSP问题:n阶带权无向完全图中,找权值最小的哈密顿回路(无向图中遍历所有顶点的回路)

优化问题,记最优解为OPT

对于一般的n顶点TSP问题(非Metric),任意 多项式时间内可计算的函数f(n) 均不可近似,除非P = NP

已知 哈密顿回路存在性判定 是经典的NPC问题;f(n)举例:\(f(n) = 2^n\)

\(\S\) 证明

思路

去证假设有那么个f(n)的近似比存在,则可在多项式时间内求解哈密顿回路这个NPC问题,则P = NP

具体过程

(从NPC问题实例出发归约到TSP问题)

对于一个n顶点哈密顿回路的实例,我们在此基础上构造一张完全图:

  • 对于原实例图中已有的边,定义权重为\(1\)
  • 对于原实例图中没有的边,定义权重为\(nf(n)\) (\(f(n)\)多项式时间内可计算,且因为是近似比,\(f(n)>1\))

构造的新图即为n顶点的TSP问题。则对于新图,可分析:

  • 原实例图存在哈密顿回路 \(\Leftrightarrow\) 新图中至少有那个哈密顿回路,且必然权重最小,所以\(OPT = n\);
  • 原实例图没有哈密顿回路 \(\Leftrightarrow\) 新图必然要用到新加的权重为\(nf(n)\)的边,所以\(OPT > nf(n)\);

NPC问题归约后的两种情况出现了Gap,且这个Gap无法被近似比逾越!

那如果n顶点TSP问题有某个 近似比为f(n) 的近似算法,那不妨对新图使用该算法:

  • 若\(OPT = n\),则根据定义,得到的解 \(cost \leq nf(n)\)
  • 若\(OPT > nf(n)\),则得到的解 \(cost > OPT > nf(n)\)

由于不存在其他的OPT情况(有Gap),所以反向推导也成立。即我们可以通过该近似算法,在多项式时间内判断原实例图是否存在哈密顿回路,即解决了NPC问题,即P = NP

得证

\(\S\) 总结:引入Gap的归约

记L为NPC判定问题(L is NP-complete Language),P为某个优化问题(an optimization problem)

从L到P的 引入Gap的归约(Gap-introducing reduction),会伴生两个函数\(f\)和\(\alpha\)的,对于L的某个实例x,他们可以在多项式时间内输出P的某个实例I,满足

①P为最小化的优化问题,\(\alpha(|I|) \geq 1\):

  • \(x \in L \Rightarrow OPT \leq f(I)\)
  • \(x \notin L \Rightarrow OPT > \alpha(|I|) \cdot f(I)\)

②P为最大化的优化问题,\(\alpha(|I|) \leq 1\):

  • \(x \in L \Rightarrow OPT \geq f(I)\)
  • \(x \notin L \Rightarrow OPT < \alpha(|I|) \cdot f(I)\)

TSP问题的不可近似性的更多相关文章

  1. JVM内存模型、指令重排、内存屏障概念解析

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器.运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要.否则,你很难搞清楚哪 ...

  2. [Machine Learning] 机器学习常见算法分类汇总

    声明:本篇博文根据http://www.ctocio.com/hotnews/15919.html整理,原作者张萌,尊重原创. 机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多 ...

  3. Spark入门实战系列--8.Spark MLlib(上)--机器学习及SparkMLlib简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .机器学习概念 1.1 机器学习的定义 在维基百科上对机器学习提出以下几种定义: l“机器学 ...

  4. sqlserver数据库学习(-)数据类型

    ecimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表达法:不存储值的近似值. 定义 decimal 的列.变量和参数的 ...

  5. paper 12:机器学习常见算法分类汇总

    机器学习无疑是当前数据分析领域的一个热点内容.很多人在平时的工作中都或多或少会用到机器学习的算法.这里南君先生为您总结一下常见的机器学习算法,以供您在工作和学习中参考. 机器学习的算法很多.很多时候困 ...

  6. 深度神经网络DNN的多GPU数据并行框架 及其在语音识别的应用

    深度神经网络(Deep Neural Networks, 简称DNN)是近年来机器学习领域中的研究热点,产生了广泛的应用.DNN具有深层结构.数千万参数需要学习,导致训练非常耗时.GPU有强大的计算能 ...

  7. SqlServer中decimal(numeric )、float 和 real 数据类型的区别[转]

    decimal(numeric )             同义,用于精确存储数值 float 和 real                      不能精确存储数值   decimal 数据类型最 ...

  8. 【深度学习系列2】Mariana DNN多GPU数据并行框架

    [深度学习系列2]Mariana DNN多GPU数据并行框架  本文是腾讯深度学习系列文章的第二篇,聚焦于腾讯深度学习平台Mariana中深度神经网络DNN的多GPU数据并行框架.   深度神经网络( ...

  9. 超文本传输协议-HTTP/1.1

    超文本传输协议-HTTP/1.1(修订版) ---译者:孙超进本协议不限流传发布.版权声明Copyright (C) The Internet Society (1999). All Rights R ...

  10. NLP︱词向量经验总结(功能作用、高维可视化、R语言实现、大规模语料、延伸拓展)

    R语言由于效率问题,实现自然语言处理的分析会受到一定的影响,如何提高效率以及提升词向量的精度是在当前软件环境下,比较需要解决的问题. 笔者认为还存在的问题有: 1.如何在R语言环境下,大规模语料提高运 ...

随机推荐

  1. springboot的Web项目编译运行时提示错误:Field userService in com.cetc.UserManger.controller.UserController required a bean of type 'com.cetc.UserManger.service.UserService' that could not be found.

    错误描述: springboot的Web项目编译运行时提示错误:Field userService in com.cetc.UserManger.controller.UserController r ...

  2. 大端地址 小端地址 网络字节序 intel主机字节序

    小端字节序:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处:大端字节序:高字节数据存放在内存低地址处,低字节数据存放在内存高地址处. 网络字节序: MSB 高字节前存法 Most Sign ...

  3. 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v8.3版已发布

    关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...

  4. Windows安全加固(三)

    五.网络安全配置 协议安全 1.SYN攻击保护 指定触发SYN洪水攻击保护所必须超过的TCP连接请求数阈值为5:指定处于SYN_RCVD状态的TCP连接数的阈值为500,指定处于至少已发送一次重传的S ...

  5. Omnivore 替代品 Readeck 安装与使用教程

    前段时间 Omnivore 宣布服务关停,作为一个长期使用 Omnivore 的用户,我需要寻找替代方案. 我对替代品的核心需求是: 浏览器插件:支持一键剪藏当前网页. RSS 支持:能够输入 RSS ...

  6. G1原理—2.G1是如何提升分配对象效率

    大纲 1.G1的对象分配原理是怎样的 2.深入分析TLAB机制原理 3.借助TLAB分配对象的实现原理是什么 4.什么是快速分配 + 什么是慢速分配 5.大对象分配的过程 + 与TLAB的关系 6.救 ...

  7. NET Core3.1 Cors 添加跨域支持

    在 Startup 里加: services.AddCors(options => options.AddPolicy( DefaultCors, p => p.SetIsOriginAl ...

  8. jQuery详解

    目录 jQueryJS中创建对象jQuery选择器jQuery 操作 DOMjQuery 事件jQuery 动画JSON :Python工具 - pipPython工具 - VirtualEnvWEB ...

  9. Redisson实现分布式锁---原理

    Redisson实现分布式锁(1)---原理 有关Redisson作为实现分布式锁,总的分3大模块来讲. 1.Redisson实现分布式锁原理 2.Redisson实现分布式锁的源码解析 3.Redi ...

  10. shell脚本中的变量

    在shell脚本中使用变量显得我们的脚本更加专业更像是一门语言,开个玩笑,变量的作用当然不是为了专业.如果你写了一个长达1000行的shell脚本,并且脚本中出现了某一个命令或者路径几百次.突然你觉得 ...