A seguinte matriz ocupa 10.000 slots na memória:
a = [0,1,2,3,4,5,6,7,8,9,10,...,10000]
Mas pode-se facilmente representar a mesma matriz que:
a = {len:10000, get: λ idx -> idx}
O que é muito mais compacto. Da mesma forma, existem várias matrizes que podem ser representadas compactamente:
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...
Desde que tantas matrizes possam ser representadas de maneiras muito mais curtas do que armazenar cada elemento na memória, pergunto:
- Existe um nome para esse fenômeno?
- Existe uma maneira de encontrar a representação mínima para uma matriz específica?
- Considerando que isso provavelmente depende da linguagem da descrição (neste caso, usei uma linguagem de programação imaginária com funções, objetos e operadores matemáticos). Existe uma linguagem específica ideal para encontrar esse tipo de descrição mínima para objetos?