Editing
Kolmogorov Complexity
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
<div style="background-color: #4B0082; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> {{BloomIntro}} Kolmogorov Complexity is the study of how "Complex" a piece of information is by looking at the shortest computer program that can generate it. While standard information theory (Shannon) looks at "Chance," Kolmogorov complexity looks at "Logic." A long string like "121212..." might look big, but its Kolmogorov complexity is tiny because the "Program" to make it is just "Print 12 fifty times." It is the ultimate measure of "Randomness"—proving that something is truly random only if it cannot be compressed. It is the math of pattern, meaning, and the limits of computer logic. </div> __TOC__ <div style="background-color: #000080; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Remembering</span> == * '''Kolmogorov Complexity (K)''' — The length of the shortest possible description of a string in a fixed universal language. * '''Andrey Kolmogorov''' — The Soviet mathematician who founded the field in the 1960s. * '''Algorithmic Information Theory''' — The branch of computer science that merges information theory with Turing's theory of computation. * '''Incompressibility''' — A string is "Incompressible" (Random) if its Kolmogorov complexity is equal to its own length. * '''Universal Turing Machine (UTM)''' — A theoretical computer that can run any program; used as the "Language" for measuring complexity. * '''Occam's Razor''' — The philosophical rule that the "Simplest" explanation (the one with the lowest K) is usually the best one. * '''Chaitin's Constant (Ω)''' — A famous "Uncomputable" number that represents the probability that a random program will stop. * '''Berry Paradox''' — A logical paradox that shows why we can't always "Calculate" the Kolmogorov complexity of a string. </div> <div style="background-color: #006400; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Understanding</span> == Kolmogorov complexity is understood through '''Description Length''' and '''Patterns'''. '''1. The Shortest Program''': Imagine two strings of 100 characters: * '''String A''': "ABABAB... (repeating 50 times)" * '''String B''': "q8zP2m... (completely random characters)" Which is more complex? * '''String A''' has low complexity because the program `print "AB"*50` is very short. * '''String B''' has high complexity because the only way to "Describe" it is to write the whole string out. The program is `print "q8zP2m..."`. '''2. Randomness as "Lack of Patterns"''': In this field, "Random" means "Patternless." * If a string has a pattern (like the digits of Pi), it is NOT random, even if it looks random. * Because a short program can calculate Pi to a billion digits, the "Complexity" of a billion digits of Pi is actually quite low. '''3. The Uncomputability Problem''': Here is the catch: we can never write a program that calculates the *exact* Kolmogorov complexity of any other string. * This is related to the '''Halting Problem'''. We can't know for sure if a shorter program exists that we just haven't found yet. * Kolmogorov complexity is a "Theoretical Limit" that we can get close to, but never reach perfectly. '''Minimalism''': Kolmogorov complexity is the mathematical definition of minimalism. It asks: "What is the absolute bare minimum amount of data I need to recreate this thing?" </div> <div style="background-color: #8B0000; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Applying</span> == '''Modeling 'The Complexity Gap' (Comparing pattern vs. randomness):''' <syntaxhighlight lang="python"> def estimate_complexity(string): """ Very rough estimate: The length of the 'Compressed' version. (Real Kolmogorov complexity is uncomputable, but compression is a good real-world proxy). """ import zlib compressed = zlib.compress(string.encode()) return len(compressed) # Patterned string: 1000 'A's pattern = "A" * 1000 # Random string: 1000 random chars import random, string as s random_str = ''.join(random.choices(s.ascii_letters, k=1000)) print(f"Patterned 'Complexity': {estimate_complexity(pattern)}") print(f"Random 'Complexity': {estimate_complexity(random_str)}") # The random string is 'More Complex' because it can't be 'Explained' away. </syntaxhighlight> ; Complexity Landmarks : '''The digits of Pi''' → A classic puzzle: it looks random (high Shannon entropy), but it has a very simple rule (low Kolmogorov complexity). : '''Monkey on a Typewriter''' → If a monkey typed "Hamlet," it would be a miracle. But Kolmogorov complexity says the "Code" for Hamlet is still much shorter than a random string of the same length. : '''The Solomonoff Induction''' → A theory of "Universal AI" that uses Kolmogorov complexity to predict the future by finding the simplest possible explanation for the past. : '''Minimal Description Length (MDL)''' → A technique in statistics that picks the "Best Model" by finding the one that compresses the data the most. </div> <div style="background-color: #8B4500; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Analyzing</span> == {| class="wikitable" |+ Shannon vs. Kolmogorov ! Feature !! Shannon Information !! Kolmogorov Complexity |- | Viewpoint || Probability (Chance) || Algorithmic (Logic) |- | Focus || The Source (Average) || The Individual String |- | Measure || Entropy (H) || Program Length (K) |- | Computable? || Yes || No (Theoretically impossible) |- | Analogy || Flipping a coin || Writing a script |} '''The Concept of "Algorithmic Probability"''': Analyzing why we are more likely to see "Ordered" things than "Random" things. If you pick a random program and run it, it is much more likely to output "010101" than a specific random string, because there are more "Short Programs" for 0101 than for the random one. </div> <div style="background-color: #483D8B; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Evaluating</span> == Evaluating Kolmogorov complexity: # '''Subjectivity''': Does the complexity change if I use Python instead of Java? (Kolmogorov proved that it only changes by a "Constant" amount—the size of the translator program). # '''AI''': Is "Intelligence" just the ability to find the lowest Kolmogorov complexity for a set of data? (Finding the hidden pattern). # '''Philosophy''': If the universe has a "Short Program" (like the laws of physics), does that mean it isn't truly random? # '''Practicality''': Since we can't compute it, is it a "Useless" theory? (No—it forms the basis for all modern data compression). </div> <div style="background-color: #2F4F4F; color: #FFFFFF; padding: 20px; border-radius: 8px; margin-bottom: 15px;"> == <span style="color: #FFFFFF;">Creating</span> == Future Frontiers: # '''Universal Compression''': Algorithms that try to find the "Shortest Program" for a file using deep learning. # '''AI Generalization''': Teaching AI to look for the "Simplest" solution (Low K) to prevent "Overfitting" on data. # '''Computational Biology''': Finding the "Complexity" of a protein to see if it was "Designed" or evolved randomly. # '''Search for Extraterrestrial Intelligence (SETI)''': Looking for signals in space that have low Kolmogorov complexity (patterns), which would prove they aren't just natural noise. [[Category:Computer Science]] [[Category:Mathematics]] [[Category:Logic]] </div>
Summary:
Please note that all contributions to BloomWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BloomWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Template:BloomIntro
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information