The P versus NP Solution

Similar documents
OHJ-2306 Introduction to Theoretical Computer Science, Fall

NP-Completeness and Cook s Theorem

The Classes P and NP

Discussion on the paper Hypotheses testing by convex optimization by A. Goldenschluger, A. Juditsky and A. Nemirovski.

Notes on Complexity Theory Last updated: August, Lecture 1

Turing Machines: An Introduction

Tutorial 8. NP-Complete Problems

On the Relationship between Classes P and NP

Why? A central concept in Computer Science. Algorithms are ubiquitous.

P versus NP, and More

Computability Theory

Theory of Computation Chapter 2: Turing Machines

Mobility management and vertical handover decision making in heterogeneous wireless networks

CHAPTER 7 GENERAL PROOF SYSTEMS

1 Definition of a Turing machine

1. Nondeterministically guess a solution (called a certificate) 2. Check whether the solution solves the problem (called verification)

(IALC, Chapters 8 and 9) Introduction to Turing s life, Turing machines, universal machines, unsolvable problems.

CS 3719 (Theory of Computation and Algorithms) Lecture 4

ibalance-abf: a Smartphone-Based Audio-Biofeedback Balance System

Lecture 2: Universality

Offline 1-Minesweeper is NP-complete

Introduction to Automata Theory. Reading: Chapter 1

Introduction to Logic in Computer Science: Autumn 2006

Elementary Number Theory and Methods of Proof. CSE 215, Foundations of Computer Science Stony Brook University

Introduction to Algorithms. Part 3: P, NP Hard Problems

Welcome to... Problem Analysis and Complexity Theory , 3 VU

Automata and Computability. Solutions to Exercises

3515ICT Theory of Computation Turing Machines

NP-Completeness. CptS 223 Advanced Data Structures. Larry Holder School of Electrical Engineering and Computer Science Washington State University

Complexity Classes P and NP

Chapter. NP-Completeness. Contents

JUST-IN-TIME SCHEDULING WITH PERIODIC TIME SLOTS. Received December May 12, 2003; revised February 5, 2004

Classification - Examples

Computational complexity theory

Lecture 7: NP-Complete Problems

Chapter 1. Computation theory

CS154. Turing Machines. Turing Machine. Turing Machines versus DFAs FINITE STATE CONTROL AI N P U T INFINITE TAPE. read write move.

Theoretical Computer Science (Bridging Course) Complexity

The truck scheduling problem at cross-docking terminals

Complexity Theory. IE 661: Scheduling Theory Fall 2003 Satyaki Ghosh Dastidar

Chapter 1. NP Completeness I Introduction. By Sariel Har-Peled, December 30, Version: 1.05

The Halting Problem is Undecidable

Tetris is Hard: An Introduction to P vs NP

2.1 Complexity Classes

Chapter 7 Uncomputability

6.080 / Great Ideas in Theoretical Computer Science Spring 2008

NP-complete? NP-hard? Some Foundations of Complexity. Prof. Sven Hartmann Clausthal University of Technology Department of Informatics

Mathematics for Computer Science/Software Engineering. Notes for the course MSM1F3 Dr. R. A. Wilson

Diagonalization. Ahto Buldas. Lecture 3 of Complexity Theory October 8, Slides based on S.Aurora, B.Barak. Complexity Theory: A Modern Approach.

Introduction to computer science

International Journal of Information Technology, Modeling and Computing (IJITMC) Vol.1, No.3,August 2013

IMPROVING PERFORMANCE OF RANDOMIZED SIGNATURE SORT USING HASHING AND BITWISE OPERATORS

Turing Machines, Part I

Handout #1: Mathematical Reasoning

Chapter 3. Cartesian Products and Relations. 3.1 Cartesian Products

SOLVING NARROW-INTERVAL LINEAR EQUATION SYSTEMS IS NP-HARD PATRICK THOR KAHL. Department of Computer Science

Formal Languages and Automata Theory - Regular Expressions and Finite Automata -

Lecture 2: Complexity Theory Review and Interactive Proofs

CSC 373: Algorithm Design and Analysis Lecture 16

