Skip to content

Commit

Permalink
feat: 創造情報 2022-08-1
Browse files Browse the repository at this point in the history
  • Loading branch information
xhiroga committed Aug 7, 2024
1 parent 67459de commit 31f7b8b
Show file tree
Hide file tree
Showing 2 changed files with 200 additions and 1 deletion.
2 changes: 1 addition & 1 deletion exercises/utokyo-ist/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
| ---- | -------- | -------- | -------------- | ---------------------- | -------------------------- | ---------------------------- |
| CI | 2024 | 2023-08 | 創造情報学 | [1](./ci/2023-08-1.md) | 機械学習 | 最尤推定法, EMアルゴリズム |
| CI | 2024 | 2023-08 | 創造情報学 | [2](./ci/2023-08-2.md) | アルゴリズム, 論理回路 | 簡潔データ構造, 全加算器 |
| CI | 2023 | 2022-08 | 創造情報学 | 1 | 形式言語 | DFA, PDA |
| CI | 2023 | 2022-08 | 創造情報学 | [1](./ci/2022-08-1.md) | 形式言語 | DFA |
| CI | 2023 | 2022-08 | 創造情報学 | [2](./ci/2022-08-2.md) | ネットワーク | サブネット分割 |
| CI | 2022 | 2021-08 | 創造情報学 | 1 | アルゴリズム | 個数制限なしナップザック問題 |
| CI | 2022 | 2021-08 | 創造情報学 | [2](./ci/2021-08-2.md) | ネットワーク, 確率統計 | 幾何分布, TCPウインドウ制御 |
Expand Down
199 changes: 199 additions & 0 deletions exercises/utokyo-ist/ci/2022-08-1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
# 創造情報 第1問

## (1)

### (1-1)

q1

### (1-2)

010111011

### (1-3)

受理状態として指定された状態は`()`で示した。

```mermaid
stateDiagram-v2
direction LR
[*] --> (q1)
(q1) --> q2 : 0,1
q2 --> (q1) : 0,1
```

## (2)

任意の非負整数 $a$, $b$ について、次の定理(剰余の定理)が成り立つ。

$a \bmod c = r_a$, $b \bmod c = r_b$ のとき、 $(a+b) \bmod c = (r_a+r_b) \bmod c$

剰余の定理について、次の通り証明する。

$a = q_ac+r_a$, $b = q_bc+r_b$ と表せる。$q_a$, $q_b$ は非負整数である。

$$
\begin{align}
& (a+b) \bmod c \\
=& (q_ac+r_a + q_bc+r_b) \bmod c
\end{align}
$$

ここで、任意の非負整数$q$, $r < c$に対して$(qc+r)\bmod c = r$は自明である。したがって、次の通り式を展開する。

$$
\begin{align}
& (q_ac+r_a + q_bc+r_b) \bmod c \\
=& (r_a + r_b) \bmod c
\end{align}
$$

よって剰余の定理は示された。

続いて命題を示す。命題は次の通り。

$$
\begin{align}
\nu(x_{2n-1},x_{2n-2},...,x_0) \equiv (2\sum_{i=0}^{n-1}x_{2i+1}+\sum_{i=0}^{n-1}x_{2i}) \pmod 3
\end{align}
$$

問題文の前提より、桁数は偶数である。よって、与えられた式の右辺を次の通り展開できる。

$$
\begin{align}
& \nu(x_{2n-1},x_{2n-2},...,x_0) \\
=& \nu(x_{2n-1},0,x_{2n-3},...,0,x_1,0) + \nu(0,x_{2n-2},0,...,0,x_0) \\
=& \sum_{i=0}^{n-1}2^{2i+1}x_{2i+1} + \sum_{i=0}^{n-1}2^{2i}x^{2i}
\end{align}
$$

続いて、展開した式の左辺について、次の式(2進数の偶数桁目の総和と、偶数桁目の1のビット数の2倍は、3を法として合同)を証明する。

$$
\begin{align}
\sum_{i=0}^{n-1}2^{2i+1}x_{2i+1} \equiv 2\sum_{i=0}^{n-1}x_{2i+1} \pmod 3
\end{align}
$$

両辺が共に総和であるため、次の式を示すことで前式が示せる。

