It's an intrinsically hard problem, but one that can't necessarily be solved at the hardware level.
For a large number of processors on the right tasks, just getting instruction level parallelism (e.g.) is not even tiny bit as good as using an optimized algorithm.