東北大学 工学研究科 電気・情報系 2017年8月実施 専門科目 問題5 計算機2
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
日本語版
n は非負整数を表すとする。以下の言語を考える。
SE::=f(x;y)=E::=n∣x∣y∣D(E)∣A(E;E)∣B(E;E;E)∣f(E;E)
ここで、S および E はそれぞれ関数定義および式を表す非終端記号であり、また n, f, x, y, A, D, B, (, ;, ) および = は終端記号である。
式 E は関数定義 S の下で評価される。S=f(x;y)=E0 の下での E の評価は、E を以下の規則に従って書き換えることによって行う。
規則 1 E に D(n)(ただし n>0)という形の部分式が含まれているとき、その部分式 D(n) を n から 1 を引いた整数で置き換える。
規則 2 E に A(n1;n2) という形の部分式が含まれているとき、その部分式 A(n1;n2) を n1 と n2 の和に等しい整数で置き換える。
規則 3 E に B(n;E1;E2) という形の部分式が含まれているとき、その部分式 B(n;E1;E2) を、n=0 ならば E1 に、そうでなければ E2 に置き換える。
規則 4 E に f(n1;n2) という形の部分式が含まれているとき、その部分式 f(n1;n2) を、E0 に現れる全ての x を n1 に、全ての y を n2 に置き換えた式で置き換える。
E に含まれる部分式のひとつに対して S の下で上記規則のひとつを適用すると E が E′ になることを ⟨S,E⟩⟶⟨S,E′⟩ と書く。また、⟶ の 0 回以上の繰り返しを ∗ と書く。例えば
⟨S,A(D(5);D(4))⟩⟶⟨S,A(4;D(4))⟩⟶⟨S,A(4;3)⟩⟶⟨S,7⟩
であり、従って、⟨S,A(D(5);D(4))⟩∗⟨S,7⟩ である。
P と Q を以下のように定義する。
PQ=f(x;y)=B(y;x;f(A(x;x);D(y)))=f(x;y)=B(y;x;A(f(x;D(y));f(x;D(y))))
次の問に答えよ。
(1) P の構文木を、終端記号を葉とする木構造として図示せよ。
(2) ⟨P,f(3;1)⟩∗⟨P,n⟩ なる n を求めよ。
(3) 任意の非負整数 n1,n2 について、ある n が存在し、⟨P,f(n1;n2)⟩∗⟨P,n⟩ かつ ⟨Q,f(n1;n2)⟩∗⟨Q,n⟩ であることを証明せよ。
(4) 評価 ⟨Q,f(n1;n2)⟩∗⟨Q,n⟩ において規則 2 が使われた回数を n2 を用いた式で表せ。
题目描述
给定语言
S::=f(x;y)=E,E::=n∣x∣y∣D(E)∣A(E;E)∣B(E;E;E)∣f(E;E),
其中 n 是非负整数。函数定义 S=f(x;y)=E0 下可在任一子表达式使用以下重写规则:
- D(n)→n−1,仅当 n>0。
- A(n1;n2)→n1+n2。
- B(0;E1;E2)→E1;n=0 时 B(n;E1;E2)→E2。
- f(n1;n2) 替换为 E0,其中所有 x,y 分别替换为 n1,n2。
令
P:f(x;y)=B(y;x;f(A(x;x);D(y))),
Q:f(x;y)=B(y;x;A(f(x;D(y));f(x;D(y)))).
- 画 P 的语法树,每个叶子必须为终结符。
- 求 P 下 f(3;1) 的求值结果。
- 证明对任意非负整数 n1,n2,P,Q 下 f(n1;n2) 均可重写至相同整数 n。
- 求 Q 下上述求值使用规则 2 的次数,以 n2 表示。
Kai
(1)
以下为具体语法树,括号、分号与等号也列为终结叶。
(2)
f(3;1)→B(1;3;f(A(3;3);D(1)))→f(A(3;3);D(1))→∗f(6;0)→B(0;6;f(A(6;6);D(0)))→6.
所以 n=6。
(3)
两者均计算 n=2n2n1。对 n2 归纳:n2=0 时规则 3 直接给出 n1。若结论对 k 成立,则
P(n1,k+1)=P(2n1,k)=2k+1n1,
Q(n1,k+1)=Q(n1,k)+Q(n1,k)=2k+1n1.
递归的第二参数严格减小;到零时选取首分支,不求值 D(0),所以以上求值均可终止。
(4)
按先选定条件分支、再求所选分支的求值顺序,设规则 2 的次数为 T(k),则
T(0)=0,T(k+1)=2T(k)+1.
解得 T(n2)=2n2−1。