当前课程知识点:算法设计与分析 > 2 Basics of Algorithm Analysis > 2.1 Computational Tractability > Computational Tractability
弗朗西斯沙利文在科学杂志的文章中说
对我而言
伟大的算法是计算的诗歌
就像诗歌一样
它们可以简洁 暗示 紧凑
甚至是神秘的
但是 一旦被发现
它们就会对计算的某些方面
提出一个全新的启示
对于许多非平凡的问题
都有一种自然的强力搜索算法
即检验所有可能的解
对于大小为n的输入
通常需要2^n或更多的计算时间
这在实践中是不可接受的
对于理想中的算法
我们希望当问题的规模扩大时
运行时间适当增长
具体来说
当输入大小加倍时
算法的运行时间只增加常数倍
即存在常数 c>0 和 d> 0
使得对于每个大小为n的输入
其运行时间在 cn^d 步数之内
如果一个算法的运行时间
满足以上的性质
我们称这个算法是多项式时间算法
对于固定的输入规模n
不同例子的运行时间是不同的
我们考虑最坏情形的运行时间
这种分析方法
通常在实践中有效
最坏情形的算法表现和它实用效果
通常是一致的
另一方面
最坏情况分析的方法
方便我们从数学上进行分析
从理论上很难找到更有效的替代方法
在算法领域
如果一个算法运行时间是多项式的
我们称这个算法是有效的
它在实践中真的有用
在实践中
人们开发的多项式时间算法
往往具有低常系数和低幂次
多项式时间算法
突破了强力搜索算法的指数障碍
通常会展示出问题的一些关键结构
从而可能进一步得到更加有效率的
多项式时间算法
凡事总有例外
确实有一些多项式时间算法
的确具有高常数或高幂次
并且在实践中是无用的
有一些指数时间算法被广泛的使用
因为最坏情况的实例很少出现
比如求解线性规划问题的单纯形算法
我们来对算法的运行时间进行一下比较
表中在每秒可运行100万个
高性能指令的处理器上
不同算法在增长的输入规模下的运行时间
其中 运行时间超过10^25年的时间
记作very long
可以看出
多项式时间算法
相对于指数时间算法增长要慢得多
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam