Das folgende Array belegt 10000 Speicherplätze:
a = [0,1,2,3,4,5,6,7,8,9,10,...,10000]
Aber man könnte leicht das gleiche Array darstellen wie:
a = {len:10000, get: λ idx -> idx}
Welches ist viel kompakter. Ebenso gibt es mehrere Arrays, die kompakt dargestellt werden können:
a = {a:1000, get: λ idx -> idx * 2}
Is a description for [0,2,4,6,8,10,...,2000]
a = {a:1000, get λ idx -> idx ^ 2}
Is a description for [0,1,2,4,9,...1000000]
And so on...
Wenn so viele Arrays auf viel kürzere Weise dargestellt werden können als jedes Element im Speicher, frage ich:
- Gibt es einen Namen für dieses Phänomen?
- Gibt es eine Möglichkeit, die minimale Darstellung für ein bestimmtes Array zu finden?
- Dies hängt wahrscheinlich von der Beschreibungssprache ab (in diesem Fall habe ich eine imaginäre Programmiersprache mit Funktionen, Objekten und mathematischen Operatoren verwendet). Gibt es eine bestimmte Sprache, die optimal ist, um eine solche minimale Beschreibung für Objekte zu finden?