You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python获取HMM相关矩阵零空间的论文指定形式结果?

问题:如何得到论文指定形式的零空间结果

背景说明

我尝试实现某论文第5页的公式(6),该公式用于构建矩阵 ( N ):
[
N = \begin{bmatrix} C \ CP \ CP^2 \ \vdots \ CP^{n-1} \end{bmatrix}
]
其中 ( C ) 是HMM的发射矩阵,( P ) 是状态转移矩阵,最终目标是计算 ( N ) 并求解其零空间。

我采用论文示例4的输入矩阵:

  • 状态转移矩阵 ( P ):
    [
    P = \begin{bmatrix} \frac{1}{2} & 0 & \frac{1}{3} & \frac{1}{4} \ 0 & \frac{1}{3} & \frac{1}{3} & \frac{1}{4} \ \frac{1}{2} & 0 & \frac{1}{3} & 0 \ 0 & \frac{2}{3} & 0 & \frac{1}{2} \end{bmatrix}
    ]
  • 发射矩阵 ( C ):
    [
    C = \begin{bmatrix} \frac{1}{4} & \frac{1}{4} & \frac{1}{2} & \frac{7}{16} \ \frac{3}{4} & \frac{3}{4} & \frac{1}{2} & \frac{9}{16} \end{bmatrix}
    ]

论文给出的零空间结果为整数形式:
[
\begin{bmatrix} 3 & -1 \ -3 & -2 \ 1 & -6 \ -1 & 8 \end{bmatrix}
]

我的实现代码

我使用以下Python代码进行计算:

import numpy as np
from scipy.linalg import null_space

n = 4
P = np.array([[1/2, 0, 1/3, 1/4], [0, 1/3, 1/3, 1/4], [1/2, 0, 1/3, 0], [0, 2/3, 0, 1/2]])
C = np.array([[1/4, 1/4, 1/2, 7/16], [3/4, 3/4, 1/2, 9/16]])

N = C
for i in range(1, n):
    N = np.vstack((N, np.dot(C, np.linalg.matrix_power(P, i))))

ns = null_space(N)
print(ns)

当前输出结果

运行代码后得到的零空间结果为:

[[ 0.71390642 -0.01189748]
 [-0.68971636 -0.18464902]
 [ 0.07257016 -0.58963951]
 [-0.09676022  0.78618601]]

虽然该结果与论文结果张成的是同一个零空间,但我想知道如何用Python得到论文中的整数形式结果。


内容的提问来源于stack exchange,提问作者Halsey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:42:50