当前位置: 首页 > news >正文

Python实现简单的马尔科夫链

        之前为了应对数学建模,就学了一些数学模型,就比如马尔科夫链。

        以下就是我写的简单的马尔科夫链:

from typing import Any ,NoReturn
from pprint import pprintclass MarkovChain(object):CACHE: dict[str : int] = {}#实现简单的缓存@classmethoddef cache(cls ,target: Any) -> int|None:return cls.CACHE[target] if target in list(cls.CACHE) else Nonedef __init__(self ,string: str) -> NoReturn:if not isinstance(string ,str) or not string:returnself.__main_string: str = string#返回组合@propertydef permutations(self) -> iter:data_set: set = set(self.__main_string)return {(e1 ,e2) for e1 in data_set for e2 in data_set}#计算子字符串的个数def count_substring(self ,sub_string: str ,count:int = 0b0) -> int:if sub_string not in self.__main_string:return 0b0for index ,each in enumerate(range(len(self.__main_string)) ,start=0):if self.__main_string[index:index+0b10] == sub_string:count += 0b1else:return count#返回计算结果@propertydef data(self ,*args: tuple ,**kwargs: dict) -> dict:data: dict[str : int] = {}for index ,each in enumerate(self.permutations ,start=0):sub_name: str = ''.join(each)data[sub_name]: dict[str : int] = self.count_substring(sub_name)else:return data#计算分母def denominator(self ,substring: str) -> int:if (SUM := MarkovChain.cache(substring[0])) is not None:return SUMSUM: int = sum([item for index ,(key ,item) in enumerate(self.data.items()) if substring[0]==key[0]])MarkovChain.CACHE[substring[0]]: dict[str:int] = SUMreturn SUM#返回计算的比例@propertydef percentage(self) -> dict:return {key:each/self.denominator(key) for index ,(key ,each) in enumerate(self.data.items() ,start=0)}def main(*args: tuple ,**kwargs: dict) -> NoReturn:for index ,each in enumerate(args ,start=1):print(f"{index}:")chain: MarkovChain = MarkovChain(string_data)pprint(chain.data)print()pprint(chain.percentage)else:print("OK!")


http://www.mrgr.cn/news/2498.html

相关文章:

  • 『深度长文』4种有效提高LLM输出质量的方法!
  • 学习C语言第十五天
  • 深入单例模式
  • 4.Java面试题之lock 和 synchronized 区别
  • 同态加密及HElib
  • Python 选出列表中特定的元素
  • 你知道手机零部件尺寸检测的重要性吗?
  • LeetCode238.除自身以外数组的乘积
  • WPF—Triggers触发器
  • 【数据结构】二叉搜索树(二叉排序树)、平衡二叉树、红黑树、B树、B+树详解
  • Excel“取消工作表保护”忘记密码并恢复原始密码
  • EGL函数翻译--eglCreatePbufferSurface
  • ​​JVM三:JVM垃圾回收机制(GC)
  • 基于JSP的美食推荐管理系统
  • SSH协议与OpenSSH配置详解(配置密钥对验证实验)
  • LDR6020双盲插便携显示器方案:重塑连接体验的新标杆
  • 【软件测试】功能测试理论基础
  • 使用 Python和 SQLite 打造一个简单的数据库浏览器
  • 【等保测评】Ngnix模拟测评
  • Python青少年简明教程:数据类型和操作符