39个版本 (5个稳定版)
2.3.0 | 2023年5月17日 |
---|---|
2.1.0 | 2023年3月23日 |
1.0.1 | 2023年3月9日 |
0.24.0 | 2023年3月9日 |
0.14.2 | 2022年12月22日 |
#1023 in 算法
57KB
922 行
Entromatica
Entromatica是一个用于构建、模拟和分析马尔可夫链的库。
它分为两个主要部分:模拟模块和模型模块集合。
模拟模块主要包含Simulation
结构体,它接受一个初始状态和一个StateTransitionGenerator
。这是一个函数,它接受一个状态并返回马尔可夫链中下一个状态的列表及其相应的相对概率。
模型模块包含一组结构和函数,旨在使构建状态转换生成器更加容易。目前这包括仅有的一个模型:rules
。
// This is a simple onedimensional random walk
use entromatica::prelude::*;
use std::sync::Arc;
// The initial state. It has to be Hash + Clone + Send + Sync + PartialEq + Eq + Debug
let initial_state: i32 = 0;
// The state transition generator. The simulation panics if the probabilities don't sum up to 1.0
let state_transition_generator =
Arc::new(|state: i32| vec![(state + 1, "next", 0.5), (state - 1, "previous", 0.5)]);
let mut simulation = Simulation::new(initial_state, state_transition_generator);
// The Shannon-entropy at the given time
assert_eq!(simulation.entropy(0), 0.0);
simulation.next_step();
assert_eq!(simulation.entropy(1), 1.0);
许可证
根据以下任一许可证授权:
- Apache许可证2.0版本 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交以包含在作品中的任何贡献,均应如上双授权,没有任何额外的条款或条件。
依赖项
~11MB
~192K SLoC