|
![](/i/fill.gif) |
Orchid XP v8 <voi### [at] dev null> wrote:
> >> Although it did leave me wondering for a moment: Am I actually "good at
> >> math"? Or am I just good at following directions?
> >
> > Perhaps it could be compared to computer algorithms: If you are given
> > a computational problem for which you need to create an efficient algorithm,
> > how good are you at coming up with such an algorithm?
> To be honest, I've yet to discover a computational problem which hasn't
> already been solved 25 different ways (usually before I was even born).
> The art of writing efficient computer programs appears to be the art of
> figuring out where the **** all these algorithms are written down.
There is an infinite number of possible variations to any given problem,
so you often can't just use a pre-defined algorithm as-is to solve the
problem, but you have to adapt it. Also, you can't know every single
algorithm in existence, and many of the most obscure algorithms may be
extremely hard to find (especially if you don't now the proper terminology),
and hence you have to come up with the solution yourself.
> Because, let's face it, any algorithm that I can invent will be several
> complexity classes worse than what the greatest minds of the 20th
> century could think up.
Not true. There are many, many algorithms where you can *know* how fast
it can be solved (in terms of computational complexity) and you can come
up with an algorithm that solves it that fast. The difference is in details
(basically, speaking in terms of computation complexity, the constant
factor of the complexity function).
Also, in many cases even if you know that a problem can be solved faster
(in terms of computational complexity), but the optimal solution is extremely
complicated and hard to implement, a less-than-optimal solution may still be
perfectly suitable for the problem at hand (eg. a completely naive solution
would take 10 minutes on a given input, your not-completely-optimal but
good-enough solution takes 1 second, and the known-to-be-optimal would
take 0.9 seconds, it doesn't really matter all that much). If the
less-than-optimal solution is suitable for the problem, and its
implementation is considerably simpler than the most optimal solution,
it might even be better to use the simpler solution from a programming
development point of view (simpler source code, easier to understand, less
chances for bugs).
If, however, you indeed can only come up with a solution that is
"several complexity classes worse" than the currently known (or proven)
optimal solution, then I'd say you are not all that good at programming
and need more experience.
--
- Warp
Post a reply to this message
|
![](/i/fill.gif) |