大阪大学 情報科学研究科 情報数理学専攻 2017年7月実施 情報数理学 情報基礎
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
任意の相異なる2頂点がただ一つの有向辺で結ばれる有向グラフをトーナメントという。有向辺に沿って全頂点を1度ずつ通る路をハミルトン路という。
(1) 次のトーナメントのハミルトン路をすべて、頂点番号の列で示せ。
(2) 頂点数が N 未満の任意のトーナメントにハミルトン路があると仮定し、頂点数 N の場合にも存在することを示せ。
文字集合 A の文字からなる、長さ M の文字列 U=u1⋯uM と長さ N の文字列 V=v1⋯vN を考える。長さ0は空文字列とする。挿入は 0≤k≤M の位置に A の1文字を加える操作、削除と置換は M>0 のとき 1≤k≤M の文字をそれぞれ除く、または A の1文字へ置き換える操作である。
距離 d(U,V) を、これらを繰り返して U を V にする最小操作回数とする。0≤m≤M, 0≤n≤N に対して Um=u1⋯um, Vn=v1⋯vn とし、添字0は空文字列を表す。
(1) d(U0,Vn) と d(Um,V0) を求めよ。
(2) m,n≥1 のとき、d(Um,Vn) を d(Um−1,Vn), d(Um,Vn−1), d(Um−1,Vn−1) と um,vn から計算できることを説明せよ。
(3) d(U,V) を求めるアルゴリズムと時間計算量を、理由とともに示せ。
N 個のノード 1,…,N の各々が、次のノード番号 next(i)∈{1,…,N} を保持する。x0=1, xk+1=next(xk) とする。
(1) xm=xm+n となる m≥0,n>0 が存在し、そのとき任意の k≥m について xk=xk+n であることを示せ。
(2) 次のアルゴリズムが必ず停止することを示せ。
p ← next(1)
q ← next(next(1))
while p ≠ q do
p ← next(p)
q ← next(next(q))
end while
Kai
(1) 頂点4に入る辺がないので、4は必ず先頭である。残りの頂点の順序を調べると、全ハミルトン路は
(4,1,3,5,2), (4,2,1,3,5), (4,2,3,5,1), (4,3,5,2,1), (4,5,2,1,3).
(2) 1頂点 v を除いたトーナメントには、帰納法の仮定よりハミルトン路 v1→⋯→vN−1 がある。
v→vi となる最初の添字 i が存在すれば、i=1 のとき先頭に、i>1 のとき vi−1 と vi の間に v を挿入する。後者では最小性より vi−1→v である。そのような i がなければ vN−1→v なので末尾に加える。いずれも全頂点を通る路が得られる。
(1) 長さを変えるのに必要な回数より
d(U0,Vn)=n,d(Um,V0)=m.
(2) Dm,n=d(Um,Vn), δm,n=0(um=vn), 1(um=vn)とおく。最適な文字対応の末尾は、削除・挿入・一致または置換のいずれかであるから
Dm,n=min{Dm−1,n+1, Dm,n−1+1, Dm−1,n−1+δm,n}.
各候補は実際の操作列で達成でき、どの対応もいずれかに分類されるので、この最小値は必要十分である。
(3) 第0行・第0列を(1)で初期化し、m=1,…,M, n=1,…,N の順に(2)で表を埋めて DM,N を返す。各要素の計算は定数時間なので、時間計算量は O(MN+M+N)(M,N≥1 なら O(MN))。必要記憶量は表全体で O(MN)、直前の行だけ保存すれば O(min(M,N)+1) にできる。
(1) x0,…,xN は N+1 個だが値は N 種類なので、鳩の巣原理より xm=xm+n となる 0≤m<m+n≤N がある。両辺に next を繰り返し適用すれば、任意の k≥m で xk=xk+n を得る。
(2) 初期化後と各反復後のポインタは、ある整数 t≥1 に対して p=xt, q=x2t である。t≥m かつ n∣t となる t を選ぶと、(1)の周期性から xt=x2t。したがって、それ以前に停止していなければこの時点で停止する。