首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DFA算法简单理解实现

背景:因为最近项目要使用到敏感词过滤服务,在网上了解到dfa实现这个功能性能还不错,特此学习了一下 1....什么是DFA算法 引用 简书作者:浪人与酒丶的解释 原文链接:https://www.jianshu.com/p/c67f917c9363 DFA全称为:Deterministic Finite...但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。 确定:状态以及引起状态转换的事件都是可确定的,不存在“意外”。 有穷:状态以及事件的数量都是可穷举的。...通过java程序加载敏感词库,构建一个DFA算法模型 private static void addSensitiveWordToHashMap(Set keyWordSet) {...算法已经实现,可继续开发我们的业务代码 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126635.html原文链接:https://javaforall.cn

1.8K11
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    编译原理:NFA转DFA

    DFA 确定有限自动机(Deterministic Finite Automaton,DFA)是一种计算模型,常用于模式匹配、词法分析等领域。...定义 一个 DFA 可以用一个五元组 (Q,Σ,δ,q0,F)(Q, \Sigma, \delta, q_0, F)(Q,Σ,δ,q0​,F) 来表示,其中: QQQ 是一个有限的状态集合。...也就是说,对于当前状态和输入符号,DFA 有唯一的下一个状态。 q0q_0q0​ 是初始状态,q0∈Qq_0 \in Qq0​∈Q。 FFF 是接受状态集合,F⊆QF \subseteq QF⊆Q。...工作原理 DFA 从初始状态开始,根据输入符号和状态转移函数不断地转移状态。当输入字符串处理完毕后,如果 DFA 处于接受状态集合中的某个状态,则认为该字符串被 DFA 接受;否则,该字符串被拒绝。...: 通过以上步骤,我们成功地将 NFA 转换为了 DFA。

    24110

    OpenSource - 基于 DFA 算法实现的高性能 java 敏感词过滤工具框架

    sensitive-word sensitive-word 基于 DFA 算法实现的高性能敏感词工具。 The sensitive word tool for java....基于 DFA 算法实现的高性能 java 敏感词过滤工具框架。请勿发布涉及政治、广告、营销、翻墙、违反国家法律法规等内容。...在线体验 创作目的 实现一款好用敏感词工具。 基于 DFA 算法实现,目前敏感词库内容收录 6W+(源文件 18W+,经过一次删减)。 后期将进行持续优化和补充敏感词库,并进一步提升算法的性能。...特性 6W+ 词库,且不断优化更新 基于 fluent-api 实现,使用优雅简洁 基于 DFA 算法,性能为 7W+ QPS,应用无感 支持敏感词的判断、返回、脱敏等常见操作...java 如何实现开箱即用的敏感词控台服务? 敏感词标签文件 梳理了大量的敏感词标签文件,可以让我们的敏感词更加方便。

    31300

    找回消失的密钥 --- DFA分析白盒AES算法

    AES算法的介绍请参照 http://91fans.com.cn/post/ilikeaes/ DFA(Differential Fault Analysis) 的原理和算法推导过程,请参照文末的链接。...我们今天用一个源码实例来操作一下,还原白盒AES算法的密钥 二、步骤 构造缺陷数据 DFA攻击简单来说就是在倒数第一轮列混合和倒数第二轮列混合之间(在AES-128中也就是第8轮和第9轮之间,因为最后第...今天我们主要走一遍DFA还原白盒密钥的流程,所以,我们找了一个AES的源码来做演示,这份源码的AES加密流程一目了然,最适合学习AES算法了。...三、总结 1、DFA的原理和数学推导请参考下列资料,还有白龙写的 白盒 AES 密码学系列 也非常棒。...4、分析加密算法,最好找个清晰的源码实现,然后和样本里的逻辑相互对照。 图片 美妙人生的关键在于你能迷上什么东西。

    2.2K20

    简单的词法设计——DFA模拟程序

    通过对 DFA 模拟程序实验,使学生掌握词法分析的实现技术,及具体实现方法。通过本实验加深对词法分析程序的功能及实现方法的理解 。...二、实验环境 供 Windows 系统的 PC 机,可用 C++/C#/Java 等编程工具编写,语言不限。...K is in Z then return (‘yes’) else return (‘no’) 四、实验方式与要求 1、设计的自动机程序要具有通用性,上机编程实现...设计思路:我们主要是用 Java 语言实现词法分析的过程,需要处理 DFA 和 NFA 两种状态,所以在文末我们给出了测试样例以及测试截图,部分代码给出了详细的注释。...实验代码如下: package python; import java.util.List; import java.util.ArrayList; import java.util.Scanner;

    2.1K30

    【C++】算法集锦(11):敏感词过滤算法(DFA)

    文章目录 什么是 确定的、有穷状态、机 跟我一起看个栗子 DFA图解 DFA示例实现代码 DFA:确定的 有穷 状态机 如果 设计模式 中的状态模式比较熟的话,这个就很清楚了。...我觉得,DFA的机制很适合用于动态流程图的实现,特别是复杂的,动态流程图。当然,动态流程图是可以暴力硬写的,就是代码肥了点而已。...---- 跟我一起看个栗子 这也是我最初接触到DFA的栗子,当时我就是暴力硬写,当然,代码肥的我都没脸贴当时那篇博客里去。 请你来实现一个 atoi 函数,使其能将字符串转换成整数。...---- DFA图解 我们的程序在每个时刻有一个状态 s,每次从序列中输入一个字符 c,并根据字符 c 转移到下一个状态 s’。...---- DFA示例实现代码 #include #include using namespace std; int DFA(vector& cvec

    87920

    经典KMP算法C++与Java实现代码

    比较流行的做法是实现一个next()函数,函数本身包含了模式串的局部匹配信息。由于next函数理解起来不太容易,本文同样是基于空间换时间的做法,但将采用另一种代码实现,希望可以更方便读者理解!...as330kdwejjl_8 jjl_ faw4etoesting tio aabacb abac 测试结果 4 9 -1 0 (注:若匹配则返回text子串的起始index;否则返回-1) 1.暴力查找的实现一...若text存在子串匹配pat,则返回text子串起始index;否则返回-1;时间复杂度:O(M*N) 2.暴力查找实现二 1 // 暴力子串查找二式:O(M*N) 2 public static...这里我们引入有穷自动机DFA对dfa[][]进行数值的初始化。...------------------ Java完整代码 1 package ch05.string.substring; 2 3 import java.io.File; 4 import java.util.Scanner

    42920

    高性能敏感词过滤工具:基于 DFA 算法实现 | 开源日报 No.256

    sensitive-wordhttps://github.com/houbb/sensitive-word Stars: 3.4k License: Apache-2.0 sensitive-word 是一个基于 DFA...算法实现的高性能敏感词过滤工具框架。...支持敏感词的判断、返回、脱敏等常见操作 支持常见格式转换,如全角半角互换、英文大小写互换等 提供丰富的检测功能,包括敏感词检测、邮箱检测和网址检测等 可自定义替换策略和白名单,并支持动态更新数据 高性能,使用 DFA...算法实现,在应用中无明显延迟 通过 sensitive-word 框架可以方便地进行高效准确地敏感词过滤。...tiny-gpuhttps://github.com/adam-maj/tiny-gpu Stars: 4.7k License: NOASSERTION picture tiny-gpu 是一个用 Verilog 实现的最小

    59710

    算法-DFA算法-敏感词过滤算法(OC、Swift、Python)

    一般的思路可能是遍历敏感词库,然后把一段文字的敏感词过滤掉,但是针对比较大的词库时(比如我们的敏感词库10万),这样非常耗时和耗内存,在电脑上还能跑跑,但是在手机上分分钟钟被系统杀死掉,这样肯定是不行的,这里就用到一种DFA...但是使用了DFA算法,十万的敏感词库过滤一句话只需要【0.434510秒】!...2019-10-23 14:34:08.316380+0800 DFAFilterDemo[4728:4650502] 总共耗时: 0.434510 DFA算法 简介 何谓DFA,它的全称是Deterministic...但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号;DFA算法的核心是建立了以敏感词为基础的许多敏感词树。...过滤算 ---------- import time time1 = time.time() class DFAFilter(object): """DFA过滤算法""" def __init_

    6.5K10
    领券