Skip to content

東京大学 新領域創成科学研究科 メディカル情報生命専攻 2024年1月実施 問題7

Author

水月, 祭音Myyura

Description

入力データサイズ \(n\) に対して計算時間 \(T(n)\) を考える。 以下の再帰方程式 (1)~(3) それぞれについて \(T(n)\) の計算量を \(n\) の式で表せ。 必要に応じて \(O()\) などのランダウ記法を用いてもよい。 ただし、\(T(0) = 1\) とし、\(\lfloor x \rfloor\)\(x\) を超えない最大の整数を表す。

(1) \(T(n) = T(n-1) + 2n\)

(2) \(T(n) = T(\lfloor n/3 \rfloor) + 1\)

(3) \(T(n) = 2T(\lfloor n/2 \rfloor) + n + 1\)

以下の (4) の命題は成り立つか?最初に真偽を述べ、それが正しいことを証明せよ。

(4) \(T(n) \in O(2^n)\)\(T(n) \in O(e^n)\) は同値である。

以下の (5) の再帰方程式が成り立つとき、\(T(n)\) の計算量を \(n\) の式で表せ。ただし、\(a\) は正の定数である。

(5) \(T(n) = aT(\lfloor n/2 \rfloor) + \lfloor n \log_2 n \rfloor\)

Kai

(1)

\[ \begin{aligned} T(n) &= T(n-1) + 2n \\ &=2n + 2(n-1) + 2(n-2) + \cdots + 2 \\ &= O(n^2) \end{aligned} \]

(2)

\[ \begin{aligned} T(n) &= T(\lfloor n/3 \rfloor) + 1 = O(\log n) \end{aligned} \]

(3)

Note that

\[ \frac{T(n)}{n} = \frac{T(\lfloor n/2 \rfloor)}{n/2} + 1 + \frac{1}{n} \]

hence

\[ \frac{T(2^k)}{2^k} = T(1) + k + O(1) \]
\[ \therefore T(2^k) \in \Theta(k2^k) \]

that is

\[ T(n) \in O(n \log n) \]

(4)

The statement is False.

Counter example: \(T(n) = 2.5^n\).

(5)

See Generic form of Master Theorem

\[ \begin{aligned} &T(n) = O(n \log_2 n) &\text{if } a < 2 \\ &T(n) = O(n \log_2^2 n) &\text{if } a = 2 \\ &T(n) = O(n^{\log_2 a}) &\text{if } a > 2 \end{aligned} \]