Ian Stewart on Minesweeper

6.2 Permutations continued

A Working Knowledge of Computational Complexity for an Optimizer

Minkowski Sum of Polytopes Defined by Their Vertices

Integer factorization is in P

SIMS 255 Foundations of Software Design. Complexity and NP-completeness

A logical approach to dynamic role-based access control

CSE 135: Introduction to Theory of Computation Decidability and Recognizability

Exact Polynomial-time Algorithm for the Clique Problem and P = NP for Clique Problem

Additional mechanisms for rewriting on-the-fly SPARQL queries proxy

Turing Machines and Understanding Computational Complexity

6.080/6.089 GITCS Feb 12, Lecture 3

Introduction to Turing Machines

THE TURING DEGREES AND THEIR LACK OF LINEAR ORDER

Factoring & Primality

Polynomial Degree and Lower Bounds in Quantum Complexity: Collision and Element Distinctness with Small Range

Which Semantics for Neighbourhood Semantics?

Approximated Distributed Minimum Vertex Cover Algorithms for Bounded Degree Graphs

the recursion-tree method

How To Compare A Markov Algorithm To A Turing Machine

Notes on NP Completeness

Automata Theory. Şubat 2006 Tuğrul Yılmaz Ankara Üniversitesi

4.6 The Primitive Recursive Functions

Why Study NP- hardness. NP Hardness/Completeness Overview. P and NP. Scaling 9/3/13. Ron Parr CPS 570. NP hardness is not an AI topic

Fairness in Routing and Load Balancing

QASM: a Q&A Social Media System Based on Social Semantics

P NP for the Reals with various Analytic Functions

A graph based framework for the definition of tools dealing with sparse and irregular distributed data-structures

Notes from Week 1: Algorithms for sequential prediction

FP-Hadoop: Efficient Execution of Parallel Jobs Over Skewed Data

Computational Models Lecture 8, Spring 2009

NP-Completeness I. Lecture Overview Introduction: Reduction and Expressiveness

MATH10040 Chapter 2: Prime and relatively prime numbers

Regular Languages and Finite Automata

An Automatic Reversible Transformation from Composite to Visitor in Java

Simulation-Based Security with Inexhaustible Interactive Turing Machines

The sum of digits of polynomial values in arithmetic progressions

Transcription:

The P versus NP Solution Frank Vega To cite this version: Frank Vega. The P versus NP Solution. 2015. <hal-01143424> HAL Id: hal-01143424 https://hal.archives-ouvertes.fr/hal-01143424 Submitted on 17 Apr 2015 HAL is a multi-disciplinary open access archive for the deposit and dissemination of scientific research documents, whether they are published or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers. L archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.

P VERSUS NP A Millennium Prize Problem selected by the Clay Mathematics Institute The P versus NP Solution Frank Vega April 17, 2015 Abstract: The P versus NP problem is one of the most important and unsolved problems in computer science. This consists in knowing the answer of the following question: Is P equal to NP? This incognita was first mentioned in a letter written by Kurt Gödel to John von Neumann in 1956. However, the precise statement of the P versus NP problem was introduced in 1971 by Stephen Cook in a seminal paper. In this work, we prove that POLYLOGTIME is different to NLOGTIME. Next, we show if P = NP, then POLYLOGTIME = NLOGTIME. Consequently, we finally demonstrate that P is different to NP. 1 Introduction The P versus NP problem is a major unsolved problem in computer science. This problem was introduced in 1971 by Stephen Cook [1]. It is considered by many to be the most important open problem in the field [3]. It is one of the seven Millennium Prize Problems selected by the Clay Mathematics Institute to carry a US$1,000,000 prize for the first correct solution. Informally, the solution of this problem requires to find out whether every problem whose solution can be quickly verified by a computer can also be quickly solved by a computer [6]. The informal term quickly used above means the existence of an algorithm for the task that runs in polynomial time [6]. The general class of questions for which some algorithm can provide an answer in polynomial time is called P [6]. For some questions, there is no known way to find an answer quickly, but if one is provided with information showing what the answer is, it may be possible to verify the answer quickly [6]. The class of questions for which an answer can be verified in polynomial time is called NP [6]. ACM Classification: F.1.3 AMS Classification: 68-XX, 68Qxx, 68Q15 Key words and phrases: P, NP, POLYLOGTIME, NLOGTIME, Turing machine, Maximum

