Codejie's C++ Space

Using C++

LAC : '记忆'算法


    前天晚上检查LAC代码,总觉得其使用的'记忆'算法有问题,调试很久,火起,重新实现了一个...

    所谓'记忆'算法,最著名的应该是那个什么'艾宾浩斯记忆曲线'了,可惜咱数学不好,没看懂,只好自己弄个简单的了...
    '记忆'算法由四个参数组合而成,很简单 -- 一个时间间隔参数乘以由前次分数,本次分数以及结果判定确定的三维坐标,即可获得下次时间.
    三维坐标系如下:
float rateTable[4][4] = {
        { 1.75f, 0.80f, 0.45f, 0.17f },
        { 1.50f, 1.25f, 0.55f, 0.20f },
        { 1.00f, 0.80f, 0.45f, 0.20f },
        { 0.80f, 0.50f, 0.30f, 0.17f }
};

int judgeTable[2][4] = {
    { 0, 1, 1, 2 },
    { 2, 2, 3, 3 } 
};
    
    计算方法简化如下:
check = judgeTable[judge][preScore];
next = ((last != 0) ? (updated - last) : 7) * rateTable[curScore][check] + updated + 1;

    咱也不知道这个算法好不好,所有系数完全自己推倒杜撰的(该不该弄个专利去呢...),为了表达自己对'严谨科学态度'的敬意,做了如下测试,请看各位报表..

    1. 假定某个单词从第一次就选择'认识',且判定为'正确'(意思是自己判定'认识'此单词的判断是正确的),那么此单词连续九次出现的时间以及两次间时间间隔趋势如下图所示: (X轴为单词出现是时间,Y轴为两次出现时间的间隔)



    从图表中可以看出,一个'熟悉'的单词,出现的间隔会越来越长.这复合基本逻辑--熟悉的单词不用经常记忆.

    2. 相反,假定某个单词起始为'熟悉',但在其后选择中,选择'没概念',且判定为'错误'(意思是自己确实对此单词'没概念',)(这里跟前面的解释一起理解时,有点乱...),那么此单词连续九次出现的 时间间隔趋势如下:

    
    由上图可见,随着选择'没概念'的次数增加,单词出现的间隔不断变小,直至为1.

    3. 下面趋势图显示了当一个单词每次都选择'熟悉',但判定依次为'正确'和'错误',连续九次出现后的时间间隔变化:


    4. 最后一个则是单词每次选择'没概念'但判定依次为'正确'和'错误'的时间间隔趋势图:



    '熟悉度'一共有4级,且有两个参数,加上'判定'参数的2级,三个参数组合起来的系数关系就是前面的两个数组,我是没敢测试每种组合的趋势,挑了上面四个最简单的可能,其他的大家有兴趣自己看吧...欢迎指点,欢迎拍砖,但不许打脸...

    <---- 判定意思好混乱的分割线 ---->

    刚才突然想起一个好方法,可以屏蔽'判定'概念,这就去改...

posted on 2012-07-26 22:55 codejie 阅读(1888) 评论(5)  编辑 收藏 引用 所属分类: 轮子精神LingosHook

评论

# re: LAC : '记忆'算法 2012-07-27 11:41 jan

2了一回,鸟笼没开,背了一上午的词全没抓到 5555  回复  更多评论   

# re: LAC : '记忆'算法 2012-07-30 14:18 jan

发现一个小bug

把tag里的词,copy 到其它tag,再把这个词删掉
然后发现 目标tag里拷贝过去的词变成别的词了??

同时,奇怪,copy功能都有了,为什么不做个move出来呢  回复  更多评论   

# re: LAC : '记忆'算法 2012-07-30 15:32 codejie

@jan
“把tag里的词,copy 到其它tag,再把这个词删掉”:我想你的意思应该就是‘remove’而不是‘delete’吧?如果一个单词被‘delete'那就没有了,所有的tag下都没有了。可能你要的操作是先copy to other,再remove from this tag才对。你在分类的tag下可以看到这两个操作,在单词列表下面只有copy to和delete。
这个是有点模糊,在lingosHook中,remove是移去,delete是删除。没有move操作的原因很简单---代码写起来有点烦。。。下次好不。。。
也许这个贴子有帮助http://www.cppblog.com/codejie/archive/2012/02/22/166260.html  回复  更多评论   


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

Using C++

导航

统计

留言簿(73)

随笔分类(513)

积分与排名

最新评论

阅读排行榜

评论排行榜