什么是马尔可夫链可夫链,是指数学中具有什么是马尔可夫链可夫性质的离散事件隨机过程该过程中,在给定当前知识或信息的情况下对于预测将来会发生什么,发生的概率是多少
本文章讲述的是如何使用JAVA来简单嘚实现什么是马尔可夫链科夫链算法,相比于现有的C、C++算法使用JAVA实现什么是马尔可夫链科夫链算法比较的简单,其原因在于JAVA里可以使用List數组代替C、C++里的链表、指针操作起来相对的简单。
什么是马尔可夫链科夫链算法的实现原理是通过统计原有的数据以及它们发生的概率,从而通过概率的大小来判断未来会发生什么有多大的概率,其过程可以用下面的图片简单描述:
上图中矩阵2由矩阵1变化而得及其過程可以简答的理解为由1→1,2→3,3→2,1→1···依次类推,什么是马尔可夫链科夫算法即通过统计这个过程即1→1的次数和概率,预测矩阵3中(将甴矩阵2推出矩阵3)1转换为哪个数字的概率最大从而达到预测的功能。
首先是新建两个数组这里使用的Object类型的List数组,可根据自身需求选擇需要的类型第一个数组用于存放统计数据,第二个数组用于存放概率:
接下来定义一些可能用到的常量:
double p=0;接下来先做一下异常处理防止没有或仅有一组数据,本算法仅限于两组以上算法: }接下来是核心逻辑主要实现数据的统计:得到统计完的数据后就可以计算每种倳假发生的概率了,这段代码比较的简单:
得到的最终结果是由3个为一组的数据组成的数组例如:1,1,0.1,1,2,0.02表示是是1→1概率为0.1,1→2概率为0.02
下图為简单的测试结果:
本算法使用的是JAVA语言实现什么是马尔可夫链科夫链算法,其复杂度为n^3在数据量比较大的时候较为的不适用,可能等待时间会比较的长尚存在优化的方向。