FRANK VEGA The biggest open question in theoretical computer science concerns the relationship between those two classes: Is P equal to NP? In a 2002 poll of 100 researchers, 61 believed the answer to be no, 9 believed the answer is yes, and 22 were unsure; 8 believed the question may be independent of the currently accepted axioms and so impossible to prove or disprove [5]. We prove the belief of almost all those computer scientists was a truly supposition. 2 Theoretical framework Let s explain a simple notation that we frequently use in the paper. Definition 2.1. For any instance I, the notation I is the bit-length of I. The following subsections will help you to understand better this proof. 2.1 The Turing machine model The argument made by Alan Turing in the twentieth century states that for any algorithm we can create an equivalent Turing machine [9]. Definition 2.2. A Turing machine is a quadruple M = (K,Σ,δ,s). K is a finite set of states; s K is the initial state. Σ is a finite set of symbols (we say Σ is the alphabet of M). We assume K and Σ are disjoint sets. Σ always contains the special symbols and : The blank and first symbol. Finally, δ is a transition function, which maps K Σ to (K {h, yes, no }) Σ {,, }. We assume that h (the halting state), yes (the accepting state), no (the rejecting state), and the cursors directions for le ft, for right and for stay, are not in K Σ. Function δ is also called the program of the Turing machine [7]. It specifies for each current state q K and current symbol σ Σ, a triple δ(q,σ) = (p,ρ,d) [7]. p is the next state, ρ is the symbol to be overwritten on σ, and D {,, } is the direction in which the cursor will move [7]. For we require that, if for states q and p we have δ(q, ) = (p,ρ,d), then ρ = and D = [7]. That is, always directs the cursor to the right and it is never erased [7]. How is the program start? Initially the state is s [7]. The string is initialized to a, followed by finitely long string x (Σ { }) [7]. We say that x is the input of the Turing machine [7]. The cursor is pointing to the first symbol, always a [7]. From this initial configuration the machine takes a step according to δ, changing its state, printing a symbol and moving the cursor; then it takes another step, and another [7]. In this process the Turing machine could not continue when it reaches a final state {h, yes, no } [7]. If this happens, we say the Turing machine has halted [7]. If the state yes has been reached, we say the machine accepts its input; if no has been reached, then it rejects its input. If a Turing machine M accepts or rejects a string x, then we write M(x) = yes or M(x) = no respectively. If it reaches the halting state h, then we write M(x) = y, where the string y is considered as the output string, i.e., the string remaining in M when this halts [7]. P VERSUS NP 2

