Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
aa:intro:complexity_theory [2016/08/03 11:08] malex |
aa:intro:complexity_theory [2016/08/03 11:34] (current) malex |
||
---|---|---|---|
Line 381: | Line 381: | ||
==== Proving $math[NP]-completeness ==== | ==== Proving $math[NP]-completeness ==== | ||
- | For a problem $math[f] to be $math[NP]-complete, it must satisfy two conditions. THe first: $math[f \in NP] is shown by finding a $math[NTM] which decides $math[f] in polynomial time. For the second part ($math[f] is $math[NP]-hard), we can employ precisely the "reduction-finding" technique illustrated at the beginning of this section. | + | For a problem $math[f] to be $math[NP]-complete, it must satisfy two conditions. The first: $math[f \in NP] is shown by finding a $math[NTM] which decides $math[f] in polynomial time. For the second part ($math[f] is $math[NP]-hard), we can employ precisely the "reduction-finding" technique illustrated at the beginning of this section. |
==== - Proposition ==== | ==== - Proposition ==== | ||
Line 400: | Line 400: | ||
==== - Proposition ==== | ==== - Proposition ==== | ||
- | //Assume $math[f] is $math[NP]-complete. If $math[f \in P], then $math[P=NP].// | + | //Assume $math[f] is $math[NP]-complete. If $math[f \in P], then $math[P=NP].// |
+ | |||
+ | The former proposition, whose proof follows immediately from the underlying definitions, makes the case for the common belief that $math[P \neq NP]. If some efficient algorithm can be found for some $math[NP]-complete problem, then **all** problems in $math[NP] can be solved in polynomial time. | ||
+ | |||
+ | The $math[P=NP] issue can also be given another intuitive interpretation: "//The verification of a solution candidate is as difficult as generating it//" or, alternatively: "//Verifying a given proof $math[P] for $math[A], is as difficult as finding a proof for $math[P]//". | ||
+ | |||
+ | Finally, to better understand the implications of $math[P=NP], consider several facts which would be arguably true, in the case the former equality holds: | ||
+ | * We can provide a solution to the astronaut's problem (see the first chapter). | ||
+ | * Partial program correctness can be solved effciently. Technique such as model checking can be applied to a wide range of applications (including operating system kernels). Bugs are almost removed. Windows bluescreens are no longer happening. | ||
+ | * Generation of exponentially many training sets would make tasks such as voice recognition, computer vision, natural language processing - computationlly easy. | ||
+ | * Mathematical proofs (of, say 100 pages) can be generated efficiently. Computers can be used to find proofs for some open problems. | ||
+ | * We can exponential search to find passwords, or to break encryption keys in polynomial time. Internet privacy is no longer possible using encryption (e.g. using SSH). Internet commerce and banking is no longer possible. Safe communication is no longer possible (at all levels). Any computer-controlled facility (public, militry, etc.), which is connected to the Internet has considerable potential of being compromised. | ||
+ | |||
+ | ==== 1.6.1 Remark (Practical applications of reductions) ==== | ||
+ | //As illustrated before, reductions of the type $math[\leq_p] are a theoretical tool which is useful for providing $math[NP]-hardness. Reductions also have practical applications. For instance, most $math[NP]-complete problems are solved by employing $math[SAT] solvers, which, as discussed in the former chapters, may be quite fast in general case. Thus, a specific problem instance is cast (via an appropriate transformation) into a formula $math[\varphi], such that $math[\varphi] is satisfiable iff the answer to the instance is// yes. | ||
+ | |||
+ | ==== $math[SAT]. The first $math[NP]-complete problem. ==== | ||
+ | We observe that the "//hen and eggs//" issue still holds in our scenario. To apply our technique, we need an initial $math[NP]-hard problem in the first place. This problem is provided by Cook's Theorem, which proves that $math[SAT] is $math[NP]-complete. The technique for the proof relies on building, for each $math[NTM \mbox{ } M] (and hence, for each problem in $math[NP]), a formula $math[\varphi_M] such that it is satisfiable iff there exists a sequence in the computation tree leading to **success**. |