views:

1092

answers:

14

Aside from those mentioned in Wikipedia (Unsolved problems in computer science), what are other Computer Science problems that has yet to be solved?

I thought about asking this question because other great minds out there might not be aware that such problems exist.

(Set to community wiki; one CS problem per post please)

Those that are posted in Wikipedia are:

+16  A: 

I still haven't figured out where the Any Key is.



Ok, in all seriousness (and in order to contribute something worthwhile) how about the problem of applying parallel computing to "serial" tasks? The theoretical limits of serial computation are being reached, whereas parallel computing has no theoretical limit. Applying parallel computing to serial problems is very difficult however. For example, a serial problem might require a series of calculations, with the results of each calculation in the series relying on the result of the previous calculation. How do you accomplish this task in a parallel manner?

This article illustrates things from a theoretical point of view and brings up the notion of speculative computing as a possible solution (with a neat point about human brains). This is a very new area, however, and solutions don't come easily.

zombat
HAHA, so many answers. But I wonder how you guys missed this : A browser which follows every single CSS rule present in W3C's css rule set.And why this particular post is not allowing me to submit an answer, I am getting a page not found error.
pokrate
+1 for Any Key.
musicfreak
@pokrate: because that's not a CS problem, and you mean "CSS specification", and there's more than one CSS spec (so your answer is ambiguous), but mostly it's a poor answer because a solution is conceivable. We don't even know if some of the CS problems are solvable. @zombat: Amdahl's and Gustafson's laws are apropos.
outis
+1  A: 

Binding UI elements to a database.

There are many miserable attempts out there and, though I hate to say it, .NET is probably the best one today. Just think about it: After literally 30 years, it's still a pain to build a simple editor for a person with several addresses.

Aaron Digulla
While it's an interesting problem, it isn't actually related to Computer Science. Software engineering, maybe. But CS?
Tal Pressman
And, similarly, how to a database under source control. Definitely not a CS problem, but definitely not solved either.
Unsliced
+1  A: 

An interesting thing here would be the definition of problem. A problem is simply room for improvement under given resources (and not proven to be unsolvable). so by this new definition we have a lot of problems in every field.

A problem may be to improve a factorial complexity solution to exponential complexity solution. (If its not proved that it doesnt exit).

Umair Ahmed
+6  A: 

Finding agreement on which programming language is used to solve what problems.

Don Johe
Impossible... ;-)
peSHIr
The answer is "Emacs". ... What?
zombat
+1  A: 

how to improve the NetFlix algorithm to the NEXT 10% :) (congratulations to The Ensemble!)

pageman
Don't count your chicken yet, they might or might not have the better test score. ;)
KTC
@KTC really? did they extend the deadline? http://www.netflixprize.com/closed
pageman
@pageman, "The RMSE for the first "quiz" subset will be reported publicly on the Site; the RMSE for the second "test" subset will not be reported publicly but will be employed to qualify a submission as described below." The public leaderboard ranking based on the first set may or may not correspond to the final ranking based on the private second set.
KTC
@KTC looks like you were right, Yehuda Koren of BellKor got a message that they had the lowest RMSE by .0001 (wow!)
pageman
+3  A: 

The Open Problem Garden has a small list you might be interested in:

ars
Uh, possibilities for endless hours of creative procrastination. My boss will not be happy...
Don Johe
+2  A: 

Graph isomorphism.

Basically, most naturally occuring problems are either easy (P) or probably hard (NP). There were, if memory serves, 2 or 3 problems that fell "in-between". Primality was one, but that was recently proven to be in P. Graph Isomorphism is th eother.

Graph isomorphism is this question: Given G1 and G2, is G2 simply G1, but "relabelled"? Equivelantly, can we relabel G2 so that it is the exact same as G1?

Wiki articles! A general overview, and the article concerning the issue of its complexity class here.

Edit: I really have to remember to type ALL the words.

Agor
+1  A: 

Successfully winning against humans in the game of Go. Wiki Article about computers and go.

Smandoli
.... although perhaps this is too general. It depends on the meaning of "problem," I suppose. If the Turing Test is relevant, I guess this is too.
Smandoli
As I read the wiki article, I become sure this would be more in the category of a Grand Challenge. Interestingly, it's not found in http://en.wikipedia.org/wiki/Grand_Challenge_problem. Now how can THAT be?
Smandoli
+1  A: 

Note that the Church-Turing thesis is not actually, really a statement about mathematics. It is a statement about the physical world.

The closest you can come to a proof of it is something like "it is true under the standard model".

This isn't to say it couldn't be formalized to a larger extent, but the best you can hope for is to clarify specific assumptions about the physical world.

