用JAVA语言实现离散数学算法
用JAVA语言实现离散数学算法 * 显示离散数学算法的真值表 * 提供将一个中缀合适公式的真值表输出到某一PrintStream流中的功能 * 以单个大写字母表示变量(支持26个变量) * 以字符0或者1表示值 * 以 ~ ^ θ)来更新Y的期望E(Y),然后用E(Y)代替Y求出新的模型参数θ(1)。如此迭代直到θ趋于稳定。 在HMM问题中,隐含变量自然就是状态变量,要求状态变量的期望值,其实就是求时刻ti观察到xi时处于状态si的概率,为了求此概率,需要用到向前变量和向后变量。 向前变量 向前变量 是假定的参数 它表示t时刻满足状态,且t时刻之前(包括t时刻)满足给定的观测序列的概率。 1. 令初始值 2. 归纳法计算 3. 最后计算 复杂度 向后变量 向后变量 它表示在时刻t出现状态,且t时刻以后的观察序列满足的概率。 1. 初始值 2. 归纳计算 E-Step 定义变量为t时刻处于状态i,t+1时刻处于状态j的概率。 定义变量表示t时刻呈现状态i的概率。 实际上 是从其他所有状态转移到状态i的次数的期望值。 是从状态i转移出去的次数的期望值。 是从状态i转移到状态j的次数的期望值。 M-Step 是在初始时刻出现状态i的频率的期望值, 是从状态i转移到状态j的次数的期望值 除以 从状态i转移出去的次数的期望值, 是在状态j下观察到活动为k的次数的期望值 除以 从其他所有状态转移到状态j的次数的期望值, 然后用新的参数再来计算向前变量、向后变量、和。如此循环迭代,直到前后两次参数的变化量小于某个值为止。 下面给出我的java代码: package nlp; /**