帮忙解下编译原理题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮忙解下编译原理题相关的知识,希望对你有一定的参考价值。

构造一个DFA,接受Z=0,1上所有满足如下条件的字符串每个1都有0直接连在右边.
写出正规式 DFA 最少DFA

参考技术A 1.构造正规式1(0|1)*101相应的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

问题:本人用虚拟机安装centos6.5系统, redis安装不成功,和楼主的报错一毛一样,原因不详,目前的取得快照是安装了jdk,mysql,tomcat的版本;
解决方案:将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 哥们 我遇到和你一样的问题 也不知道怎么解决

以上是关于帮忙解下编译原理题的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 下编译 OpenSSL

如何在 Windows 下编译 OpenSSL

如何在Windows下编译OpenSSL

如何在 Windows 下编译 OpenSSL

如何在 Windows 下编译 OpenSSL

在linxu环境下编译redis报错