Informationsentropie und Nachrichtenkomplexität
Entropie in der Informationstheorie Die Informationsentropie (nach Claude Shannon, 1948) ist ein fundamentales Konzept der Informationstheorie. Sie misst den Informationsgehalt oder die Unsicherheit einer Nachricht. Je unwahrscheinlicher eine Nachricht ist, desto höher ist ihr Informationsgehalt.
Grundformel (Shannon-Entropie)
H(X) = -Σ p(x) · log₂(p(x))
Wobei:
- H(X) = Entropie (in Bits)
- p(x) = Wahrscheinlichkeit eines Ereignisses
- log₂ = Logarithmus zur Basis 2
Anwendung auf Zeitangaben Verschiedene Zeitangaben haben unterschiedliche Informationsgehalte, abhängig von ihrer Präzision und Komplexität. Beispiel 1: Einfache Zeitangaben (niedrige Entropie)
"ES IST EINS"
- Präzision: ±30 Minuten (volle Stunde)
- Wortanzahl: 3 Wörter Informationsgehalt: Niedrig
- Entropie: Gering, da nur 12 mögliche Stunden
Informationsanalyse
-
Tritt bei: 01:00, 13:00 (2 von 1440 Minuten/Tag = 0,14%)
-
Wahrscheinlichkeit: p ≈ 0,0014
-
Informationsgehalt: -log₂(0,0014) ≈ 9,5 Bit Beispiel 2: Präzisere Zeitangaben (mittlere Entropie) "ES IST FÜNF NACH ZWEI"
-
Präzision: ±2 Minuten (5-Minuten-Raster)
-
Wortanzahl: 5 Wörter
Informationsgehalt: Mittel
- Entropie: Höher, da 12 Stunden × 12 Fünf-Minuten-Schritte = 144 Möglichkeiten
Informationsanalyse
-
Tritt bei: 02:05, 14:05, 02:06, 02:07, 14:06, 14:07 (6 von 1440 Minuten/Tag)
-
Wahrscheinlichkeit: p ≈ 0,0042
-
Informationsgehalt: -log₂(0,0042) ≈ 7,9 Bit Beispiel 3: Hochpräzise Zeitangaben (hohe Entropie) "ES IST KURZ VOR HALB VIER"
-
Präzision: ±1 Minute (mit Modifikatoren)
-
Wortanzahl: 6 Wörter
Informationsgehalt: Hoch
- Entropie: Sehr hoch, da sehr spezifisch
Informationsanalyse
- Tritt bei: 03:28, 03:29, 15:28, 15:29 (4 von 1440 Minuten/Tag = 0,28%)
- Wahrscheinlichkeit: p ≈ 0,0028
- Informationsgehalt: -log₂(0,0028) ≈ 8,5 Bit Entropie durch Modifikatoren Die optionalen Modifikatoren KURZ, BALD, FAST erhöhen die Entropie der Zeitangabe systematisch:
Zeitangabe | Modifikatoren | Präzision | Wortanzahl | Relative Entropie |
"EINS" | Keine | ±30 Min | 1 | Niedrig (★☆☆☆☆) |
"NACH EINS" | Keine | ±2 Min | 2 | Niedrig-Mittel (★★☆☆☆) |
"FÜNF NACH EINS" | Keine | ±2 Min | 4 | Mittel (★★★☆☆) |
"KURZ NACH EINS" | KURZ | ±1 Min | 3 | Mittel-Hoch (★★★★☆) |
"KURZ VOR HALB VIER" | KURZ | ±1 Min | 5 | Hoch (★★★★★) |
"BALD DREIVIERTEL DREI" | BALD | ±2 Min | 4 | Hoch (★★★★★) |
Informationsredundanz vs. Klarheit
Trade-Off zwischen Präzision und Lesbarkeit
Ein interessanter Aspekt ist das Spannungsfeld zwischen:
Hohe Entropie (viel Information)
- ✅ Präzise Zeitangabe
- ✅ Weniger Mehrdeutigkeit
- ❌ Mehr Wörter beleuchtet
- ❌ Längere Lesezeit
- ❌ Komplexere Layout-Anforderungen
Niedrige Entropie (wenig Information)
-
✅ Einfache, schnelle Lesbarkeit
-
✅ Weniger Wörter beleuchtet
-
❌ Geringere Präzision
-
❌ Mehr Mehrdeutigkeit (±30 Minuten bei "EINS") Praktische Anwendung im CharGraph-Editor Designentscheidung: Welche Modifikatoren sollen verwendet werden? Variante A: Minimale Entropie (kfb) 13:00 → "ES IST EINS" 13:28 → "ES IST VOR HALB ZWEI"
-
Geringe Informationsdichte
-
Einfaches Layout möglich
-
Schnelle Lesbarkeit Variante B: Maximale Entropie (KFB) 13:00 → "ES IST EIN UHR" 13:28 → "ES IST KURZ VOR HALB ZWEI" 13:29 → "ES IST FAST HALB ZWEI"
-
Hohe Informationsdichte
-
Komplexes Layout erforderlich
-
Präzise Zeitangabe Verbindung zur Informationstheorie
Claude Shannons Arbeit (1948)
Shannon definierte Entropie als Maß für die durchschnittliche Überraschung einer Nachricht:
Häufige Ereignisse (niedrige Überraschung) → geringe Entropie Seltene Ereignisse (hohe Überraschung) → hohe Entropie
Im CharGraph-Kontext
"ES IST EINS" - Tritt häufig auf (jede Stunde), geringe Überraschung "ES IST KURZ VOR HALB VIER" - Tritt selten auf (4 Minuten/Tag), hohe Überraschung
Datenkompression und Effizienz
Huffman-Codierung als Analogie
In der Datenkompression werden häufige Symbole mit kurzen Codes und seltene Symbole mit langen Codes versehen.
Im CharGraph analog
-
Häufige Zeitangaben: Kurze Formulierungen ("EINS", "ZWEI")
-
Seltene Zeitangaben: Längere Formulierungen ("KURZ VOR HALB VIER")
Dies entspricht einer optimalen Codierung für natürliche Sprache! Didaktische Lernziele
Für Schüler (Sekundarstufe II)
Grundkonzept Entropie: Was ist Informationsgehalt? Wahrscheinlichkeit: Wie häufig tritt eine Zeitangabe auf? Bit als Maßeinheit: Wie viele Bits benötigt man zur Codierung? Trade-Offs: Präzision vs. Einfachheit
Für Studenten (Hochschule)
Shannon-Entropie: Mathematische Berechnung Informationstheorie: Huffman-Codierung, optimale Codes Natürliche Sprache: Zipf'sches Gesetz, Wortfrequenzen Datenstrukturen: Effiziente Speicherung variabler Nachrichten
Praktische Übung Aufgabe: Berechne die Entropie der Zeitangabe "ES IST BALD FÜNF NACH ZWEI"
Lösung
-
Identifiziere mögliche Zeitpunkte: 14:03, 14:04 (2 Minuten)
-
Berechne Wahrscheinlichkeit: p = 2/1440 ≈ 0,0014
-
Berechne Informationsgehalt: I = -log₂(0,0014) ≈ 9,5 Bit
-
Vergleiche mit "ES IST ZWEI": 120/1440 ≈ 0,083, I ≈ 3,6 Bit
Ergebnis: Die präzisere Angabe hat 2,6× mehr Informationsgehalt!
Zusammenfassung
Unterschiedliche Zeitangaben tragen unterschiedlich viel Information Modifikatoren erhöhen die Entropie (Präzision) Layout-Komplexität korreliert mit Entropie Natürliche Sprache ist informationstheoretisch optimiert
Lernziel: Verstehen des Zusammenhangs zwischen Informationsgehalt, Wahrscheinlichkeit und sprachlicher Komplexität
Vollständige Modifikatoren-Logik Übersicht der Modifikatoren Das System verwendet drei optionale Modifikatoren, die das Zeitverhalten verfeinern:
Modifikator | Bedeutung | Primäre Verwendung |
KURZ Kurz nach/vor | :01, :31 (direkt nach Marken), :28-:29, :58 (kurz vor Marken) |
BALD Bald (2-3 Min vor Marke) | :03-:04, :08-:09, :13-:14, :18-:19, :28-:29, :34, :56-:59 |
FAST Fast (1 Min vor Marke) | :04, :09, :14, :19, :29, :34, :39, :49, :54, :59 |
Dynamische Modifikator-Interaktion Kernprinzip: Modifikatoren passen ihre Reichweite an die Verfügbarkeit anderer Modifikatoren an. FAST-Expansion FAST expandiert seinen Wirkungsbereich, wenn BALD nicht vorhanden ist:
// Beispiel :03 - 2 Minuten vor :05
if(nur_FAST_vorhanden) {
// FAST übernimmt auch den 2-Min-Bereich
return "FAST FÜNF NACH";
}
if(BALD_vorhanden) {
// BALD übernimmt den 2-Min-Bereich
return "BALD FÜNF NACH";
}
Aktivierungspunkte für FAST-Expansion (wenn BALD nicht vorhanden, KURZ nicht blockiert):
-
:03, :08, :13, :18 → FAST expandiert zu 2 Min vor Marke
-
:33, :38, :53 → FAST expandiert zu 2 Min vor Marke
KURZ-Blockierung KURZ wird an bestimmten Stellen deaktiviert, wenn FAST vorhanden ist:
// :02 - KURZ wird komplett deaktiviert
if(minute === 2) {
return "NACH Stunde"; // Kein KURZ, auch wenn vorhanden
}
// :31 - KURZ nur wenn FAST vorhanden
if(minute === 31 && has_KURZ && has_FAST) {
return "KURZ NACH HALB";
}
else if(minute === 31) {
return "NACH HALB"; // Kein KURZ ohne FAST
}
Prioritätsregeln Bei 1 Minute vor 5er-Marke (:04, :09, :14, :19, :34, :39, :49, :54, :59) FAST > BALD
if(hasFast && hasBald) return "FAST ..."; // FAST gewinnt
else if(hasBald) return "BALD ...";
else if(hasFast) return "FAST ...";
Beispiele:
-
:04 mit BALD+FAST → "FAST FÜNF NACH"
-
:09 mit BALD+FAST → "FAST ZEHN NACH"
-
:34 mit BALD+FAST → "FAST FÜNF NACH HALB"
Bei 2 Minuten vor 5er-Marke (:03, :08, :13, :18, :33, :38, :53) BALD > FAST (wenn beide vorhanden)
if(hasBald && hasFast) return "BALD ..."; // BALD gewinnt
else if(hasFast) return "FAST ..."; // FAST expandiert
else if(hasBald) return "BALD ...";
Beispiele:
-
:03 mit BALD+FAST → "BALD FÜNF NACH"
-
:08 mit BALD+FAST → "BALD ZEHN NACH"
-
:33 mit BALD+FAST → "BALD FÜNF NACH HALB"
Vor HALB (:28-:29) FAST > KURZ > BALD
// :29
if(hasFast) return "FAST HALB";
else if(hasKurz) return "KURZ VOR HALB";
else if(hasBald) return "BALD HALB";
// :28
if(hasKurz && hasFast) return "KURZ VOR HALB"; // KURZ > BALD/FAST
else if(hasBald) return "BALD HALB";
Vor voller Stunde (:57-:59) :59: FAST > KURZ > BALD :58: KURZ > BALD/FAST :57: BALD (nur mit KURZ) Vollständige Kombinations-Matrix Die folgende Tabelle zeigt alle 8 möglichen Kombinationen der drei Modifikatoren und deren Verhalten:
Code | KURZ | FAST | BALD | Beispiel :03 | Beispiel :09 | Beispiel :34 |
kfb | ✗ | ✗ | ✗ | NACH | FÜNF NACH | NACH HALB |
kfB | ✗ | ✗ | ✓ | BALD FÜNF NACH | BALD ZEHN NACH | BALD FÜNF NACH HALB |
kFb | ✗ | ✓ | ✗ | FAST FÜNF NACH | FAST ZEHN NACH | FAST FÜNF NACH HALB |
kFB | ✗ | ✓ | ✓ | BALD FÜNF NACH | FAST ZEHN NACH | FAST FÜNF NACH HALB |
Kfb | ✓ | ✗ | ✗ | NACH | FÜNF NACH | NACH HALB |
KfB | ✓ | ✗ | ✓ | NACH | BALD ZEHN NACH | BALD FÜNF NACH HALB |
KFb | ✓ | ✓ | ✗ | FAST FÜNF NACH | FAST ZEHN NACH | FAST FÜNF NACH HALB |
KFB | ✓ | ✓ | ✓ | BALD FÜNF NACH | FAST ZEHN NACH | FAST FÜNF NACH HALB |
Legende: k=kein, K=KURZ, f=kein, F=FAST, b=kein, B=BALD Beobachtungen:
- Bei :03 (2 Min vor :05): BALD dominiert, außer wenn nur FAST vorhanden ist
- Bei :09 (1 Min vor :10): FAST > BALD (kFB, KFB zeigen FAST)
- Bei :34 (1 Min vor :35): FAST > BALD (kFB, KFB zeigen FAST) Spezialfälle :02 - KURZ komplett deaktiviert if(minute === 2) { return "NACH Stunde"; // IMMER, unabhängig von Modifikatoren }
Grund: Zu nah an :05, KURZ würde verwirren :27 - BALD nur bei KFB (alle 3 Modifikatoren) if(minute === 27 && hasKurz && hasFast && hasBald) { return "BALD HALB"; } else { return "FÜNF VOR HALB"; }
Grund: 3 Minuten vor :30 ist zu weit für normale BALD-Aktivierung :31 - KURZ nur mit FAST if(minute === 31 && hasKurz && hasFast) { return "KURZ NACH HALB"; } else { return "NACH HALB"; }
Grund: FAST ermöglicht KURZ, sonst würde KURZ mit nachfolgenden Ansagen kollidieren :44 - BALD DREIVIERTEL benötigt DREIVIERTEL-Wort if(minute === 44 && hasBald && hasDreiviertel) { return "BALD DREIVIERTEL"; } else if(minute === 44 && hasBald && !hasDreiviertel) { return "BALD DREIVIERTEL"; // Fallback auf Standardtext } // Weitere Fallbacks: ZEHN NACH HALB oder ZWANZIG VOR
Grund: BALD DREIVIERTEL funktioniert nur wenn DREIVIERTEL im Grid vorhanden ist Implementierungs-Algorithmus function selectModifier(minute, hasKurz, hasFast, hasBald) { // Spezialfälle zuerst if(minute === 2) return NONE; // KURZ deaktiviert
// 1 Min vor Marke: FAST > BALD if(ist_1_min_vor_5er_marke(minute)) { if(hasFast && hasBald) return FAST; if(hasBald) return BALD; if(hasFast) return FAST; }
// 2 Min vor Marke: BALD > FAST (aber FAST expandiert wenn kein BALD) if(ist_2_min_vor_5er_marke(minute)) { if(hasBald) return BALD; if(hasFast && !hasKurz_blockiert) return FAST; // Expansion }
// Kontext-spezifische Regeln if(ist_vor_halb(minute)) { // :28-:29: Komplexe Interaktion if(hasFast) return FAST; if(hasKurz) return KURZ; if(hasBald) return BALD; }
return DEFAULT; }
Lernziel: Dynamische Systeme mit kontextabhängiger Prioritätsselektion
Deklarative Programmierung in V0.2