[TI] More on kolmogorov-complexity

This commit is contained in:
2025-09-29 13:20:09 +02:00
parent a9d532842f
commit 0a7b8bc75f
4 changed files with 19 additions and 9 deletions

2
latex

Submodule latex updated: 4a98d7d3af...6c75936b18

View File

@@ -12,7 +12,7 @@ Hier kommt die Kolmogorov-Komplexit zum Zuge: Sie bietet eine breit Gültige Def
\begin{definition}[]{Kolmogorov-Komplexität} \begin{definition}[]{Kolmogorov-Komplexität}
Für jedes Wort $x \in \wordbool$ ist die \bi{Kolmogorov-Komplexität $K(x)$ des Wortes $x$} das Minimum der binären Längen der Pascal-Programme, die $x$ generieren. Für jedes Wort $x \in \wordbool$ ist die \bi{Kolmogorov-Komplexität $K(x)$ des Wortes $x$} das Minimum der binären Längen der Pascal-Programme, die $x$ generieren.
\end{definition} \end{definition}
Hierbei ist mit der binären Länge die Anzahl Bits gemeint, die beim Übersetzen des Programms in einen vordefinierten Maschinencode entsteht. Hierbei ist mit der binären Länge die Anzahl Bits gemeint, die beim Übersetzen des Programms in einen vordefinierten Maschinencode entsteht.
@@ -21,25 +21,35 @@ Ein Pascal-Programm in diesem Kurs ist zudem nicht zwingend ein Programm in der
\begin{lemma}[]{Kolmogorov-Komplexität} \begin{lemma}[]{Kolmogorov-Komplexität}
Für jedes Wort $x \in \wordbool$ existiert eine Konstante $d$ so dass $K(x) \leq |x| + d$ Für jedes Wort $x \in \wordbool$ existiert eine Konstante $d$ so dass $K(x) \leq |x| + d$
\end{lemma} \end{lemma}
\inlineproof Für jedes $x \in \wordbool$ kann folgendes Programm $A_x$ verwendet werden: \inlineproof Für jedes $x \in \wordbool$ kann folgendes Programm $A_x$ verwendet werden:
\begin{minted}{pascal} \begin{code}{pascal}
A_x: begin $A_x$: begin
write(x); write(x);
end end
\end{minted} \end{code}
Alle Teile, ausser $x$ sind dabei von konstanter Länge, also ist die Länge der Bit-repräsentation des Programms ausschliesslich von der binären Länge des Wortes $x$ abhängig. Alle Teile, ausser $x$ sind dabei von konstanter Länge, also ist die Länge der Bit-repräsentation des Programms ausschliesslich von der binären Länge des Wortes $x$ abhängig.
\proven \proven
Für regelmässige Wörter gibt es natürlich Programme, bei denen das Wort nicht als komplette Variable vorkommt. Für regelmässige Wörter gibt es natürlich Programme, bei denen das Wort nicht als komplette Variable vorkommt.
Deshalb haben diese Wörter auch (meist) eine kleinere Kolmogorov-Komplexität. Deshalb haben diese Wörter auch (meist) eine kleinere Kolmogorov-Komplexität.
\fancydef{$K(n)$ für $n \in \N$} Die \bi{Kolmogorov-Komplexität einer natürlichen Zahl $n$} ist $K(n) = K(\text{Bin}(n))$, \fancydef{$K(n)$ für $n \in \N$} Die \bi{Kolmogorov-Komplexität einer natürlichen Zahl $n$} ist $K(n) = K(\text{Bin}(n))$,
wobei $\text{Bin}(x) = \ceil{\log_2(x + 1)}$ % TODO: Verify correctness here wobei $\text{Bin}(x) = \ceil{\log_2(x + 1)}$ % TODO: Verify correctness here
\inlinelemma Für jede Zahl $n \in \N - \{ 0 \}$ existiert ein Wort $w_n \in (\alphabets{bool})^n$ \inlinelemma Für jede Zahl $n \in \N - \{ 0 \}$ existiert ein Wort $w_n \in (\alphabets{bool})^n$ so dass $K(w_n) \geq |w_n| = n$, oder in Worten, es existiert für jedes $n$ ein nicht komprimierbares Wort.
Eine wichtige Eigenschaft der Kolmogorov-Komplexität ist, dass sie nicht wirklich von der gewählten Programmiersprache abhängt.
Man kann also beliebig auch \texttt{C++}, \texttt{Swift}, \texttt{Python}, \texttt{Java} oder welche auch immer, ohne dass die Kolmogorov-Komplexität um mehr als eine Konstante wächst (auch wenn diese bei \texttt{Java} sehr gross ist):
\begin{theorem}[]{Unterschiedliche Programmiersprachen}
Für jede Programmiersprachen $A$ und $B$ existiert eine Konstante $c_{A,B}$, die nur von $A$ und $B$ abhängig ist, so dass für alle $x \in \wordbool$ gilt:
\begin{align*}
|K_A(x) - K_B(x)| \leq c_{A, B}
\end{align*}
\end{theorem}

Binary file not shown.

View File

@@ -1,6 +1,6 @@
\documentclass{article} \documentclass{article}
\newcommand{\dir}{~/projects/latex} \newcommand{\dir}{../../latex}
\input{\dir/include.tex} \input{\dir/include.tex}
\load{full} \load{full}
\setLang{de} \setLang{de}