算法复杂性问题
算法复杂性概念
在算法分析中,通常用初等运算(算术运算、比较和转移指令等)的步数表示一个算法在假设的计算机上执行时所需的时间,其中规定每做一次初等运算所需要的时间是一个单位时间。
一个算法所需要的运算步数与输入规模和算法步骤有关。如果用 n 表示输入数据的规模,则算法对输入的数据有不同的运算,通常把其中最坏的情况(即最复杂的运算量)定义为该算法关于输入规模 n 的复杂性。
多项式(时间)算法、多项式问题(P 问题)、P 类问题
对于一个问题 A,设其输入规模为 n;假设解决问题 A 的方法是一个算法 B,算法 B 的计算复杂性为 f(n);如果存在一个关于 n 的多项式函数 p(n),使得对于所有充分大的 n,都有 f(n)<=p(n),则称算法 B 是一个多项式界的算法,也称为多项式时间算法,或简称为好算法、多项式算法。其中,问题 A 被称为多项式问题,也简称为 P 问题(Polynomial Problem),所有存在多项式时间算法的问题称为 P 类问题,P 类问题可以简单理解为“容易”的问题。
若在多项式函数 p(n) 中,多项式的最高次数为