Das Video kommt von YouTube: erst beim Abspielen verbindet sich die Seite mit YouTube (Google).
Biggest Puzzle in Computer Science: P vs. NP
Das Wichtigste aus dem Video
Tipp auf eine Zeit – das Video springt genau dorthin.
Transkriptautomatisch erstellt · 169 Zeilen
- Is it possible to invent a computer that computes anything in a flash? Or do problems exist that would stump even the most powerful computers imaginable?
- How complex is too complex for computation? These questions are central to a fascinating conundrum
- called the P versus NP problem. P versus NP,
- is one of the great unsolved problems in all of math and computer science, or, you know, really in all of human knowledge, if we're being honest.
- Anyone who finds a solution could win a handsome $1 million prize offered by the Clay Institute.
- And this solution could lead to breakthroughs in everything from medicine to artificial intelligence,
- and even the perfect game of Mario Brothers. But it would come at a cost.
- A definitive answer to the P versus NP problem could break your bank account and even lead to the end of the internet as we know it.
- To find out why, let's start with a simple logic puzzle. A robot arrives in a foreign land where everyone either always tells the truth
- or always lies. The robot reaches a fork in the road with two choices.
- One path leads to safety in the land of truth tellers, while the other leads to doom. In the land of liars.
- A sentry appears. But it's unclear which group they belong to.
- What question can the robot ask to determine the safe route? Here's some options...
- And here's the answer. With this one question,
- both types of sentries would point to the correct safe path, allowing the robot to solve the problem quickly.
- Now, what if the robot encounters multiple sentries and dozens of pathways leading who knows where?
- What can it do to find safe passage? Compared to the first problem,
- is a correct solution here proportionately more difficult to find? Or is it exponentially harder?
- Maybe there's a shortcut that could speed things up? Or maybe finding a solution to this complex situation is nearly impossible.
- The question of how hard a problem is to solve lies at the very heart of an important field of computer science called computational complexity.
- Computational complexity is the study of the inherent resources such as time and space that are needed to solve
- computational problems, such as factoring numbers, for example. And especially it's the study of how those resources scale
- as the problems get bigger and bigger. Computational complexity theorists want to know which problems are solvable using clever algorithms.
- And which problems are truly difficult, maybe even practically impossible for computers to crack.
- So how do computers solve problems in the first place? A computer's core function is to compute.
- These machines perform basic mathematical operations like addition and multiplication faster than any human.
- In 1936, a 23-year-old British University student, Alan Turing, developed a fundamental theory of computation.
- While attempting to solve a problem about the foundations of math, Turing claimed in a paper,
- it's possible to invent a machine which can compute any computable sequence given enough time and memory.
- This simple, theoretical Turing machine, which includes a place to store information
- and a device to read and write new information based on a set of instructions,
- is the basic framework for all digital computers to come. One of the key insights of computer science is that Turing machines are
- mathematically equivalent to just about any other programming formalism that anyone has invented,
- at least for conventional computers. Inside a digital computer, data are represented as binary bits,
- sequences of ones and zeros. And these bits can be manipulated through logical operations
- using a branch of math that preceded the invention of computers called Boolean algebra.
- The basic rules of Boolean algebra were formulated in 1847 by English mathematician, George Boole.
- Boolean algebra formulates decision problems, yes or no problems that can be asked in sequence to answer complicated questions.
- The output of a Boolean function for any given input can be represented in what's called a truth table, and it is either one or zero.
- True or false. Expressions in Boolean logic consist of multiple variables linked together by
- three logic gates: AND
- OR NOT.
- These logic gates work like this. For an AND gate, when the inputs for both variables X and Y are true,
- the expression evaluates to true otherwise it's false. With the OR gate,
- the expression evaluates to true when either X or Y is true. A NOT gate simply inverts the value of a variable,
- switching a true to false or vice versa. By using only these three simple,
- logical operations and building them up into various configurations, Boolean formulas can operate like a Turing machine and theoretically solve any
- computable problem. In 1937,
- an electrical engineering graduate student, Claude Shannon, demonstrated in his master's thesis that the Boolean operations AND, OR,
- and NOT can be calculated using electronic switching circuits. A decade later,
- Bell Labs introduced the first solid state semiconducting transistor. Transistors are simple, electronically controlled switches with three wires,
- a control wire, and two electrodes to input and output data. They can be in one of two states, on or off,
- representing either a one or zero. True or false. Transistors can be combined and arranged in different configurations
- to mimic the Boolean logic gates of AND OR, and NOT. By combining enough of these transistors together
- on computer chips in complex arrangements called circuits, it's theoretically possible to compute almost anything,
- anything that is computable, that is, More about that later.
- In the 1950s, Hungarian American mathematician and computer scientist, John von Neumann brought the modern computer
- one step closer to reality. He developed the architecture of the universal electronic computer,
- the same architecture at work inside most electronic computing devices today, from smartphones to supercomputers.
- Since the mid 1950s when the first transistor based electronic computers were built, the technology has swiftly advanced.
- by scaling down and cramming more and more transistors onto tiny chips, computing power and speed has nearly doubled every two years.
- Today, computers can perform trillions of calculations per second. But even that's not always good enough.
- There's a class of problems that computers can never solve. A quandary Alan Turing foresaw in the same paper where he conjured up his
- calculating machine. Turing had the insight and in fact proved that not everything is computable.
- The limiting factor is not the hardware, but instead the software or program. Computers solve problems by followinglists of instructions called algorithms.
- An algorithm just means a step-by-step procedure for solving a problem. Running an algorithm is analogous to following the steps of a recipe
- or an IKEA assembly manual. Here's an example of an algorithm that sorts a list of numbers from lowest to highest.
- It works like this. Take a random list of numbers.
- Start with a first number from the left, which here is six. Now look through the remaining numbers and identify the smallest one,
- which in this case is three. Next, swap the places of six and three,
- and you'll have the smallest number in the group on the left. Take a second pass this time,
- starting with the second number from the left. Swap with the smallest and so on.
- After enough passes, all the numbers are sorted, lowest to highest using this simple algorithm.
- Any problem that can be solved by an algorithm is computable. But by the 1970s, computer scientists realize that not all computable problems
- are created equal. Some turned out to be easy,
- while others seemed hard. For problems like multiplication,
- computer scientists found really fast algorithms, but for others, like optimizing the operations in a factory,
- they couldn't find any easy solutions. And it turned out that some problems were so hard,
- the only known way to solve them could end up taking more solution steps than there are subatomic particles in the universe.
- Thus, the P versus NP problem was born. So what exactly does P and NP mean?
- P problems, or problems that can be solved in polynomial time are the types of problems that are relatively easy for computers to solve.
- The vast majority of what we use our computers for on a day-to-day basis, you know, you could think of as solving various problems in P.
- From finding the shortest path between two points on a map. to sorting a list of names alphabetically,
- or searching for an item on a list. These are all examples of polynomial P problems.
- A polynomial is a mathematical function that can contain variables raised to a fixed power or exponent
- like N to the power of two or n cubed. The time it takes a computer to solve P problems grows polynomially
- as the input increases in size. Given enough computing power,
- all problems in P can be solved by a computer in a practical amount of time. Now, NP problems are a class of problems that share a unique feature.
- If given the solution, it turns out to be quick and easy to verify If it's correct. Easily solved P problems are contained within the class of all NP problems
- because they can also be verified relatively quickly in polynomial time. However, there's a class of NP problems that are easy to check,
- yet seem difficult to solve in the first place. It's really helpful to think about something like a jigsaw puzzle or a Sudoku puzzle, right?
- We all have experience that, you know, these could require an enormous amount of trial and error to solve.
- But nevertheless, you know, if someone says that they solved it, it's much easier to check whether they did.
- If someone gives you a completed hard puzzle like a large Sudoku or crossword, the answers can be verified much fasterthan it can be solved in the first place.
- It's the same for a computer. The reason these types of NP problems can be more difficult
- for a computer to solve is because as far as we know, their complexity increases exponentially as their input increases.
- An exponential function has the variable in the exponent like two to the power of N. Here's an example of exponential versus polynomial growth.
- For the same input. With these hard, exponential NP problems,
- the increased complexity of large inputs can quickly exceed the limits of what a computer can compute in a reasonable amount of time.
- And solving them using brute force techniques alone is practically impossible. You could be doing that, you know,
- from from now until the whole universe has degenerated into black holes and you wouldn't have even made a dent in it.
- Over the years, mathematicians discovered clever polynomial algorithms for some seemingly
- difficult NP problems. Proving that these problems were actually in the simpler class P
- and making them solvable by a computer. This opened the door to the question,
- are all NP problems really P problems? Could every problem that is seemingly intractable for a computer to solve today
- turn out to be easy in the future? P equaling NP would have far ranging consequences.
- Solutions to nearly any problem would be well within our reach. AI would become smarter overnight.
- Businesses could solve complicated optimization and logistics problems boosting the global economy.
- And scientists could make once unthinkable breakthroughs. Maybe we could even find a cure for the common cold?
- However, if P equals NP, that would also mean that all current methods for strong encryption
- security measures that protect everything from your online privacy to your crypto wallet
- would instantly become obsolete. It would be hacker heaven.
- In the 1970s, mathematicians Stephen Cook and Leonid Levin
- working independently on opposite sides of the Iron Curtain, made important discoveries that have come to define the P versus NP problem.
- They discovered the idea of NP Completeness. Almost all of the notoriously difficult problems in NP are actually equivalent.
- So if you could prove one of those is equal to P, you've solved all of P versus NP.
- This is kind of like a veterinarian realizing that even though toy poodles and St. Bernard's look very different,
- they're in fact the same species and a treatment that works on one would very well work on the other.
- There are hundreds of known NP Complete problems, and finding a single solution would lead to breakthroughs on multiple fronts,
- including physics, economics, and biology. Not to mention computer science itself.
- NP Complete problems include a host of famous problems you may have heard of, including the Knapsack Problem,
- which involves the most efficient way to pack items like in a suitcase. Or the Traveling Salesman problem, which involves route planning and navigation.
- Complicated NP Complete problems, even underlie everyday tasks
- like figuring out how to deliver millions of Amazon packages on time or efficient in life-saving matching of organ donors with recipients,
- and even mastering games like Tetris or Candy Crush, All known NP Complete problems can be transformed into one another.
- The most famous of these is what's called the Boolean Satisfiability problem, or SAT.
- SAT is one of the most famous problems in computer science. Besides its theoretical interest,
- it's a very fundamental workhorse problem in applied computer science, especially in software verification.
- SAT is a decision problem that asks: for a given Boolean formula or
- expression made up of N variables and the logical operators AND, OR, and NOT.
- Is there a combination of true-false variable assignments for which the entire formula evaluates to true?
- If so, then it is said to be satisfiable.
- If someone can devise a clever fast algorithm for the SAT problem making it easy to compute, then voila! Proof that P equals NP.
- However, most computer science researchers believe that P doesn't equal NP. And proving P doesn't equal NP has turned out to be one of the hardest problems
- in math and computer science. In the 1980s,
- one promising avenue of research emerged called circuit complexity. The field studies the complexity of Boolean functions when represented as circuits.
- The behavior of any given Boolean function can be described by its truth table. However, the same truth table can be produced by circuits of differing complexity
- as seen in these two examples. A Boolean function's circuit complexity
- is defined as the total number of logic gates in the smallest circuit, which can compute that function.
- Researchers study circuit complexity to understand the limits of computation and to optimize the design of algorithms and hardware.
- For some Boolean functions, the minimum number of logic gates grows polynomially
- as the number of input variables increases. These are said to have low circuit complexity
- and are analogous to P-class computational problems. Functions where the number of necessary logic gates grows exponentially with
- increasing input variables are said to have high circuit complexity.
- One potential approach for proving P doesn't equal NP required researchers to identify a single function known to be in the class of NP,
- that's also definitely has high circuit complexity. In 1949, Claude Shannon proved that most Boolean functions have high circuit complexity.
- So how hard could it be to find one instance? Harder than it sounds.
- Alas researchers encountered a mathematical roadblock called the Natural Proofs Barrier.
- This barrier implies that any proof that P doesn't equal NP using known circuit complexity techniques would have to have a bizarre and self-defeating character.
- Clearly, a different way forward was needed. While most researchers started looking for other approaches,
- some began to investigate the Natural Proofs Barrier itself, leading them to new questions.
- How hard is it to determine the hardness of various computational problems? And why is it hard to determine how hard it is?
- It's a very meta area of computer science called meta-complexity. It has turned out that a lot of the progress that one can make on
- problems like the P versus NP problem today, you know, involves sort of self-referential,
- arguments, involves sort of turning inward. Given the limits of known techniques,
- meta-complexity researchers are searching for new approaches to solve some of the most important
- unanswered questions in computer science. And crucially meta-complexity is intimately connected
- to the question of whether provably secure cryptography schemes even exist. One important current focus of research is what's called the Minimum Circuit
- Size Problem, or MCSP. MCSP is interested in determining the smallest possible circuit that can
- accurately compute a given Boolean function. Is there a simple solution?
- The Minimum Circuit Size Problem is a problem about circuit complexity, but how complex is the problem itself?
- Researchers suspect that MCSP is NP complete, but unlike many other similar problems, they haven't been able to prove it.
- A proof of MCSP's NP-completeness would be a big step towards showing that secure cryptography does exist.
- And recently there's been tantalizing progress towards that goal. Like the robot searching for safe passage in a foreign land,
- the pursuit of meta-complexity is blazing a trail for theoretical computer science. A path that may lead to an answer to whether P equals NP or not.
- If civilization lasts long enough, you know, I would tend to think that probably problems like P versus NP will
- someday be solved, and my main uncertainty is, is it humans who solve them or is it AI?
- Is it GPT 10 that solves the P versus NP problem for us?
- And then will we be able to understand the solution if it does?