标签: automata

自动机理论书籍

请给我一些关于"形式语言和自动机理论"的好书.

谢谢!

automata

5
推荐指数
2
解决办法
7281
查看次数

测试两种常规语言的交集

我想测试两种语言是否有共同的字符串.这两种语言都来自下面描述的常规语言的子集,我只需要知道两种语言中是否存在字符串,而不是产生示例字符串.

该语言由类似glob的字符串指定

/foo/**/bar/*.baz

其中**匹配0个或更多字符,并*匹配零个或多个不是的字符,/所有其他字符都是字面值.

有任何想法吗?

谢谢,迈克

编辑:

我实现了似乎表现良好的东西,但尚未尝试正确性证明.您可以看到单元测试

parsing automata finite-automata

5
推荐指数
1
解决办法
1600
查看次数

正则表达式匹配0和1的字符串,没有'011'子字符串

我正在研究一个问题(从介绍到自动机理论,语言和计算机,由Hopcroft,Motwani和Ullman编写)来编写一个正则表达式,它定义了一个由不包含子字符串的所有0s和1s 字符串组成的语言011.

答案(0+1)* - 011是否正确?如果不是这个应该是什么正确的答案?

regex compiler-construction grammar automata

5
推荐指数
2
解决办法
1万
查看次数

使用Regex修复Java中未转义的XML实体?

我有一些格式错误的XML,我必须解析.无法解决上游问题.

(当前)问题是&符号并不总是正确转义,所以我需要转换&&

如果&amp;已经存在,我不想将其更改为&amp;amp;.一般来说,如果任何格式良好的实体已经存在,我不想破坏它.我不认为通常可以知道可能出现在任何特定XML文档中的所有实体,所以我想要一个&<characters>;保留任何类似的解决方案.

<characters>初始&和结束之间定义实体的一组字符在哪里;.特别是,<>不是原本表示XML元素的文字.

现在,在解析时,如果我看到&<characters>我不知道我是否会遇到a ;, (space), end-of-line, or another &.因此,我认为我必须记住,<characters>因为我向前看一个会告诉我如何处理原始角色的角色&.

我认为我需要使用Push Down Automaton的功能来实现这一点,我认为有限状态机不会因为我认为是内存要求而起作用 - 这是正确的吗?如果我需要PDA,那么调用中的正则表达式String.replaceAll(String, String)将无法工作.或者是否有可以解决此问题的Java正则表达式?

请记住:每行可能有多个替换.

(我知道这个问题,但它没有提供我正在寻找的答案.)

java regex xml entities automata

5
推荐指数
3
解决办法
5026
查看次数

常规语言(是或否)

我被赋予了检查这种语言是否正常的任务:

L = {w?{a,b,c}* | where the number of a is less than the number of b+c.}
Run Code Online (Sandbox Code Playgroud)

我既没有找到正则表达式,也没有找到确定性(或不是)有限状态自动机.另一方面,我没有找到任何方法来证明与泵浦引理定理相反.

有任何想法吗?

regex automata regular-language

5
推荐指数
1
解决办法
398
查看次数

5
推荐指数
1
解决办法
1783
查看次数

抽吸引理(常规语言)

我需要一些泵浦引理问题的帮助.

L = { {a,b,c}* | #a(L) < #b(L) < #c(L) }
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所得到的:

y = uvw is the string from the pumping lemma.
Run Code Online (Sandbox Code Playgroud)

我让y = abbc ^ n,n是泵浦引理的长度.y在L中,因为a:s的数量小于b:s的数量,并且b:s的数量小于c:s的数量.

我让u = a,v = bb和w = c ^ n.| UV | <y,如抽水引理中所述.如果我"抽"(bb)^ 2然后我得到

y = abbbbc^n which violates the rule #b(L) < #c(L).
Run Code Online (Sandbox Code Playgroud)

这是正确的吗 ?我是在"正确的道路上"吗?

谢谢

automata pumping-lemma regular-language formal-languages

5
推荐指数
1
解决办法
836
查看次数

Hopcroft算法将DFA最小化

P := {F, Q \ F};
W := {F};
while (W is not empty) do
     choose and remove a set A from W
     for each c in ? do
          let X be the set of states for which a transition on c leads to a state in A
          for each set Y in P for which X ? Y is nonempty do
               replace Y in P by the two sets X ? Y and Y \ X
               if Y is …
Run Code Online (Sandbox Code Playgroud)

python algorithm automata

5
推荐指数
0
解决办法
2643
查看次数

这种语言与自身的串联是什么?

鉴于以下语言:

L1 = { (ab)n | n ≥ 0 }

那是, L1 = { ε ab, abab, ababab, abababab, ... }

问题是要找到什么语言.L12

我的猜测是它等于.那是对的吗?如果是这样,我该如何证明呢?如果没有,为什么不呢?{ (ab)2n | n ≥ 0 }

谢谢!

math automata finite-automata regular-language formal-languages

5
推荐指数
1
解决办法
916
查看次数

在下推自动机中以相反的顺序推送/弹出堆栈

所以我正在研究我已经提出的下推自动机和无上下文语言的测试,我坚持这个结构.

我让这个自动机的每个部分都完全正常工作,除了我将在下面解释的一个部分.

它需要识别的语言是:{x#y#z#w | x,y,z,w在{0,1} +中,其中x≠w且y≠z}.

所以我遇到的问题是将Xi与Wi进行比较,因为Wi的元素在自动机处理W时是不知道的,就像我设计的那样.

如果我存储X的内容,当弹出时间并将每个元素与W的元素进行比较时,它们将以相反的顺序弹出,因此认为000111和111000是相同的字符串,而PDA将拒绝,当它应该明确接受(它们是不同的字符串).这只是一个例子,这也会导致错误地分析其他输入.

如果有一种方法可以按相反的顺序将X的内容压入堆栈,它们将以原始形式弹出,这样我就可以正确地比较字符串的内容.

如果在正常推送后有一种方法可以反转堆栈的内容,这也可以让我得出解决方案.

任何帮助将不胜感激.谢谢.

automata non-deterministic pushdown-automaton automata-theory

5
推荐指数
1
解决办法
1872
查看次数