算法的计算复杂性
计算复杂度
计算复杂度由算法决定,一个数学问题通常可同时有多个解决算法,而计算复杂度可表述算法的复杂程度,在密码设计和密码分析中具有重要作用。计算复杂性理论不仅反映密码破译的固有困难性,评测密码算法对抗密码破译的实际能力,还能为不同密码算法实现难度的分析与比较提供了方法。
算法复杂度一般由执行算法所需要的计算时间T(时间复杂度)和计算空间S(空间复杂度)来度量,它们通常可以表示成输入规模$\lambda $的函数。在分析算法的复杂度时,通常用${\rm O},\tilde {\rm O},o,\Theta $四种方式表示它们之间的渐近程度。
算法的复杂度通常指时间复杂度,通常分为以下 3类:多项式时间算法复杂度,亚指数时间算法复杂度和指数时间算法复杂度,三个算法时间复杂度是递增的。若存在常数$a,{n_0}$,当$a > {n_0}$时,满足,则称算法的时间复杂度为$T(n) < af(\lambda )$。
多项式时间算法
假设$\lambda $是输入规模,k 为常数,如果执行此算法的时间复杂度为${\rm O}({\lambda ^k})$,则称该算法是一个多项式时间算法
计算复杂度理论中,多项式时间算法被认为是简单的算法。对于一个问题,如果存在多项式时间的解决算法,那么该问题不是一个计算困难问题。
指数时间算法
如果执行此算法的时间复杂度为${\rm O}({t^{f(\lambda )}})$,其中 t 为大于1的常数,此时,若 ${f(\lambda )}$是关于$\lambda $的一个多项式函数,则称该算法为指数时间算法。
若解决该问题的算法均是指数时间的算法,那么该问题是计算困难问题。
亚指数时间算法
若${f(\lambda )}$是一个大于常数小于$\lambda $的线性多项式的函数,则称该算法为亚指数时间算法。
介于多项式时间算法和指数时间算法之间的是亚指数时间算法,本文所涉及到的近似最大公因子问题和错误学习问题,目前还不存在相应的亚指数时间算法用于求解上述两类问题。
可忽略函数
可忽略函数是一个极小量,在计算复杂度理论和全同态加密的安全性定义中应用广泛。
- P问题、NP问题、NPC问题(算法复杂性,计算复杂性)
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- 算法课笔记系列(八)——NP问题及其计算复杂性
- 【算法复习四】计算复杂性与算法分析---组合数学知识汇总
- 【算法复习四】计算复杂性与算法分析---组合数学知识汇总
- 【算法复习四】计算复杂性与算法分析---算法分析
- 算法复杂性和如何计算时间复杂度
- 设M 是一个m×n 的矩阵,其中每行的元素从左到右单增有序,每列的元素从上到下单增有序。 给出一个分治算法计算出给定元素x 在M 中的位置或者表明x 不在M 中。分析算法的时间复杂性。
- 利用投影算法来计算系统矩阵左乘和右乘
- 清华组合数学第一章经典复习题,用六种算法计算839647521后999种排列
- 算法实现计算一维多项式的值
- 基础算法--计算几何
- 算法课本~计算两个最大公约数的三种方法
- verilog实现基于Cordic算法的双曲函数计算
- 写一个算法计算n的阶乘末尾0的个数
- 常用光照计算算法
- CSS 选择符有哪些?哪些属性可以继承?优先级算法如何计算? CSS3 新增 伪类有那些?
- 文本相似性计算--MinHash和LSH算法
- 转载:固定表格布局下的各浏览器对与表格宽度计算算法不同
- 算法-计算出n阶乘中尾部零的个数