编程理论 - 证明不变量

时间:2011-09-22 09:34:43

标签: math set theory set-theory

我已经使用relax-trie定义了这个用于识别字符串的伪代码,其中函数Next [u,x]给出了来自u的u-edge节点集合(基本上是节点集合,如(u,x) ,v)是T)的优势。

这是:

U := {1};

while s ≠ λ and U ≠ Ø do


 U:= U in u Union Next [u, head(s)];
 s:= tail(s)
 od;

 if U ≠ Ø then
  if Final[u] for some u in U then
    Accept 
  else reject
  fi
 else
   reject
 fi

基本上我已经为循环定义了一个后置条件,给定了一个循环不变量(我想我已经覆盖了这些元素,但是如果你认为它有助于解释它的话)。

所以我需要给出一个简短的参数,说明为什么不变量是不变的(即,当循环条件成立时,循环体如何保留它)。

然后我需要扩展这个伪代码,以便它可以在不推进输入的情况下移动到新节点:

(我想我会通过添加另一个数组(比如Null)来做到这一点,其中Null [u]是它可以从u移动到的状态集而不会推进输入)

也应该进行更改,以便在查看输入所有状态之前的每次迭代都可以从U中的状态到达,而不会提前输入。

感谢您的所有帮助,我发现这两个步骤相当困难,但认为我的第一部分的伪代码很好

0 个答案:

没有答案