Chinaunix

标题: [关注]找数列规律的问题,能写出C的算法吗? [打印本页]

作者: jeanlove    时间: 2009-05-21 16:18
标题: [关注]找数列规律的问题,能写出C的算法吗?
如题,数列8,3,1,-2的规律是什么?下一个数字是多少?

网上的一个解答是
8等于后两个数乘积加5,3等于后两个数乘积加5,以此类推
8=3×1+5
3=1×(-2)+5
1=(-2)×()+5
所以()=2

问题:能否写出一个程序找到某个数列的规律。用穷举法? 算法就有无数可能,怎么穷举得了。如果这个数列是那种等差数列构成的等差数列呢? 算法什么时候能结束? 似乎不存在结束收敛点,只能碰运气。
作者: astezheng    时间: 2009-05-21 16:49
标题: 回复 #1 jeanlove 的帖子
程序是肯定能有,但肯定是一个规模很大的人工智能项目
作者: getsmartboy    时间: 2009-05-21 16:54
我猜如果机器能够定义问题,那就能给出算法。
作者: jeanlove    时间: 2009-05-21 17:02
原帖由 astezheng 于 2009-5-21 16:49 发表
程序是肯定能有,但肯定是一个规模很大的人工智能项目


呵呵,这是一个比较现实的,也是实用主义的,悲观的说法。

稍微想一下,会发现普通规模的中小程序,不可能解决这样的涉及到了"无穷"的问题。
作者: daybreakcx    时间: 2009-05-21 17:37
发现规律了,当前数平方减去前一个数就是下一个了
比如:
3^2-8=1
1^2-3=-2
那么下一个数就是(-2)^2-1=3
不知道对不对,至少这些数值都过了
作者: daybreakcx    时间: 2009-05-21 17:40
如果想要写一个程序找一个数列的规律那个基本上很难,因为公式种类多的是(不是数量,数量的话改改参数就无限了),所有可见的公式都可以用来做这个,除非你有个足够强的数据库系统收录所有的公式并且你的算法足够快来组合他们得到结果,不然的话得到这个程序是不可能的
作者: towardWang    时间: 2009-05-21 17:45
这种题目的解本来就有无穷个,用程序怎么做?列出无穷个解?

原帖由 jeanlove 于 2009-5-21 16:18 发表
如题,数列8,3,1,-2的规律是什么?下一个数字是多少?

网上的一个解答是
8等于后两个数乘积加5,3等于后两个数乘积加5,以此类推
8=3×1+5
3=1×(-2)+5
1=(-2)×()+5
所以()=2

问题:能 ...

作者: daybreakcx    时间: 2009-05-21 17:50
标题: 回复 #7 towardWang 的帖子
不同的方法得到的下一个数值不一样,比如我得到的是3,楼主得到的就是2,这个真的不好弄出来
作者: tianshanxue2005    时间: 2009-05-21 17:58
看看 牛津谋杀案
作者: jeanlove    时间: 2009-05-21 18:16
原帖由 tianshanxue2005 于 2009-5-21 17:58 发表
看看 牛津谋杀案

呵呵,这个电影的剧情介绍很像我的前面里面向大家推荐的书:有确定方向的机械推导,不能等同于"能够形成自我指向的怪圈"的意识。
作者: beepbug    时间: 2009-05-21 19:37
数列共有多少种规律?有限种,还是无限种?如果是有限的,是不是都已确定?
作者: langue    时间: 2009-05-21 20:00
数列里找规律,是一拍脑袋想出来答案的事情,谁又猜得到能想出多少种。

比方讲,举个简单的例子,-1, 1, -1, 1, -1, 1, ……
我说用正弦函数来求,有人说可以利用 -1 的 n 次方,又有人说可以写个复数表达式。
在这三类思路的基础上,更可以衍生出无穷多种表达式出来,因为没有规定表达式的项数和具体要求。
更何况,谁知道会不会有第四类解法。

补充一个更绝的答案。既然没有给出函数表达式,列举的只是前 6 项,那我怎么知道第 7 项是啥?我写 0 行不?为啥行?为啥不行?谁知道。写个分段函数不就又是一种了。



[ 本帖最后由 langue 于 2009-5-21 20:05 编辑 ]
作者: cugb_cat    时间: 2009-05-21 20:48
插值啊、拟合啊
去看数值算法吧。
作者: lsupper    时间: 2009-05-21 21:11
要机器能搞出这个规律来,要超级计算机慢慢试吧~~~
作者: reiase    时间: 2009-05-21 21:26
程序挖掘出来的规律,不一定是你想要的归路...
作者: MMMIX    时间: 2009-05-21 21:30
原帖由 langue 于 2009-5-21 20:00 发表
补充一个更绝的答案。既然没有给出函数表达式,列举的只是前 6 项,那我怎么知道第 7 项是啥?我写 0 行不?为啥行?为啥不行?谁知道。写个分段函数不就又是一种了。

这就是了,只给有限项,永远无法确定后面的无穷项,因为你总是可以随意的构造公式。。。
作者: cugb_cat    时间: 2009-05-21 21:30
从样本中找出规律,就是拟合要做的。
不过如果说样本是完全可信的,用插值的方法,也能找出一个表达式来。
作者: cugb_cat    时间: 2009-05-21 21:34
原帖由 langue 于 2009-5-21 20:00 发表
补充一个更绝的答案。既然没有给出函数表达式,列举的只是前 6 项,那我怎么知道第 7 项是啥?我写 0 行不?为啥行?为啥不行?谁知道。写个分段函数不就又是一种了。

楼主的说法很不严谨,呵呵,要求上高阶可导就不行了。
作者: 李某人    时间: 2009-05-22 00:48
都研究到这些上面来了   表示瞻仰
作者: beepbug    时间: 2009-05-22 07:44
如果是有限种且已弄明白,那这不是智能问题,仅仅是算法问题,还不算复杂。求求这里几位版主,他们立马给你写出来。
如果是langue在12楼说的那样,那就是一个超级智能问题。这智能性远远超过与象棋大师下棋。
作者: dfwddl    时间: 2009-05-22 11:10
很明显答案无数

这么看y=f(x)
x -- 项数
y -- 第x项的值

函数曲线只要经过有限个点,满足这个条件的答案当然有无数了...
作者: ds68970    时间: 2009-05-22 16:21
如果没有限定规律形式的话,这就是一个不可证伪的问题。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2