Captain Segfault
How so? It's a statement about the computability of certain functions. Granted, the thesis is stated in terms of being solvable by a Turing Machine, but that's not the same as a physical computer. For example, a TM is allowed to have infinite memory. It can have only a finite set of states, but the number of states is not strictly bounded, so you can have "as many as you want".
Clayton
In computability theory, however, there are various constructs to allow for different worlds of computation. The simplest example is one where Turing Machines have access to a so-called "Oracle", which as the name implies simply gives an answer to a certain problem. If a TM has an oracle to the Halting Problem, you're in an entirely different world of computation, and even crazier problems are possible (and always, there are more ones that are uncomputable).Here's a miserably-technical wiki article: http://en.wikipedia.org/wiki/Arithmetical_hierarchy
Agor
@Clayton What it says, informally, is that any physical computer you can make can be simulated by a turing machine.From a purely mathematical perspective it's easy to come up with counterexamples to the thesis -- as a simple example, a TM with a halting oracle. The only thing that makes such counterexamples invalid is the physical world.
Captain Segfault
I would not consider a TM that access an Oracle a proper TM any more than I'd consider an FSA that has access to a stack a proper FSA. In any case, I believe the formal CT thesis relies on the formal definition of a TM. That said, what CT proposes is that even if you did have an Oracle, the functioning of that Oracle could be described by a TM, assuming the Oracle solves problems algorithmically, as opposed to some form of "magic". I don't think even Quantum Algorithms would qualify as "magic". They're faster, but they're still algorithms. As soon as you invoke magic all bets ar off.
Clayton
Just re-read the section on CT from my old Formal Languages book (Sudkamp 91), and it does agree with your statement that CT is not a mathematical theorm. It doesn't say it's a statement about the physical world though, but rather that it's an attempt to define algorithmic computation. Basically it says that a TM can implement any algorithm, and that if a TM cannot be constructed to implement a solution for a problem, that problem is not "decidable", which is rougly the same as "solveable".
Clayton
@Clayton Note that a quantum computer can still decide the same set of languages as a turing machine (just maybe more efficiently) so it has no impact on CT. A physically realizable halting oracle would, precisely because it couldn't be implemented "algorithmically".
Captain Segfault
@Clayton "statement about the physical world" and "attempt to define algorithmic computation" are flip sides of the same thing. If you can physically realize a counterexample to CT then its (probably) a bad definition of computation.
Captain Segfault
+3  A: 

Dynamic optimality for splay trees.

Fix a set of queries into a binary search tree. ("Find node 6. Find node 13. Find node 42"...) Splay trees are statically optimal: if you create a fixed binary search tree and run the queries against it, it will run no more than a constant factor faster than running the queries against a splay tree.

This is somewhat comparing apples to oranges, since a splay tree is not a static tree. The open question is whether splay trees are dynamically optimal: is it within a constant factor of a tree that can modify itself during the queries?

Captain Segfault
+1 - interesting. I had never heard of those before.
zombat
+3  A: 

ORM is the Vietnam of Computer Science -Ted Neward

Which is to say, it isn't solved to many peoples satisfaction.

CoderTao
Or is an expensive and essentially pointless excercise with no hope of success?
Clayton
Aye, that too...
CoderTao
+6  A: 

Natural language processing that actually works. Can't believe this hasn't been mentioned yet.

ehsanul
If you can make an algorithm that can compare which of two NLP algorithms "actually work" or simply "work better" that would be a start!
Jared Updike
+1  A: 

The traveling salesman problem i believe still remains unsolved.

Sergey
That's not an unsolved problem. It has been proven to be NP-Complete, but that's not the same as unsolved. A brute force solution is to simply calculate the length of all possible routes, then pick the shortest one. That's computationally expensive to the point of being impractical, but it is a solution.
Clayton
It still doesn't satisfy any formal efficiency standards, but you're correct, technically it is solved.
Sergey
It's completely solved in the sense that it's known to be NP-complete.
Captain Segfault
A: 

Re-parsing the answers, I think I found the combining element of at least 2 previous answers is the problem of breaking the barrier between syntax and semantic. Which is the problem actually every programmer and computer scientist is working on. (Lately "semantic" is increasingly appearing as topic of whole CS-areas.) Most of the fields and topics we have opened up start with the promise to break this barrier. Up to now all of them sooner or later they reduced from "creating intelligence" to "intelligent algorithms".

AI is probably the research area where this has been most prominent, but in the end, many other people have been dreaming of what is basically a "Do what I mean"-button. (I could fit in the evolutionary algorithms, neural networks, and lately the semantic web-people in here.)The main hindrance being that everything a computer does is shifting bits.

I am probably spreading prejustice and foolery here, because for materialists this is not a fundamental problem, because shifting bits is probably all we are doing in the human brain. It simply might be a problem of complexity.

Well... I am not willing to start that discussion here, and besides syntax vs. semantics is a quite general topic. Spending too much time on this definitely keeps one from solving some of the more specific problems mentioned in other answers. Tackling these is much more effective but it helps to keep in mind that there are very fundamental barriers here, that we are not (yet) able to break through.

Don Johe