原创翻译加学习笔记,方便国人学习算法知识!

原文链接http://www.geeksforgeeks.org/pseudo-polynomial-in-algorithms/

什么是伪多项式?

当一个算法的最坏时间复杂度是依据输入的数量级的时候,我们就称算法的时间复杂偶是伪多项式时间(给一个wiki上的解释可能更好理解 若一个数值算法的时间复杂度可以表示为输入数值规模N的多项式,但其运行时间与输入数值规模N的二进制位数呈指数增长关系,则称其时间复杂度为伪多项式时间。这是由于,N的值是N的位数的幂,故该算法的时间复杂度实际上应视为输入数值N的位数的幂from wiki )

例如:统计一个数组中所有正数的出现频率。算法是先找到最大的数max,然后从1到max遍历没一个数,找到这个数在数组中的出现频率。这个算法需要的时间是取决于这个数组中最大的数的大小,所以说这个算法是伪多项式时间。换句话说,一个算法的时间复杂度只是根据输入元素的多少的话,我们认为这个算法是多项式时间算法。

伪多项式和NP完全问题

有一些NP问题是有伪多项式时间的解法的,例如:0-1背包问题的动态规划解法,子集和的问题(找出数组里子集的和等于某个值的问题), 切分问题。这都是伪多项式时间。如果一个NP完全问题有伪多项式时间的解法,那么我们称这种问题叫弱NP完全问题。

最新文章

  1. yield生成器及字符串的格式化
  2. ThreadLocal的理解
  3. Tyvj P1175 机器人
  4. Google地图实现
  5. Linux学习笔记(20) Linux系统管理
  6. ch2 创建和销毁对象
  7. 进入IT企业必读的200个.NET面试题
  8. 基础学习day07---面向对象三---继承,接口与 抽象类
  9. ARC指南1 - strong和weak指针
  10. 【CF】223 Div.1 C Sereja and Brackets
  11. Eclipse运行Tomcat7源码
  12. 弗洛伊德(Floyd)算法
  13. inline函数和一般的函数有什么不同
  14. C编译: makefile基础
  15. OpenGL中glUniform1i使用
  16. Power BI行级别安全性(数据权限管理)
  17. PL/SQL简单使用——导入、导出数据表
  18. Spring 源码分析 spring-core 篇
  19. Python_xml
  20. [Java web]Spring+Struts2+Hibernate整合过程(2)

热门文章

  1. T-SQL的回车和换行符(SQL)
  2. 【OpenCV】OpenCV中GPU模块使用
  3. Picasso
  4. 初识HTTP协议
  5. gulp小记(无刷新重载样式)
  6. mvc项目架构分享系列之架构搭建初步
  7. sqlserver允许远程连接的配置
  8. iOS单元测试1
  9. iOS 开发笔记
  10. 将struts源码导入eclipse