We study the tournament fixing problem (TFP), which asks whether a tournament organizer can rig a single-elimination (SE) tournament such that their favorite player wins, simply by adjusting the initial seeding. Prior results give two perspectives of TFP: on the one hand, deciding whether an arbitrary player can win any SE tournament is known to be NP-complete; on the other hand, there are a number of known conditions, under which a player is guaranteed to win some SE tournament. We extend and connect both these lines of work. We show that for a number of structured variants of the problem, where our player is seemingly strong, deciding whether the player can win any tournament is still NP-complete. Dual to this hardness result, we characterize a new set of sufficient conditions for a player to win a tournament. Further, we give an improved exact algorithm for deciding whether a player can win a tournament.

Although many of the algorithms you've learned so far are applied in practice a lot, it turns out that the world is dominated by real-world problems without a known provably efficient algorithm. Many of these problems can be reduced to one of the classical problems called NP-complete problems which either cannot be solved by a polynomial algorithm or solving any one of them would win you a million dollars (see Millenium Prize Problems) and eternal worldwide fame for solving the main problem of computer science called P vs NP. It's good to know this before trying to solve a problem before the tomorrow's deadline:) Although these problems are very unlikely to be solvable efficiently in the nearest future, people always come up with various workarounds. In this module you will study the classical NP-complete problems and the reductions between them. You will also practice solving large instances of some of these problems despite their hardness using very efficient specialized software based on tons of research in the area of NP-complete problems.

I still remember how I felt when I was first introduced to NP-Complete problems. Unlike the material I had learned up to that point, there seemed to be such mystery and intrigue and opportunity surrounding these problems. To use the example from Garey and Johnson's book "Computers and Intractability: A Guide to the Theory of NP Completeness", these were problems that not just one researcher found difficult, but that a number of researchers had been unable to find efficient algorithms to solve them. So what they did was show that the problems all had a special relationship with one another, and thus through this relationship if someone were to discover an algorithm to efficiently solve any one of these problems they would be able to efficiently solve all the problems in this class. This immediately got my mind working into a world where I, as a college student, would discover such an algorithm and be mentioned with the heavyweights of computer science like Lovelace, Babbage, Church, Turing, Cook, Karp and Dean.

Computer science is the subject that studies what computers can do and investigates the best ways you can solve the problems of the world with them. It is a huge field overlapping pure mathematics, engineering and many other scientific disciplines. In this video I summarise as much of the subject as I can and show how the areas are related to each other. Some people have commented that I should have included computer security alongside hacking, and I completely agree, that was an oversight on my part. Apologies to all the computer security professionals, and thanks for all the hard work! 2. I also failed to mention interpreters alongside compilers in the complier section.

If you thought solving a Rubik's cube was difficult, you were right and maths can back you up. A recent study shows that the question of whether a scrambled Rubik's cube of any size can be solved in a given number of moves is what's called NP-complete โ that's maths lingo for a problem even mathematicians find hard to solve. To prove that the problem is NP-complete, Massachusetts Institute of Technology researchers Erik Demaine, Sarah Eisenstat, and Mikhail Rudoy showed that figuring out how to solve a Rubik's cube with any number of squares on a side in the smallest number of moves will also give you a solution to another problem known to be NP-complete: the Hamiltonian path problem. That question asks whether there is route that visits each vertex exactly once in a given graph consisting of a collection of vertices connected by edges, like a triangle, pentagram, or the vast connections in a social network such as Facebook. It's reminiscent of the travelling salesperson problem, which aims to find the shortest route that visits several cities only once, probably the most famous NP-complete question of all.