跳到主要内容

大阪大学 情報科学研究科 情報工学 2018年度 離散構造

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

(1) リストと述語論理

空リストを [][]、先頭 HH と残部 TT のリストを [HT][H|T] とする。append(X,Y,Z)append(X,Y,Z)XXYY の連結が ZZreverse(X,Y)reverse(X,Y)XX の逆順が YY を表す。

  • (1-1) 空リストと任意の XX の連結が XX であることを閉論理式で表せ。
  • (1-2) append(X,Y,Z)append(X,Y,Z) なら、X,ZX,Z の先頭に同じ要素 AA を加えても連結関係が成立することを閉論理式で表せ。
  • (1-3) 空リストの逆順が空リストであることを表せ。
  • (1-4) AXYZ((reverse(X,Y)append(Y,[A],Z))reverse(α,Z))\forall A\forall X\forall Y\forall Z((reverse(X,Y)\land append(Y,[A],Z))\to reverse(\alpha,Z))α\alpha を埋めよ。
  • (1-5-1) 原子論理式 Pij,Qi,RjP_{ij},Q_i,R_j からなる
(i=1mx1xh((j=1niPij)Qi))x1xhj=1kRj\left(\bigwedge_{i=1}^m\forall x_1\cdots\forall x_h((\bigwedge_{j=1}^{n_i}P_{ij})\to Q_i)\right)\to\exists x_1\cdots\exists x_h\bigwedge_{j=1}^kR_j

の否定を、含意を使わず x1xh(βγ)\forall x_1\cdots\forall x_h(\beta\land\gamma) と表せ。ただし x1,,xhx_1,\ldots,x_h は原子論理式に現れる変数、h1h\ge1n1,,nm0n_1,\ldots,n_m\ge0 とする。

  • (1-5-2) (1-1)~(1-4)の論理式と上の否定式を用い、導出原理により reverse([a[b]],W)reverse([a|[b]],W) の解の存在と WW への代入を示し、探索過程を記せ。ただし a,ba,b は要素を表す定数、WW はリストを表す変数とする。

(2) 円盤の移動

大小の異なる nn 枚の円盤を小さい順に 1,,n1,\ldots,n とする。大きい円盤を小さい円盤の上には置けず、一度に最上部の1枚だけを移動する。Sk(i,j)S_k(i,j) は円盤 i,,ji,\ldots,j がすべて棒 kk にある状態である。

  • (2-1) 棒3本で S1(1,n)S_1(1,n) から S3(1,n)S_3(1,n) へ移す最短回数 fnf_n を漸化式から求めよ。また円盤 ii が初めて移る行先を求めよ。
  • (2-2) 1dn1\le d\le n とする。棒4本で、円盤 1,,d1,\ldots,d は棒2を、円盤 d+1,,nd+1,\ldots,n は棒3を使えない。途中で S3(1,d)S_3(1,d) を通り、S1(1,n)S_1(1,n) から S4(1,n)S_4(1,n) へ移す最短回数 gng_nn,dn,d で表せ。さらに fn=gnf_n=g_n となる dd を求めよ。

Kai

(1)

(1-1)  X append([],X,X),(1-2)  AXYZ(append(X,Y,Z)append([AX],Y,[AZ])),(1-3)  reverse([],[]),(1-4)  α=[AX].\begin{aligned} (1\text{-}1)\;&\forall X\ append([],X,X),\\ (1\text{-}2)\;&\forall A\forall X\forall Y\forall Z\bigl(append(X,Y,Z)\to append([A|X],Y,[A|Z])\bigr),\\ (1\text{-}3)\;&reverse([],[]),\\ (1\text{-}4)\;&\boxed{\alpha=[A|X]}. \end{aligned}

(1-5-1)

β=i=1m(¬Pi1¬PiniQi),γ=¬R1¬Rk.\boxed{\beta=\bigwedge_{i=1}^m(\neg P_{i1}\lor\cdots\lor\neg P_{in_i}\lor Q_i),\quad \gamma=\neg R_1\lor\cdots\lor\neg R_k}.

束縛変数はあらかじめ必要に応じて改名する。ni=0n_i=0 の節は QiQ_i である。

(1-5-2) 否定した目標節から、逆順の再帰節、連結の再帰節、基底節の順に導出する。対応する目標の列は

reverse([a,b],W)reverse([b],Y), append(Y,[a],W)reverse([],Z), append(Z,[b],Y), append(Y,[a],W)append([],[b],Y), append(Y,[a],W)append([b],[a],W)append([],[a],T),W=[bT],T=[a].\begin{aligned} reverse([a,b],W) &\Rightarrow reverse([b],Y),\ append(Y,[a],W)\\ &\Rightarrow reverse([],Z),\ append(Z,[b],Y),\ append(Y,[a],W)\\ &\Rightarrow append([],[b],Y),\ append(Y,[a],W)\\ &\Rightarrow append([b],[a],W)\\ &\Rightarrow append([],[a],T),\quad W=[b|T]\\ &\Rightarrow \square,\quad T=[a]. \end{aligned}

よって W=[b,a]\boxed{W=[b,a]}

(2)

(2-1) 最大円盤を移す前後に残る n1n-1 枚の移動が必要なので

f0=0,fn=2fn1+1,fn=2n1.f_0=0,\quad f_n=2f_{n-1}+1,\qquad\boxed{f_n=2^n-1}.

円盤 nn の初回の行先は棒3で、円盤番号が一つ小さくなるごとに棒2と棒3が入れ替わる。したがって円盤 iinin-i が偶数なら棒3、奇数なら棒2へ初めて移る。

(2-2-1) 小円盤群を棒1から棒3へ移し、大円盤群を棒1から棒4へ移し、小円盤群を棒3から棒4へ移す。各群は許された3本の棒を用いるため

gn=2fd+fnd=2d+1+2nd3.\boxed{g_n=2f_d+f_{n-d}=2^{d+1}+2^{n-d}-3}.

指定の中間状態の前後で小円盤群には各 fdf_d 回、大円盤群には fndf_{n-d} 回以上必要なので、この手順は最短である。

(2-2-2) x=2dx=2^d とおくと

2x+2n/x=2n+2    (x1)(2x2n)=0.2x+2^n/x=2^n+2\iff (x-1)(2x-2^n)=0.

1dn1\le d\le n より x1x\ne1 なので、d=n1 (n2)\boxed{d=n-1\ (n\ge2)}n=1n=1 には該当する dd はない。