<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v3.0 20080202//EN" "journalpublishing3.dtd">
<article article-type="research-article" dtd-version="3.0" xml:lang="en" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">


	<front>
		<journal-meta>
			<journal-id journal-id-type="publisher-id">ARBOR</journal-id>
			<journal-title-group>
				<journal-title>ARBOR Ciencia, Pensamiento y Cultura</journal-title>
				<abbrev-journal-title>ARBOR</abbrev-journal-title>
			</journal-title-group>
			<issn pub-type="epub">0210-1963</issn>
			<publisher>
				<publisher-name>Consejo Superior de Investigaciones Cient&#x00ED;ficas</publisher-name>
			</publisher>
		</journal-meta>
		<article-meta>
			 <article-id pub-id-type="publisher-id">arbor.2013.764n6003</article-id>
			 <article-id pub-id-type="doi">10.3989/arbor.2013.764n6003</article-id>
			 
		<article-categories>
			<subj-group subj-group-type="heading">
			<subject>EL LEGADO DE ALAN TURING / THE LEGACY OF ALAN TURING</subject>
			</subj-group>
		</article-categories>	
		
		<title-group>
			<article-title>Turing’s algorithmic lens: From computability to complexity theory</article-title>
			<trans-title-group xml:lang="es">
			<trans-title>La lente algor&#x00ED;tmica de Turing: De la computabilidad a la teor&#x00ED;a de la complejidad</trans-title>
			</trans-title-group>
			<alt-title alt-title-type="running-head">Turing’s algorithmic lens</alt-title>
		</title-group>
			<contrib-group>
			  <contrib contrib-type="author" corresp="yes"> 
				<name>
				 <surname>D&#x00ED;az</surname>
				 <given-names>Josep</given-names>
				</name>
				<xref ref-type="aff" rid="U1"/>
			  </contrib>
			  <contrib contrib-type="author" corresp="yes"> 
				<name>
				 <surname>Torras</surname>
				 <given-names>Carme</given-names>
				</name>
				<xref ref-type="aff" rid="U1"/>
			  </contrib>
			  <aff id="U1">Llenguatges i Sistemes Informatics, UPC.</aff>
			  <aff id="U2">Institut de Robòtica i Informàtica Industrial, CSIC-UPC.</aff>
			</contrib-group>
			<author-notes>
				<corresp id="cor1">e-mail: <email xlink:href="diaz@lsi.upc.edu">diaz@lsi.upc.edu</email>
				</corresp>
				<corresp id="cor2">e-mail: <email xlink:href="diaz@lsi.upc.edu">torras@iri.upc.edu</email>
				</corresp>
			</author-notes>
		
		<pub-date pub-type="collection">
		<year>2013</year>
		</pub-date>
		
		<volume>189</volume>
		<issue>764</issue>
		
		<elocation-id content-type="doi">10.3989/arbor.2013.764n6003</elocation-id>

		 <history>
		  	<date date-type="received">
				<day>10</day>
				<month>07</month>
				<year>2013</year>
			</date>
			<date date-type="accepted">
				<day>15</day>
				<month>09</month>
				<year>2013</year>
			</date>
		 </history>
		 
		<permissions>
		<copyright-statement>&#x00A9; 2013 CSIC</copyright-statement>
		<copyright-year>2013</copyright-year>
		<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by-nc/3.0/">
		<license-p>This is an open-access article distributed under the terms of the Creative Commons Attribution-Non Commercial (by-nc) Spain 3.0 License.</license-p>
		</license>
		</permissions>
		
		<abstract xml:lang="es">
		<title>RESUMEN</title>
		<p>La cuesti&#x00F3;n de la decidibilidad, es decir, si es posible demostrar computacionalmente que una expresi&#x00F3;n matem&#x00E1;tica es verdadera o falsa, fue planteada por Hilbert y permaneci&#x00F3; abierta hasta que Turing la respondi&#x00F3; de forma negativa. Establecida la no-decidibilidad de las matem&#x00E1;ticas, los esfuerzos en inform&#x00E1;tica te&#x00F3;rica se centraron en el estudio de la complejidad computacional de los problemas decidibles. En este art&#x00ED;culo presentamos una breve introducci&#x00F3;n a las clases <bold>P</bold> (problemas resolubles en tiempo polin&#x00F3;mico) y <bold>NP</bold> (problemas resolubles de manera no determinista en tiempo polin&#x00F3;mico), al tiempo que exponemos la dificultad de establecer si <bold>P</bold> = <bold>NP</bold> y las consecuencias que se derivar&#x00ED;an de que ambas clases de problemas fueran iguales. Esta cuesti&#x00F3;n tiene implicaciones no solo en los campos de la inform&#x00E1;tica, las matem&#x00E1;ticas y la f&#x00ED;sica, sino tambi&#x00E9;n para la biolog&#x00ED;a, la sociolog&#x00ED;a y la econom&#x00ED;a. La idea seminal del estudio de la complejidad computacional es consecuencia directa del modo en que Turing abordaba problemas en diferentes &#x00E1;mbitos mediante lo que hoy se denomina la lupa algor&#x00ED;tmica. El art&#x00ED;culo finaliza con una breve exposici&#x00F3;n de algunos de los temas de investigaci&#x00F3;n m&#x00E1;s actuales: transici&#x00F3;n de fase en problemas <bold>NP</bold>, y demostraciones hologr&#x00E1;ficas, donde se trata de convencer a un adversario de que una demostraci&#x00F3;n es correcta sin revelar ninguna idea de la demostraci&#x00F3;n.</p>
		</abstract>
		<trans-abstract xml:lang="en">
		<title>ABSTRACT</title>
		<p>The decidability question, i.e., whether any mathematical statement could be computationally proven true or false, was raised by Hilbert and remained open until Turing answered it in the negative. Then, most efforts in theoretical computer science turned to complexity theory and the need to classify decidable problems according to their difficulty. Among others, the classes <bold>P </bold>(problems solvable in polynomial time) and <bold>NP </bold>(problems solvable in non-deterministic polynomial time) were defined, and one of the most challenging scientific quests of our days arose: whether <bold>P = NP. </bold>This still open question has implications not only in computer science, mathematics and physics, but also in biology, sociology and economics, and it can be seen as a direct consequence of Turing’s way of looking through the algorithmic lens at different disciplines to discover how pervasive computation is.</p>
		</trans-abstract>
		<kwd-group xml:lang="es">
			<title>PALABRAS CLAVE</title>
			<kwd>Complejidad computacional</kwd>
			<kwd>el problema de calcular la permanente de una matriz</kwd>
			<kwd>problemas P y NP</kwd>
			<kwd>demostraciones interactivas y hologr&#x00E1;ficas</kwd>

		</kwd-group>
		<kwd-group xml:lang="en">
			<title>KEYWORDS</title>
			<kwd>Computational complexity</kwd>
			<kwd>the permanent problem</kwd>
			<kwd>P and NP problems</kwd>
			<kwd>Interactive proofs and holographic proofs</kwd>


		</kwd-group>
	</article-meta>
	</front>		
	

	<body>
	
		
		
		<sec id="S1">
		<title>1. INTRODUCTION </title>
		
		<p>The English mathematician Alan Mathison Turing (1912-1954) is well-known for his key role in the development of computer science, but he also made important contributions to the foundations of mathematics, numerical analysis, cryptography, quantum computing and biology. In the present paper we focus exclusively on the influence of Turing on <italic>computability and complexity theory, </italic>leaving aside other aspects of his work even within computer science, most notably his contribution to the birth of the digital computer and artificial intelligence. </p>
		
		<p>Turing was an important player in the settlement of the decidability issue, which led naturally to the study of the complexity of decidable problems, i.e., once it was proved that there are problems unsolvable by a computer, research turned to the question of “how long would it take to solve a decidable problem?” This is an exciting research field with lots of open questions. In this paper, we try to give a gentle introduction to the historical perspective of the search for efficient computing and its limitations. </p>
		
		</sec>
		
		
		
		<sec id="S2">
		<title>2. BEFORE TURING: THE DREAM OF MECHANICAL REASONING AND DECIDABILITY </title>
		
		<p>Gottfried W. Leibniz (1646-1716) was an important mathematician, philosopher, jurist and inventor, whose dream was to devise an automatic reasoning machine, based on an alphabet of unambiguous symbols manipulated by mechanical rules, which could formalize any consistent linguistic or mathematical system. He produced a calculus ratiocinator, an algebra to specify the rules for manipulating logical concepts. More than a century later, George Boole (1815-1864) and Augustus De Morgan (1806-1871) converted the loose ideas of Leibniz into a formal system, Boolean algebra, from which Gottlob Frege (1848-1925) finally produced the fully developed system of <italic>axiomatic predicate logic. </italic></p>
		
		<p>Frege went on to prove that all the laws of arithmetic could be logically deduced from a set of axioms. He wrote a two-volume book with the formal development of the foundations of arithmetic, and when the second volume was already in print, Frege received the celebrated letter from Bertrand Russell (1872-1970) showing his theory was inconsistent. The counterexample was the paradox of <italic>extraordinary </italic>sets. A set is defined to be <italic>extraordinary </italic>if it is a member of itself, otherwise it is called <italic>ordinary. Is the set of all ordinary sets also ordinary? </italic>(see Doxiadis, Papadimitriou, Papadatos and di Donna, <xref ref-type="bibr" rid="CIT16">2009</xref>, pp. 169 to 171 for a particular charming account of the effect of Russell&apos;s letter to Frege). </p>
		
		<p>Frege&apos;s work was the spark for 30 years of research on the foundations of mathematics, and the end of the 19<miguel>th</miguel> c. and beginning of the 20<miguel>th</miguel> c. witnessed strong mathematical, philosophical and personal battles between members of the <italic>intuitionist </italic>and <italic>formalist </italic>European schools (Davis, <xref ref-type="bibr" rid="CIT14">2000</xref>; Doxiadis, Papadimitriou, Papadatos and di Donna, <xref ref-type="bibr" rid="CIT16">2009</xref>). </p>
		
		<p>To better frame further developments, let us recall some notions. A <italic>formal system </italic>is a language, a finite set of axioms, and a set of inference rules used to derive expressions (or statements) from the set of axioms; an example is mathematics with the first-order logic developed by Frege. A system is said to be <italic>complete </italic>if every statement can be proved or disproved; otherwise the system is said to be <italic>incomplete. </italic>A system is said to be <italic>consistent </italic>if there is not a step-by-step proof within the system that yields a false statement. </p>
		
		<p>A system is said to be <italic>decidable </italic>if, for every statement, there exists an algorithm to determine whether the statement is true. </p>
		
		<p>In 1928, at the International Congress of Mathematicians in Bologna, David Hilbert (1862-1943), a leading figure in the formalist school, presented to his fellow mathematicians three problems, the second of which would have a big impact on the development of computer science: the <italic>Entscheidungsproblem. </italic>In English, it is named the <italic>decision problem, </italic>and it can be formulated as follows: “provide a method that, given a first-order logic statement, would determine in a finite number of steps whether the statement is true&quot;. In other words, the Entscheidungsproblem asks for the existence of a finite procedure that could determine whether a statement in mathematics is true of false. Hilbert was convinced that the answer would be yes, as mathematics should be complete, consistent and decidable. </p>
		
		</sec>
		
		<sec id="S3">
		<title>3. TURING ESTABLISHES THE LIMITS OF COMPUTABILITY </title>
		
		<p>In 1936 Turing completed the draft of his paper &quot;On Computable Numbers, with an Application to the Entscheidungsproblem&quot;, where he proposed a formal model of computation, the <italic>a-machine, </italic>today known as the <italic>Turing machine </italic>(TM), and he proved that any function that can be effectively computed (in Hilbert’s sense) by a human being could also be mechanically calculated in a finite number of steps by a mechanical procedure, namely the TM. Turing used his formalism to define the set of <italic>computable numbers, </italic>those reals for which their <italic>i</italic>th decimal can be computed in a finite number of steps. The number of computable numbers is countable but the number of reals is uncountable, so most of the reals are not computable. Some well-known computable numbers are 1/7, <italic>π</italic> and <italic>e</italic>. </p>
		
		<p>In his model, Turing introduced two essential assumptions, the discretization of time and the discretization of the state of mind of a human calculator. A TM consisted of an infinite tape divided into squares, a finite input on a finite alphabet, and a write-read head that could be in a finite number of states representing those of the human calculator&apos;s brain (Davis, <xref ref-type="bibr" rid="CIT14">2000</xref>; Moore and Mertens, <xref ref-type="bibr" rid="CIT41">2011</xref>). The TM was a theoretical model of a <italic>stored-in program </italic>machine. An outstanding achievement of Turing was the concept of <italic>Universal Turing Machine </italic>(UTM). Given the codified description of a TM as input, the UTM is able to simulate the computation of that machine and write the result. Hence, the UTM can simulate any other Turing machine, thus opening the way to digital computers. </p>
		
		<p>Relying on his UTM, Turing made a decisive contribution to computability, namely he produced a problem that was undecidable: the <italic>halting problem. </italic>It can be stated as follows: “Given a codified description of a TM and an input to it, decide if the UTM will halt”. The proof was a mimic of Geodel&apos;s incompleteness one, where a diagonalization argument produces a paradox (see Davis, <xref ref-type="bibr" rid="CIT14">2000</xref>, chapter 7 for a nice informal explanation). Note that the halting problem is a counterexample, a negative solution to the Entscheidungsproblem<xref ref-type="fn" rid="NOTE01">1</xref>. </p>
		
		<p>Turing’s PhD. thesis extended Gödel&apos;s incompleteness theorem by proving that when new axioms are added to an incomplete formal system the system remains incomplete (Turing, <xref ref-type="bibr" rid="CIT49">1939</xref>). A very important contribution of that work was the <italic>Oracle Turing-machine </italic>model. In the words of Turing: “Let us suppose we are supplied with some unspecified means of solving number-theoretical problems, a kind of oracle as it were. We shall not go any further into the nature of this oracle apart from saying that it can&apos;t be a machine”. </p><p>Emil Post (1897-1954) realized that Turing&apos;s oracle machine had important implications for computability, as it could be used to compare the relative difficulty of problems; thus he defined the concept of Turing-reducibility (T-reducibility). Given problems <italic>P1 </italic>and <italic>P</italic>2<italic>, P</italic>1<italic> </italic>is said to be <italic>Turing-reducible to P</italic>2<italic> (P</italic>1<italic> ≤T P</italic>2<italic>) if P</italic>2<italic> </italic>can be used to construct in a finite number of steps, a program to solve <italic>P</italic>1. Note that if <italic>P</italic>1<italic> ≤T P2 </italic>and <italic>P</italic>2<italic> </italic>is decidable then <italic>P</italic>1 is also decidable, and if <italic>P</italic>1<italic> ≤T P</italic>2<italic> </italic>and <italic>P</italic>1 is undecidable, then <italic>P</italic>2<italic> </italic>is also undecidable. Therefore, T-reducibility can be used to enlarge the class of know undecidable problems. </p>
		
		</sec>
		
		
		<sec id="S4">
		<title>4. AFTER TURING: PROBLEM COMPLEXITY CLASSES </title>
		
		<p>We have seen that the work of Turing and others let us determine, for any given problem, whether there is an algorithm to solve it (i.e., the problem is decidable) or not. Let us turn into the realm of solvable problems, and ask the question of how long it takes to solve a given decidable problem. It may seem that this is a pure technological issue, however we will see that there are problems for which today&apos;s computers would take more that the age of universe to find a solution, when the input to the problem is a bit large. </p>
		
		<p>The <italic>time complexity </italic>of a problem with input x<italic> </italic>is a measure of the number of steps that an algorithm will take to solve it, as a function of the size of the input |x| = n. Let us consider the <italic>worst-case complexity, </italic>where among all the possible inputs of size <italic>n</italic>, we take the one that behaves worst in terms of the number of steps performed by the algorithm. As an example, consider the school algorithms for multiplying two integers <italic>a</italic> and <italic>b </italic>of sizes <italic>na</italic> and <italic>nb, </italic>respectively, size measured as the number of digits in the binary expression (i.e., <italic>na</italic> = log2<italic>a</italic>), and let <italic>n</italic> = max{<italic>na</italic>, <italic>nb</italic>}, then the worst-case complexity of the algorithm is <italic>T(n) = O</italic>(<italic>n</italic><miguel>2</miguel>).<xref ref-type="fn" rid="NOTE02">2</xref></p>
		
		<p>For decidable problems, the time complexity expression has a tremendous impact on the running time of an algorithm. <xref ref-type="fig" rid="F1">Figure 1</xref> (taken from Moore and Mertens, <xref ref-type="bibr" rid="CIT41">2011</xref>) is an indication of the running time of different worst-case complexity figures, assuming a processor can solve an instance of size <italic>n</italic> = 1 in 10<italic>−</italic><miguel>3</miguel> seconds, which is consistent with today’s technology. Note that an algorithm that solves a problem with complexity <italic>O</italic>(2<miguel>n</miguel>), if given an input of size <italic>n</italic> = 90, may yield the output after the universe would be finished (again, assuming today&apos;s technological level). </p>
		
		
		<fig id="F1">
		<label>Figure 1</label>
		<caption>
		<title>Running times as a function of input size n</title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/F1.jpg"/>
		</fig>
		
		
		<p>Let us try to get a feeling for the time-complexity of some problems. Given an n x n matrix <italic>M = (mij), </italic>its<italic> determinant </italic>is defined by the Leibniz formula </p>
		
		
		
		
		
		<fig id="I1">
		<label>Image 1</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I1.jpg"/>
		</fig>
		
		
		
		
		
		
		<p>where <italic>σ</italic> is one permutation from the symmetric group of permutations <italic>Sn</italic>, and sgn <italic>(σ) </italic>is the sign of the permutation. A similar associate value of a square matrix is the <italic>permanent, </italic>which is defined </p>
		
		
		<fig id="I2">
		<label>Image 2</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I2.jpg"/>
		</fig>
		
		
		
		<p>For example if </p>
		
		
		<fig id="I3">
		<label>Image 3</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I3.jpg"/>
		</fig>
		
		
		<p>then det(<italic>M</italic>) = m11 . m22– m12 . m21 , while perm(<italic>M</italic>) = m11.m22 + m12.m21. </p>
		
		<p>A direct implementation of the definition yields an <italic>O</italic>(<italic>n</italic>!)<italic> </italic>algorithm for both problems. However, by using the LU decomposition by Gauss and Turing, the determinant of an <italic>n</italic> x <italic>n</italic> matrix can be computed in <italic>O</italic>(<italic>n</italic><miguel>3</miguel>) steps, see for example in Cormen, Leiserson, Rivest and Stein (<xref ref-type="bibr" rid="CIT11">2001</xref>), while the complexity of computing the permanent seems to be much more difficult (Valiant, <xref ref-type="bibr" rid="CIT50">1979</xref>). Recently D. Glynn has obtained a deterministic bound of <italic>O</italic>(<italic>n</italic>2<miguel>n</miguel>) to the complexity of the permanent (Glynn, <xref ref-type="bibr" rid="CIT22">2010</xref>). Notice that if <italic>M</italic>1 and <italic>M</italic>2 are square matrices then det(<italic>M</italic>1<italic>M</italic>2) = det(<italic>M</italic>1) x det(<italic>M</italic>2), while perm(<italic>M</italic>1<italic>M</italic>2) ≠ perm(<italic>M</italic>1) x perm(<italic>M</italic>2). </p>
		
		<p>A problem is said to be <italic>feasible </italic>if there exists an algorithm that solves it with polynomial time-complexity. All other decidable problems are said to be <italic>unfeasible, </italic>which does not imply that in the near or distant future some problems may turn into feasible. </p>
		
		<p>A particularly interesting kind of problems are the <italic>combinatorial optimization problems, </italic>where for any instance x<italic> </italic>and a solution <italic>s</italic>x for that instance, there is a cost function k(x, sx) ∈ ℝ+ and the objective is to find the sx*<italic> </italic>that optimizes (maximizes or minimizes) k(x, sx) over all possible solutions sx<xref ref-type="fn" rid="NOTE03">3</xref><italic>. </italic>Let Opt(<italic>x</italic>) denote the cost of an optimal solution. </p>
		
		<p>For example, consider the <italic>chromatic number problem </italic>of a graph: “Given as input a graph <italic>G = (</italic>V<italic>, E), </italic>find the minimum number of different colors needed to have a valid coloring of the vertices in V<italic>”, </italic>where a valid coloring of <italic>G </italic>is an assignment of labels χ : V → {1, 2, …, k}, each integer representing a color, such that for any (<italic>u, v</italic>) Є <italic>E</italic>, χ(<italic>u</italic>) ≠ χ(<italic>v</italic>)<italic>. </italic>Notice that, for any input <italic>G </italic>and solution χ, Opt(<italic>G</italic>) is a valid coloring with minimum number of colors. </p>
		
		
		
		
		<sec id="S4.1">
		<title>4.1 The classes P, NP and NP-complete </title>
		
		<p>In the early 1950’s, some mathematicians started to realize that some decidable problems took too long to be solvable for large inputs. In a series of letters to the US National Security Agency, John Nash proposed a secure cryptographic encryption system based on the computational difficulty of problems (Nissan, <xref ref-type="bibr" rid="CIT42">2004</xref>). These letters foresaw the classification of decidable problems according to their computational complexity and could have given birth to the field of <italic>complexity theory </italic>if the letters had not remained a state secret until 2012. </p>
		
		<p>The second important historical event for the study of problem complexity was the letter Kurt Gödel sent to John von Neumann in March 1956. At the time, von Neumann was dying and he did not read the letter, which was lost until the 1980’s. An English translation of the letter can be found in the appendix of Lipton’s book (<xref ref-type="bibr" rid="CIT35">2010</xref>), which is a compilation of selected posts of his useful blog. As it is beautifully explained in Lipton’s poetic version of the events, “Kurt Gödel is walking along through the falling snow, he is thinking. Gödel is the greatest logician of his time, perhaps of all times, yet he is deeply troubled. He has found a problem he cannot solve. The problem concerns a simple but fundamental question. Suddenly he smiles, he has an idea. If he cannot solve the problem, then he will write a letter explaining it to John von Neumann; perhaps John will be able to solve the problem. After all John von Neumann has one of the fastest minds in the world. Gödel pulls his scarf tighter, gets his bearings in the heavy falling snow, and heads to his office to write his letter”. </p>
		
		<p>In his letter, Gödel considered the <italic>truncated Entscheidungsproblem problem: </italic>“Given any statement in first-order logic (for example ∃x, y, z, n ∈ ℕ - {0} : (n ≥ 3) ⋀ (xn + yn = zn))<italic> </italic>decide if there is a proof of the statement with finite length of at most <italic>m</italic> lines, where <italic>m</italic> could be any large (10<miguel>10</miguel>) constant. As any mathematical proof could be represented using a small constant number <italic>c </italic>of symbols, the problem is decidable; just construct all the exponentially many <italic>cm </italic>possible proofs of length <italic>m</italic>, over the finite alphabet, and check if any of them works. Notice that most of the proofs will be gibberish. Moreover, for large <italic>m</italic>, there is a chance that the process could take longer than the existence of the earth! (see Fig. 1). Gödel in his letter asked if it was possible to do it in <italic>O</italic>(<italic>m</italic><miguel>2</miguel>) steps, making explicit the possible partition between decidable problems solved in polynomial time, and decidable problems that cannot be solved in polynomial time. </p>
		
		<p>During the 1960’s, the existence of easy and hard problems started to be more obvious to researchers. As computers were solving problems with increasing input size, researchers begin to consider the effect of input size on the computation time (number of steps) and space (number of cells visited), using the Turing machine as the computational model. An important contribution appeared in 1965 by Hartmanis and Stearns (<xref ref-type="bibr" rid="CIT27">1965</xref>), which defined the multi-tape Turing machine and laid the foundations of complexity theory. The same year, Edmonds (<xref ref-type="bibr" rid="CIT18">1965</xref>) gave an informal description of <italic>non-deterministic polynomial-time problems, </italic>i.e., those that permit verifying in polynomial time whether a guessed hypothetical solution is indeed a correct solution to the problem. Nondeterminism would play a key role in the development of computational complexity theory. A nondeterministic algorithm could be seen as a game where a computationally omnipotent <italic>prover </italic>P provides a <italic>witness </italic>to the solution of the problem, and a <italic>verifier </italic>has to prove deterministically that the witness is indeed a correct solution. </p>
		
		<p>Consider the problem of the <italic>satisfiability </italic>of a conjunctive normal form (SAT): “Given a set of Boolean variables <italic>X </italic>and a Boolean formula  on X<italic> </italic>in conjunctive normal form, decide if there is an assignment A : X<italic> </italic>→<italic> </italic>{<italic>T, F</italic>} (truth, false) such that it satisfies ” (evaluates  to T). A conjunctive normal form formula consists of the conjunction of clauses, where each clause is a disjunction of literals (Boolean variables or their negation). For example, if X = {x1, x2, x3, x4}<italic>, </italic>consider the Boolean formula </p>
		
		
		<fig id="I4">
		<label>Image 4</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I4.jpg"/>
		</fig>
		
		
		<p>A backtracking deterministic algorithm would find an assignment satisfying . In a nondeterministic algorithm, P would supply as witness an assignment A (for example, A(x1) = A(x4) = T, A(x2) = A(x3) = F)<italic> </italic>and V<italic> </italic>would have to verify that the substitution of such an assignment makes  satisfiable. Note that if  has input size <italic>n</italic> (length of ), V<italic> </italic>could verify whether the assignment satisfies  in <italic>O</italic>(<italic>n</italic>)<italic> </italic>steps. </p>
		
		<p>In 1971 Stephen Cook showed that the SAT problem was a paradigmatic unfeasible problem in the sense that any problem that could be solved<xref ref-type="fn" rid="NOTE04">4</xref> in polynomial time by a nondeterministic Turing machine could be <italic>reduced </italic>to the SAT problem, where the reducibility is the same concept as Turing-reducibility but imposing the condition that the construction should be done in polynomial time (Cook, <xref ref-type="bibr" rid="CIT10">1971</xref>). The paper was presented at the STOC-71 conference, and again using the Lipton (<xref ref-type="bibr" rid="CIT35">2010</xref>) description: “A tall figure walks slowly to the front of the conference room. Steve Cook is a young scientist, who is about to change the world. He has independently discovered the problem that troubled Gödel that snowy day. He gives his talk, and after there is a polite applause, as there is for every talk”. </p>
		
		<p>One attendee who understood perfectly the meaning of Cook’s result was Richard Karp, who the following year published a seminal paper formally defining the classes <bold>P</bold>, <bold>NP</bold> and <bold>NP</bold>-complete, and provided the proof that nine well-known problems were in the class <bold>NP</bold>-complete (Karp, <xref ref-type="bibr" rid="CIT32">1972</xref>). His starting seed was that SAT Є<italic> </italic><bold>NP</bold>-complete, which he coined as Cook’s Theorem. At the same time, but independently from Cook and Karp, a Russian mathematician, Leonid Levin, was basically defining the class <bold>NP</bold>-complete (Levin, <xref ref-type="bibr" rid="CIT33">1973</xref>), the article appeared translated into English the same 1973, but it took a while for the community working in complexity theory to realize the meaning of Levin’s result (see Trakhtenbrot, <xref ref-type="bibr" rid="CIT48">1984</xref> for a history of early complexity theory developments in Russia). Today the result that SAT is <bold>NP</bold>-complete is known as the Cook-Levin Theorem. </p>
		
		<p>We next give an intuitive description of the complexity classes. For a more technical description the reader is referred to any of the complexity or algorithmic books listed in the bibliography of this paper. </p>
		
		<p><bold>P</bold> is the class of problems for which there is a deterministic algorithm finding a solution in polynomial time, for any input. </p>
		
		<p><bold>NP</bold> is the class of problems such that if an omniscient prover P provides a polynomial-length witness to the solution of the problem, a verifier V<italic> </italic>can prove <italic>in polynomial time </italic>whether the witness is indeed correct. The term <bold>NP</bold> stands for <italic>non-deterministic polynomial time. </italic></p>
		
		<p>From the previous remarks on the SAT problem, it is clear that SAT ∈ <bold>NP</bold>: P supplies a valid assignment and V<italic> </italic>checks in linear time that the assignment satisfies the formula. However, if we consider a combinatorial optimization problem, as the chromatic number of a graph, it is not so easy. Given an input G = (V, E)<italic>, </italic>the <italic>chromatic number problem </italic>consists of finding a <italic>minimum </italic>valid coloring χ* for G” <italic>, </italic>i.e., assigning the minimum number of colors to <italic>V </italic>such that for every edge (u,v) ∈ E, χ* (u) ≠ χ* (v)<italic>. </italic>To prove this problem is not in <bold>NP, </bold>assume that P provides a witness χ* to the colorability of <italic>V, </italic>then V<italic> </italic>tests that indeed χ* is a valid coloring by looking at every edge of <italic>G, </italic>which has a cost of <italic>O</italic>(<italic>n</italic><miguel>2</miguel>). Moreover, V<italic> </italic>must also verify that there is no other valid coloring with less colors that χ*, i.e., he must compare with all other possible valid colorings for <italic>G, </italic>which could be exponential. Therefore, the problem is not in <bold>NP. </bold></p>
		
		<p>To circumvent this difficulty, we consider the <italic>search version </italic>of the combinatorial optimization problem, where as a part of the input we also are given a value <italic>b </italic>that the cost function can take. If the optimization problem demands to maximize, the search version would require that k(x)<italic> </italic>≥ <italic>b, </italic>and if it is a minimization problem the search version would require k(x)<italic> </italic>≤ <italic>b. </italic></p>
		
		<p>Continuing with the example, the search version of the <italic>chromatic number problem </italic>can be stated as follows: “Given as input G<italic> = (</italic>V<italic>, E) </italic>and a <italic>b &gt; </italic>0, find a valid coloring χ of G<italic> </italic>such that |χ(V)| ≤ b”<italic>. </italic></p>
		
		<p>The search versions of optimization problems are obviously in <bold>NP. </bold>Furthermore, by using binary search it is a standard exercise to prove that if the search version of an optimization problem can be solved in polynomial time then the optimization version can also be solved in polynomial time (see Exercise 8.1 in Dasgupta, Papadimitriou and Vazirani, <xref ref-type="bibr" rid="CIT13">2008</xref>). </p>
		
		<p>Let us see some further examples of problems in <bold>P </bold>and <bold>NP</bold>:<bold> </bold></p>
		
		<p>The <italic>primality problem: </italic>“Given an integer a with length <italic>n</italic> = log <italic>a</italic> bits, decide whether <italic>a</italic> is prime”. There is a non-trivial proof that primality Є <bold>NP </bold>due to V. Pratt (<xref ref-type="bibr" rid="CIT43">1975</xref>), and for a long time it was open whether the problem was in <bold>P</bold>.<bold> </bold>In 2002, Agrawal, Kayal and Saxena provided a deterministic polynomial-time algorithm to solve the primality problem, so the problem is in <bold>P </bold>(Agrawal, Kayal, and Saxena, <xref ref-type="bibr" rid="CIT03">2002</xref>). </p>
		
		<p>The <italic>factorization problem: </italic>“Given an integer <italic>a</italic> of <italic>n</italic> bits, find its prime decomposition”. This is an important problem as, among other things, it is the basis of the <italic>RSA, </italic>one of the most used public-key cryptographic systems (see Chapter 8 in Singh, <xref ref-type="bibr" rid="CIT47">2000</xref>). Factorization is in <bold>NP, </bold>since if P provides a witness <italic>p</italic>1,…,<italic>pm</italic>, V can test that each <italic>pi</italic> is prime (using the algorithm in Agrawal, Kayal, and Saxena, <xref ref-type="bibr" rid="CIT03">2002</xref>) and see that the product is the given number. Nevertheless, it is an important open question whether there is a polynomial-time algorithm to solve factorization<xref ref-type="fn" rid="NOTE05">5</xref>. </p>
		
		<p>The problem of <italic>3</italic>-<italic>satisfiability </italic>(3-SAT) is the particular case of SAT where every clause in the input has exactly 3 literals. The problem is also in <bold>NP. </bold>However, an easy greedy algorithm puts <italic>2</italic>-<italic>satisfiability </italic>in the class <bold>P. </bold></p>
		
		<p>Finally, the <italic>truncated Entscheidungsproblem </italic>is also in <bold>NP, </bold>since if we get a proof of less than 10<miguel>10</miguel> pages as a certificate, any mathematician can verify in a reasonable time (polynomial in 10<miguel>10</miguel>) whether it is correct (independently that there exist other valid proofs among the exponential number of generated ones). </p>
		
		<p>Notice that <bold>P </bold>⊆<bold> NP</bold>. If<bold> </bold>V can obtain a deterministic solution in polyno­mial time, he can also verify it in polynomial time. </p>
		
		<p>The problem to decide whether <bold>P=NP </bold>was considered one of the nine millennium problems posed by the <italic>Clay Mathematics Institute </italic>in the year 2000. A 10<miguel>7</miguel> US$ prize is awarded for each solution to one of the problems. </p>
		
		<p>The answer <bold>P</bold>≠<bold>NP </bold>would mean that, for many important search problems, <italic>finding </italic>is more difficult than <italic>verifying. </italic>If, on the contrary, the answer is <bold>P=NP, </bold>then there would be a feasible algorithm for the truncated Entscheidungsproblem, i.e., proofs with a large but finite number of lines, which in practice would suffice for most mathematical theorems. </p>
		
		
		</sec>
		
		
		<sec id="S4.2">
		<title>4.2 Karp reducibility and NP-completeness </title>
		
		<p>To further study the relationship between search problems and the <bold>P=NP </bold>question, Karp defined the following simplified variation of Turing-reducibility: Given search problems A and <italic>B, </italic>with sets of instances <italic>IA </italic>and <italic>IB </italic>and sets of solutions <italic>SA </italic>and <italic>SB , </italic>a <italic>Karp reduction </italic>from <italic>A</italic> to <italic>B (A ≤P B) </italic>is a polynomial-time computable function f: IA → IB<italic> </italic>such that for any input x Є<italic> </italic>IA , f(x)has a solution in <italic>SB </italic>iff x<italic> </italic>has a solution in <italic>SA.</italic></p>
		
		<p>In other words, if <italic>A ≤P B</italic> and we have a polynomial-time algorithm AB<italic> </italic>to solve <italic>B </italic>then we have a polynomial-time algorithm to solve <italic>A</italic>, for any x Є <italic>IA </italic>computed in polynomial time AB (f(x))<italic>. </italic>Notice, a polynomial algorithm to solve <italic>A</italic> does not imply anything about the existence of a polynomial algorithm to solve <italic>B. </italic></p>
		
		<p>A search problem <italic>B </italic>is <bold>NP</bold>-complete if <italic>B</italic> Є<italic> </italic><bold>NP</bold> and for any <bold>NP </bold>problem <italic>A</italic>, we have <italic>A ≤P B. </italic></p>
		
		<p>A useful property of reductions is that they are transitive. This property, together with the previous remark about reductions as problems solvers, tells us that the class <bold>NP</bold>-complete is the most difficult class of <bold>NP </bold>problems, in the sense that if one <bold>NP</bold>-complete problem is known to be in <bold>P</bold> then <bold>P</bold>=<bold>NP. </bold></p>
		
		<p>It is known that if <bold>P</bold>≠<bold>NP, </bold>there would be problems in <bold>NP </bold>that are neither in <bold>P</bold> nor <bold>NP</bold>-complete. These are in the class <bold>NP</bold>-intermediate (see <xref ref-type="fig" rid="F2">Figure 2</xref>). </p>
		
		
		<fig id="F2">
		<label>Figure 2</label>
		<caption>
		<title>Complexity classes inside NP</title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/F2.jpg"/>
		</fig>
		
		
		
		<p>It is beyond the scope of this paper to show detailed reductions between <bold>NP</bold>-complete problems, which can be found in any standard algorithmic book, see for example Garey and Johnson, <xref ref-type="bibr" rid="CIT21">1979</xref>; Moore and Mertens, <xref ref-type="bibr" rid="CIT41">2011</xref>. But we would like to enumerate a few more examples of problems <bold>NP</bold>-complete and <bold>NP</bold>-intermediate. For a full taxonomy of <bold>NP</bold>-complete problems see Crescenzi and Kann (<xref ref-type="bibr" rid="CIT12">2012</xref>). </p>
		
		<p>As already mentioned, SAT was the first problem known to be <bold>NP-</bold>complete; 3-SAT, the truncated Entscheidungsproblem, and chromatic number of a graph are also <bold>NP</bold>-complete problems. Factoring an integer as a product of primes is in <bold>NP</bold>-intermediate. Another significant problem in the class <bold>NP</bold>-intermediate is <italic>graph isomorphism: </italic>Given two graphs <italic>G</italic>1 = <italic>(V</italic>1<italic>, E</italic>1) and <italic>G</italic>2 = (<italic>V</italic>2, <italic>E</italic>2), find if there is a permutation π: <italic>V</italic>1 → <italic>V</italic>2 such that (<italic>u, v</italic>) Є <italic>E</italic>1 iff (π(u), π(v)) Є <italic>E</italic>2. </p>
		
		<p>Consider the <italic>3-coloring of a graph problem: </italic>“Given input graph <italic>G = (V, E), </italic>decide if there is a valid coloring of <italic>V </italic>with exactly 3 colors” (see <xref ref-type="fig" rid="F3">Figure 3</xref>). The problem is in <bold>NP: </bold>if P provides a 3-color witness χ, then V can verify in <italic>O</italic>(|<italic>V</italic>|<miguel>2</miguel>) whether χ is a valid coloring. It is known that this problem is <bold>NP</bold>-complete. Deciding whether a graph is <italic>2-colorable </italic>and, if so, finding the coloring is in <bold>P</bold> (Dasgupta, Papadimitriou and Vazirani, <xref ref-type="bibr" rid="CIT13">2008</xref>). </p>
		
		<fig id="F3">
		<label>Figure 3</label>
		<caption>
		<title>3-colorable G with a valid coloring</title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/F3.jpg"/>
		</fig>
		
		<p>The following example taken from Moore and Mertens (<xref ref-type="bibr" rid="CIT41">2011</xref>, p. 152) shows that <bold>NP</bold>-completeness can appear in calculus problems. The <italic>cosine integration problem: </italic>“Given integers x1, ... , x<italic>n , </italic>decide if </p>
		
		<fig id="I5">
		<label>Image 5</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I5.jpg"/>
		</fig>
		
		<p>The class <bold>NP</bold>-complete contains many everyday practical problems. There is a series of problems dealing with minimizing delivery costs or time, which derive from the <italic>Traveling Salesman Problem </italic>(TSP). The search version of TSP has as input a complete graph <italic>G = (V, E), </italic>with a weight <italic>w</italic>(<italic>vi , vj</italic>) ≥ 0 on each edge (<italic>vi, vj</italic>), together with a value <italic>c, </italic>the goal is to find a tour visiting all vertices exactly once, such that </p>
		
		
		<fig id="I6">
		<label>Image 6</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I6.jpg"/>
		</fig>
		
		<p>This problem is <bold>NP</bold>-complete. Another important This problem is <bold>NP-</bold>complete. Another important set of practical problems derive from the <italic>job scheduling problem. </italic>In its most general setting, the problem can be formulated as follows: “Given <italic>n</italic> jobs <italic>J</italic>1,... <italic>Jn, </italic>where each <italic>Jk</italic> has a processing time <italic>tk, </italic>and given <italic>m</italic> identical machines <italic>M</italic>1<italic>,</italic>..., <italic>Mm, </italic>then each job <italic>Jk </italic>must run on a machine <italic>Mi</italic> for <italic>tk </italic>consecutive units of time, and during that time no other job can run on the same machine. The prob­lem is to find an assignment of jobs to machines such that it minimizes the <italic>makespan </italic>of the schedule </p>
		
		<fig id="I7">
		<label>Image 7</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I7.jpg"/>
		</fig>
		
		<p>where <italic>Ti</italic> denotes the time at which machine <italic>Mi</italic> completes its jobs”. The search version of the problem is <bold>NP</bold>-complete for <italic>m</italic> &gt; 2. For more information on the problem and its variations, see Brucker (<xref ref-type="bibr" rid="CIT09">2006</xref>). </p>
		
		<p>As a final example, we would like to present evidence of the influence of the <bold>P</bold> versus <bold>NP </bold>problem in other disciplines, for example, economics. The <italic>Efficient Market Hypothesis (EMH) </italic>states that future prices cannot be predicted by analyzing prices from the past (Fama, <xref ref-type="bibr" rid="CIT19">1965</xref>). In an enjoyable recent paper by the economist P. Maymin (<xref ref-type="bibr" rid="CIT36">2011</xref>), he proves that the <italic>EMH </italic>is false iff <bold>P=NP</bold>.<bold> </bold>For people with a little background in complexity theory, the paper is quite straightforward, still it presents a clear example of the spread of complexity theory to other fields. </p>
		
		
		</sec>
		
		
		<sec id="S4.3">
		<title>4.3 Coping with NP-completeness </title>
		
		<p>What can be done when having to deal with an <bold>NP</bold>-complete problem? For inputs of very small size <italic>n</italic>, a complexity of <italic>O</italic>(2<miguel>n</miguel>) or <italic>O</italic>(<italic>n</italic>!)<italic> </italic>can be computed in reasonable computer time, but as we showed in <xref ref-type="fig" rid="F1">Figure 1</xref>, the problem becomes intractable as <italic>n</italic> grows. Nevertheless, it turns out that for some <bold>NP</bold>-complete problems there are only a few “bad” inputs. The worst-case complexity assumes that there is a <italic>devil adversary </italic>that chooses the worst possible instance of the problem. In the early 1990’s there was empirical evidence that for some problems such as graph coloring, satisfiability, integer partition, etc., there was a sharp jump from instances which were easily solved to instances that were easily shown not to have a solution, and just a few instances were difficult to solve. That phenomenon is denoted <italic>phase transition </italic>as it is similar to the phenomena studied by physics of sudden changes of states, between solid, liquid and gas. For instance, consider the 3-SAT problem. There is a well-know clever exhaustive search algorithm for SAT, the Davis-Putnam-Logemann-Loveland (DPLL), which was shown to solve many random instances of 3-SAT in polynomial time (Mitchell, Selman, and Levesque, <xref ref-type="bibr" rid="CIT40">1992</xref>). To produce a random instance for 3-SAT with <italic>n</italic> boolean variables and <italic>m = rn</italic> clauses, one has to choose uniformly at random each clause, with probability </p>
		
		
		<fig id="I8">
		<label>Image 8</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I8.jpg"/>
		</fig>
		
		
		<p>and then go over the variables in each clause and negate each with probability = 1/2. The <italic>density </italic>of one of these formulae is defined as <italic>r = n/m</italic>. </p>
		
		<p>For example, the random 3-SAT formula </p>
		
		
		<fig id="I9">
		<label>Image 9</label>
		<caption>
		<title></title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/I9.jpg"/>
		</fig>
		
		
		<p>has density <italic>r</italic> = 0.4. </p>
		
		<p>Mitchell, Selman, and Levesque (<xref ref-type="bibr" rid="CIT40">1992</xref>) first experimentally showed that the number of ran­dom 3-SAT formulae for which the DPLL algorithm took exponential time was small (see <xref ref-type="fig" rid="F4">Figure 4a</xref>). Moreover, their experiments also showed that, with high probability, for densities <italic>r</italic> &lt; 4.2 random 3-SAT formulae are satisfiable and for <italic>r</italic> &gt; 4.2 random 3-SAT formulae are not satisfiable (see <xref ref-type="fig" rid="F4">Figure 4b</xref>). </p>
		
		<fig id="F4">
		<label>Figure 4</label>
		<caption>
		<title>Experiments with random 3-SAT formulae, from Mitchell, Selman, and Levesque (<xref ref-type="bibr" rid="CIT40">1992</xref>). In (a) each dot represents the time DPLL takes on a random instance of 3-SAT. Light dots represent satisfiable instances and dark dots represent non-satisfiable instances. (b) The phase transition satisfiable to non-satisfiable for a random 3-SAT formula occurs at density 4.27.</title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/F4.jpg"/>
		</fig>
		
		<p>In 2002, using non-rigorous techniques from statistical physics (the replica method) on very large instances of 3-SAT, M&#x00E9;zard, Parisi and Zecchina (<xref ref-type="bibr" rid="CIT37">2002</xref>) and M&#x00E9;zard and Zecchina (<xref ref-type="bibr" rid="CIT38">2002</xref>) showed that the threshold for 3-SAT occurs at formulae with density <italic>r</italic>c = 4.27, i.e., random 3-SAT formulae with density &lt; 4.27 are satisfiable with high probability, and random 3-SAT formulae with density &lt; 4.27 are satisfiable with high probability, and radom 3-SAT formulae with density &gt; 4.27 are NOT satisfiable with high probability. Since then, there has been an effort to establish this sharp phase transition by rigorous analytical methods. So far for 3-SAT, the best lower bound is 3.52 (Hajiaghayi and Sorkin, <xref ref-type="bibr" rid="CIT26">2003</xref>; Kaporis, Kirousis and Lalas, <xref ref-type="bibr" rid="CIT31">2006</xref>) and the corresponding upper bound is 4.4907 (D&#x00ED;az, Kirousis, Mitsche and P&#x00E9;rez, <xref ref-type="bibr" rid="CIT15">2009</xref>). Closing the gap remains an open problem. See Chapter 14 in Moore and Mertens (<xref ref-type="bibr" rid="CIT41">2011</xref>). </p>
		
		<p>The fact that some <bold>NP</bold>-complete problems have a not too large number of bad instances indicates that sometimes <italic>heuristics </italic>can be used to achieve good results. Heuristics are procedures with no guarantees either in the running time or on the accuracy of the obtained solution, but for many hard problems, like for example, the layout of VLSI circuits, heuristics are the best practical solution (Wolf, <xref ref-type="bibr" rid="CIT53">2011</xref>). Some modern textbooks on algorithms include a chapter on heuristics, clever backtracking techniques, like the DPLL algorithm we mentioned for solving SAT, simulated annealing or different versions of local search. For a general textbook on heuristics see Michalewicz and Fogel (<xref ref-type="bibr" rid="CIT39">1998</xref>). </p>
		
		<p>Another practical alternative is using approximation algorithms. An algorithm is said to <italic>r-approximate </italic>an optimization problem if, on every input, the algorithm finds a solution whose cost is ≤ 1/<italic>r</italic> if the problem asks for the minimum value, or ≥ 1/<italic>r</italic> if the problem asks for a maximum value. </p>
		
		<p>Almost since the beginning of the development of complexity theory, there was a parallel effort to develop approximation algorithms for <bold>NP</bold>-complete problems. Although the first such algorithm is due to Graham in <xref ref-type="bibr" rid="CIT25">1966</xref>, who developed it to approximate a version of scheduling, the seminal paper for ap­proximation theory by Johnson (<xref ref-type="bibr" rid="CIT29">1974</xref>) came very little after Cook, Levin and Karp’s papers. Since then, the theory of approximation and of inapprox­imability has become a very fruitful field in theoretical computer science, with good books covering the topic, for example Williamson and Smoys, <xref ref-type="bibr" rid="CIT51">2010</xref>. </p>
		
		<p>Parallelism is another powerful tool to speed up computation by a con­stant factor. Notice that anything that can be done with 10<miguel>10</miguel> processors in <italic>T </italic>steps, can be done with one processor in 10<miguel>10</miguel><italic>T</italic> steps. But unless <bold>P</bold>=<bold>NP</bold>, the difference between <bold>P</bold> and <bold>NP</bold>-complete problems is an exponential cost of computation, therefore parallelism would not be the tool to solve <bold>NP</bold>-complete problems in polynomial time. </p>
		
		<p>In the same way, a result by Impagliazzo and Widgerson (<xref ref-type="bibr" rid="CIT28">1997</xref>) implies that, unless <bold>P</bold>=<bold>NP</bold>, randomization would not help to solve <bold>NP</bold>-complete problems. In fact, there is a stronger conjecture: randomization mainly helps to improve the time complexity of problems in <bold>P</bold>. </p>
		
		<p>At the present time, quantum computers are not an existing reality, al­though <italic>D-Wave Systems, Inc. </italic>has managed to build a 128-qubit processor (not general purpose). At the theory level, we know quantum computa­tion could solve <bold>NP</bold>-intermediate problems, for example factorization of an integer (Shor, <xref ref-type="bibr" rid="CIT46">1997</xref>), but it is generally agreed that, unless <bold>P</bold>=<bold>NP</bold>, quantum com­putation would not help with <bold>NP</bold>-complete problems (Bernstein and Vazirani, <xref ref-type="bibr" rid="CIT08">1997</xref>). See Aaronson (<xref ref-type="bibr" rid="CIT01">2008</xref>) for an extensive discussion on the limitations of quantum computers. </p>
		
		</sec>
		
		</sec>
		
		
		<sec id="S5">
		<title>5. Beyond Turing: Interactive Proofs and Zero-Knowledge Proofs </title>
		
		<p>A fascinating line of research in theoretical computer science started in the mid 1980’s, which led to fruitful results, namely <italic>Interactive Proofs. </italic>In this section, we aim to give a brief intuitive introduction to the topic, in particular to <italic>Zero-Knowledge Proofs </italic>(ZKP) and <italic>Probabilistically Checkable Proofs (PCP). </italic>For the interested reader, we recommend Chapter 11 in Moore and Mertens (<xref ref-type="bibr" rid="CIT41">2011</xref>) and Chapters 8, 9 and 11 in Arora and Barak (<xref ref-type="bibr" rid="CIT04">2009</xref>). The topic has spanned 26 years, with numerous papers and fruitful applications in various fields, such as cryptography and approximation algorithms, among others. </p>
		
		<p>The basic idea is how one researcher <italic>(the prover </italic>P<italic>) </italic>can convince another researcher <italic>(the verifier </italic>V <italic>)</italic><xref ref-type="fn" rid="NOTE06">6</xref> that he has a correct proof to a difficult theorem by only showing to V<italic> </italic>a few random bits of the proof, in such a way that at the end V<italic> </italic>is convinced that the proof is correct without having any insight into how it works. </p>
		
		<p>To grasp the concept of zero-knowledge proof, let us start with the very simple illustrative example from Quisquater, Quisquater, Quisquater, Quisquater, Guillou, Guillou, Guillou, Guillou, Guillou, Guillou, and Berson (<xref ref-type="bibr" rid="CIT44">1989</xref>)<xref ref-type="fn" rid="NOTE07">7</xref>. There is a cave with two paths <italic>A</italic> and <italic>B, </italic>which are connected at their ends by a secret passage (see <xref ref-type="fig" rid="F5">Figure 5</xref>). To cross that passage one must know the magic words. In our case, P wants to convince V<italic> </italic>that he knows the magic words without telling them to V<italic>. </italic>They agree on the following protocol: V will remain outside of the cave, so he cannot see which path P  takes. When P arrives at the end of the cave, V<italic> </italic>tells P  which path to return along, and V<italic> </italic>enters the cave to make sure P  is returning for the path he indicated. The probability that P took the path V<italic> </italic>asks him to return is 1/2, therefore if the experiment is repeated a sufficiently large number of times, and each time P returns by the correct path, with probability 1 P must know the magic words to cross the cave, and V<italic> </italic>is convinced that P knows them. </p>
		
		<fig id="F5">
		<label>Figure 5</label>
		<caption>
		<title>Ali Baba’s magic cave.</title>
		</caption>
		<graphic xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="../images/F5.jpg"/>
		</fig>
		
		<p>ZKP are a particular case of the most general <italic>Interactive Proofs Systems, </italic>introduced concurrently in Babai (<xref ref-type="bibr" rid="CIT07">1985</xref>) and Goldwasser, Micali and Rackoff (<xref ref-type="bibr" rid="CIT24">1989</xref>)<xref ref-type="fn" rid="NOTE08">8</xref>. Technically the word <italic>proof </italic>refers to a randomized <italic>interactive protocol </italic>between P and V<italic>, </italic>where P has unlimited computational capabilities and tries to convince V<italic> </italic>of the truth of a certain statement. Loosely speaking, the two characteristics that an interactive protocol must have to be an interactive proof is that an honest V<italic> </italic>should always be convinced by an honest P , but a cheater P  should have a very small probability of convincing an honest V<italic> </italic>that a false statement is true. The interactive proof system is zero-knowledge if V<italic> </italic>is not going to learn anything from the interaction with P. In the previous example, V<italic> </italic>becomes convinced that P knows the magic words to cross between the two paths.</p>
		
		<p>Let us describe a more interesting example. Consider a given graph <italic>G = (V, E), </italic>where  <italic>V </italic> = <italic>n </italic>and  <italic>E </italic> = <italic>m</italic>. As we saw before, to decide whether <italic>G </italic>has chromatic number 3 is an <bold>NP</bold>-complete problem, therefore in general it is not a feasible problem to solve for large values of <italic>n</italic>. In this setting, P wants to convince V<italic> </italic>that he has a valid 3-coloring of <italic>G, </italic>without revealing the coloring. This example is from Goldreich, Micali and Wigderson (<xref ref-type="bibr" rid="CIT23">1991</xref>). At each iteration of the protocol, V<italic> </italic>only has access to the colorings at the ends of a single edge he chooses at the iteration. The protocol is the following: First P selects a valid 3-coloring (for every (, ) ⋲ E, <italic>u</italic> and <italic>v</italic> must have different colors) and generates all 3! = 6 permutations of valid 3-colorings for <italic>G; </italic>let C<italic> </italic>be the set of all 6 valid colorings. For <italic>n</italic><miguel>3</miguel> iterations, at each iteration <italic>i</italic>, P chooses with probability 1/6 a new coloring ci ⋲ C <italic>, </italic>V<italic> </italic>selects an edge and verifies that the edge is correctly colored. Assume that <italic>G </italic>has a valid 3-coloring (see for example <xref ref-type="fig" rid="F3">Figure 3</xref>). Notice that if V<italic>  </italic>chooses the same edge (<italic>u</italic>, <italic>v</italic>) at two different iterations, the colors assigned to each vertex may be different, as at each iteration P chooses a new random coloring, therefore V<italic> </italic>will not be able to learn a valid coloring for the whole <italic>G. </italic>On the other hand, if <italic>G </italic>is not 3-colorable, at each round, at least one edge will have the same color for both vertices, therefore the probability that V<italic> </italic>will discover a wrong edge is at least 1/<italic>m</italic> per round. As <italic>m</italic> ≤ <italic>n</italic><miguel>2</miguel>, after <italic>n</italic><miguel>3</miguel> iterations with probability tending to 1, V<italic> </italic>will discover that <italic>G </italic>is not 3-colorable. </p>
		
		<p>Technically the way P shows the colors to V<italic> </italic>is a bit more complicated, using a <italic>one-way-function. </italic>One-way-functions are functions that can be easily computed but are hard (exponential time) to invert. A trivial ex­ample of one-way-function is <italic>integer multiplication: </italic>it is easy to multiply <italic>m</italic> = <italic>a</italic>l x <italic>a</italic>2 x ... x <italic>a</italic>n, however as we already mentioned, there is no known polynomial-time algorithm for factorizing <italic>m</italic>. Another more interesting ex­ample of a one-way-function is the <italic>discrete logarithm: </italic>“Given <italic>n</italic>-bit integers x<italic>, </italic>y<italic>, </italic>z<italic>, </italic>find whether there exists an integer <italic>w</italic> such that y<italic> = </italic>xw mod z<italic>”. </italic>Given x<italic>, </italic>w and z<italic>, </italic>it is easy to compute y<italic> = f (</italic>x<italic>, </italic>w<italic>, </italic>z<italic>) = </italic>xw mod z<italic>, </italic>but it is conjectured that finding <italic>f −1(</italic>y<italic>) </italic>takes exponential time. One-way-functions are in standard use in cryptography. </p>
		
		<p>By applying reductions to the 3-colorability problem, it was shown in Goldreich, Micali and Wigderson (<xref ref-type="bibr" rid="CIT23">1991</xref>) that under the assumption of the existence of one-way-functions, every problem in class <bold>NP </bold>has a zero-knowledge proof. In fact, if we denote <bold>IP </bold>the class of problems having an interactive protocol, it is known that <bold>IP</bold>,<bold> </bold>as a complexity class, contains far more difficult problems than <bold>NP </bold>(under the hypothesis <bold>P</bold>≠<bold>NP</bold>)<bold> </bold>(Shamir, <xref ref-type="bibr" rid="CIT45">1992</xref>). Computing the permanent of a matrix is a prob­lem in the class <bold>IP</bold>,<bold> </bold>which means that even under the hypothesis <bold>P=NP</bold>,<bold> </bold>it would remain a hard problem. </p>
		
		<p>The culmination of interactive proof systems research was one of the most beautiful and deep theorems in computer science, the <italic>PCP-theorem. </italic>Although the Gödel prize 2001 was shared by Arora and Safra (<xref ref-type="bibr" rid="CIT06">1998</xref>), Arora, Lund, Motwani, Sudan and Szegedy (<xref ref-type="bibr" rid="CIT05">1998</xref>) and Feigue, Goldwasser, Lovasz, Safra, and Szegedy (<xref ref-type="bibr" rid="CIT20">1996</xref>) for their contribution to <italic>Probabilistically Checkable Proofs </italic>and the PCP-theorem, many of the techniques and ideas are due to a much larger number of researchers (see for example Johnson (<xref ref-type="bibr" rid="CIT30">1992</xref>) for an extensive historical account, and Chapter 16 in Williamson and Smoys (<xref ref-type="bibr" rid="CIT51">2010</xref>) for further recent work using the PCP-theorem to obtain inapproximability results). </p>
		
		<p>The rough idea of probabilistically checkable proof systems is: “Given a conventional mathematical proof in which a mistake could be hidden in any equation, transform the proof in such a way that the mistake is spread almost everywhere”. This kind of proof is denoted a <italic>holographic </italic>proof. A PCP system for an <bold>NP </bold>problem encodes the <italic>witness </italic>to the problem in a way such that V<italic> </italic>can verify probabilistically the witness by looking only to a few of its bits, so that if it is true V<italic> </italic>accepts with probability 1, and if it is false V<italic> </italic>accepts with probability &lt; 1/2. </p>
		
		<p>The <italic>PCP-theorem </italic>states that holographic proofs exist for problems in <bold>NP, </bold>i.e., that any problem in <bold>NP </bold>has a polynomial length probabilistically checkable proof, where V <italic> </italic>flips <italic>O</italic>(log <italic>n</italic>) random coins and need to look only at <italic>O</italic>(1) bits of the proof. </p>
		
		
		</sec>
		
		
		<sec id="S6">
		<title>6. CONCLUSIONS </title>
		
		<p>Contrary to Hilbert’s Entscheidungsproblem, it remains an open problem to decide whether the truncated Entscheidungsproblem is feasible, i.e., it remains open to decide whether <bold>P</bold>=<bold>NP</bold>.<bold> </bold>It follows from the arguments in the present paper that a positive answer to that question may answer all seven remaining open millennium problems. </p>
		
		<p>At least there are 54 existing bogus proofs of the <bold>P=NP </bold>question. Of them, 26 “proving” the equality, 24 “proving” the strict inclusion, and 3 “proving” that the <bold>P=NP </bold>question is itself undecidable. For further details see <xref ref-type="bibr" rid="CIT52">Woeginger</xref>. Most scientists working in complexity theory believe that <bold>P</bold> ≠ <bold>NP, </bold>but there are some top scientists in the field that disagree with the majority, see for instance <xref ref-type="bibr" rid="CIT34">Lipton’s blog</xref>. </p>
		
		<p>The aim of this manuscript was not to review the complexity field or the status and future of the <bold>P</bold>=<bold>NP </bold>question. As we pointed out, there are some outstanding textbooks dealing with all the past, present and future attempts and results in complexity. Our only incursion into the areas of modern com­plexity has been the topic of interactive proofs, and this is because we think that it is a natural continuation to the truncated Entscheidungsproblem, in the sense that PCP basically tells us how to convince our colleagues that we have a correct proof without giving away any real details. Moreover, it turns out that PCP is a strong characterization of <bold>NP </bold>problems. Could we one day even have a practical holographic way to check proofs? </p>
		
		<p>Complexity theory has studied different models of computation (Turing machine with bounded number of steps, Boolean circuits, quantum algorithms, randomized algorithms), the complexity of measuring different parameters (space, number of iterations, depth of circuits), and several measures of complexity (worst case, average, smoothed). All this work has created a whole cosmos of about 500 complexity classes (Aaronson, Kuperberg and Granade). For most of them, strict relations are not known and, at the end, the main issue boils down to the basic intuition by Kurt Gödel in 1954. </p>
		
		<p>We tried to convey the idea that this is one of the deepest questions of today’s science, affecting not only computer science, mathematics and physics, but also biology, sociology, economics and most human activities. We see this broad coverage of this question as a direct consequence of Turing’s way of looking through <italic>the algorithmic lens </italic>to problems in different disciplines, from cryptography and physics to biology. The spread of modern technologies is accelerating the need for an <italic>algorithmic view </italic>of today’s social, economical, cultural, and political interactions, leading directly to the question <bold>P=NP</bold>?<bold> </bold>For an excellent survey of the role of the algorithmic view into the activities within the modern world, we recommend the book by Easley and Kleinberg (Easley and Kleinberg, <xref ref-type="bibr" rid="CIT17">2010</xref>).</p>

		</sec>
		

		
	</body>

	<back>
	<sec id="notas">
     <title>NOTES</title>
		<fn-group>
      
		  <fn id="NOTE01"><label>1</label><p>In parallel to Turing, A. Church also gave a negative answer to the Entscheidungsproblem using a logic formalism, λ-calculus.</p></fn>
		  
		  <fn id="NOTE02"><label>2</label><p>The complexity is expressed in asymptotic notation, i.e., for very large values of the input. The notation <italic>T(n) = O(f (n)) </italic>means that limn<italic>→∞ T(n)/f(n) = c , </italic>where <italic>c </italic>is a constant.</p></fn>   
		  
		  <fn id="NOTE03"><label>3</label><p>It may happen that there is no feasible solution for input x<italic>, </italic>then k<italic>(</italic>x<italic>, </italic>s<italic>) </italic>does not exist.</p></fn>   
		  
		  <fn id="NOTE04"><label>4</label><p>The correct word is recognized, as the problems are posed as recognition problems, i.e. determining whether a word belongs to a language over a finite alphabet.</p></fn>   
		  
		  <fn id="NOTE05"><label>5</label><p>A positive answer will render all transactions done using RSA insecure.</p></fn>   
		  
		  <fn id="NOTE06"><label>6</label><p>In a large part of the scientific bibliography, the prover and the verifier are respectively named Merlin and Arthur.</p></fn>   
		  
		  <fn id="NOTE07"><label>7</label><p>The authors frame their explanation in the arabic tale “Ali Baba and the forty thieves” from the classic “One thousand and one nights”.</p></fn>   
		  
		  <fn id="NOTE08"><label>8</label><p>The conference version of Goldwasser, Micali and Rackoff (<xref ref-type="bibr" rid="CIT24">1989</xref>) appeared at STOC-85.</p></fn>   
		 
		</fn-group>
	
	</sec>

		<ref-list>
			<title>REFERENCES</title>

			<ref id="CIT01">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Aaronson</surname>
				  <given-names>S.</given-names>
				  </name>	  
			  </person-group>
			  <year>2008</year>
			  <article-title>The limits of quantum computers</article-title>
			  <source>Scientific American</source> 
			  <volume>289</volume>
			  <fpage>62</fpage>
			  <lpage>69</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT02"> 
			<element-citation publication-type="web">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Aaronson</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Kuperberg</surname>
				  <given-names>G.</given-names>
				  </name>
				  <name>
				  <surname>Granade</surname>
				  <given-names>C.</given-names>
				  </name>	  	  	  
			  </person-group>
			  <source>Complexity Zoo</source>
			  <comment>
					<ext-link ext-link-type="uri" xlink:href="http://qwiki.stanford.edu/index.php/Complexity_Zoo">http://qwiki.stanford.edu/index.php/Complexity_Zoo</ext-link>
			  </comment>
			</element-citation>
			</ref>

			<ref id="CIT03">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Agrawal</surname>
				  <given-names>M.</given-names>
				  </name>
				  <name>
				  <surname>Kayal</surname>
				  <given-names>N.</given-names>
				  </name>
				  <name>
				  <surname>Saxena</surname>
				  <given-names>N.</given-names>
				  </name>	  	  	  
			  </person-group>
			  <year>2002</year>
			  <article-title>Primes is in P</article-title>
			  <source>Annals of Mathematics</source> 
			  <volume>2</volume>
			  <fpage>781</fpage>
			  <lpage>793</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT04">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Arora</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Barak</surname>
				  <given-names>B.</given-names>
				  </name>
			  </person-group> 
			  <year>2009</year>
			  <source>Computational Complexity: A Modern Approach</source>
			  <publisher-name>Cambridge University Press</publisher-name>
			</element-citation> 
			</ref>

			<ref id="CIT05">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Arora</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Lund</surname>
				  <given-names>C.</given-names>
				  </name>
				  <name>
				  <surname>Motwani</surname>
				  <given-names>R.</given-names>
				  </name>	
				  <name>
				  <surname>Sudan</surname>
				  <given-names>M.</given-names>
				  </name>
				  <name>
				  <surname>Szegedy</surname>
				  <given-names>M.</given-names>
				  </name>	    	  	  
			  </person-group>
			  <year>1998</year>
			  <article-title>Proof verification and the hardness of approximation problems</article-title>
			  <source>Journal of the ACM</source> 
			  <volume>45</volume>
			  <issue>3</issue>
			  <fpage>501</fpage>
			  <lpage>555</lpage>  
			</element-citation>
			</ref>


			<ref id="CIT06">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Arora</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Safra</surname>
				  <given-names>S.</given-names>
				  </name>	  	    	  	  
			  </person-group>
			  <year>1998</year>
			  <article-title>Probabilistic checking of proofs: A new characterization of NP</article-title>
			  <source>Journal of the ACM</source> 
			  <volume>45</volume>
			  <issue>1</issue>
			  <fpage>70</fpage>
			  <lpage>122</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT07">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Babai</surname>
				  <given-names>L.</given-names>
				  </name>  	    	  	  
			  </person-group>
			  <year>1985</year>
			  <chapter-title>Trading group theory for randomness</chapter-title>
			  <source>Proc. 17th. ACM Symposium on the Theory of Computing</source> 
			  <fpage>421</fpage>
			  <lpage>429</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT08">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Bernstein</surname>
				  <given-names>E.</given-names>
				  </name>
				  <name>
				  <surname>Vazirani</surname>
				  <given-names>U. V.</given-names>
				  </name>	  	    	  	  
			  </person-group>
			  <year>1997</year>
			  <article-title>Quantum complexity theory</article-title>
			  <source>SIAM Journal Computing</source> 
			  <volume>26</volume>
			  <issue>5</issue>
			  <fpage>1411</fpage>
			  <lpage>1473</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT09">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Brucker</surname>
				  <given-names>P.</given-names>
				  </name>    	  
			  </person-group>
			  <year>2006</year>
			  <source>Scheduling Algorithms</source> 
			  <publisher-name>Springer</publisher-name>
			  <comment>fifth edition</comment>
			</element-citation> 
			</ref>

			<ref id="CIT10"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Cook</surname>
				  <given-names>S.</given-names>
				  </name>  
			  </person-group>
			  <year>1971</year>
			  <chapter-title>The complexity of theorem-proving procedures</chapter-title>
			  <source>3rd. ACM Symposium on the Theory of Computing</source> 
			  <comment>pp. 151-158</comment>
			</element-citation> 
			</ref>

			<ref id="CIT11"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Cormen</surname>
				  <given-names>T. H.</given-names>
				  </name>  
				  <name>
				  <surname>Leiserson</surname>
				  <given-names>C.</given-names>
				  </name>
				  <name>
				  <surname>Rivest</surname>
				  <given-names>R.</given-names>
				  </name>
				  <name>
				  <surname>Stein</surname>
				  <given-names>C.</given-names>
				  </name>	  	  	  
			  </person-group>
			  <year>2001</year>
			  <source>Introduction to Algorithms</source>
			  <publisher-name>The MIT Press</publisher-name>
			  <comment>3 edition</comment>
			</element-citation> 
			</ref>

			<ref id="CIT12"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Crescenzi</surname>
				  <given-names>P.</given-names>
				  </name> 
				  <name>
				  <surname>Kann</surname>
				  <given-names>V.</given-names>
				  </name> 	  	  	  	  
			  </person-group>
			  <year>2012</year>
			  <source>A compendium of NP optimization problems</source> 
			</element-citation> 
			</ref>

			<ref id="CIT13"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Dasgupta</surname>
				  <given-names>S.</given-names>
				  </name> 
				  <name>
				  <surname>Papadimitriou</surname>
				  <given-names>C.</given-names>
				  </name>
				  <name>
				  <surname>Vazirani</surname>
				  <given-names>U.</given-names>
				  </name>	   	  	  	  	  
			  </person-group>
			  <year>2008</year>
			  <source>Algorithms</source> 
			  <publisher-name>McGraw-Hill</publisher-name>
			</element-citation> 
			</ref>

			<ref id="CIT14"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Davis</surname>
				  <given-names>M.</given-names>
				  </name> 	   	  	  	  	  
			  </person-group>
			  <year>2000</year>
			  <source>The universal computer: the road from Leibniz to Turing</source> 
			  <publisher-name>Norton</publisher-name>
			</element-citation> 
			</ref>

			<ref id="CIT15">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Díaz</surname>
				  <given-names>J.</given-names>
				  </name>
				  <name>
				  <surname>Kirousis</surname>
				  <given-names>L.</given-names>
				  </name>
				  <name>
				  <surname>Mitsche</surname>
				  <given-names>D.</given-names>
				  </name>
				  <name>
				  <surname>Pérez</surname>
				  <given-names>X.</given-names>
				  </name>	  	  	    	  	  
			  </person-group>
			  <year>2009</year>
			  <article-title>On the satisfiability threshold of formulae with three literals per clause</article-title>
			  <source>Theoretical Computer Science</source> 
			  <volume>410</volume>
			  <fpage>2920</fpage>
			  <lpage>2934</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT16"> 
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Doxiadis</surname>
				  <given-names>A.</given-names>
				  </name> 
				  <name>
				  <surname>Papadimitriou</surname>
				  <given-names>C.</given-names>
				  </name> 
				  <name>
				  <surname>Papadatos</surname>
				  <given-names>A.</given-names>
				  </name> 
				  <name>
				  <surname>di Donna</surname>
				  <given-names>A.</given-names>
				  </name> 	  	  	  	   	  	  	  	  
			  </person-group>
			  <year>2009</year>
			  <source>LOGICOMIX: an epic search for truth</source> 
			  <publisher-name>Bloomsbury</publisher-name>
			</element-citation> 
			</ref>

			<ref id="CIT17">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Easley</surname>
				  <given-names>D.</given-names>
				  </name>
				  <name>
				  <surname>Kleinberg</surname>
				  <given-names>J.</given-names>
				  </name>	  	  	    	  	  
			  </person-group>
			  <year>2010</year>
			  <source>Networks, Crowds and Markets. Reasoning about a highly connected world</source> 
			  <publisher-name>Cambridge University Press</publisher-name>  
			</element-citation>
			</ref>

			<ref id="CIT18">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Edmonds</surname>
				  <given-names>J.</given-names>
				  </name>	  	  	    	  	  
			  </person-group>
			  <year>1965</year>
			  <article-title>Paths, trees, and flowers</article-title>
			  <source>Canad. J. Math.</source> 
			  <volume>17</volume>
			  <fpage>449</fpage>
			  <lpage>467</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT19">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Fama</surname>
				  <given-names>E.</given-names>
				  </name>	  	  	    	  	  
			  </person-group>
			  <year>1965</year>
			  <article-title>The behavior of stock-market prices</article-title>
			  <source>The Journal of Business</source> 
			  <volume>38</volume>
			  <issue>1</issue>
			  <fpage>34</fpage>
			  <lpage>105</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT20">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Feigue</surname>
				  <given-names>U.</given-names>
				  </name>
				  <name>
				  <surname>Goldwasser</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Lovasz</surname>
				  <given-names>L.</given-names>
				  </name>
				  <name>
				  <surname>Safra</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Szegedy</surname>
				  <given-names>M.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>1996</year>
			  <article-title>Interactive proofs and the hardness of approximating cliques</article-title>
			  <source>Journal of the ACM</source> 
			  <volume>43</volume>
			  <issue>2</issue>
			  <fpage>268</fpage>
			  <lpage>292</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT21">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Garey</surname>
				  <given-names>M. R.</given-names>
				  </name>
				  <name>
				  <surname>Johnson</surname>
				  <given-names>D. S.</given-names>
				  </name>	  	  	  	  	    	  	  
			  </person-group>
			  <year>1979</year>
			  <source>Computers and Intractability: A Guide to the Theory of NP-Completeness</source> 
			  <publisher-name>Freeman</publisher-name> 
			</element-citation>
			</ref>

			<ref id="CIT22">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Glynn</surname>
				  <given-names>D. G.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>2010</year>
			  <article-title>The permanent of a square matrix</article-title>
			  <source>European J. of Combinatorics</source> 
			  <volume>31</volume>
			  <issue>7</issue>
			  <fpage>1887</fpage>
			  <lpage>1891</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT23">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Goldreich</surname>
				  <given-names>O.</given-names>
				  </name>
				  <name>
				  <surname>Micali</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Wigderson</surname>
				  <given-names>A.</given-names>
				  </name>	  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1991</year>
			  <article-title>Proofs that yield nothing but their validity or all languages in NP have Zero-Knowledge Proof Systems</article-title>
			  <source>Journal of the ACM</source> 
			  <volume>38</volume>
			  <issue>1</issue>
			  <fpage>691</fpage>
			  <lpage>729</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT24">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Goldwasser</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Micali</surname>
				  <given-names>S.</given-names>
				  </name>
				  <name>
				  <surname>Rackoff</surname>
				  <given-names>C.</given-names>
				  </name>	  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1989</year>
			  <article-title>The knowledge complexity of interactive proof systems</article-title>
			  <source>SIAM J. Computing</source> 
			  <volume>18</volume>
			  <issue>1</issue>
			  <fpage>186</fpage>
			  <lpage>208</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT25">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Graham</surname>
				  <given-names>R.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>1966</year>
			  <article-title>Bounds for certain multiprocessing anomalies</article-title>
			  <source>Bell System Technology Journal</source> 
			  <volume>45</volume>
			  <fpage>1563</fpage>
			  <lpage>1581</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT26">
			<element-citation publication-type="report">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Hajiaghayi</surname>
				  <given-names>M. T.</given-names>
				  </name>
				  <name>
				  <surname>Sorkin</surname>
				  <given-names>G.</given-names>
				  </name>	  	  	  	  	    	  	  
			  </person-group>
			  <year>2003</year>
			  <source>The satisfiability threshold of random 3-SAT is at least 3.52</source> 
			  <comment>Technical report, IBM Research Report</comment> 
			</element-citation>
			</ref>

			<ref id="CIT27">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Hartmanis</surname>
				  <given-names>J.</given-names>
				  </name>
				  <name>
				  <surname>Stearns</surname>
				  <given-names>R.</given-names>
				  </name>	  	  	  	  	    	  	  
			  </person-group>
			  <year>1965</year>
			  <article-title>On the computational complexity of algorithms</article-title>
			  <source>Transactions of the American Mathematical Society</source> 
			  <volume>117</volume>
			  <fpage>285</fpage>
			  <lpage>306</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT28">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Impagliazzo</surname>
				  <given-names>R.</given-names>
				  </name>	
				  <name>
				  <surname>Wigderson</surname>
				  <given-names>A.</given-names>
				  </name>		    	  	  	    	  	  
			  </person-group>
			  <year>1997</year>
			  <chapter-title>P = BPP if E requires exponential circuits: Derandomizing the XOR lemma</chapter-title>
			  <source>Proceedings of tTwenty-Ninth Annual ACM Symposium on the Theory of Computing</source> 
			  <comment>pp. 220-229</comment> 
			</element-citation>
			</ref>

			<ref id="CIT29">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Johnson</surname>
				  <given-names>D. J.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>1974</year>
			  <article-title>Approximation algorithms for combinatorial problems</article-title>
			  <source>Journal of Computer and System Sciences</source> 
			  <volume>9</volume>
			  <fpage>256</fpage>
			  <lpage>278</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT30">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Johnson</surname>
				  <given-names>D. S.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>1992</year>
			  <article-title>The NP-completeness column. The tale of the second prover</article-title>
			  <source>Journal of Algorithms</source> 
			  <volume>13</volume>
			  <issue>3</issue>
			  <fpage>502</fpage>
			  <lpage>524</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT31">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Kaporis</surname>
				  <given-names>A. C.</given-names>
				  </name> 
				  <name>
				  <surname>Kirousis</surname>
				  <given-names>L.</given-names>
				  </name>  
				  <name>
				  <surname>Lalas</surname>
				  <given-names>E. G.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>2006</year>
			  <article-title>The probabilistic analysis of a greedy satisfiability algorithm</article-title>
			  <source>Random Struct. Algorithms</source> 
			  <volume>28</volume>
			  <issue>4</issue>
			  <fpage>444</fpage>
			  <lpage>480</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT32">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Karp</surname>
				  <given-names>R. M.</given-names>
				  </name>		    	  	  	    	  	  
			  </person-group>
			  <year>1972</year>
			  <chapter-title>Reducibility among combinatorial problems</chapter-title>
			  <person-group person-group-type="editor">
				  <name>
				  <surname>Miller</surname>
				  <given-names>R. E.</given-names>
				  </name>
				  <name>
				  <surname>Thatcher</surname>
				  <given-names>J. W.</given-names>
				  </name>	  		    	  	  	    	  	  
			  </person-group>
			  <source>Complexity of Computer Computations</source> 
			  <publisher-loc>NY</publisher-loc>
			  <publisher-name>Plenum Press</publisher-name>
			  <comment>pp. 85-104</comment> 
			</element-citation>
			</ref>

			<ref id="CIT33">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Levin</surname>
				  <given-names>L.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>1973</year>
			  <article-title>Universal sequential search problems</article-title>
			  <source>Probl. Peredachi Inf.</source> 
			  <volume>9</volume>
			  <fpage>115</fpage>
			  <lpage>116</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT34">
			<element-citation publication-type="report">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Lipton</surname>
				  <given-names>R.</given-names>
				  </name>			    	  	  	    	  	  
			  </person-group>
			  <source>Godel's lost letter and P = NP</source> 
			  <comment>
					<ext-link ext-link-type="uri" xlink:href="http://rjlipton.wordpress.com">http://rjlipton.wordpress.com</ext-link>
			  </comment>
			</element-citation>
			</ref>

			<ref id="CIT35">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Lipton</surname>
				  <given-names>R.</given-names>
				  </name>			    	  	  	    	  	  
			  </person-group>
			  <year>2010</year>
			  <source>The P=NP Question and Godel's Lost Letter</source> 
			  <publisher-name>Springer</publisher-name> 
			</element-citation>
			</ref>

			<ref id="CIT36">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Maymin</surname>
				  <given-names>P.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>2011</year>
			  <article-title>Markets are efficient if and only if P=NP</article-title>
			  <source>Algorithmic Finance</source> 
			  <volume>1</volume>
			  <fpage>1</fpage>
			  <lpage>11</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT37">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Mezard</surname>
				  <given-names>M.</given-names>
				  </name>
				  <name>
				  <surname>Parisi</surname>
				  <given-names>G.</given-names>
				  </name>	  	  	  	  	    	  	  
				  <name>
				  <surname>Zecchina</surname>
				  <given-names>R.</given-names>
				  </name>	  	  	  	    	  	  
			  </person-group>
			  <year>2002</year>
			  <article-title>Analytic and algorithmic solution of random satisfiability problems</article-title>
			  <source>Science</source> 
			  <volume>297</volume>
			  <issue>812</issue>
			</element-citation>
			</ref>

			<ref id="CIT38">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Mezard</surname>
				  <given-names>M.</given-names>
				  </name>	  	  	  	    	  	  
				  <name>
				  <surname>Zecchina</surname>
				  <given-names>R.</given-names>
				  </name>	  
			  </person-group>
			  <year>2002</year>
			  <article-title>The random k-satisfiability problem: from an analytic solution to an efficient algorithm</article-title>
			  <source>Physics Review</source> 
			  <comment>E 66-056126</comment>  
			</element-citation>
			</ref>

			<ref id="CIT39">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Michalewicz</surname>
				  <given-names>Z.</given-names>
				  </name>	
				  <name>
				  <surname>Fogel</surname>
				  <given-names>D.</given-names>
				  </name>		  		    	  	  	    	  	  
			  </person-group>
			  <year>1998</year>
			  <source>How to solve it: Modern Heuristics</source> 
			  <publisher-name>Springer</publisher-name> 
			</element-citation>
			</ref>

			<ref id="CIT40">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Mitchell</surname>
				  <given-names>D.</given-names>
				  </name>
				  <name>
				  <surname>Selman</surname>
				  <given-names>B.</given-names>
				  </name>
				  <name>
				  <surname>Levesque</surname>
				  <given-names>H.</given-names>
				  </name>	  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1992</year>
			  <chapter-title>Hard and easy distributions of sat problems</chapter-title>
			  <source>Proceedings of the 10th. National Conference on Artificial Intelligence (AAAI)</source> 
			  <fpage>459</fpage>
			  <lpage>465</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT41">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Moore</surname>
				  <given-names>C.</given-names>
				  </name>
				  <name>
				  <surname>Mertens</surname>
				  <given-names>S.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>2011</year>
			  <source>The Nature of Computation</source> 
			  <publisher-name>Oxford University Press</publisher-name>  
			</element-citation>
			</ref>

			<ref id="CIT42">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Nissan</surname>
				  <given-names>N.</given-names>
				  </name> 	  	  	  	  	    	  	  
			  </person-group>
			  <year>2004</year>
			  <source>John Nash's letter to the NSA</source> 
			  <comment>http://agtb.wordpress.com/2012/02/17/john-nashs-letter-to-the-nsa/, </comment>
			  <comment>
						<ext-link ext-link-type="uri" xlink:href="http://agtb.wordpress.com/2012/02/17/john-nashs-letter-to-the-nsa/">http://agtb.wordpress.com/2012/02/17/john-nashs-letter-to-the-nsa/</ext-link>, February 17
			  </comment>
			</element-citation>
			</ref>

			<ref id="CIT43">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Pratt</surname>
				  <given-names>V. R.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1975</year>
			  <article-title>Every prime has a succinct certificate</article-title>
			  <source>SIAM J. Comput</source> 
			  <volume>4</volume>
			  <issue>3</issue>
			  <fpage>214</fpage>
			  <lpage>220</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT44">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
					  <surname>Quisquater</surname>
					  <given-names>J.-J.</given-names>
				  </name>
				  <name>
					  <surname>Quisquater</surname>
					  <given-names>M.</given-names>
				  </name>
				  <name>
					  <surname>Quisquater</surname>
					  <given-names>M.</given-names>
				  </name>
				  <name>
					  <surname>Quisquater</surname>
					  <given-names>M.</given-names>
				  </name>
				  <name>
					  <surname>Guillou</surname>
					  <given-names>L. C.</given-names>
				  </name>
				  <name>
					  <surname>Guillou</surname>
					  <given-names>M. A.</given-names>
				  </name>
				  <name>
					  <surname>Guillou</surname>
					  <given-names>G.</given-names>
				  </name>
				  <name>
					  <surname>Guillou</surname>
					  <given-names>A.</given-names>
				  </name>
				  <name>
					  <surname>Guillou</surname>
					  <given-names>G.</given-names>
				  </name>
				  <name>
				  <surname>Guillou</surname>
				  <given-names>S.</given-names>
				  </name>	    
				  <name>
				  <surname>Berson</surname>
				  <given-names>T. A.</given-names>
				  </name>	  	  	  	  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1989</year>
			  <chapter-title>How to explain zero-knowledge protocols to your children</chapter-title>
			  <person-group person-group-type="editor">
				  <name>
				  <surname>Brassard</surname>
				  <given-names>G.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>  
			  <source>CRYPTO-89, volume 435 of Lecture Notes in Computer Science</source> 
			  <fpage>628</fpage>
			  <lpage>631</lpage>
			  <publisher-name>Springer</publisher-name>
			</element-citation>
			</ref>

			<ref id="CIT45">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Shamir</surname>
				  <given-names>A.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1992</year>
			  <article-title>IP = PSPACE</article-title>
			  <source>SIAM J. Comput.</source> 
			  <volume>39</volume>
			  <issue>4</issue>
			  <fpage>869</fpage>
			  <lpage>877</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT46">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Shor</surname>
				  <given-names>P. W.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1997</year>
			  <article-title>Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer</article-title>
			  <source>SIAM J. Comput</source> 
			  <volume>26</volume>
			  <issue>5</issue>  
			  <fpage>1484</fpage>
			  <lpage>1509</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT47">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Singh</surname>
				  <given-names>S.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>2000</year>
			  <source>The Code Book</source> 
			  <publisher-name>Anchor Books</publisher-name>
			</element-citation>
			</ref>
			
			<ref id="CIT48">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Trakhtenbrot</surname>
				  <given-names>B.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1984</year>
			  <article-title>A survey of russian approaches to perebor (brute-force searches) algorithms</article-title>
			  <source>Annals of the History of Computing</source> 
			  <volume>6</volume>
			  <issue>4</issue>  
			  <fpage>384</fpage>
			  <lpage>400</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT49">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Turing</surname>
				  <given-names>A. M.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1939</year>
			  <article-title>Systems of logic based on ordinals</article-title>
			  <source>Proceedings of the London Mathematical Society-2</source> 
			  <volume>45</volume>
			  <fpage>161</fpage>
			  <lpage>228</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT50">
			<element-citation publication-type="journal">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Valiant</surname>
				  <given-names>L. G.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>1979</year>
			  <article-title>The complexity of enumeration and reliability problems</article-title>
			  <source>SIAM J. Comput.</source> 
			  <volume>8</volume>
			  <fpage>410</fpage>
			  <lpage>421</lpage>  
			</element-citation>
			</ref>

			<ref id="CIT51">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Williamson</surname>
				  <given-names>D.</given-names>
				  </name> 
				  <name>
				  <surname>Smoys</surname>
				  <given-names>D.</given-names>
				  </name> 	   	  	  	  	  	    	  	  
			  </person-group>
			  <year>2010</year>
			  <source>The Design of Approximation Algorithms</source> 
			  <publisher-name>Cambridge University Press</publisher-name>
			</element-citation>
			</ref>

			<ref id="CIT52">
			<element-citation publication-type="web">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Woeginger</surname>
				  <given-names>G.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <source>The P vs. NP page</source>
			  <comment>
						<ext-link ext-link-type="uri" xlink:href="http://www.win.tue.nl/gwoegi/P-versus-NP.htm">http://www.win.tue.nl/gwoegi/P-versus-NP.htm</ext-link>
			  </comment>
			</element-citation>
			</ref>


			<ref id="CIT53">
			<element-citation publication-type="book">
			  <person-group person-group-type="author">
				  <name>
				  <surname>Wolf</surname>
				  <given-names>W.</given-names>
				  </name>  	  	  	  	  	    	  	  
			  </person-group>
			  <year>2011</year>
			  <source>Modern VLSI Design</source> 
			  <publisher-name>Prentice-Hall</publisher-name>
			  <comment>fourth edition</comment>
			</element-citation>
			</ref>

		</ref-list>
	</back>
</article>