THE P VERSUS NP SOLUTION We can define the operation of a Turing machine formally using the notion of configuration. Intuitively, a configuration contains a complete description of the current state of the computation [7]. Definition 2.3. A configuration of M is a triple (q,w,u), where q K is a state and w, u are strings in Σ. w is the string to the left of the cursor, where its last symbol would be the symbol scanned by the cursor in the state q, and u is the string to the right of the cursor, possibly empty (ε denotes the empty string). We can also have Turing machines with multiple strings (the strings in a Turing machine are also known as tapes). Definition 2.4. A k-string Turing machine, where k 1 is an integer, is a quadruple M = (K,Σ,δ,s), where K, Σ and s are exactly as an ordinary Turing machine. δ is a program that must reflect the complexities of multiple strings. Intuitively, δ decides the next state as before, but also decides for each string the symbol overwritten, and the direction of cursor motion by looking at the current state and the current symbol at each string. Formally, δ is a function from K Σ k to (K {h, yes, no }) (Σ {,, }) k. Initially, all strings start with ; the first string also contains the input. 2.2 Complexity classes The Turing machine has been an useful concept in theory of computing since it was created by Alan Turing in the last century [9]. Since then, it has appeared new definitions related with this concept such as the deterministic or nondeterministic Turing machine. A deterministic Turing machine has only one next action for each step defined in its program or transition function [7]. A nondeterministic Turing machine can contain more than one action defined for each step of the program, where this program is not a function, but a relation [7]. Another huge advance in the last century was the definition of a complexity class. A language L over an alphabet is any set of strings made up of symbols from that alphabet [2]. A complexity class is a set of problems, which are represented as a language, grouped by measures such as the running time, memory, etc [2]. Formally, let Σ be a finite alphabet (that is, a finite nonempty set) with at least two elements, and let Σ be the set of finite strings over Σ, then a language over Σ is a subset L of Σ [2]. The language accepted by M Turing machine, denoted L(M), has associated alphabet Σ and is defined by L(M) = {w : M accepts w} (2.1) where we denote w Σ as the encoding of the instance w in Σ [2]. We are going to assume in this work the alphabet Σ would be the binary {0,1}. A language L is decided by a Turing machine M if every binary string is either accepted or rejected by M [2]. A language L is accepted in polynomial time by a Turing machine M if for any n bit-length string x L, the algorithm accepts x in time O(n k ) for some constant k [2]. A language L is decided in polynomial time by a Turing machine M if for any n bit-length string x {0,1}, M decides x in time O(n k ) for some constant k [2]. In computational complexity theory, the class P consists of all those decision problems (defined as languages) that can be decided on a deterministic Turing machine in an amount of time that is P VERSUS NP 3

FRANK VEGA polynomial in the size of the input; the class NP consists of all those decision problems whose positive solutions can be verified in polynomial time given the right information, or equivalently, that can be decided on a nondeterministic Turing machine in polynomial time [7]. Moreover, the set of languages decided by nondeterministic Turing machines within time f is denoted NT IME( f (n)) [7]. In case of languages would be decided by deterministic Turing machines within time f is denoted DT IME( f (n)) [7]. Then, the P =? NP question would be equivalent to DT IME(n k ) =? NT IME(n k ), where DT IME(n k ) = j>0 DT IME(n j ) and NT IME(n k ) = j>0 NT IME(n j ) [7]. There are another major complexity classes such as the POLY LOGT IME = DT IME((log(n)) k ) and NLOGT IME = NT IME(log(n)). On the other hand, there is an important derived complexity class from NP: NP-complete. Informally, the NP-complete problems are a set of problems to which any other NP problem can be reduced in polynomial time, but whose solution may still be verified in polynomial time [6]. The first discovered NP-complete problem was SAT in 1971 by Stephen Cook [1]. This demonstration is known as the Cook s Theorem [4]. We formulate the formula satisfiability problem in terms of the language SAT as follows. An instance of SAT is a boolean formula φ composed of boolean variables: x 1,x 2,... ; boolean connectives: any boolean function with one or two inputs and one output, such as (AND), (OR), (NOT), (implication), (if and only if); and parentheses. A truth assignment for a boolean formula φ is a set of values for the variables of φ and a satisfying truth assignment is a truth assignment that causes it to evaluate to true. A formula with a satisfying truth assignment is a satisfiable formula. The satisfiability problem asks whether a given boolean formula is satisfiable; in formal language terms is SAT = {φ : φ is a satisfiable boolean formula}. (2.2) 2.3 The Maximum problem Definition 2.5. Given an array A of n integer numbers and an integer x, Maximum is the problem of deciding whether x is the maximum number in A. How many comparisons are necessary to determine when some integer is the maximum of an array of n elements? We can easily obtain an upper bound of n comparisons: examine each element of the array in turn and keep track of the largest element seen so far and finally we compare the final result with x [2]. Is this the best we can do? Yes, since we can obtain a lower bound of n 1 comparisons for the problem of determining the maximum in an array of integers and one final comparison to verify whether that maximum is equal to x or not [2]. Hence, n comparisons are necessary to determine whether an element x is the maximum in A and this algorithm for Maximum is optimal with respect to the number of comparisons performed [2]. P VERSUS NP 4

