3 ms·
It is rarely the case that the shortest program is the fastest. To see a simple such phenomenon (very roughly) in the case of Kolmogorov complexity, consider t
by sn41 8y ago
It is rarely the case that the shortest program is the fastest.
To see a simple such phenomenon (very roughly) in the case of Kolmogorov complexity, consider two programs to print a sequence of 0x1000000 zeros.
Program 1:
for i = 1 to 0x10000000:
print 0
Program 2:
i = 0x1 << 28;
for j=1 to i
print 0
(I may be off by a constant, but you get the idea). Program 2 is shorter, since it takes about log 28 bits (the other code has basically constant length), while Program 1 takes about 32 bits (the remaining code being of a different constant length). They both produce the same string. Program 1 is longer, but "faster", since it does not have the left-shift loop.
Philosophically: Program 1 has identified that the string to be printed is a very simple one. Program 2 has exploited the additional fact that the length of the string to be printed, itself is a very simple number, and has a short description. But then it needs additional time to figure out how many zeroes to print, since it needs to decode the length first.
This effect can be amplified with larger constants involved.
Kolmogorov complexity is a "well-defined" notion, hence mathematically nice, it is just that it is not computable. That's bad, but not catastrophic. The halting problem is undecidable, C++ compilation with templates is undecidable [1] - that does not make coding useless.
About the larger problem of dry mathematical textbooks, I agree with you. Some of it just boils down to the fact that the pure and the applied side are often tightly segregated, and very few mathematicians care about both. When you talk to practising mathematicians, you often get a livelier picture.
[1] https://stackoverflow.com/questions/794015/what-do-people-mean-when-they-say-c-has-undecidable-grammar https://stackoverflow.com/questions/794015/what-do-people-me...