深度探索离散数学:理论与应用——(3)

继续上一章节

6. 高级开发示例:有限状态机与正则表达式引擎

问题描述

有限状态机(Finite State Machine, FSM)是离散数学的核心概念之一,可用于解析正则表达式。实现一个简化的正则表达式引擎,支持字符匹配、*. 操作符。

理论基础

  • 正则表达式: 由字符与操作符构成,用于描述字符串模式。
  • 有限状态机: 通过状态转移实现正则表达式的解析。

Python 实现:正则表达式引擎

class SimpleRegexEngine:
    def is_match(self, text, pattern):
        if not pattern:
            return not text
        
        first_match = bool(text) and pattern[0] in {text[0], '.'}
        
        if len(pattern) >= 2 and pattern[1] == '*':
            return (self.is_match(text, pattern[2:]) or
                    (first_match and self.is_match(text[1:], pattern)))
        else:
            return first_match and self.is_match(text[1:], pattern[1:])

# 示例
engine = SimpleRegexEngine()

tests = [
    ("abc", "a.c", True),
    ("aaa", "a*", True),
    ("mississippi", "mis*is*p*.", False)
]

for text, pattern, expected in tests:
    result = engine.is_match(text, pattern)
    print(f"文本: {text}, 模式: {pattern}, 匹配结果: {result}, 预期: {expected}")

输出结果

文本: abc, 模式: a.c, 匹配结果: True, 预期: True
文本: aaa, 模式: a*, 匹配结果: True, 预期: True
文本: mississippi, 模式: mis*is*p*., 匹配结果: False, 预期: False

7. 实践与扩展:密码学中的离散数学

问题描述

RSA 是现代密码学的基石,基于大整数分解的困难性。离散数学中的模运算和欧拉函数在其加密与解密中发挥关键作用。

理论基础

RSA 的加密与解密流程:

	1.	选择两个大质数 (p) 和 (q),计算 (n = p \cdot q)。
	2.	计算欧拉函数 (\phi(n) = (p-1)(q-1))。
	3.	选择公钥 (e),满足 (1 < e < \phi(n)) 且 (\gcd(e, \phi(n)) = 1)。
	4.	计算私钥 (d),满足 (e \cdot d \equiv 1 \pmod{\phi(n)})。

Python 实现:RSA 加密解密

from math import gcd

def mod_inverse(e, phi):
    for d in range(1, phi):
        if (e * d) % phi == 1:
            return d
    return None

def rsa_encrypt_decrypt():
    # 1. 初始化参数
    p, q = 61, 53
    n = p * q
    phi = (p - 1) * (q - 1)
    e = 17  # 公钥
    d = mod_inverse(e, phi)  # 私钥

    # 2. 加密
    message = 42
    encrypted = pow(message, e, n)

    # 3. 解密
    decrypted = pow(encrypted, d, n)

    return encrypted, decrypted

encrypted, decrypted = rsa_encrypt_decrypt()
print(f"加密结果: {encrypted}, 解密结果: {decrypted}")

输出结果

加密结果: 2557, 解密结果: 42

8. 推荐书籍与资源

书籍推荐

•	《离散数学及其应用》 (Kenneth H. Rosen)
权威教材,涵盖离散数学的理论与应用。

•	《图论及其应用》 (Douglas B. West)
深入探讨图论的核心概念与算法。

GitHub 优质开源项目

Regex Engine
实现正则表达式引擎的教程与代码。
PyCrypto RSA
一个支持多种加密算法的 Python 库。

如果你觉得我写的文章对你有所帮助,那么请点赞并关注支持一下作者!谢谢各位 😁

使用的编程语言及工具
• 编程语言: Python
• 工具: Jupyter Notebook、VS Code

可以通过以下方式联系到作者(不闲聊):
WeChat:WillWieck
Tiktok:
https://www.tiktok.com/@activeus_worldice?_t=ZT-8smC79Dw81m&_r=1
知乎 :
https://www.zhihu.com/people/436d2d72254583a8cea1cd7195e495c4
EMail:
WCLONZE0000001@outlook.com
worldcoin@worldfoundation.online
FaceBook:
Diomr HS
X:
https://x.com/yikelovehongshu?s=21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值