帮忙解下编译原理题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮忙解下编译原理题相关的知识,希望对你有一定的参考价值。
构造一个DFA,接受Z=0,1上所有满足如下条件的字符串每个1都有0直接连在右边.
写出正规式 DFA 最少DFA
先构造NFA
确定化
0
1
X
A
A
A
AB
AB
AC
AB
AC
A
ABY
ABY
AC
AB
重新命名,令AB为B、AC为C、ABY为D
0
1
X
A
A
A
B
B
C
B
C
A
D
D
C
B
DFA:
2.将下图确定化:
0
1
S
VQ
QU
VQ
VZ
QU
QU
V
QUZ
VZ
Z
Z
V
Z
QUZ
VZ
QUZ
Z
Z
Z
重新命名,令VQ为A、QU为B、VZ为C、V为D、QUZ为E、Z为F。
0
1
S
A
B
A
C
B
B
D
E
C
F
F
D
F
E
C
E
F
F
F
DFA:
3.把下图最小化:
初始分划得∏0:终态组0,非终态组1,2,3,4,5
对非终态组进行审查:
1,2,3,4,5a 0,1,3,5
而0,1,3,5既不属于0,也不属于1,2,3,4,5
∵4 a 0,所以得新分划
∏1:0,4,1,2,3,5
对1,2,3,5进行审查:
∵1,5 b 4
2,3 b 1,2,3,5,故得新分划
∏2:0,4,1, 5,2,3
1, 5 a 1, 5
2,3 a 1,3,故状态2和状态3不等价,得新分划
∏3:0,2,3,4,1, 5
这是最后分划了
最小DFA:
4.构造一个DFA,它接收∑=0,1上所有满足如下条件的字符串:每个1都有0直接跟在右边。并给出该语言的正规式和正规文法。
按题意相应的正规表达式是0*(0 | 10)*0*或0*( 100*)*0*
构造相应的DFA,首先构造NFA为
用子集法确定化
I
I0
I1
S
0
1
X,0,1,3,Y
0,1,3,Y
2
1,3,Y
0,1,3,Y
0,1,3,Y
1,3,Y
1,3,Y
2
2
/
2
1
2
3
4
2
2
4
4
3
3
3
DFA:
可最小化,终态组为1,2,4,非终态组为3,1,2,40 1,2,4,1,2,41 3,所以1,2,4为等价状态,可合并。
在linxu环境下编译redis报错
本人新进菜鸟,刚开始学习Linux。按照网上大神们的指示:1、先用yum下载了依赖包,2、将redis-3.0.7压缩到传到linux系统中的/root文件夹中3、解压并在解压后的redis-3.0.7文件夹中执行make命令,最后报错,如下图所示在网上查了很久,没有看到同样的问题。已经整了一天了,请大神帮忙解答,在线急等。。。
为了让大家看起来方便点,我把报错信息拷贝出来
首先是前面一段:
ar: net.o: No such file or directory
make[3]: *** [libhiredis.a] 错误 1
make[3]: Leaving directory `/root/redis-3.0.7/deps/hiredis'
make[2]: *** [hiredis] 错误 2
make[2]: Leaving directory `/root/redis-3.0.7/deps'
make[1]: [persist-settings] 错误 2 (忽略)
这是末尾的:
install: 无法获取"redis-server" 的文件状态(stat): 没有那个文件或目录
make[1]: *** [redis-sentinel] 错误 1
make[1]: Leaving directory `/root/redis-3.0.7/src'
make: *** [all] 错误 2
解决方案:将linux系统恢复到最初的版本(就是啥都没装的版本),重新安装redis,安装成功,我都挺蒙蔽的,不知道啥原因。
附带我的操作步骤:用户为root用户。
1.下载redis 我下载的是redis-2.6.16.tar.gz
2.FTP上传到linux /root目录下(可以自定义)
3.执行yum install gcc-c++(下载gcc)
4.解压tar -zxvf redis-2.6.16.tar.gz到当前文件夹
5.进入cd redis-2.6.16文件夹
6.执行make(编译前必须安装gcc)
7.安装成功
8.安装测试 make test 如果报错则执行以下步骤(因为缺少ctl)
8.1 安装tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
tar xzvf tcl8.6.1-src.tar.gz
cd /usr/local/tcl8.6.1/unix/
./configure
make
make install
8.2 在/root/redis-2.6.16目录下执行make test(需要执行一段时间) 提示:
All tests passed without errors!
Cleanup: may take some time... OK
make[1]: Leaving directory `/root/redis-2.6.16/src'
证明你安装成功redis了 参考技术A 我也遇到这个问题了,兄弟你解决了吗 参考技术B 哥们 我遇到和你一样的问题 也不知道怎么解决
以上是关于帮忙解下编译原理题的主要内容,如果未能解决你的问题,请参考以下文章