$$
\begin{align}
2^{2i+1}x_{2i+1} \equiv 2x_{2i+1} \pmod 3
\end{align}
$$

$x_{2i+1} = 0$ のとき自明である。

$i=0$ のとき、$2^{2i+1} 1 \bmod 3 = 2$ で自明である。$x_{2i+1} = 1$ かつ $i\ge1$ のときを考える。

$i\ge1$ のとき、$i-1$ について $2^{2(i-1)+1} \bmod 3 = 2$ なら $i$ についても同様である。次の通り示す。$q$ は整数である。

$$
\begin{align}
2^{2(i-1)+1} \bmod 3 &= 2 \\
2^{2(i-1)+1} &= 3q + 2 \\
2^{2i+1} &= 12q + 8 \\
2^{2i+1} &= 3(4q + 2) + 2 \\
\end{align}
$$

よって帰納法により、2進数の偶数桁目の総和と、偶数桁目の1のビット数の2倍は、3を法として合同である。

続いて、展開した式の右辺についても、同様に次の式(2進数の奇数桁目の総和と、奇数桁目の1のビット数は、3を法として合同)を証明する。

$$
\begin{align}
\sum_{i=0}^{n-1}2^{2i}x_{2i} \equiv \sum_{i=0}^{n-1}2^{2i}x^{2i} \pmod 3
\end{align}
$$

両辺が共に総和であるため、次の式を示すことで前式が示せる。

$$
\begin{align}
2^{2i}x_{2i} \equiv x_{2i} \pmod 3
\end{align}
$$

$x_{2i} = 0$ のとき自明である。

$i=0$ のとき、$2^{2i} 1 \bmod 3 = 1$ で自明である。$x_{2i} = 1$ かつ $i\ge1$ のときを考える。

$i\ge1$ のとき、$i-1$ について $2^{2(i-1)} \bmod 3 = 1$ なら $i$ についても同様である。次の通り示す。

$$
\begin{align}
2^{2(i-1)} \bmod 3 &= 1 \\
2^{2(i-1)} &= 3q + 1 \\
2^{2i} &= 12q + 4 \\
2^{2i} &= 3(4q + 1) + 1 \\
\end{align}
$$

よって帰納法により、2進数の奇数桁目の総和と、奇数桁目の1のビット数は、3を法として合同

したがって、次の通り題意は示された。

$$
\begin{align}
& \nu(x_{2n-1},x_{2n-2},...,x_0) \\
=& \sum_{i=0}^{n-1}2^{2i+1}x_{2i+1} + \sum_{i=0}^{n-1}2^{2i}x^{2i} \\
\equiv& (2\sum_{i=0}^{n-1}x_{2i+1}+\sum_{i=0}^{n-1}x_{2i}) \pmod 3
\end{align}
$$

## (3)

読み取った数値の3を法とした和の余りの状態と、現在の桁数の情報を持てば良さそうだ。これは与えられた条件である「状態数は6とする」合致する。

```mermaid
stateDiagram-v2
direction LR
[*] --> (e0)
(e0) --> o0: 0
(e0) --> o1: 1
e1 --> o1: 0
e1 --> o2: 1
e2 --> o2: 0
e2 --> o0: 1
o0 --> (e0): 0
o0 --> e1: 1
o1 --> e1: 0
o1 --> e2: 1
o2 --> e2: 0
o2 --> (e0): 1
```

## (4)

```mermaid
stateDiagram-v2
direction LR
[*] --> (e0o0)
(e0o0) --> (e0o0): 0
(e0o0) --> e2o1: 1
e2o1 --> e1o2: 0
e2o1 --> (e0o0): 1
e1o2 --> e2o1 : 0
e1o2 --> e1o2 : 1
```

## (5)

```mermaid
stateDiagram-v2
direction LR
[*] --> (e0o0)
(e0o0) --> (e0o0): (0,0)
(e0o0) --> e2o1: (0,1), (1,0)
(e0o0) --> e1o2: (1,1)
e2o1 --> e1o2: (0,0)
e2o1 --> (e0o0): (0,1), (1,0)
e2o1 --> e2o1: (1,1)
e1o2 --> e2o1 : (0,0)
e1o2 --> e1o2 : (0,1), (1,0)
e1o2 --> (e0o0): (1,1)
```

0 comments on commit 31f7b8b

Please sign in to comment.