THE P VERSUS NP SOLUTION 3 Results 3.1 A bounded version of Maximum problem Definition 3.1. Given an array A of n positive integer numbers and an integer x, where A n 2, BoundedMaximum is the problem of deciding whether x is the maximum number in A. Theorem 3.2. BoundedMaximum / POLY LOGT IME. Proof. If the pair A and x belongs to BoundedMaximum, then the maximum bit-length of x should be less than or equal to A because x will be in A, where A is the bit-length of A. As we see in Definition 2.5, we should use n comparisons to know whether x is the maximum in array of n integers and this number of comparisons will be optimal [2]. This would mean we cannot always accept any instance (A,x) of BoundedMaximum in time (log( A )) k, because we must use at least n comparisons in many cases and it will not exist a constant number k such that (log( A )) k > n for every value of n. The reason is A n 2, and thus, log( A ) log(n 2 ) = 2 log(n), but n will be exponentially greater than 2 log(n). 3.2 NLOGTIME problems Definition 3.3. Given an array A of n positive integer numbers and an integer x, where A n 2, IsInArray is the problem of deciding whether x is in A. Theorem 3.4. IsInArray NLOGT IME. Proof. Given an array A of n positive integer numbers and an integer x, where A n 2, we are going to create an algorithm which decides whether x is in A by a nondeterministic Turing machine in time O(log( A )). For that purpose, we create a nondeterministic Turing machine N such that for the empty string as input (ε denotes the empty string), N will output a positive integer i in a nondeterministic way, where 0 i (2 ( log 2(n) +1) 1). The program δ of N is built as follows: (i) we create k = ( log 2 (n) + 1) different states p j in N, where 1 j k and; (ii) for each p j and p j+1 states, we create the following actions in N: δ(p j, ) = (p j+1,0, ) (3.1) δ(p j, ) = (p j+1,1, ) (3.2) (iii) the halting state in N will be related to the k-th state p k with the following actions: (iv) and finally, the initial state in N will be into a single action: δ(p k, ) = (h,0, ) (3.3) δ(p k, ) = (h,1, ) (3.4) δ(s, ) = (p 1,, ). (3.5) P VERSUS NP 5

FRANK VEGA After that, an algorithm for IsInArray will be very simple: (1) first, we take the positive integer i as output of the running of N with the empty string ε, where 0 i (2 ( log 2(n) +1) 1); (2) next, if i > n or i = 0, then we reject; (3) else, we obtain the positive integer y = A[i] using the array indexing; (4) finally, we accept when x is equal to y otherwise we reject. The running time of the first until the second step would be O(log 2 (n)), because the running of N with the empty string ε does not exceed the ( log 2 (n) + 2) steps. The third step can be done by a RAM (Random Access Machine) program that computes a function ϕ in time O(1), such that from the integer i and the array A as arguments, ϕ returns the positive integer y as result, where y = A[i]. It is known that if a RAM program computes a function ϕ in time f (n), then there is a 7-string deterministic Turing machine which computes ϕ in time O(( f (n)) 3 ) [7]. Therefore, we can simulate the third step with a multiple string deterministic Turing machine in time O(1). The fourth step will use a single comparison with an element in A. In addition, if (A,x) belongs to IsInArray, then x A. Hence, we could always accept any instance (A, x) IsInArray in time O(log( A )) using this algorithm, because n A. Moreover, we could also decide any instance (A, x) in IsInArray using O(log( A )), because we can always accept (A,x) when (A,x) IsInArray in that time [2]. Hence, for this algorithm we could create an equivalent nondeterministic Turing machine, due to the use of the N nondeterministic Turing machine. Consequently, IsInArray NLOGT IME. Definition 3.5. Given an array A of n positive integer numbers and an integer x, where A n 2, LessT han is the problem of deciding whether x complies with x < y for some y in A. Theorem 3.6. LessT han NLOGT IME. Proof. The LessT han and IsInArray share the same kind of instance: an array A of n positive integer numbers and an integer x, where A n 2. Indeed, we could use the same idea of algorithm in Theorem 3.4 for the proof of LessT han NLOGT IME in the following way: (1) first, we take the positive integer i as output of the running of N with the empty string ε, where 0 i (2 ( log 2(n) +1) 1); (2) next, if i > n or i = 0, then we reject; (3) else, we obtain the positive integer y = A[i] using the array indexing; (4) finally, we accept when x < y otherwise we reject. We only changed the fourth step in relation to the algorithm in Theorem 3.4. Indeed, we changed the comparison of equal to by less than. To sum up, LessT han NLOGT IME, because IsInArray NLOGT IME. P VERSUS NP 6

3.3 POLYLOGTIME =? NLOGTIME THE P VERSUS NP SOLUTION Definition 3.7. Given an array A of n positive integer numbers and an integer x, where A n 2, GreaterOrEqual is the problem of deciding whether x complies with x y for every element y in A. Lemma 3.8. GreaterOrEqual is the complement of LessT han problem. Proof. Indeed, the acceptance of some instance (A,x) for LessT han will imply the rejection of (A,x) for GreaterOrEqual and viceversa. This will happen because of the contraposition of < and operators. Theorem 3.9. POLY LOGT IME NLOGT IME. Proof. Let s state a hypothesis that has an absurd consequence if it is true. Hypothesis 3.10. POLY LOGT IME = NLOGT IME. Given an array A of n positive integer numbers and an integer x, where A n 2, if x is in A, then the instance (A,x) will be in BoundedMaximum if and only if (A,x) is in GreaterOrEqual. In addition, we could verify whether x is in A just in polylogarithmic time by a deterministic Turing machine when IsInArray POLY LOGT IME. If the Hypothesis 3.10 is true, then IsInArray POLY LOGT IME. Therefore, it will exist a polylogarithmic time reduction from BoundedMaximum to GreaterOrEqual when the Hypothesis 3.10 is true. We could take any instance (A,x) and verify whether x is in A in polylogarithmic time. In case of x is in A and we would want to know whether (A,x) is in BoundedMaximum, then we would only need to check whether (A,x) is in GreaterOrEqual. In addition, if the Hypothesis 3.10 is true, then LessT han POLY LOGT IME. But, if we solve LessT han within a polylogarithmic time using a deterministic Turing machine, then we could solve GreaterOrEqual in polylogarithmic time by the same Turing machine because of Lemma 3.8. Indeed, when a deterministic Turing machine accepts or rejects any instance of LessT han, then it would also be rejecting or accepting the same instance for GreaterOrEqual respectively. As result, if the Hypothesis 3.10 is true, then GreaterOrEqual POLY LOGT IME. Nevertheless, if GreaterOrEqual POLY LOGT IME, then BoundedMaximum POLY LOGT IME, because we could use a polylogarithmic time reduction from BoundedMaximum to GreaterOrEqual through IsInArray over the supposition that the Hypothesis 3.10 is true. But, this is not possible, as we proved in Theorem 3.2, and therefore, the Hypothesis 3.10 is false. In conclusion, POLY LOGT IME NLOGT IME as a direct consequence of using the Reductio ad absurdum rule [8]. 3.4 P =? NP Theorem 3.11. If P = NP, then POLY LOGT IME = NLOGT IME. Proof. Let L NLOGT IME; under the assumption that P = NP, we shall show that L POLY LOGT IME. By definition, L is decided by a nondeterministic Turing machine N in time at most k log(n) for some constant k > 0, where... is the ceiling function. Consider now the following version of L: P VERSUS NP 7

