Matrix67:什么是P问题、NP问题和NPC问题

2023-05-16

前记

本想写一篇介绍P,NP, NPC, NP-hard问题的文章,搜索了一下,看到了Matrix67写的这篇:什么是P问题、NP问题和NPC问题

文章写的非常清晰易懂,自知能力有限,所以直接转载了。总结一下:

P:在多项式时间( Polynomial time)内可求解的一类问题;

NP :(Non-deterministic polynomial time)在多项式时间内可以验证一个解的正确性的问题;

NPC: NP问题中更为抽象的一类问题,所有一般NP问题均可归约为该类问题,即所有一般NP问题均可通过NPC的求解方法得到解;

目前研究界的争论性问题:P是否等于NP?

NP-hard: 所有一般的NP问题都可归约为该类问题,但是给定一个解,对于NP-hard问题,可能都不存在能在多项式时间内验证接的正确性的方法。NP-hard包含的问题更广泛。

 

Matrix67正文:

这或许是众多OIer最大的误区之一。

你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。

还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间,而是当问题规模扩大后,程序需要的时间长度增长得有多快。也就是说,对于高速处理数据的计算机来说,处理某一个特定数据的效率不能衡量一个程序的好坏,而应该看当这个数据的规模变大到数百倍后,程序运行时间是否还是一样,或者也跟着慢了数百倍,或者变慢了数万倍。不管数据有多大,程序处理花的时间始终是那么多的,我们就说这个程序很好,具有O(1)的时间复杂度,也称常数级复杂度;数据规模变得有多大,花的时间也跟着变得有多长,这个程序的时间复杂度就是O(n),比如找n个数中的最大值;而像冒泡排序、插入排序等,数据扩大2倍,时间变慢4倍的,属于O(n^2)的复杂度。还有一些穷举类的算法,所需时间长度成几何阶数上涨,这就是O(a^n)的指数级复杂度,甚至O(n!)的阶乘级复杂度。不会存在O(2*n^2)的复杂度,因为前面的那个“2”是系数,根本不会影响到整个程序的时间增长。同样地,O (n^3+n^2)的复杂度也就是O(n^3)的复杂度。因此,我们会说,一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低,尽管在n很小的时候,前者优于后者,但后者时间随数据规模增长得慢,最终O(n^3)的复杂度将远远超过O(n^2)。我们也说,O(n^100)的复杂度小于O(1.01^n)的复杂度。

容易看出,前面的几类复杂度被分为两种级别,其中后者的复杂度无论如何都远远大于前者:一种是O(1),O(log(n)),O(n^a)等,我们把它叫做多项式级的复杂度,因为它的规模n出现在底数的位置;另一种是O(a^n)和O(n!)型复杂度,它是非多项式级的,其复杂度计算机往往不能承受。当我们在解决一个问题时,我们选择的算法通常都需要是多项式级的复杂度,非多项式级的复杂度需要的时间太多,往往会超时,除非是数据规模非常小。

自然地,人们会想到一个问题:会不会所有的问题都可以找到复杂度为多项式级的算法呢?很遗憾,答案是否定的。有些问题甚至根本不可能找到一个正确的算法来,这称之为“不可解问题”(Undecidable Decision Problem)。The Halting Problem就是一个著名的不可解问题,在我的Blog上有过专门的介绍和证明。再比如,输出从1到n这n个数的全排列。不管你用什么方法,你的复杂度都是阶乘级,因为你总得用阶乘级的时间打印出结果来。有人说,这样的“问题”不是一个“正规”的问题,正规的问题是让程序解决一个问题,输出一个“YES”或“NO”(这被称为判定性问题),或者一个什么什么的最优值(这被称为最优化问题)。那么,根据这个定义,我也能举出一个不大可能会有多项式级算法的问题来:Hamilton回路。问题是这样的:给你一个图,问你能否找到一条经过每个顶点一次且恰好一次(不遗漏也不重复)最后又走回来的路(满足这个条件的路径叫做Hamilton回路)。这个问题现在还没有找到多项式级的算法。事实上,这个问题就是我们后面要说的NPC问题。

下面引入P类问题的概念:如果一个问题可以找到一个能在多项式的时间里解决它的算法,那么这个问题就属于P问题。P是英文单词多项式的第一个字母。哪些问题是P类问题呢?通常NOI和NOIP不会出不属于P类问题的题目。我们常见到的一些信息奥赛的题目都是P问题。道理很简单,一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。

接下来引入NP问题的概念。这个就有点难理解了,或者说容易理解错误。在这里强调(回到我竭力想澄清的误区上),NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是,可以在多项式的时间里猜出一个解的问题。比方说,我RP很好,在程序中需要枚举时,我可以一猜一个准。现在某人拿到了一个求最短路径的问题,问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图,但怎么也算不出来,于是来问我:你看怎么选条路走得最少?我说,我RP很好,肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线,说就这条吧。那人按我指的这条把权值加起来一看,嘿,神了,路径长度98,比100小。于是答案出来了,存在比100小的路径。别人会问他这题怎么做出来的,他就可以说,因为我找到了一个比100 小的解。在这个题中,找一个解很困难,但验证一个解很容易。验证一个解只需要O(n)的时间复杂度,也就是说我可以花O(n)的时间把我猜的路径的长度加出来。那么,只要我RP好,猜得准,我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的,不满足题意的方案也不会来骗我去选它。这就是NP问题。当然有不是NP问题的问题,即你猜到了解但是没用,因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子,它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然,前面所说的Hamilton回路是NP问题,因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样:试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了,因为除非你试过所有的路,否则你不敢断定它“没有Hamilton回路”。

 之所以要定义NP问题,是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白,信息学中的号称最困难的问题——“NP问题”,实际上是在探讨NP问题与P类问题的关系。

很显然,所有的P类问题都是NP问题。也就是说,能多项式地解决一个问题,必然能多项式地验证一个问题的解——既然正解都出来了,验证任意给定的解也只需要比较一下就可以了。关键是,人们想知道,是否所有的NP问题都是P类问题。我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中,把所有 NP问题划进另一个集合NP中,那么,显然有P属于NP。现在,所有对NP问题的研究都集中在一个问题上,即究竟是否有P=NP?通常所谓的“NP问题”,其实就一句话:证明或推翻P=NP。

NP问题一直都是信息学的巅峰。巅峰,意即很引人注目但难以解决。在信息学研究中,这是一个耗费了很多时间和精力也没有解决的终极问题,好比物理学中的大统一和数学中的歌德巴赫猜想等。

目前为止这个问题还“啃不动”。但是,一个总的趋势、一个大方向是有的。人们普遍认为,P=NP不成立,也就是说,多数人相信,存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的,就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题,也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在,使人们相信P≠NP。下文将花大量篇幅介绍NPC问题,你从中可以体会到NPC问题使P=NP变得多么不可思议。

为了说明NPC问题,我们先引入一个概念——约化(Reducibility,有的资料上叫“归约”)。

简单地说,一个问题A可以约化为问题B的含义即是,可以用问题B的解法解决问题A,或者说,问题A可以“变成”问题B。《算法导论》上举了这么一个例子。比如说,现在有两个问题:求解一个一元一次方程和求解一个一元二次方程。那么我们说,前者可以约化为后者,意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题,那么我们能找到一个“规则”,按照这个规则把解一元一次方程程序的输入数据变一下,用在解一元二次方程的程序上,两个程序总能得到一样的结果。这个规则即是:两个方程的对应项系数不变,一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题,两个问题就等价了。同样地,我们可以说,Hamilton回路可以约化为TSP问题(Travelling Salesman Problem,旅行商问题):在Hamilton回路问题中,两点相连即这两点距离为0,两点不直接相连则令其距离为1,于是问题转化为在TSP问题中,是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。

 “问题A可约化为问题B”有一个重要的直观意义:B的时间复杂度高于或者等于A的时间复杂度。也就是说,问题A不比问题B难。这很容易理解。既然问题A能用问题B来解决,倘若B的时间复杂度比A的时间复杂度还低了,那A的算法就可以改进为B的算法,两者的时间复杂度还是相同。正如解一元二次方程比解一元一次方程难,因为解决前者的方法可以用来解决后者。
    很显然,约化具有一项重要的性质:约化具有传递性。如果问题A可约化为问题B,问题B可约化为问题C,则问题A一定可约化为问题C。这个道理非常简单,就不必阐述了。

  现在再来说一下约化的标准概念就不难理解了:如果能找到这样一个变化法则,对任意一个程序A的输入,都能按这个法则变换成程序B的输入,使两程序的输出相同,那么我们说,问题A可约化为问题B。

 当然,我们所说的“可约化”是指的可“多项式地”约化(Polynomial-time Reducible),即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。

