北京政务服务官方网站,怎样在手机上无货源开店,网上怎么找承包小工程,济南做网站那家好一、前置知识
1.多项式 多项式是由变量#xff08;如x、y等#xff09;和系数通过有限次的加、减、乘运算得到的表达式。例如3x^22x 1就是一个关于(x)的多项式
2.时间复杂度 时间复杂度是用来衡量算法运行效率的一个指标。它描述了算法运行时间随着输入规模增长而增长的量…一、前置知识
1.多项式 多项式是由变量如x、y等和系数通过有限次的加、减、乘运算得到的表达式。例如3x^22x 1就是一个关于(x)的多项式
2.时间复杂度 时间复杂度是用来衡量算法运行效率的一个指标。它描述了算法运行时间随着输入规模增长而增长的量级。简单来说就是当输入的数据量规模不断变大时算法执行所需时间的增长速度。通常使用大O符号O来表示时间复杂度。例如O(n)、O(n²)、O(log n)等。其中n代表输入规模。
如果一个算法的时间复杂度是O(n)表示算法的运行时间与输入规模n成线性关系。例如一个简单的遍历数组的算法需要逐个访问数组中的元素当数组元素个数为n时算法执行时间大致与n成正比。如果时间复杂度是O(n²)则运行时间与输入规模n的平方成正比。例如嵌套的双层循环遍历一个二维数组当二维数组的边长为n时执行时间会随着n的平方增长。O(log n)的时间复杂度表示算法运行时间的增长速度比线性增长慢很多。例如二分查找算法在一个有序数组中查找元素时每次查找都能将搜索范围缩小一半其时间复杂度就是O(log n)。
3.约化 一个问题A可以约化为B的含义是可以用问题B的解法解决问题A。
二、基础概念
1.P问题 在计算复杂性理论中P问题Polynomial - time problems是指能够在多项式时间内被解决的问题。这里的“解决”是指可以用一个确定性算法在输入规模为n的情况下在时间复杂度为O(n^k)其中k为某个常数内得到问题的解。 例如计算两个整数的和、判断一个数是否为偶数等问题都是P问题。对于计算两个整数的和无论这两个整数有多大我们都可以按照基本的加法运算规则在有限的、与输入规模成多项式关系的步骤内得到结果。
2.NP问题 NP 问题Nondeterministic Polynomial - time problems是指可以在多项式时间内验证一个解是否正确的问题。这里强调的是验证解的速度而非找到解的速度。 例如对于一个旅行商问题TSP给定一个特定的旅行路线解我们可以在多项式时间内计算这条路线的总长度并验证它是否满足问题的要求比如是否是所有城市都经过且每个城市只经过一次的路线中的较短者。
3.NP-complete问题 NP - completeNP 完全问题是 NP 问题中的一个特殊子类。一个问题是 NP - complete 问题需要满足两个条件
它必须是一个 NP 问题也就是说可以在多项式时间内验证一个解是否正确。所有的 NP 问题都能够在多项式时间内归约到这个问题。归约是一种计算复杂性理论中的概念简单来说如果问题 A 可以归约到问题 B那么在某种意义上问题 A 不比问题 B 难。
4.NP-hard问题 NP - hard 问题至少和 NP 完全问题NP - complete一样难。如果一个问题是 NP - hard 的意味着它不比 NP 中的任何问题容易这里的 “容易” 是从计算复杂性的角度来说的。即使可以在多项式时间内验证一个 NP 问题的解但对于 NP - hard 问题目前还没有发现多项式时间的算法来解决它。 如果所有 NP 问题都能在多项式时间内归约到某个问题那么这个问题就是 NP - hard 问题。归约是一种转换方法例如如果有问题 A 和问题 B若能在多项式时间内将问题 A 的实例转化为问题 B 的实例并且利用问题 B 的解能在多项式时间内得到问题 A 的解就说 A 可以归约到 B。
三、实例
1.旅行商问题Travelling Salesman Problem, TSP
给定一组城市和它们之间的距离要求找到一条经过所有城市且每个城市只经过一次的最短路径。这是一个经典的 NP - hard 问题。随着城市数量的增加可能的路径数量呈指数级增长很难在多项式时间内找到最优解。
2.背包问题Knapsack Problem的一些变形
例如有多个物品每个物品有重量和价值在限定背包容量的情况下求能装入背包的最大价值组合。如果对这个问题进行一些复杂的扩展如增加多种约束条件等情况就可能变成 NP - hard 问题。