FRANK VEGA L = {x : xy L where x = k log( xy ) } (3.6) where L would be all the strings x which are the prefixes of the strings z L to bring the total length of k log( z ). For some instance xy L, if x L, then there is an accepting computation of N on x of length k log( xy ) or less. Indeed, for any instance xy L, where x L, the program in N will accept the input xy without reaching the string y through the moving of the cursors during the computation, because L is decided by N in time at most k log(n) and N will start its computation with the cursors positioned in the first symbol over each string, where initially the input will always be on the first string. For that reason, for every instance x L, N will accept x in time at most x. Following the arguments of Cook s Theorem, it will exist a boolean formula φ for the corresponding accepting computation of N on x such that φ has a satisfying truth assignment if and only if x L [4]. As it is explained in Cook s Theorem, φ can be constructed from x and N in time bounded by a polynomial function of n = x [4]. In addition, the length of φ would be O((p(n)) 4 ), where p(n) is the maximum length of the accepting computation of N on x [4]. In this case p(n) = x. Since we are assuming that P = NP, then SAT P [4]. This could mean we may known if φ has a satisfying truth assignment using a polynomial time algorithm and this would mean, at the same time, that we could know whether x L by a deterministic Turing machine in polynomial time. Suppose this deterministic Turing machine is M which converts the computation of N on x into an equivalent boolean formula φ and decides whether φ is satisfiable. Since M could accept x L in time x k for some constant k > 0, then M could accept xy L in time ( k log( xy ) ) k. Certainly, we can affirm that L is decided by M, because we only need to accept x L for the respective acceptance of xy L, where x = k log( xy ). Indeed, we can deduce this from the self behavior of N that always accepts xy L without taking into consideration the string y during the actions of its computation. Hence, we obtain that L POLY LOGT IME. Theorem 3.12. P NP. Proof. As result of Theorem 3.11, we have if POLY LOGT IME NLOGT IME, then P NP [8]. However, the Theorem 3.9 states that POLY LOGT IME NLOGT IME. Consequently, we obtain that P NP. 4 Conclusions This proof explains why after decades of studying these problems no one has been able to find a polynomial time algorithm for any of more than 3000 important known NP-complete problems. Indeed, it shows in a formal way that many currently mathematically problems cannot be solved efficiently, so that the attention of researchers can be focused on partial solutions or solutions to other problems. Although this demonstration removes the practical computational benefits of a proof that P = NP, it would represent a very significant advance in computational complexity theory and provide guidance for future research. In addition, it proves that could be safe most of the existing cryptosystems such as the public-key cryptography. On the other hand, we will not be able to find a formal proof for every theorem which has a proof of a reasonable length by a feasible algorithm. P VERSUS NP 8

THE P VERSUS NP SOLUTION Acknowledgement I thank Marzio de Biasi for his comments about this work. References [1] STEPHEN A. COOK: The complexity of Theorem Proving Procedures. In Proceedings of the 3rd Annual ACM Symposium on the Theory of Computing (STOC 71), pp. 151 158. ACM Press, 1971. 1, 4 [2] THOMAS H. CORMEN, CHARLES ERIC LEISERSON, RONALD L. RIVEST, AND CLIFFORD STEIN: Introduction to Algorithms. MIT Press, 2 edition, 2001. 3, 4, 5, 6 [3] LANCE FORTNOW: The Status of the P versus NP Problem. Communications of the ACM, 52(9):78 86, 2009. available at http://www.cs.uchicago.edu/ fortnow/papers/pnp-cacm.pdf. [doi:10.1145/1562164.1562186] 1 [4] MICHAEL R. GAREY AND DAVID S. JOHNSON: Computers and Intractability: A Guide to the Theory of NP-Completeness. San Francisco: W. H. Freeman and Company, 1 edition, 1979. 4, 8 [5] WILLIAM I. GASARCH: The P=?NP poll. SIGACT News, 33(2):34 47, 2002. available at http: //www.cs.umd.edu/ gasarch/papers/poll.pdf. 2 [6] ODED GOLDREICH: P, Np, and Np-Completeness. Cambridge: Cambridge University Press, 2010. 1, 4 [7] CHRISTOS H. PAPADIMITRIOU: Computational complexity. Addison-Wesley, 1994. 2, 3, 4, 6 [8] STEPHEN READ: Thinking About Logic. Oxford, 1995. 7, 8 [9] ALAN M. TURING: On Computable Numbers, with an Application to the Entscheidungsproblem. Proceedings of the London Mathematical Society, 42:230 265, 1936. 2, 3 AUTHOR Frank Vega La Portada, Cotorro Havana, Cuba vega frank gmail com ABOUT THE AUTHOR FRANK VEGA is graduated as Bachelor of Computer Science from The University of Havana since 2007. He has worked as specialist in Datys, Playa, Havana, Cuba. His principal area of interest is in computational complexity. P VERSUS NP 9