是否有算法从给定的无上下文语法生成所有字符串?
我对If Then Else的定义中的投影有问题.它实际上是作为If-Else-Then执行的.
import Prelude hiding (pred,and,or,not)
data PR = Z
| S
| P Int
| C PR [PR]
| PR PR PR
deriving Show
eval :: PR -> [Integer] - Integer
eval Z _ = 0
eval S [x] = x+1
eval (P n) xs = nth n xs
eval (C f gs) xs = eval f (map (\g -> eval g xs) gs)
eval (PR g h) (0:xs) = eval g xs
eval (PR g h) (x:xs) …Run Code Online (Sandbox Code Playgroud) 我刚接受了期中考试,但无法回答这个问题.
有人可以给出一些语言的例子,并为语言构建一个语法,或者 至少告诉我如何去做它?
另外如何编写语法L:
L = {a n b m | n,m = 0,1,2,...,n <= 2m}?
提前致谢.
grammar context-free-grammar computation-theory context-sensitive-grammar
我目前正在学习软件工程,我的一些课程包括计算理论和分析算法。我发现很难将图灵机与软件工程或简单编程联系起来。所以我的问题是:
为什么要纳入在软件工程领域在计算机科学中起重要作用的理论学科?或者如何在开发软件中应用PDA,TM,P,NP等知识?我看不到两者之间的联系。
所以我刚刚学会了排序算法的冒泡,合并,插入,排序等等.他们在排序方法上似乎都非常相似,而我们的方法似乎只有很小的变化.那么他们为什么会产生这样不同的排序时间,例如O(n ^ 2)vs O(nlogn)
我使用了很多正则表达式,并偶然发现了正则表达式实际上无法描述的问题。
我想到的第一个例子是匹配像 这样的字符串XOOXXXOOOOXXXXX...。这将是一个X由 s 和O' 交替序列组成的字符串,其中每个子部分仅包含该字符X或O比其他字符的先前序列长。
谁能解释一下正则表达式的正式限制是什么?我知道这可能是一个相当学术的问题,但我是一个好奇的人;-)
编辑 因为我是一个 php 人员,所以我对 PCRE 标准描述的正则表达式特别感兴趣,如下所述: http: //php.net/manual/en/reference.pcre.pattern.syntax.php 我知道 PCRE 允许很多不属于原始正则表达式的内容,例如反向引用。
平衡括号的数学计算似乎是一个通常无法与正则表达式匹配的示例,但可以使用PCRE 进行匹配(有关实时示例,请参阅http://sandbox.onlinephpfunctions.com/code/fd12b580bb9ad7a19e226219d5146322a41c6e47):
$data = array('()', '(())', ')(', '(((()', '(((((((((())))))))))', '()()');
$regex = '/^((?:[^()]|\((?1)\))*+)$/';
foreach($data as $d) {
echo "$d matched by regex: " . (preg_match($regex, $d) ? 'yes' : 'no') . "\n";
}
Run Code Online (Sandbox Code Playgroud) 我想知道所有无限的语言都无法决定吗?
它们必须是正确的,因为TM试图决定一种无限的语言会永远循环下去,这使它成为矩形,而不是决定者。
多谢你们。
我刚刚了解到,C 中的加法运算比乘法运算更快。因此,我很好奇(a+b)*c计算速度是否会比 C 更快a*c+b*c?
为什么以下脚本需要这么多周期才能完成?
正在筛选的文件长20590行,每行包括以下内容或其变体; "10160354001 ALGIERS ALGERIA 36.70 3.60 290"
我正在尝试建立一个数据库,以匹配第一个数字到最后一个3.
然而,实际程序每行需要几秒钟.
脚本:
#! /usr/bin/perl
$path = shift(@ARGV);
open COORDS, $path or die "Couldn't open file\n";
my %coords = {};
foreach $line (<COORDS>){
$stat = substr $line,0,11;
@coords = grep(($_!=undef),split(/ /,substr $line,42));
$coords[$stat]=@coords;
}
print $coords['10160354001'];
close(COORDS);
Run Code Online (Sandbox Code Playgroud)