Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 使用PDA,显示(x*y)和#x2B;x是一个有效字符串_String_Math_Logic_Discrete Mathematics_Pushdown Automaton - Fatal编程技术网

String 使用PDA,显示(x*y)和#x2B;x是一个有效字符串

String 使用PDA,显示(x*y)和#x2B;x是一个有效字符串,string,math,logic,discrete-mathematics,pushdown-automaton,String,Math,Logic,Discrete Mathematics,Pushdown Automaton,如果你能帮助我,并解释它是如何做的,我对C部分有困难。提前谢谢你 (a)据我所知,他们只是要求改写语法: <E> -> <E> + <T> <E> -> <E> - <T> <E> -> <T> <T> -> <T> * <F> <T> -> <T> / <F> <T> -> <

如果你能帮助我,并解释它是如何做的,我对C部分有困难。提前谢谢你

(a)据我所知,他们只是要求改写语法:

<E> -> <E> + <T>
<E> -> <E> - <T>
<E> -> <T>
<T> -> <T> * <F>
<T> -> <T> / <F>
<T> -> <F>
<F> -> (<F>)
<F> -> x
<F> -> y
->+
->  - 
-> 
->  * 
->  / 
-> 
-> ()
->x
->y
(b) 他们想要(x*y)+x的导数:

(---x
/             /
/             /
/             /
--  --  --  --  -- *
/                 \             \
/                   \             \
/                     \             \
--+)--y
\
\
\
----x
(c) 我们可以定义一个NPDA,它不确定地将所有有效的派生推送到堆栈上,然后弹出输入以接受。堆栈将如下所示:

stack         input remaining
Z             (x * y) + x
<E>Z          (x * y) + x
<E>+<T>Z      (x * y) + x
<T>+<T>Z      (x * y) + x
<F>+<T>Z      (x * y) + x
(<E>)+<T>Z     x * y) + x
<E>)+<T>Z      x * y) + x
<T>)+<T>Z      x * y) + x
<T>*<F>)+<T>Z  x * y) + x
<F>*<F>)+<T>Z  x * y) + x
x*<F>)+<T>Z    x * y) + x
*<F>)+<T>Z       * y) + x
<F>)+<T>Z          y) + x
y)+<T>Z            y) + x
)+<T>Z              ) + x
+<T>Z                 + x
<T>Z                    x
<F>Z                    x
xZ                      x
Z                 (empty)
剩余的堆栈输入
Z(x*y)+x
Z(x*y)+x
+Z(x*y)+x
+Z(x*y)+x
+Z(x*y)+x
()+zx*y)+x
)+Z x*y)+x
)+Z x*y)+x
*)+Z x*y)+x
*)+Z x*y)+x
x*)+zx*y)+x
*)+Z*y)+x
)+Z+y+x
y) +zy+x
)+Z)+x
+Z+x
Z x
Z x
xZ x
Z(空)

请阅读并参考您可以在此处询问的主题。我投票将此问题作为离题题结束,因为它与编程无关。IIRC,“PDA”在此上下文中表示下推自动机。我投票将此问题作为离题结束,因为它是CS理论问题,在cs.stackexchange.com上哪个更合适?奇怪的问题。要使用PDA,你必须先定义一个,不确定它如何显示任何东西的有效性。
stack         input remaining
Z             (x * y) + x
<E>Z          (x * y) + x
<E>+<T>Z      (x * y) + x
<T>+<T>Z      (x * y) + x
<F>+<T>Z      (x * y) + x
(<E>)+<T>Z     x * y) + x
<E>)+<T>Z      x * y) + x
<T>)+<T>Z      x * y) + x
<T>*<F>)+<T>Z  x * y) + x
<F>*<F>)+<T>Z  x * y) + x
x*<F>)+<T>Z    x * y) + x
*<F>)+<T>Z       * y) + x
<F>)+<T>Z          y) + x
y)+<T>Z            y) + x
)+<T>Z              ) + x
+<T>Z                 + x
<T>Z                    x
<F>Z                    x
xZ                      x
Z                 (empty)