更改

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

个编辑

导航菜单