I've come up with an idea on how to compress data. But I'm not sure if the approach already exists. I would like to know if it does already, and if so, what its name is.
The approach is to:
- Convert the message to a number
- Find the smallest equation to represent the number
The result of this is an equation. Which will be much shorter in length than the original message, or its corresponding numerical value.
The process can be reversed by evaluating the equation, and then converting the number back into the message.
Step 1. is similar to base conversion but has the following numerical sequence...
Given an alphabet of "abc"...
Message, Value
a, 0
b, 1
c, 2
aa, 3
ab, 4
ab, 5
ba, 6
...
Value "aa" shows the difference between base conversation. In normal base conversion the value of "aa" would be 0 because "a" is the first letter of the alphabet and has a value of 0, so two of them would also be zero.
The value is really the permutation sequence number for when the alphabet is iterated over (or "bruteforced"). (Aside: Useful when distributing "bruteforce" problems.)
For step 2. I plan on using state space search to generate the equation. The goal state will be the smallest equation. The search will be performed by applying and accepting a single math operation on the "remaining" value. Initially, the "remaining" value will the original number. By the end of the search it will be reduced to zero.
Non-answer feedback is welcome as comments on the question.