好了,从约化的定义中我们看到,一个问题约化为另一个问题,时间复杂度增加了,问题的应用范围也增大了。通过对某些问题的不断约化,我们能够不断寻找复杂度更高,但应用范围更广的算法来代替复杂度虽然低,但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题,联想起约化的传递性,自然地,我们会想问,如果不断地约化上去,不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题,那么最后是否有可能找到一个时间复杂度最高,并且能“通吃”所有的 NP问题的这样一个超级NP问题?答案居然是肯定的。也就是说,存在这样一个NP问题,所有的NP问题都可以约化成它。换句话说,只要解决了这个问题,那么所有的NP问题都解决了。这种问题的存在难以置信,并且更加不可思议的是,这种问题不只一个,它有很多个,它是一类问题。这一类问题就是传说中的NPC 问题,也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信,NPC问题是最复杂的问题。再次回到全文开头,我们可以看到,人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。此时,我的目的终于达到了,我已经把NP问题和NPC问题区别开了。到此为止,本文已经写了近5000字了,我佩服你还能看到这里来,同时也佩服一下自己能写到这里来。

NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先,它得是一个NP问题;然后,所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题,再证明其中一个已知的NPC问题能约化到它(由约化的传递性,则NPC问题定义的第二条也得以满足;至于第一个NPC问题是怎么来的,下文将介绍),这样就可以说它是NPC问题了。

 既然所有的NP问题都能约化成NPC问题,那么只要任意一个NPC问题找到了一个多项式的算法,那么所有的NP问题都能用这个算法解决了,NP也就等于P 了。因此,给NPC找一个多项式算法太不可思议了。因此,前文才说,“正是NPC问题的存在,使人们相信P≠NP”。我们可以就此直观地理解,NPC问题目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索。

顺便讲一下NP-Hard问题。NP-Hard问题是这样一种问题,它满足NPC问题定义的第二条但不一定要满足第一条(就是说,NP-Hard问题要比 NPC问题的范围广)。NP-Hard问题同样难以找到多项式的算法,但它不列入我们的研究范围,因为它不一定是NP问题。即使NPC问题发现了多项式级的算法,NP-Hard问题有可能仍然无法得到多项式级的算法。事实上,由于NP-Hard放宽了限定条件,它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。

  不要以为NPC问题是一纸空谈。NPC问题是存在的。确实有这么一个非常具体的问题属于NPC问题。下文即将介绍它。

下文即将介绍逻辑电路问题。这是第一个NPC问题。其它的NPC问题都是由这个问题约化而来的。因此,逻辑电路问题是NPC类问题的“鼻祖”。

逻辑电路问题是指的这样一个问题:给定一个逻辑电路,问是否存在一种输入使输出为True。

什么叫做逻辑电路呢?一个逻辑电路由若干个输入,一个输出,若干“逻辑门”和密密麻麻的线组成。看下面一例,不需要解释你马上就明白了。

  ┌───┐
  │ 输入1├─→┐    ┌──┐
  └───┘    └─→┤    │
                      │ or ├→─┐
  ┌───┐    ┌─→┤    │    │    ┌──┐
  │ 输入2├─→┤    └──┘    └─→┤    │
 &
nbsp;└───┘    │                ┌─→┤AND ├──→输出
                └────────┘┌→┤    │
  ┌───┐    ┌──┐            │  └──┘
  │ 输入3├─→┤ NOT├─→────┘
  └───┘    └──┘

 这是个较简单的逻辑电路,当输入1、输入2、输入3分别为True、True、False或False、True、False时,输出为True。

有输出无论如何都不可能为True的逻辑电路吗?有。下面就是一个简单的例子。

  ┌───┐
  │输入1 ├→─┐    ┌──┐
  └───┘    └─→┤    │
                      │AND ├─→┐
                ┌─→┤    │    │
                │    └──┘    │  ┌──┐
                │                └→┤    │
  ┌───┐    │                    │AND ├─→输出
  │输入2 ├→─┤  ┌──┐      ┌→┤    │
  └───┘    └→┤NOT ├→──┘  └──┘
                    └──┘

