更改

第416行: 第416行:  
在Hoel的原始论文<ref name="hoel_2013"/>中,所有的微观动力学都是针对布尔网络中的每个变量(即节点)定义其微观动力学机制完成的。而为了计算布尔网络的有效信息和因果涌现度量,我们必须要将这种微观动力学机制转变为系统整体的概率转移矩阵(即TPM)。因此,这里的一个关键问题是,如何将一个定义在局部变量上的动力学机制,转变为一个全局的TPM。这里给出一种一般性的算法:
 
在Hoel的原始论文<ref name="hoel_2013"/>中,所有的微观动力学都是针对布尔网络中的每个变量(即节点)定义其微观动力学机制完成的。而为了计算布尔网络的有效信息和因果涌现度量,我们必须要将这种微观动力学机制转变为系统整体的概率转移矩阵(即TPM)。因此,这里的一个关键问题是,如何将一个定义在局部变量上的动力学机制,转变为一个全局的TPM。这里给出一种一般性的算法:
   −
'''输入''':有向图形式的布尔网络G(包括N个节点、连边),微观动力学机制(即,节点对父节点输入的响应机制);'''输出''':微观态全局的概率转移矩阵P
+
'''输入''':有向图形式的布尔网络G(包括N个节点、连边),节点动力学机制(即,单个节点对父节点输入的响应机制);'''输出''':布尔网络G全局概率转移矩阵P
−
# 生成布尔网络的状态空间,共有微观态<math>2^N</math>个,N为节点数
+
# 生成布尔网络的状态空间,共有状态数<math>2^N</math>个,N为网络中的节点数
−
# 初始化概率转移矩阵<math>P</math>,大小为<math>2^N * 2^N</math>,<math>P_{ij}</math>为第i个状态转移到第j个状态的转移概率
+
# 初始化全局概率转移矩阵<math>P</math>,大小为<math>2^N * 2^N</math>,<math>P_{ij}</math>为第i个全局状态转移到第j个全局状态的转移概率
−
# 遍历当前时刻每个微观态i,遍历下一时刻每个微观态j,计算i->j的转移概率<math>P_{ij}</math>
+
# 遍历当前时刻每个全局状态i,遍历下一时刻每个全局状态j,计算i->j的转移概率<math>P_{ij}</math>
−
## 遍历每个节点n,获取它的父节点及其状态。
+
## 遍历每个节点n,获取它的父节点及其状态
−
## 获取微观态j中节点n的状态next_state,根据父节点状态,应用微观动力学机制,计算下一时刻节点n状态为next_state的概率<math>p(n)</math>
+
## 获取j中节点n下一时刻状态next_state,根据上一步获取的父节点状态,应用该节点的动力学机制,计算n转移至next_state的概率<math>p(n)</math>
−
## 各节点的转移概率相互独立,因此<math>P_{ij} = \prod_{n=1}^{N} p(n)</math>
+
## 各节点到下一时刻状态转移概率是相互独立的,因此全局状态i转移至j的概率是所有节点<math>p(n)</math>的乘积,即<math>P_{ij} = \prod_{n=1}^{N} p(n)</math>
−
# 行归一化<math>P</math>并输出
+
## 重复上述过程,计算所有<math>P_{ij}</math>,<math>i,j \in \{1, 2, 3, \ldots, 2^N\}</math>。
 +
# 行归一化<math>P</math>,完成由局部节点机制得到全局概率转移矩阵
     
5,443

个编辑