Kolmogorov Complexity - A Primer
jeremykun.wordpress.com
jeremykun.wordpress.com
This reminds me of the 'Is 14 a random number?' debate.
Part of the problem, though, is that we have terminology that is horribly misleading.
First, a random variable is neither random nor a variable. They're not variables, because they're functions that yield non-deterministic values - a huge distinction. You can't have a random number - the idea itself doesn't make any sense.
Second, the definition of 'random' is itself problematic - or at least contested. Randomness implies probability, but probability can be defined in two different (and incompatible) ways, one of which is essentially the inverse of the other. Ironically, the one that Keynes proved back in 1921 to be logically inconsistent is the one that is more commonly used today (probably because it is more intuitive and mathematically convenient... even if it is almost always incorrect!).
The question 'Is 14 a random number' doesn't really make any sense. 14 cannot be a random number; it can only be a number drawn from a random distribution. That may seem like it simply begs the question, but in fact, this subtle shift is incredibly important - determining whether a number was drawn from a random distribution is much easier to frame in terms of probability, and probability, not randomness, is the language of statistics.
Unfortunately, this is one of those cases where the two definitions of probability yield widely different answers. You could tell me that the answer is undefined, in almost exactly the same way that division-by-zero is undefined in mathematics. Or you could construct a model over all possible distributions of numbers, the probabilities associated with each of those distributions, and integrate accordingly to yield some (probably computationally unfeasible) functional answer.
In this school of thought, we can speak of how 'random' a particular outcome is - we're essentially partitioning the (potentially infinite) universe of functions f such that our value v is in the range of f into two categories: one designated as 'random' and the other designated as 'not random'. Then, we are determining the probability that our value was generated from one of the former, as opposed to the latter.
Either one would be correct ways of answering this second question, but neither one addresses the first question, which is essentially nonsensical. (Well, I guess the answer is 'no, 14 is not a random number, because a number cannot be random', but that's a bit of a cop-out!).
(It should be noted that the Bayesian approach doesn't guarantee a defined answer - we can easily have a divide-by-zero/undefined value in that school of thought as well. However, the frequentist approach always leads to an undefined outcome in this question, because it follows from the definition of probability itself, whereas in the Bayesian approach, it follows from insufficient information in the model specification.)
I understand what you meant by that example; I was just intrigued by seeing it in this context, and it reminded me of the related example that I brought up. And not to belabor the point with pedantry, but a tiny bit of rephrasing illustrates that your statement can be viewed as completely compatible with my latter definition:
> numbers chosen from a random uniform distribution function appear to be indistinguishable from numbers chosen from a Kolmogorov random function
From the looks of it, it appears that the Kolmogorov example is really just a special case of the distributional viewpoint, in which case your system of partitioning the universe of possible distributions revolves around the Kolmogorov criterion. (And while I made it seem like the partitioning is binary in my previous post, the principle can easily be generalized, so that's not a problem). And we may even be able to equate this statement with an alternate form based on the distributional difference between uniform and Kolmogorov.
I'm familiar with Kolmogorov, though not enough to be confident about this last hypothesis - I'll have to think about it some more.
I know the book Gems of Theoretical Computer Science has a good introduction to this topic as well.
You don't need the integral of 1/x with respect to x to define e, but you can do it that way. Mathematical definitions are bidirectional in many cases, in that we can use A to define B or B to define A without any loss in power for defining C in terms of B and/or A. But that doesn't mean that this works for any inversion of the definitions, as in the case I outlined above.
> I don't understand why you said that random numbers are non-sense, what about Chaitin's Omega number?
As you can see, the definitions we use to construct these make all the difference! The definition of the Chaitin constant that I'm familiar with is a probability, and the probability is not random; rather, we assign a probability to a random event (or, more precisely, the outcome of a random function). If * probabilities* were themselves random, they wouldn't be very useful, would they!
> Have you read Kolmogorov axioms on probability? One of its success -not failure- is that it doesn't need a definition of randomness to build its theory
I think you misunderstood my point, which is pretty much orthogonal to Kolmogorov. I didn't say that probability requires an assumption of randomness; I said that randomness (as used by the author in this post) implicitly invokes a notion of probability ('likelihood', in the casual use of the word). And certainly as used in the 'Is 14 a random number' example.
You can dismiss question as nonsensical (no, you cannot calculate square root of negative number, there is none), or you can accept new definition that allows you to say something more about a problem, and use it's results, where they are usefull. And Kolmogorov complexity is an usefull definition, maybe not as much as complex numbers, but still.
Any definition of 'random' that I am familiar with is only precisely defined when applied to functions, not numbers. Oddly enough, this distinction is not always made clear when outlining the definition, but if you look carefully, you'll see that this is the way that the term is applied. Statisticians are notoriously sloppy when talking about terms, in the same way that computer scientists are comfortable saying that 5x +2 = O(n)... which is nonsense, because you just said that a linear function is equal to a set of functions (TypeError!). 99% of the time, this sloppiness results in no error. That said, you have to remember to be precise with the remaining 1%, because sometimes the loss in precision will lead you to a completely incorrect conclusion.
And you can invent your own definition of random, yes, the same way that you can invent your own number system for numbers like 5/0. But then you have to rebuild the fundamental relationships from scratch (you need to prove that addition works in this new system the way it does for real numbers: 5/0 + 6/0 may not equal 11/0 in this new system, for example).
On one hand probability theory says number cannot be random, on the other hand we want to be able to compare randomness of strings from PRNGs to say which is better. Probability theory says PRNGs are not random, 00000000 is no more or less random than 10011010 and that's the end of discussion. But Kolmogorov complexity allows us to at least define, what it means for a string to be random. Probability theory only allows us to compute probability that given string was taken from random distribution, but we already know that PRNGs are not random, so it feels a little artifical to use probability theory there.
That's why Kolmogorov complexity is useful, more so than 5/0 numbers :) Randomness for a string/number wasn't defined before, so there is no conflict, so I don't see why are you insisting that it's nonsensical to speak about random and not random numbers. 2 definitions for 2 different mathemathical objects. Polimorphism :)
But I'm not mathemathician, and I probably forgot many of the things I should know to discuss with you, so I'm open for arguments.
http://www.amazon.com/The-Computational-Beauty-Nature-Explor...
print '00011101001000101101001000101111010100000100111101'
print bin(128141569638717)[2:]
In general, any string of 1s and 0s will be compressible using this method in python once the binary number is greater than 212 (you break even at 211). However, again, I only claim this to be an upperbound ;). (also assuming that invoking built-ins isn't cheating).
And any program returning something can be seen as a PRNG (at worst it won't accept seed, so it will only produce one string).
And besides, overwhelming majority of strings are random, once you got to strings long enough. Probabilty that random generator will make not Kolmogorov random string is 0.
This notion of Kolmogorov Complexity doesn't seem to add any additional value.