排列内的有效存储二进制数据
efficient storage binary data within permutations
我正在寻找一种在传输数据时按字典顺序存储数据的方法。
由于字典的顺序无关紧要,它提供了一个理想的位置来存储可能被忽视的数据。
出于此目的,它是字典这一事实并不重要,因此我将其建模为列表。
我有一个大小为 A、B、C 和 D 的列表。
我可以在其中存储的理想数据量是 log2(n!) where n=4
是 4.58...所以 4 位。
有许多简单的方法可以接近 n-1
位可以存储,例如 n-1
效率的简单方法:
I have the same list as above, A..D.
I start with the first element
I place the next elements before or after it - each referring to a 1 or a 0.
For example:
000 -> DCBA
001 -> CBAD
010 -> DBAC
100 -> BACD
对此有一些优化可以提供额外百分比的存储位,但我想知道(如果可能的话)是否有一种方法可以接近理论最大值,或者至少提供显着提高了该方法的效率。
对于更多上下文,我希望按照 HTTP 请求 header 字段的顺序存储数据。
如果可能的话,我正在寻找一种算法,而不是一段代码。
我通过使用快速排序样式算法解决了这个问题,但是没有将每个元素与主元进行比较,而是使用 'Datasource' 的下一位。
由于我正在回答我自己的问题,而且这个问题几乎没有人感兴趣,所以我不会详细介绍,但如果有人问我,我很乐意这样做。
我正在寻找一种在传输数据时按字典顺序存储数据的方法。 由于字典的顺序无关紧要,它提供了一个理想的位置来存储可能被忽视的数据。
出于此目的,它是字典这一事实并不重要,因此我将其建模为列表。
我有一个大小为 A、B、C 和 D 的列表。
我可以在其中存储的理想数据量是 log2(n!) where n=4
是 4.58...所以 4 位。
有许多简单的方法可以接近 n-1
位可以存储,例如 n-1
效率的简单方法:
I have the same list as above, A..D.
I start with the first element
I place the next elements before or after it - each referring to a 1 or a 0.
For example:
000 -> DCBA
001 -> CBAD
010 -> DBAC
100 -> BACD
对此有一些优化可以提供额外百分比的存储位,但我想知道(如果可能的话)是否有一种方法可以接近理论最大值,或者至少提供显着提高了该方法的效率。
对于更多上下文,我希望按照 HTTP 请求 header 字段的顺序存储数据。
如果可能的话,我正在寻找一种算法,而不是一段代码。
我通过使用快速排序样式算法解决了这个问题,但是没有将每个元素与主元进行比较,而是使用 'Datasource' 的下一位。 由于我正在回答我自己的问题,而且这个问题几乎没有人感兴趣,所以我不会详细介绍,但如果有人问我,我很乐意这样做。