(NP-完全性、帰着可能性)

http://www.sw.it.aoyama.ac.jp/2018/DA/lecture14.html

© 2009-18 Martin J. Dürst 青山学院大学

- Remaining Schedule
- Leftovers and summary of last lecture
- NP problems
- Reduction
- NP-completeness
- Student survey

- December 20: 14th lecture (NP-completenes, reducibility)
- January 10: 15th lecture (approximation algorithms)
- January 24, 09:30-10:55: Term Final Exam

- Commonalities for many algorithms

⇒ Algorithm design strategies - Use the design strategies to generate ideas for new algorithms
- Main design strategies:
- Simple/simplistic algorithms
- Brute force
- Greedy algorithms
- Divide and conquer
- Dynamic programming

- The appropriate strategy depends on the structure of subproblems
- Depending on details of the problem, the best design strategy can
change

(Example: knapsack problem)

- Be able to distinguish between 'simple' and 'difficult' problems
- Expand your view, let's look at the algorithm universe

- Example problem 1: 3-SAT
- Example problem 2: Idependent Set
- Example problem 3: Traveling Salesman

- Wide applicability in practice
- No known algorithm that is significantly faster than brute force
- Brute force takes exponential time
- If
`n`increases (example:`n`=100), it may become impossible to solve the problem - Currently, there is no proof that there is no faster algorithm
- There are many problems with the same properties

- Polynomial problems (
`O`(`n`^{c})) are called*tractable* - Exponential problems (
`O`(`c`^{n})) are called*intractable*

(the time complexity of a *problem* is the lowest time complexity
among the *algorithms* that solve the problem, or the lowest theoretical
time complexity)

(or why is polynomial time so special)

- Problems with large exponents (e.g.
`O`(`n`^{5})) are very rare - Addition and multiplication of polynomials results in polynomials (ring of polynomials)
- Polynomial time is not significantly influenced by choice of machine
model

Example: Parallel processing with`m`computers will at best lead to a speedup by a factor of`m` - It is difficult to find a criterion (e.g.
>
`O`(`n`^{2})??) to subdivide polynomial problems

The set of problems that can be solved in polynomial time is denoted as
`P`

- The variants of problems 1-3 from last lecture are all NP problems
- Defining properties of NP problems:
- If the answer is
*true*, and there is some evidence, then this can be verified quickly (i.e. in polynomial time)

(however, if the answer is`false`, verification may take longer) - If we can use as many computers as we want, we can find the answer in
polynomial time

- If the answer is
- Why "NP"?

**N**ondeterministic**P**olynomial Time

- The set of NP problems is denoted as
`NP` - Problems in
`P`may become`NP`with only minor changes

Example: Shortest path (`P`) and longest path (`NP`) between two vertices in a graph - There are many
`NP`problems `P`⊆`NP`(by definition)`P`=`NP`?`P`≠`NP`?

This is the most famous and most important unsolved problem in Computer Science

Clay Mathematics Institute Millenium Problems Rules

- Function problems:

There is only one answer

Example: Sorting, matrix multiplication, Fibonacci function,... - Optimization problems:

Greatest, fastest, shortest,..., or

as big as possible, as short as possible,... - Decision problems:

Only yes or no

- Problem where the result can only be true or false

(function problem that returns a boolean variable) - It is possible to convert other problems to decision problems

Optimization problems: Find the largest solution → Is there a solution larger than`k`? - A decision problem cannot be more difficult than the original problem
- For theory, decision problems are easier to handle
- By definition,
`NP`problems are decision problems - Problems that are at least
`NP`(but maybe more difficult, and maybe not decision problems) are called NP-hard

- Getting order into
`NP`problems - Comparing problems uses
*reduction*

Solving a 3-SAT problem by converting (reducing) it to an independent set problem

- Create a triangle (graph) for each term of the 3-SAT formula
- Label each vertext of a triangle with a variable (or its negation)
- Add edges to the graph connecting vertices with the same variable, but opposite negation state
- Solve the independent set problem for the graph
- Use the variables (with their negation state) of the selected vertices for the solution to the 3-SAT problem

- Idea: Solve a problem A by converting it to a different problem B

(prove that the problem can be solved) - Input for A ⇒ [conversion] ⇒ input for B ⇒ algorithm for B ⇒ output for B ⇒ [backconversion] ⇒ output for A
- Conversion in both directions has to be possible in polynomial time
- If A can be reduced (is reducible) to B (in polynomial time), we write A
≤
B_{P} - This mean that (within polynomial conversion), A is simpler (or of the same difficulty as) B

- An
`NP`problem to which all other`NP`problems can be reduced is called NP-complete - This means that an NP-complete problem is more difficult (or of the same
difficulty) as any other
`NP`problem - Almost all
`NP`problems for which there is no known polynomial algorithm can be shown to be NP-complete - If
`P`≠`NP`, then there are also some problems that are not in`P`, but also not NP-complete

(but not many such problems are known; one example is graph isomorphism

- Goal: Classification of computational problems
- Criteria for classification:
- Time complexity
- Memory complexity
- Shape and size of circuit (or hardware in general)
- Parallelization

Reference: Complexity Zoo

(Emil Post, 1946)

- Gives: A language using two or more characters, and two sequences of
words of equal length:
`W`= [`w`_{1},`w`_{2}, ...`w`_{n}],`V`= [`v`_{1},`v`_{2}, ...`v`_{n}] - Problem: Is it possible to choose a (non-empty) sequence of corresponding
words from
`W`and`V`to form the same sentence?

(words may be repeated; spaces between words are ignored) - Example:
`W`= [aa, b],`V`= [a, aba]

Solution: aa-b-aa = a-aba-a (1-2-1) - Example without solution:
`W`= [ccd, cd, c],`V`= [cc, ddc, d]

(reason: independent of word choice, the last character of the overall string will always be different) - The above two examples are easy to solve
- It can be proven that there exists no general algorithm for this problem

- There are many problems that we (currently) cannot solve in polynomial time
- Many of these problems are NP-complete (or NP-hard)
- It is important to discover such problems early
- There are also problems that are even more difficult to solve than NP-complete problems

(授業改善のための学生アンケート)

WEB Survey

お願い: 自由記述に必ず良かった点、問題点を具体的に書きましょう

(悪い例: 発音が分かりにくい; 良い例: さ行が濁っているかどうか分かりにくい)

- polynomial problem
- 多項式問題
- tractable problem
- 手に負える問題
- exponential problem
- 指数的問題
- intractable problem
- 手に負えない問題
- ring of polynomials
- 多項式環
- nondeterministic polynomial time
- 非決定性多項式時間
- function problem
- 関数問題
- optimization problem
- 最適化問題
- decision problem
- 決定問題
- NP-hard
- NP 困難
- reduction
- 帰着
- reducibility
- 帰着可能性
- NP-completeness
- NP 完全性
- graph isomorphism
- グラフ同型
- Computational Complexity Theory
- 計算複雑性理論
- Post's correspondence problem
- ポストの対応問題
- approximation algorithms
- 近似アルゴリズム