mirror of
https://github.com/janishutz/eth-summaries.git
synced 2025-11-25 10:34:23 +00:00
[TI] More on kolmogorov-complexity
This commit is contained in:
@@ -12,7 +12,7 @@ Hier kommt die Kolmogorov-Komplexit zum Zuge: Sie bietet eine breit Gültige Def
|
||||
|
||||
|
||||
\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}
|
||||
|
||||
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}
|
||||
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}
|
||||
\inlineproof Für jedes $x \in \wordbool$ kann folgendes Programm $A_x$ verwendet werden:
|
||||
|
||||
\begin{minted}{pascal}
|
||||
A_x: begin
|
||||
\begin{code}{pascal}
|
||||
$A_x$: begin
|
||||
write(x);
|
||||
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.
|
||||
|
||||
\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.
|
||||
|
||||
|
||||
\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
|
||||
|
||||
\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.
@@ -1,6 +1,6 @@
|
||||
\documentclass{article}
|
||||
|
||||
\newcommand{\dir}{~/projects/latex}
|
||||
\newcommand{\dir}{../../latex}
|
||||
\input{\dir/include.tex}
|
||||
\load{full}
|
||||
\setLang{de}
|
||||
|
||||
Reference in New Issue
Block a user