我已将正在处理的压缩问题减少到以下问题:
输入两个 n 长度的浮点值向量:
float64 L1, L2, ..., Ln;
float64 U1, U2, ..., Un;
这样对于所有我
0.0 <= Li <= Ui <= 1.0
(顺便说一下,n 很大:~10^9)
该算法将 L 和 U 作为输入,并使用它们生成程序。
执行时,生成的程序会输出一个 n 长度的向量 X:
float64 X1, X2, ..., Xn;
这样对于所有我:
L1 <= Xi <= Ui
生成的程序可以输出任何符合这些界限的 X。
例如,生成的程序可以简单地将 L 存储为数组并输出它。(请注意,这将需要 64n 位的空间来存储 L,然后再为程序输出一点额外的空间)
目标是生成的程序(包括数据)尽可能小,给定 L 和 U。
例如,假设 L 的每个元素都小于 0.3,而 U 的每个元素都大于 0.4,而生成的程序可能只是:
for i in 1 to n
output 0.35
这将是微小的。
任何人都可以提出一种策略、算法或架构来解决这个问题吗?