2018-03-15 14:20:08

伪多项式时间:如果一个算法的传统时间复杂度是多项式时间的,而标准时间复杂度不是多项式时间的,则我们称这个算法是伪多项式时间的。

想要理解“伪多项式时间”,我们需要先给出“多项式时间”的一个清楚的定义。

对于“多项式时间”,我们的直观概念是时间复杂度,其中是一常数。比如,选择排序的时间复杂度是,是多项式时间;暴力解决TSP问题的时间复杂度是,不是多项式时间。我们称这种时间复杂度为“传统时间复杂度”

我们通常认为传统时间复杂度中的变量表示数据的输入规模。比如,选择排序中,指待排序数组中元素的个数;TSP问题中表示图中节点的数量。但是,这些所谓的输入规模,仅仅是直观的定义,并不足够严谨。为了标准化这些,在计算标准时间复杂度时,我们给出了输入规模的标准定义:
一个问题的输入规模是保存输入数据所需要的bit位数。

了解了输入规模的定义,我们来看“多项式时间”的标准定义:

对于一个问题,在输入规模为x的情况下,如果一个算法能够在O()时间内解决此问题,则我们称此算法是多项式时间的,其中为一常数。
排序问题:用选择排序对元素个数为的数组进行排序时,传统时间复杂度为。输入规模,因此,得到的标准时间复杂度是,仍然是多项式时间。因为这的n是只输入数据的数目。
素数测试:给定数字 n,通过从 2 到根号 n 的整数遍历,判断 n 是否为素数。看似时间复杂度是O(n),但是这里的n是输入数字的大小,真实的输入规模为 x = logn,因此实际的时间复杂度是O(x ^ 2),是指数级的时间复杂度。这就是个伪多项式时间复杂度。
 
 
 
 
 
 
 

伪多项式时间 Pseudo-polynomial time的更多相关文章

  1. 伪多项式时间算法Pseudo-polynomial Algorithms-----geeksforGeek 翻译

    原创翻译加学习笔记,方便国人学习算法知识! 原文链接http://www.geeksforgeeks.org/pseudo-polynomial-in-algorithms/ 什么是伪多项式? 当一个 ...

  2. CSS 伪类和伪元素--pseudo

    总结在前: 0. 参考资料 1. 伪类和伪元素是不同的两种东西. 2. 伪类和伪元素都属于CSS选择器. 3. CSS引入伪类和伪元素是为了实现基于文档树之外的信息,i.e. 段落的第一行,的格式化. ...

  3. 解密jQuery内核 Sizzle引擎筛选器 - 位置伪类(一)

    本章开始分析过滤器,根据API的顺序来 主要涉及的知识点 jQuery的组成 pushStack方法的作用 sizzle伪类选择器 首页我们知道jQuery对象是一个数组对象 内部结构 jQuery的 ...

  4. CSS3伪类和伪元素的特性和区别

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus,:hover以及<a>标签的:link.visited等,伪元素较常见的比如:before.:after等. 其 ...

  5. linux的终端,网络虚拟终端,伪终端(转)

      blog.csdn.net/todd911/article/details/8025540 Linux上许多网络服务应用,如l2tp.pptp.telnet,都用到了伪终端.有朋友在问这方面的概念 ...

  6. linux的终端,网络虚拟终端,伪终端(转)

    转自http://www.xuebuyuan.com/877887.html 2013年09月07日 ⁄ 综合 ⁄ 共 4047字 ⁄ 字号 小 中 大 ⁄ 评论关闭 Linux上许多网络服务应用,如 ...

  7. 谈谈css伪类与伪元素

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus.:hover以及<a>标签的:link.:visited等,伪元素较常见的比如:before.:after等. ...

  8. css中伪类和伪元素的区别

    转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别   前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常 ...

  9. Linux 伪终端(pty)

    通过<Linux 终端(TTY)>一文我们了解到:我们常说的终端分为终端 tty1-6 和伪终端.使用 tty1-6 的情况一般为 Linux 系统直接连了键盘和显示器,或者是使用了 vS ...

随机推荐

  1. C++ 引用的辨别

    对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率 ...

  2. Windows系统下做定时任务为Oracle数据库每天自动备份

    1.创建备份目录d:\backup, 创建批处理命令Bak.bat,编写备份脚本 ? 1 2 exp user/passwd@orcl DIRECT=Y BUFFER=100000 FILE=D:\b ...

  3. 云笔记类APP推荐

    一.思绪收集类 Google Keep - 记事和清单 - Google Play 上的应用 注:谷歌 Keep 是最方便的收集思绪 APP 了.卡片视图,反应迅速,流畅,UI 漂亮,功能齐全,唯一不 ...

  4. poj1185 炮兵阵地【状压DP】

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 32802   Accepted: 12650 Descriptio ...

  5. Linux系统stat指令用法

    stat指令:文件/文件系统的详细信息显示. stat命令主要用于显示文件或文件系统的详细信息,该命令的语法格式如下: stat命令-->用来显示文件的详细信息,包括inode, atime, ...

  6. android中Logcat的TAG过滤

    如果代码中有这样的log: Log.e("Foo", "error in foo"); Log.d("Foo", "debug i ...

  7. rbac - 初识

    一.rbac 权限组件 1 项目与应用 一个项目,可以有多个应用 一个应用,可以在多个项目下 前提:应用是组件!! 2 什么是权限? 一个包含正则表达式url就是一个权限 who what how - ...

  8. [3D]1.绘制三角形

    作为一个.Net程序员学习3D开发好尴尬啊,因为不论是OpenGL还是Direct3D都是用C/C++开发的比较多.虽然有计划使用C++进行开发,但是平时还是C#使用的多.很少用C++做东西,如果仅仅 ...

  9. Linux Find命令使用方法举例

    linux命令之find命令使用举例. 在当前目录和子目录下查找文件MyCProgram.c  # find . -name "MyCProgram.c" 查找文件且忽略大小写  ...

  10. G.Finding the Radius for an Inserted Circle 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛

    地址:https://nanti.jisuanke.com/t/17314 题目: Three circles C_{a}C​a​​, C_{b}C​b​​, and C_{c}C​c​​, all ...