Algorithm 最有效马尔可夫链算法

Algorithm 最有效马尔可夫链算法,algorithm,math,Algorithm,Math,我目前的项目需要使用3x3x3马尔可夫链。我提出的第一个实现是让矩阵中的每个位置都有机会移动到该位置(所有位置的值总和为1)。根据矩阵中的值,这将导致: 平均13.5次比较 1比较的最佳案例 最坏的情况是27次比较 我的下一个想法是将每行和每层的总和存储为一个额外的类变量数组。这将允许它在以下位置找到正确的位置: 平均4.5次比较(1.5次查找图层,1.5次查找 行,1.5以查找位置) 3个比较的最佳案例 最坏的情况是9次比较 我们已经可以看到,这是一个更好的实现比较明智,但也有一些额外

我目前的项目需要使用3x3x3马尔可夫链。我提出的第一个实现是让矩阵中的每个位置都有机会移动到该位置(所有位置的值总和为1)。根据矩阵中的值,这将导致:

  • 平均13.5次比较
  • 1比较的最佳案例
  • 最坏的情况是27次比较
我的下一个想法是将每行和每层的总和存储为一个额外的类变量数组。这将允许它在以下位置找到正确的位置:

  • 平均4.5次比较(1.5次查找图层,1.5次查找 行,1.5以查找位置)
  • 3个比较的最佳案例
  • 最坏的情况是9次比较
我们已经可以看到,这是一个更好的实现比较明智,但也有一些额外的数据,它需要存储


有没有更好的方法来实现这一点

马尔可夫链通过转移矩阵演化,在您的例子中,转移矩阵可能是27x27矩阵。然而,你问问题的方式意味着你不是在处理一般情况,并且有一些特殊的条件适用

如果我这样做的话,我的第一个想法是,现在的计算机速度太快了,不必担心初始版本的效率,最好得到一些初步的结果。所以我只会开始担心后续版本的效率。特别是,您更高效的版本显然将有点难以获得正确的结果,并且可能有点危险,以防您保存的一些变量与马尔可夫链的基本状态不同步。因此,测试这种更有效的实现的一个重要工具是您首先想到的暴力-低效实现