问题标签 [automaton]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
96 浏览

logic - 使用 coq 对自动机进行建模

我在 coq 证明助手中定义自动机时遇到问题,创建此代码时显示错误:

错误是:错误:此子句是多余的。(在本条款下划线“| q1, c => cons q2 nil”)

感谢您的关注。

0 投票
0 回答
512 浏览

regular-language - 带有偶数 0 的字符串的常规语言抽取引理

查找具有偶数个零的字符串是否为 a) 上下文无关 b) 常规

a) 使用 CFL 的泵引理....它可以表示为 e(0 n )e(0 n )e。所以,它是一个节能灯。

b)它可以用(00)*正则表达式表示。所以,我认为这是一种常规语言。但是,我无法使用常规语言的抽引引理证明相同

任何帮助将非常感激。谢谢!!

0 投票
1 回答
65 浏览

python - Python中的越界问题

在对 Cellular-Automaton 进行编程时(显然没有完成),我遇到了边界问题。本节结果的目标是在矩阵的 (i,j) 位置有一个值,该值描述 0 到 1 之间的随机值(及其直接邻居)的平均值。

如何在不违反边界条件/规则的情况下管理它?

0 投票
1 回答
248 浏览

python - Python非确定性epsilon authomaton:对象不可迭代

我必须用 epsilon 转换制作非确定性有限自动机。我更喜欢 ac、c#、JavaScript 的人,但我的大学出于某种原因认为 python 是唯一的出路,所以今天我学习了 python,但显然还不够。

反正。问题出在“ automaton”函数中。我用带有一个stanje1元素inputArrays[0]currentState,inputCharacter

第一次迭代运行良好,但是当我想递归检查通过 epsilon 转换获得的所有状态与下一个字符时,我得到错误:

使用与 top 调用类似定义的所有参数调用自动递归,但错误以某种方式跳出。

这是我的代码的链接,以及定义自动机的测试文件(您需要像这样运行它myScript.py < automaton.txt)。此外,这是一个完整的错误报告:

0 投票
1 回答
478 浏览

grammar - a^(2^i) 语言语法的构造

我有点被自动机和语法问题困住了。我搜索了很多,但没有任何成功。

甚至有可能构造一个生成这种语言 L 的语法吗?

谁能为我提供简单的解决方案?

0 投票
1 回答
1284 浏览

theory - 证明确定性 LBA 是否接受无限数量的输入是不可判定的

确定性线性有界自动机 (LBA) 是一种单磁带 TM,不允许将其磁头移过输入的右端(但它可以在磁带最初包含输入的部分上进行读写)。

我如何证明确定性 LBA M 是否接受无限数量的输入是不可判定的?

0 投票
1 回答
443 浏览

theory - 了解抽水引理

我对抽水引理相对较新,我在这里有一个问题,我认为我回答正确,谁能告诉我这是否有效,如果无效,为什么不

问题:{www | w 是 {a,b}*}

我的做法:

L = www

u* (v^k) * w 必须是 L 的子集

万维网

| | |

紫外线

紫外线 = 万维网

(u) (v^2) (w) = wwww

wwww 不是语言 www 的一部分,因此不是常规的

编辑:好吧,根据我的理解,抽引引理通过采用我们正在查看的“测试字符串”并将其拆分为一个保持相同的部分,然后是一个可重复的部分,最后是另一个保持不变的部分。在我的“方法”中,我将测试字符串“www”拆分为 u、v 和 w,每个分别持有一个“w”,其中 v 是可重复部分,另外两个是保持相同的部分。我将 v 部分加倍,最后得到一个结果 uvvw,它转换为 wwww,看起来好像它不是语言 www 的一部分。我有一种很好的感觉,我错了,因为我认为包括空字符串的条件“w is {a,b}*”,并且由于空字符串在 wwww 和 www 中是可行的,所以我的泵引理是错误的。

0 投票
1 回答
60 浏览

regex - 在大量字符串上测试 RegExp

我有很多字符串(可能大约 50k-1M,所有字符串都不太长,可能 1-20 个字符)。现在我得到任何正则表达式,我需要返回所有匹配字符串的列表/迭代器。这必须尽可能快。

有什么好的索引结构可以做到这一点?

目前,我正在字符串的字符上构建一棵树。我将 RegExp 转换为确定性自动机。然后我计算该自动机与树的交集。这看起来是一种快速的方法,但我想知道其他可能性。

一个额外的挑战是支持 Unicode/UTF8,但我现在不想把这个问题集中在那个位上。

0 投票
3 回答
4575 浏览

c# - 暂停一个线程直到一个方法和里面的所有线程完成它们的工作?

我是线程新手,我想知道如何使用它们在非确定性有限自动机中进行评估。

我有调用另一个方法的方法:

变量accepted是一个类成员,我用它来控制其他线程何时停止。

我的每个状态都有一组转换。转换由符号和通过使用该符号可以进入的状态组成。因此,每当找到可能的转换时,我都想创建一个新线程并检查字符串的其余部分(没有当前字符)...

我目前有2个问题:

  • 在 ThreadEval 中创建的所有线程完成它们之前,正在执行“接受的返回”。有没有办法确保在这些线程完成之前它不会返回?我在返回之前放了一个 Thread.Sleep(200) 并且它有效,但是对于大字符串来说 200 毫秒可能还不够,我也不想提高这个值,所以小字符串需要比它们应该处理的时间更长的时间.

  • 代码导致某些索引异常的方式......我 99.999% 确信它是正确的,但如果我调用 Substring 传递值i而不是i + 1 ,它只会停止崩溃。 ..但如果我只用i调用它就永远不会到达字符串的末尾,并且取决于自动机配置可能会导致无限循环。我不确切知道线程是如何工作的,但我怀疑某些并行处理可能会在子字符串切片之前改变i的值。我如何确保每当我调用一个新线程时,我只会丢弃当前的字符?

如果有人对如何更优雅地使用线程有任何建议,我将不胜感激,到目前为止,我发现在分配线程的函数中传递参数的唯一方法是使用委托。

0 投票
2 回答
2160 浏览

string - 什么是后缀自动机?

有人可以向我解释一下后缀自动机到底是什么,它是如何工作的以及与后缀树和后缀数组的区别?我已经尝试在网上搜索,但无法找到任何清晰全面的解释。

我发现以下链接最接近我想要的,但它是俄文的,翻译成英文很难理解。

http://e-maxx.ru/algo/suffix_automata