我对数列问题的智能求解系统的简单设想
大家都是从小做起的,我也一样,不由自主就希望能写一个程序破解这类问题(人工智能界已经有用程序证明数学定理甚至总结新定理的历史了)
我认为,所谓的自动求解就是让程序模拟人的思考过程。这类数列问题一般是用“猜测-〉假设-〉验证-〉再猜测/得出答案”的思考过程,最难的是猜测过程,有人认为这可以测出智商,但实际上这只是说明你的头脑适合解答这类问题。数独类问题也是这样(WHAT?你不知道数独是什么?Are you kidding?)。
所以,让能够高速处理机械操作,有极高判重能力、记忆力和计算速度的计算机很适用于解这类问题。
一般地,这类问题的人的思考顺序是:
因数分解;
有非递推通项公式的;
前一/前二个数以及第二类数,经过某些运算(四则运算、排列组合运算、幂运算)得到当前数。
两个或多个简单数列相互交错出现,如1 1 3 4 5 9 7 16 9 25 11 36……
两个或多个简单数列互相运算,如2 7 14 23 34 47……(巨复杂)
对于第一类,很容易就能够实现,因为数字一般不大。
对于第二类,可以事先在知识库中储存大量的这类数列,例如
1 4 9 16 25 36……
1 3 5 7 9 11 13……
1 6 12 20 30 42……(相邻整数相乘)
由于合成公式很多,
2 3 5 7 11 13 17 19……素数列,没有通项,不过也可能出现
1 1 2 3 5 8 13 21……斐波那契数列属于递推型
通常问题不会太复杂的,题目给出的前面的数一般就3~5个,由于以下假设
……最好数列中不能“算”出来只能事先给出的只有1个数。还有,自己的想法要有题目中至少两个数字的佐证,只有1个的无效的!……
四则运算也不会很多。难点在于排列组合类型的,不过也有线索!都是用乘法的,后面可能都是5的倍数;数字差先小后大,之后又变小,然后有变大(1 4 10 20 35……的就是一个例子,画条函数曲线看看?)
用一个结构体表达一种式子,每次把任意两个结构体进行运算(排列组合、四则运算),把新组合成的结构体插入结构体数组里;设定一个复杂度指标,当结构体运算次数超过某个数就不再继续参与运算
难点在于第4、5类。