上面这个逻辑电路中,无论输入是什么,输出都是False。我们就说,这个逻辑电路不存在使输出为True的一组输入。

 回到上文,给定一个逻辑电路,问是否存在一种输入使输出为True,这即逻辑电路问题。

  逻辑电路问题属于NPC问题。这是有严格证明的。它显然属于NP问题,并且可以直接证明所有的NP问题都可以约化到它(不要以为NP问题有无穷多个将给证明造成不可逾越的困难)。证明过程相当复杂,其大概意思是说任意一个NP问题的输入和输出都可以转换成逻辑电路的输入和输出(想想计算机内部也不过是一些 0和1的运算),因此对于一个NP问题来说,问题转化为了求出满足结果为True的一个输入(即一个可行解)。

   有了第一个NPC问题后,一大堆NPC问题就出现了,因为再证明一个新的NPC问题只需要将一个已知的NPC问题约化到它就行了。后来,Hamilton 回路成了NPC问题,TSP问题也成了NPC问题。现在被证明是NPC问题的有很多,任何一个找到了多项式算法的话所有的NP问题都可以完美解决了。因此说,正是因为NPC问题的存在,P=NP变得难以置信。P=NP问题还有许多有趣的东西,有待大家自己进一步的挖掘。攀登这个信息学的巅峰是我们这一代的终极目标。现在我们需要做的,至少是不要把概念弄混淆了。

Matrix67原创
转载请注明出处:http://www.matrix67.com/blog/archives/105

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matrix67:什么是P问题、NP问题和NPC问题 的相关文章

  • 必备外文文献网站,有外文文献翻译功能

    国内好多同学面对外文文献论文都有一个共同的槽点 xff0c 那就是翻译的问题 xff0c 好不容易找到了自己想要的外文文献 xff0c 结果那长篇大论的专业术语看不懂 xff0c 还需另找软件翻译 xff0c 这确实太麻烦了 图片来自于网络
  • 国内常用的5个中文期刊论文网站,5个外文文献网站

    作为一名科研汪 xff0c 日常工作就是找资料 xff0c 查文献 xff0c 做实验 xff0c 现在我给大家分享10个中外文献论文网站 xff0c 助同僚们在日常中能节省一些时间 xff0c 能更快有效地找到自己需要的资料文献 5个中文
  • 能查阅国外文献的8个论文网站(最新整理)

    这几天又新发现了几个论文网站 xff0c 有用的话请拿走 xff01 1 CALIS公共目录检索系统 这里是 传送门 2 掌桥科研一站式服务平台 这里是 传送门 3 NSTL文献检索 这里是 传送门 4 CASHL目录系统 这里是 传送门
  • java里的自动装箱和自动拆箱

    所有的基本类型都有与之对应的类 xff0c 例如 xff1a int Integer byte Byte short Short long Long float Float double Double char Char boolean B
  • 热门文献|陈国生:实证化中医基础理论依据及应用

    题名 xff1a 实证化中医基础理论依据及应用 作者 xff1a 陈国生 摘要 xff1a 中医基础理论在日地月天体运行图中的反映以成不争的事实 xff0c 然而笼统地概念对经络名称的划分 对称的机制 手足经络的区别 还需要加以澄清 xff
  • 全球IEEE期刊大全(综合整理,附原文论文下载地址)

    本文整理了来自全球的IEEE期刊 xff0c 一共有67种 xff0c 共计305236篇论文 期刊类别 xff1a 1 Industrial Electronics IEEE Transactions on 2 IEEE transact
  • 论文怎么添加引用参考文献(附word添加引用标注教程)

    第一步 xff1a 登录 掌桥科研 xff0c 掌桥科研是专业检索下载论文的网站 xff0c 能找到各个学科专业的中外学术期刊和论文 xff08 1 3亿多篇 xff09 地址 xff1a zhangqiaokeyan com LSDN 2
  • 2020年经济学专业论文选题参考(20个选题+部分参考文献)

    2020年经济学专业论文选题参考 xff08 20个选题 43 部分参考文献 xff09 1 一带一路 沿线主要区域集团人口及社会经济分布特征 2 房价 金融发展对技术创新的影响 3 共享经济背景下资源有效利用研究 4 基于新农村建设的农业
  • 自动化技术、计算机技术核心期刊整理及介绍

    本文由掌桥科研整理 xff0c 平台提供中外文献检索获取 xff0c 拥有1 3亿 43 篇 xff0c 中外专利1 4亿 43 条 xff0c 月更新百万篇 xff0c 是科研人员与硕博研究生必备平台之一 内容参考网站 xff1a 掌桥科
  • intel cpu 分类 i7、i5、i3、T系列、P系列

    现在市场的CPU有T系列 P系列 E系列 还有i3 i5 i7 T系列 xff0c 是intel 双核 xff0c 主要应用于笔记本 包括奔腾双核和酷睿双核 xff0c 2以下的 xff0c 比如T2140 xff0c 是奔腾双核 2以上
  • 2021年计算机保研面试题

    准备计算机保研面试题 注意点 大家都是第一次 没有保研经验 xff0c 所以担心会被问专业课知识相关的东西 但是结合博主自己的经历 xff0c 本人双非保到某985 xff0c 过程中问的最多的是项目相关问题 xff0c 并不会设计太多专业
  • 阿里云源码编译内核并替换

    1 介绍 阿里云新机器 xff1a 系统Ubuntu 16 04内存16G4核CPU 源码编译Linux最新stable版本内核 xff0c 并替换现有内核使用新内核 2 编译 2 1 安装依赖 apt update apt apt get
  • 记录一次wordpress站点迁移过程

    迁移和备份还原的区别是针对不同的install而言的 xff0c 使用上的区别可能是访问的IP会变 几乎所有系统的备份还原都主要涉及下面两个方面 xff0c wordpress也不例外 xff1a 数据库 xff1a mysqldump x
  • ubuntu16.04桌面美化

    先晒一张桌面图 xff1a 电脑是笔记本 xff0c 尺寸13 3 1080P 主要修改如下 xff1a 桌面壁纸 主题 缩放Unity面板左上角 34 Ubuntu Desktop 34 下部类似MacOS中的启动栏 桌面壁纸 主题 缩放
  • Java Math类的函数计算方法汇总

    java lang Math类中包含基本的数字操作 xff0c 如指数 对数 平方根和三角函数 java math是一个包 xff0c 提供用于执行任意精度整数 BigInteger 算法和任意精度小数 BigDecimal 算法的类 ja
  • Ubuntu截图快捷键

    系统设置 键盘 截图查看截图键的设置 xff1a 总结下 xff1a 对整个屏幕截图 xff1a Prt Sc xff08 PrintScreen xff0c 打印按钮 xff09 当前当前窗口截图 xff1a Alt 43 Prt Sc自
  • Ubuntu翻译任何选中的文字

    1 问题 Google Chrome浏览器可以集成Google Translator插件 xff0c 实现浏览器页面文字的翻译 xff0c 但是除了浏览器 xff0c PDF LibreOffice等软件上面的文字也经常需要翻译 Ubunt
  • 关于字符集和编码你应该知道的

    1 Introduction 大部分程序员都会认为 xff1a plain text 61 ascii 61 character xff0c 如我们使用的A字符 xff0c 就是一个字节 8bits Unicode字符集占用2个字节 xff

随机推荐

  • 2019 年 吉林大学 软件学硕967 回忆题

    2019年吉林大学软件工程专业硕士967回忆 一简单题 1给了一个中缀表达式转化为后缀表达式 2给了一组数字 xff0c 用快速排序进行排序 xff0c 写出每一趟的过程 3给了一组11个元素的有序表 xff0c 进行二分查找33 xff0
  • 南京工业大学校园网(智慧南工)自动登录

    前言 南京工业大学校园网 智慧南工 Njtech Home宿舍网自动登录 多平台可用 目前实现windows xff0c macos xff0c openwrt xff0c ios平台自动登录 由于gitee所有项目私有 xff0c 公开需
  • js前端实现语言识别(asr)与录音

    js前端实现语言识别与录音 前言 实习的时候 xff0c 领导要求验证一下在web前端实现录音和语音识别 xff0c 查了一下发现网上有关语音识别也就是语音转文字几乎没有任何教程 其实有一种方案 xff0c 前端先录音然后把录音传到后端 x
  • [Nice_try]python基础学习笔记(六)

    六 函数 局部变量 全局变量 6 1 1函数的概念 将特定功能的代码集成到一个模块中 xff0c 在需要调用的时候进行调用 可以防止内容的重复编写 6 1 2函数的定义 span class token keyword def span 函
  • 论文写作感悟

    以下是学习论文写作课程之后的一些感悟以及收获 xff0c 总结如下 xff1a 关于格式 xff1a 1 在写论文的过程中 xff0c 使用LaTeX排版系统能够让论文显得更加专业 xff0c 而且对公式 排版的处理会更加美观 2 在论文中
  • 软件工程概论第一次作业

    习题 一 单项选择 1 软件是计算机系统中与硬件相互依存的另一部分 xff0c 它是包括 1 B 2 A 及 3 D 的完整集合 其中 xff0c 1 B 是按事先设计的功能和性能要求执行的指令序列 2 A 是使程序能够正确操纵信息的数据结
  • Java递归发实现Fibonacci数列,尾递归实现Fibonacci数列,并获取计算所需时间

    递归法计算Fibonacci数列 xff1a 它可以递归地定义为 xff1a 第n个Fibonacci数列可递归地计算如下 xff1a int fibonacci int n if n lt 61 1 return 1 return fib
  • apache-options配置之Indexes

    配置 Options Indexes FollowSymLinks Indexs的配置的作用是如果不存在Index html文件的时候 xff0c 将该目录下的文件树列出来 一般在线上使用
  • gcr.io和quay.io拉取镜像失败

    k8s在使用编排 xff08 manifest xff09 工具进行yaml文件启动pod时 xff0c 会遇到官方所给例子中spec containers image包含 xff1a quay io coreos example gcr
  • yacs直接读取yaml文档(python)

    yacs在我理解是一种读写配置文件的python包 在机器学习领域 xff0c 很多模型需要设置超参数 xff0c 当超参数过多时 xff0c 不方便管理 xff0c 于是出现了很多类似yaml xff0c yacs的包 关于yacs的使用
  • 基于Gensim的Word2Vec增量式训练方法

    Word2Vec训练好以后 xff0c 随着时间的积累 xff0c 出现一些新词 xff0c 此时可能需要在已有的模型基础上重新训练 xff0c 以补充这些新词汇 xff0c 亦即增量式训练 本文分析了基于Gensim的Word2Vec的增
  • Numpy/Pytorch中函数参数dim/axis到底怎么用?

    numpy或pytorch中很多函数可指定参数dim或axis 例如sum函数 xff0c dim 61 0或dim 61 1是对矩阵列 行进行求和 xff0c 时间久了 xff0c 就搞混了 xff0c 如果是高维array tensor
  • Tensorflow中截断高斯分布(truncated norm)采样的python实现

    Tensorflow中可调用函数tf truncated normal来进行截断高斯分布的采样 什么是截断高斯分布 xff0c 看下图 xff0c 分布在 0 1和0 1处被截断了 xff0c 具体如下 import tensorflow
  • tf.contrib.image.transform与opencv中PerspectiveTransform

    tensorflow中tf contrib image transform函数可对图像做透视变换 xff0c 用法如下 读取图像 img 61 cv2 imread 39 home xp1 Pictures 004545 jpg 39 in
  • 转:模式识别 机器学习 计算机视觉 相关资料 论坛 网站 牛人...

    转自 http www cnblogs com kshenf archive 2012 02 07 2342034 html 常用牛人主页链接 xff08 计算机视觉 模式识别 机器学习相关方向 陆续更新 xff09 牛人主页 xff08
  • 李航统计学习方法EM算法三枚硬币例子Q函数推导

    具体推导如下 xff1a 上面推导省略了第i次迭代的i的标记 当得到上式以后 xff0c 可以参考 http www cnblogs com Determined22 p 5776791 html 来继续一下推导 当然 xff0c 参考博客
  • 李航博士-统计学习方法-SVM-python实现

    下面的代码是根据李航博士 统计学习方法 一书写的SVM的实现 还有些问题 xff0c 贴出来大家给些建议 usr bin env python2 coding utf 8 34 34 34 Created on Thu Oct 19 16
  • web客户编程,开发一个注册页面

    用html开发一个注册页面 xff0c 检验注册格式是否正确 Register html lt html gt lt head gt lt style type 61 34 text css 34 gt 64 import url Css
  • windows下GDAL及python接口编译过程注意事项

    Window下编译GDAL的方法在网上已经能搜到很多了 xff0c 例如http blog csdn net zhoubl668 article details 6641027 但是在实际操作中还是碰到些问题 xff0c 现在把注意事项写下
  • Matrix67:什么是P问题、NP问题和NPC问题

    前记 本想写一篇介绍P xff0c NP xff0c NPC xff0c NP hard问题的文章 xff0c 搜索了一下 xff0c 看到了Matrix67写的这篇 xff1a 什么是P问题 NP问题和NPC问题 文章写的非常清晰易懂 x