当前课程知识点:算法设计与分析 >  8 NP and Computational Intractability >  8.4 Definition of NP >  Definition of NP

返回《算法设计与分析》慕课在线视频课程列表

Definition of NP在线视频

Definition of NP

下一节:Problems in NP

返回《算法设计与分析》慕课在线视频列表

Definition of NP课程教案、知识点、字幕

我们学习了一些问题的多项式时间算法

但是有大量的问题

至今没有找到多项式时间算法

我们希望能把这些问题进行分类

我们考虑一个重要的类 NP

这里我们关注判定问题

X是一个字符串的集合

每个实例对应一个字符串s

A是一个算法

如果对于任意的s

s∈X 当且仅当A(s)=yes

我们说算法A解决了问题X

如果对于任意字符串s

算法A的运行时间至多p(|s|)步

这里p是一个多项式

|s|表示s的长度

那么我们称A是多项式时间算法

比如定义素数问题

集合X为所有素数的集合

即X={2, 3, 5, 7, 11, 13, 17, 23, 29, 31, 37, …}

2002年提出的AKS算法

多项式时间解决了这个问题

运行时间p(|s|)=|s|^8

我们给一些

有多项式时间算法的判定问题的例子

乘法问题

对应的判定问题为

x是y的乘数吗

我们可以用小学算术的除法

比如说对于x等于51 y等于17

回答是yes

对x等于51 y等于16

答案是no

再来看互素问题

x和y是互素的吗

它本身就是判定问题

公元前300年

欧几里得就给出了辗转相除的算法

比如对于34和39的例子

回答是yes

而对于34,51这个例子

回答是no

它们有公因子17

素数问题

x是一个素数吗

刚才提到的AKS算法

多项式时间求解了这个问题

我们前面还学习了编辑距离问题

它对应的判定问题是

x,y之间的编辑距离

小于等于一个给定的数吗

比如5

我们可以用动态规划算法来进行求解

再有解线性方程组问题

是否存在x使得线性方程组Ax=b成立

我们可以用Gauss-Edmonds消元法

多项式时间进行求解

在给出NP问题的定义前

我们先定义验证算法

验证算法指的是

它不是直接计算s∈X

而是检查一个给出s∈X的证明t

我们称算法C(s,t)是一个问题X的验证算法

如果对于任意字符串s

s∈X 当且仅当存在一个字符串t

使得C(s,t)=yes

对于yes实例 我们也称为是实例

字符串t称为证书

这里需要注意

我们只需证明

存在着这样的证书t

而不需要去求解找到它

现在我们定义NP

NP是一个判定问题的类

这些判定问题都存在着

多项式时间验证算法

这里的多项式时间要求C(s, t)的运行时间

是关于输入规模的多项式

也蕴含着证书t的规模

可以被输入规模的多项式所控制

算法设计与分析课程列表:

1 Introduction of Algorithm

-1.1 Introduction

--Introduction

-1.2 A First Problem: Stable Matching

--A First Problem: Stable Matching

-1.3 Gale-Shapley Algorithm

--Gale-Shapley Algorithm

-1.4 Understanding Gale-Shapley Algorithm

--Understanding Gale-Shapley Algorithm

-Homework1

-Lecture note 1

--Lecture note 1 Introduction of Algorithm

2 Basics of Algorithm Analysis

-2.1 Computational Tractability

--Computational Tractability

-2.2 Asymptotic Order of Growth

--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 Graph

-3.1 Basic Definitions and Applications

--Basic Definitions and Applications

-3.2 Graph Traversal

--Graph Traversal

-3.3 Testing Bipartiteness

--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

--Lecture note 3 Graph

4 Greedy Algorithms

-4.1 Coin Changing

--Coin Changing

-4.2 Interval Scheduling

--Interval Scheduling

-4.3 Interval Partitioning

--Interval Partitioning

-4.4 Scheduling to Minimize Lateness

--Scheduling to Minimize Lateness

-4.5 Optimal Caching

--Optimal Caching

-4.6 Shortest Paths in a Graph

--Shortest Paths in a Graph

-4.7 Minimum Spanning Tree

--Minimum Spanning Tree

-4.8 Correctness of Algorithms

--Correctness of Algorithms

-4.9 Clustering

--Clustering

-Homework4

-Lecture note 4

--Lecture note 4 Greedy Algorithms

5 Divide and Conquer

-5.1 Mergesort

--Mergesort

-5.2 Counting Inversions

--Counting Inversions

-5.3 Closest Pair of Points

--Closest Pair of Points

-5.4 Integer Multiplication

--Integer Multiplication

-5.5 Matrix Multiplication

--Video

-5.6 Convolution and FFT

--Convolution and FFT

-5.7 FFT

--FFT

-5.8 Inverse DFT

--Inverse DFT

-Homework5

-Lecture note 5

--Lecture note 5 Divide and Conquer

6 Dynamic Programming

-6.1 Weighted Interval Scheduling

--Weighted Interval Scheduling

-6.2 Segmented Least Squares

--Segmented Least Squares

-6.3 Knapsack Problem

--Knapsack Problem

-6.4 RNA Secondary Structure

--RNA Secondary Structure

-6.5 Sequence Alignment

--Sequence Alignment

-6.6 Shortest Paths

--Shortest Paths

-Homework6

-Lecture note 6

--Lecture note 6 Dynamic Programming

7 Network Flow

-7.1 Flows and Cuts

--Flows and Cuts

-7.2 Minimum Cut and Maximum Flow

--Minimum Cut and Maximum Flow

-7.3 Ford-Fulkerson Algorithm

--Ford-Fulkerson Algorithm

-7.4 Choosing Good Augmenting Paths

--Choosing Good Augmenting Paths

-7.5 Bipartite Matching

--Bipartite Matching

-Homework7

-Lecture note 7

--Lecture note 7 Network Flow

8 NP and Computational Intractability

-8.1 Polynomial-Time Reductions

--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

--Definition of NP

-8.5 Problems in NP

--Problems in NP

-8.6 NP-Completeness

--NP-Completeness

-8.7 Sequencing Problems

--Sequencing Problems

-8.8 Numerical Problems

--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 Approximation Algorithms

-9.1 Load Balancing

--Load Balancing

-9.2 Center Selection

--Center Selection

-9.3 The Pricing Method: Vertex Cover

--The Pricing Method: Vertex Cover

-9.4 LP Rounding: Vertex Cover

--LP Rounding: Vertex Cover

-9.5 Knapsack Problem

--Knapsack Problem

-Homework9

-Lecture note 9

--Lecture note 9 Approximation Algorithms

10 Local Search

-10.1 Landscape of an Optimization Problem

--Landscape of an Optimization Problem

-10.2 Maximum Cut

--Maximum Cut

-10.3 Nash Equilibria

--Nash Equilibria

-10.4 Price of Stability

--Price of Stability

-Homework10

-Lecture note 10

--Lecture note 10 Local Search

11 Randomized Algorithms

-11.1 Contention Resolution

--Contention Resolution

-11.2 Linearity of Expectation

--Linearity of Expectation

-11.3 MAX 3-SAT

--MAX 3-SAT

-11.4 Chernoff Bounds

--Chernoff Bounds

-Homework11

-Lecture note 11

--Lecture note 11 Randomized Algorithms

Exam

-Exam

Definition of NP笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。