2

是否存在一些算法允许在给定包含集的情况下创建数学模型?

我不确定我问的是否正确……让我再试一次……

给定一些输入集...

int Set[] = { 1, 4, 9, 16, 25, 36 };

是否存在能够推断出集合中明显模式的算法?在这种情况下...

Set[x] = x^2

我能想到做这样的事情的唯一方法是一些 GA,其中适应度是生成的模型与输入集的匹配程度。

编辑:

我应该补充一点,我的问题域意味着该集合是包容性的。意思是,我正在为该集合找到最接近的可能函数,而不是使用该函数来推断超出集合...

4

3 回答 3

3

曲线拟合问题可能是一个合理的起点。我不确定这是否正是您正在寻找的 - 它不会真正识别模式,而只是产生一个尽可能接近模式的函数。

正如其他人所提到的,对于一个简单的集合,很容易有无数这样的函数,所以这样的东西可能是你想要的,而不是你在问题中所描述的。

Wikipedia 似乎表明Gauss-Newton 算法Levenberg-Marquardt 算法可能是您开始研究的好地方。

于 2013-10-30T20:50:46.063 回答
3

一个数学论证解释了为什么一般来说这是不可能的:

  • 完全可以编写的计算机程序只有无数个。
  • 有无数个无限的整数序列。
  • 因此,存在无限多的整数序列,任何可能的计算机程序都无法生成这些序列。

因此,这在一般情况下是不可能的。对不起!

希望这可以帮助!

于 2013-10-30T21:05:31.400 回答
2

如果您想知道给定的数据是否适合某个多项式函数,您可以计算连续的差异,直到达到一个常数。达到常数的差数是多项式的次数。

 x |   1     2     3     4
 y |   1     4     9    16
y' |      3     5     7
y" |         2     2

由于 y" 为 2,因此 y' 为 2x + C 1,因此 y 为 x 2 + C 1 x + C 2。C 1为 0,因为 2×1.5 = 3。C 2为 0,因为 1 2 = 1。所以,我们有 y = x 2

所以,算法是:

  • 采取连续的差异。
  • 如果它没有收敛到一个常数,要么求助于曲线拟合,要么报告数据不足以确定多项式。
  • 如果它确实收敛到一个常数,则迭代地积分多项式表达式并评估尾随常数,直到达到程度。
于 2013-10-30T21:18:03.353 回答