大阪大学 情報科学研究科 情報数理学専攻 2019年8月実施 情報数理学 情報基礎
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
(1) 正の実数 n 個からなるリスト A に、次の SORT-1 を適用する時間計算量を求めよ。
SORT-1(A)
for j ← 2 to n do
s ← A[j]
i ← j-1
while i > 0 and A[i] > s do
A[i+1] ← A[i]
i ← i-1
end while
A[i+1] ← s
end for
(2) 正の実数を最大値で割り、(0,1] に正規化した A[1],…,A[n] を、次の SORT-2 で整列する。⌈x⌉ は切上げを表す。
SORT-2(A)
B[1],...,B[n] ← 空リスト
for i ← 1 to n do
A[i] を B[ceil(n A[i])] に挿入
end for
for i ← 1 to n do
SORT-1(B[i])
end for
B[1],...,B[n] を順に連接
(i) A[i] が独立に (0,1] 上で一様分布すると仮定する。各バケットの要素数の期待値・分散と、SORT-1(B[i]) の平均時間計算量を求めよ。
(ii) SORT-2 の平均・最悪時間計算量を求めよ。
n 桁の正整数の乗算で必要な1桁整数同士の乗算回数を考える。
(1) n が偶数のとき x=a10n/2+b, y=c10n/2+d と分けると
xy=ac10n+{ac+bd−(a−b)(c−d)}10n/2+bd
である。この3回の部分乗算を再帰的に用いる回数 T(n) の漸化式を示し、T(n)=O(nlog23) を示せ。
(2) 再帰的に3分割して乗算するときの回数 S(n) の漸化式を示し、S(n)=O(nlog36) を示せ。
(3) 十分大きい n で T(n),S(n) を比較せよ。log23<1.6 を用いてよい。
自己ループを持たず、各頂点間に高々1本の辺がある有向グラフの接続行列 B=(bij)∈R∣V∣×∣E∣ を、辺 ej が頂点 vi から出るとき −1、入るとき 1、それ以外を0として定義する。
BBT と BTB の各要素の意味を説明し、次のグラフについて両行列を求めよ。頂点順は v1,…,v7、辺順は e1,…,e11 とする。
Kai
(1) SORT-1 は挿入ソートである。最悪の場合、第 j 回に j−1 個を移動するので
j=2∑n(j−1)=2n(n−1)
より、最悪時間計算量は Θ(n2)。無作為な順列に対する平均も Θ(n2)、既に整列済みの場合は Θ(n) である。
(2)(i) バケット i の要素数を Ni とする。各要素が入る確率は 1/n なので Ni∼Bin(n,1/n)、したがって
E[Ni]=1,V[Ni]=1−n1,E[Ni2]=2−n1.
挿入ソートの時間は O(1+Ni2) で抑えられるから、平均は Θ(1)。
(ii) 分配と連接に Θ(n)、全バケットの平均整列時間に ∑iO(E[Ni2]+1)=O(n) を要する。よって平均は Θ(n)。全要素が同一バケットに入り逆順に並ぶ場合は挿入ソートが Θ(n2) を要するので、最悪は Θ(n2)。
(1) n=2k とすると、T(1)=1, T(n)=3T(n/2) より
T(n)=3k=nlog23.
一般の桁数も上位に0を補えば同じオーダとなる。
(2) R=10n/3 とし、x=aR2+bR+c, y=dR2+eR+f と分ける。6積
ad, be, cf, (a−b)(d−e), (a−c)(d−f), (b−c)(e−f)
を求めれば、例えば ae+bd=ad+be−(a−b)(d−e) のように交差項が得られ、
xy=adR4+(ae+bd)R3+(af+be+cd)R2+(bf+ce)R+cf
を再構成できる。よって S(1)=1, S(n)=6S(n/3) であり、n=3k なら
S(n)=6k=nlog36.
(3) 65=7776>6561=38 より log36>8/5=1.6>log23。したがって T(n)=o(S(n)) であり、十分大きい n では2分割法の方が少ない乗算回数で済む。
BBT の対角成分は頂点の次数(入次数と出次数の和)、非対角成分は隣接していれば −1、そうでなければ0である。
BTB の対角成分は2。異なる2辺について、共通端点がなければ0、共通端点に両方が入るか両方が出るなら1、一方が入り他方が出るなら −1 である。
BBT=2−1−10000−130−1−100−103−10−100−1−15−1−1−10−10−130−100−1−103−1000−1−1−13.
BTB=21−10−1000000120−10−100000−10211011−1000−1120111−100−101020−100−100−101020−100−10011−1021−11000110−112−10100−1−100−1−12110000−101012100000−101112.