August 13th, 2010


A simple explanation to P and NP

lebeautemps asked for a simple explanation of the whole P=NP thing that's been circulating the internet recently. I figured I'd give it a go - I'd appreciate it if the more knowledgable on my friends list could correct anything particularly stupid I'd said...

A "P" problem is one that is easily solved through a series of steps, without trying every single combination - such as "sort a bunch of names into alphabetical order". You don't have to try every single possible list of names in order to sort a list of names, you can just use a series of comparisons to shuffle them up and down until they're sorted.

An non-P problem is one that has no known efficient set of steps for producing an answer, and thus requires you to try possibilities until you find one that's right. A common example of one that is thought to be hard is The Travelling Salesman problem - "given a bunch of cities and a bunch of roads connecting them, what is the shortest route that will take the salesman to each city exactly once?" There's no known solution to this problem other than "start trying solutions and keep going until you've found one." (although there are ways of excluding obviously wrong answers quickly).

NP is the superset of all problems that are easy to check, P is the smaller subset of all problems that are easy to solve, and proving that they are the same thing would mean that all problems that are easy to check are also easy to solve.

One of the reasons this is important is that pretty much all of the security methods we use online rely on things like "integer factorization" not being P - the fact that we can multiply two large numbers together to get an answer very quickly, but breaking that large number back into the two component parts requires every possibility to be checked (which takes years/decades for very large numbers).

The recent fuss is because of a paper that was published claiming that P!=NP - i.e. that there are definitely problems that are easy to check, but not easy to solve. This would mean, for example, that there is no simple way to convert the big number back into its two components, and thus that all of our security is safe (from that particular direction, anyway).

Anyone recommend some software?

My brother is looking for some software - anyone think of decent software that does this?
I can think of a big diagram and linking together all the individual parts so that it creates a map of the system and then what makes up those parts and then what makes up those parts until you get down to a level of granularity that actually is useful.
E.g. the World is made up of continents, on each continent there are factions, each faction owns lands, armies and people,  Each faction has an ethos.  Each land is made up of regions.  Each region has a number of towns and cities.  Each City is controlled by a Group.  Each group has a leader, a Name, and a number of players in it.
And so on down in detail. 
You could have a massive database of this... but I'd prefer some kind of picture representation.  Even better one that you can focus on the individual parts (zoom in and out so to speak).

Delicious LiveJournal Links for 8-13-2010