【发布时间】:2011-09-24 12:32:15
【问题描述】:
基本上,我有一个 4 字节输入及其对应的 4 字节输出的大数据集(可以得到 100,000-150,000 个值)。不能保证输入是唯一的(这不是真正的问题,因为我认为我可以生成伪随机数来添加或异或输入,以便它们变得唯一),但不能保证输出也是唯一的(因此两组不同的输入可能具有相同的输出)。
我正在尝试创建一个函数来有效地模拟我的数据集中的值。我不需要它来有效地插值,甚至根本不需要它(我的意思是我永远不会向它提供不包含在这个静态数据集中的输入)。但是,它确实需要尽可能高效。我研究了插值,发现它并不真正适合我正在寻找的东西。例如,大量值意味着样条插值不起作用,因为它会为每个间隔创建一个多项式。
此外,据我了解,多项式插值的计算成本太高(n 值意味着多项式可能包含高达 pow(x,n-1) 的项。对于 x= 4 字节数和 n=100,000这是不可行的)。我已经尝试在网上搜索了一段时间,但我的数学不是很强,而且我一定不知道正确的搜索词,因为到目前为止我还没有遇到过类似的东西。
我可以看出这并不完全(委婉地说)一个编程问题,我提前道歉。我不是在寻找确切的解决方案,甚至不是完整的答案。我只需要关于我需要阅读的主题的指针,这样我就可以自己解决这个问题。谢谢!
TL;DR - 我需要一种插值变体,它只需要适合最初给定的数据点,但计算效率很高。
编辑: 一些澄清 - 我确实需要输出准确而不是近似值。这是对我目前正在做的一些研究工作的一种优化,我需要在没有输出的实际字节出现在我的程序中的情况下实现这个查找。目前我真的不能说太多,但我会说,就我的工作而言,加密(或压缩或任何其他形式的混淆)不是隐藏表格的选项。我需要一个数学函数,只要它可以访问输入,它就可以重新创建输出。我希望这能把事情弄清楚一点。
【问题讨论】:
-
插值本质上是计算昂贵的。您可能需要考虑使用回归。
-
1.您正在寻找的功能是否必须完全适合这些数据点?或者它可以只是一个近似值? 2. 如果你永远不会给它一个不在你的数据集中的输入,你为什么需要这个函数呢?插值的目的是得到中间值。
-
@Steve - 回归可以给我一个函数来精确地再现输出或只是近似它们吗?我编辑了我的问题以澄清我需要精确度。
-
@tskuzzy - 我已经编辑了我的问题以提供更多细节,但基本上我确实需要它是准确的,不幸的是我不能真正使用表格本身。
-
@bridgeburner:如果您需要精确的数字,那么您将需要使用插值,而且真的没有办法绕过它。我真的看不出插值占用的空间比精确值少——只需从一些数据存储中查找它们,这样您就不需要硬编码任何东西。它也会更快。 (:
标签: math interpolation data-fitting