文档详情

形式语言与自动机 哈工大正心楼DFA

jin****ng
实名认证
店铺
DOCX
96.23KB
约9页
文档ID:157834661
形式语言与自动机 哈工大正心楼DFA_第1页
1/9

正心楼电梯 DFA 模型2012 年 11 月 12 日一、问题重述针对正心楼的实际情况,建立DFA模型描述其运行控制具体要求如下:1. 使用自然语言对电梯的运行方式进行具体的描述2. DFA 设计3. DFA 描述二、自然语言描述2.1 电梯的基本情况1. 正心楼的电梯一共有9 层2. 电梯内部设有紧急按钮、开门、关门和1-9 层的楼层数字键3. 除第1 层只有向上键、第 9 层只有向下键以外,其他楼层电梯门外均设置有向上和向 下键2.2 电梯的运行方式对于任意的楼层i,j,k(l< i

5. 电梯内部的数字键按下后可以通过双击该数字键取消当电梯在i层的时候,按下k 键,电梯向k层上升若又按下j键,电梯则会先停在j层而如果在电梯到达j层之前取 消j键,则电梯不会停在j层,而是直接向k层上升当电梯的第j层被按下,并且电梯正 直接朝着第j层向上运动的时候,无法取消j键6. 当电梯的载重过大时,电梯会提示超重并且停在该层,直到电梯的载重小于其最大负 荷再继续运行注:当电梯向下运动时,情况正好与电梯向上运动时相对称,这里不再加以描述三、DFA设计3.1 前提假设1.假设电梯在运行的过程中不会发生停电等突发事件2.超重的时候电梯不会运行,一直停止在该层在此忽略这种情况,即假设电梯不会超 重3.因为电梯的开关门并不会影响电梯的运行情况,所以忽略电梯的开关门3.2具体DFA构造DFA=(Q,I,<5, q0,F)3.2.1状态集合 Q当不对电梯进行任何操作的时候,电梯是静止的这个时候电梯停在第i (ie[1,9])层每次对电梯进行操作过后,电梯也会停在某一层不管进行多少次的操作,电梯终究会停下来的于是,我们考虑以电梯静止或暂时停下时的状态为接受状态我们设电梯的接受状态为:S1电梯停在1楼S2电梯停在2楼S3电梯停在3楼S4电梯停在4楼S5电梯停在5楼S6电梯停在6楼S7电梯停在7楼S8电梯停在8楼S9电梯停在9楼而电梯在运行过程中的时候,要么向上,要么向下,且总是处在某两层楼之间。

于是,我们构造电梯运行时的状态如下:U1电梯在1、2层之间向上运动U2电梯在2、3层之间向上运动U3电梯在3、4层之间向上运动U4电梯在4、5层之间向上运动U5电梯在5、6层之间向上运动U6电梯在6、7层之间向上运动U7电梯在7、8层之间向上运动U8电梯在8、9层之间向上运动D1电梯在1、2层之间向下运动D2电梯在2、3层之间向下运动D3电梯在3、4层之间向下运动D4电梯在4、5层之间向下运动D5电梯在5、6层之间向下运动D6电梯在6、7层之间向下运动D7电梯在7、8层之间向下运动D8电梯在8、9层之间向下运动3.2.2输入符号集合E分析:所有的用户请求都可以归结为9种状态,即想让电梯停在第i层(i丘[1,9])很容易想 到用1-9这9个数字来表示用户的请求我们用i (ie[1,9])来表示发出电梯停在第i楼的 命令可是,这里有一个问题如果电梯现在处于U3状态,而向电梯发出了 4,567,8的请 求按照实际情况,电梯是会进入S4状态的,此转移的输入为4,567,8 ;若没按下4,则 电梯进入 U4 状态,此转移的输入为 5,6,7,8可以看出,两条初始状态相同而结果不同的 转移出现了相同的输入567,8 ,这在DFA中是不允许的。

所以,从用户的角度来考虑电梯 的运行是有一点问题的于是,我们决定从电梯的角度来描述问题我们用i (ie[1,9])来表示电梯响应停在第 i 楼的操作这样,就可以避免出现刚才的问题,而正心的电梯与一般的电梯不同的是,正心的电梯允许用户在按下某一层的数字键后还能取消按键,我们采用Ci来表示发出请求电 梯取消停在第 i 层的操作于是,我们经过讨论设计后输入符号的集合如下表:1请求电梯停在1楼的命令2请求电梯停在2楼的命令3请求电梯停在3楼的命令4请求电梯停在4楼的命令5请求电梯停在5楼的命令6请求电梯停在6楼的命令7请求电梯停在7楼的命令8请求电梯停在8楼的命令9请求电梯响应停在9楼的命令C1请求电梯取消停在1楼的命令C2请求电梯取消停在2楼的命令C3请求电梯取消停在3楼的命令C4请求电梯取消停在4楼的命令C5请求电梯取消停在5楼的命令C6请求电梯取消停在6楼的命令C7请求电梯取消停在7楼的命令C8请求电梯取消停在8楼的命令C9请求电梯取消停在9楼的命令注:Ci :表示电梯响应停在i楼的命令但是,在这里需要说明的是:只有在特定时候电梯的响应才会影响电梯的运行状态比如:电梯如果正处在Ui状态,此时如果电梯响应C1—Ci-1、Ci + 1—C9,是不会对电梯的运行情况产生影响的。

只有响应了 Ci才会使电梯从 Ui状态进入Ui+1状态因此,当电梯在Si,Ui状态时,如果电梯响应C—Ci-1、Ci + 1 —C9,我们决定将其处理成Ui的自环3.2.3初始状态 q0.对于电梯来说,初始状态可以是任何一层在这里,我们不妨设第一层为初始状态:qO=S13.2.4接受状态 F前面的分析已经说到,接受状态F二{S1,S2,S3,S4,S5,S6,S7,S8,S9}3.2.5转移函数&见 DFA 状态转移示意图3.3DFA 状态转移示意图StartC1.C2 C1.C2.C3 C1...C4 C1....C5 C1...C6 C1...C7C1,C1.C2.C1.C2.C3C1...C4C1....C5C1....C6C1....C7C3...C9C4...C9C5...C9C6...C9C7.C8.C9C8.C9C9C1....C8aC3 C4C5C7 /C8[U1U2 :U3U5 '}WU6)-W-V U8〕说明:1)电梯内按键与在某层楼按键的效果是等价的2)楼层里的按键是对两个电梯进行操作,而响应这个操作的则是状态离该楼层接 受态最近的那个电梯3 ) Ci :表示电梯响应停在i楼的命令。

但是,在这里需要说明的是:只有在特定 时候电梯的响应才会影响电梯的运行状态比如:电梯如果正处在Ui状态,此时如果电梯 响应q—C"、Ci+1—C9,是不会对电梯的运行情况产生影响的只有响应了 Ci才会使电 梯从Ui状态进入Ui+1状态因此,当电梯在Si,Ui状态时,如果电梯响应C—C"、Ci+1 —C9,我们决定将其处理成Si,Ui的自环四、DFA描述4.1 DFA 构造描述qDFA= (Q,E,5, 0, F)每个元素的意义见前面3.2 部分4.2 DFA 实例描述下面,我们给出一个实例来描述DFA的工作假设现在电梯停在3楼,即处于S3状态,7楼有人按了向下的按键此后,电梯响应该操 作,即在S3状态接受输入7电梯接下来的状态是U3在U3状态接受输入7电梯进入 U4以此类推,最终电梯进入状态S7,即停在7楼电梯在7楼停下来后,2个人走进电 梯一个人按下了 4键,一个人按下了 1键电梯响应操作,即在S7状态接受输入1,4 电梯接下来的状态是D6,在D6响应1,4,电梯进入D5,在D5接受输入1,4进入D4电梯在D4响应4,电梯进入S4,即停在第四层此后,电梯响应1,进入D3假设电梯 在D3状态时,5楼有人按了向下键,电梯响应1 ,进入D2-D1。

电梯在D1响应1 , 5进入S1之后电梯响应5,进入U1状态此后,电梯的状态为:U1-U2iU3iU4iS5 最终,电梯在5楼停下此人进入电梯后,按下1、2键电梯响应1、2,进入D4在电 梯处于D4状态时,此人取消了 2接着,电梯进入D3接着,电梯进入D2在D2的时 候,电梯响应C2、1,进入D1,并最终进入S1状态五、小组分工。

下载提示
相关文档
正为您匹配相似的精品文档