Update
This commit is contained in:
parent
5cb3296fc9
commit
68a9873928
20 changed files with 64 additions and 39 deletions
|
@ -6,7 +6,7 @@ It is believed and sometimes relied on that P != NP (in which case P would be a
|
|||
|
||||
## Explanation
|
||||
|
||||
In the context of [computational complexity](computational_complexity.md) of algorithms we talk about different types of algorithm time complexities, i.e. different "speeds" of algorithms. This "speed" doesn't mean actual running time of the algorithm in real life but rather how quickly the running time grows depending on the amount of input data to it, i.e. we are interested only in the shape of the function that describes how the amount of input data affects the running time of the algorithm. The types of time complexity are named after mathematical functions that grow as quickly as this dependence, so we have a *constant* time complexity, *logarithmic* time complexity, *linear* time complexity etc.
|
||||
In the context of [computational complexity](computational_complexity.md) of algorithms we talk about different types of algorithm time complexities, i.e. different "speeds" of algorithms. This "speed" doesn't mean actual running time of the algorithm in real life but rather how quickly the running time grows depending on the amount of input data to it (so rather something akin "[scalability](scalability.md)"), i.e. we are interested only in the shape of the function that describes how the amount of input data affects the running time of the algorithm. The types of time complexity are named after mathematical functions that grow as quickly as this dependence, so we have a *constant* time complexity, *logarithmic* time complexity, *linear* time complexity etc.
|
||||
|
||||
Then we have classes of computational problems. The classes divide problems based on how "fast" they can be solved.
|
||||
|
||||
|
@ -14,6 +14,6 @@ The class P stands for **polynomial** and is defined as all problems that can be
|
|||
|
||||
The class NP stands for **non-deterministic polynomial** and is defined as all problems that can be solved by an algorithm run on a **non-deterministic Turing machine** with a *polynomial* time complexity. I.e. the definition is the same as for the P class with the difference that the Turing machine is non-deterministic -- such a machine is faster because it can make kind of "random correct guesses" that lead to the solution more quickly. Non-deterministic computers are only theoretical (at least for now), computers we have in real life cannot perform such randomly correct guesses. It is known that the solution to all NP problems can be verified in *polynomial* time even by a deterministic Turing machine, we just don't know if the solution can also be found this quickly.
|
||||
|
||||
Basically P means *"problems that can be solved quickly"* and NP means *"problems that can be verified quickly but we don't know if they can also be solved quickly"*.
|
||||
Basically P means *"problems that can be solved quickly"* and NP means *"problems whose solutions can be verified quickly but we don't know if they can also be solved quickly"*.
|
||||
|
||||
The question is whether all NP problems are in fact P problems, i.e. whether *all problems that can be verified quickly can also be solved quickly*. It is believed this is not the case.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue