通过查找模式从序列生成下一个元素的算法

通过查找模式从序列生成下一个元素的算法,第1张

通过查找模式从序列生成下一个元素的算法

简短的答案是:您要的是不可能的。

您正在寻找的是一种通常与曲线拟合有关的算法。对于此特定问题,一种可能的方法是Lagrange多项式

但是请注意,通常来说,您想要的东西可能没有真正的解决方案。例如,考虑以下简单序列:

2, 4, 6, 8, 10, 12, 14
。接下来的几个数字是什么?

您可能会说答案是

16, 18, 20
依此类推,因为您使用方程式
f(n) = 2*n
where
n
是项的位置(从1开始)。

请注意,形式的等式是无限的:

f(n) = [(n-1)*(n-2)*(n-3)*(n-4)*(n-5)*(n-6)*(n-7) * g(n)] + 2*n

第二项对产生正确的值,

n = 1..7
而第一项
0
仅对的那些值产生a
n
。因此,您可以为
g(n)
第一项中的最后一个乘数选择任何函数(具有有限范围),并从
n=8
开始获取所需的任何值。

例如,对于

g(n) = 20*n

f(n) = (n-1)*(n-2)*(n-3)*(n-4)*(n-5)*(n-6)*(n-7) * 20 * n + 2*n

将产生一个列表:

2, 4, 6, 8, 10, 12, 14, 806416

因此,您指出的问题是无法解决的。

但是,如果表征算法的形式(或表征要使用的函数族来解决问题),则可以获得最适合数字的函数。例如,您可以说它

f(n)
是阶数的多项式
1
(线性方程式),它将减少可能性的数量并给您
f(n)= 2 * n
。这些方法中的某些方法传统上用于机器学习,尤其是线性回归和逻辑回归。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5051521.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存