離散数学:直前対策パック

公式集、全トピックの解法の要点、8 問の演習問題。完全な解答は巻末にあります。

新しい問題科目に戻る

印刷ウィンドウで「PDF として保存」を選ぶと、コピーを端末に保存できます。

1公式と解法

命題論理と証明

真理値表の行
2ⁿ
含意
p → q ≡ ¬p ∨ q ≡ ¬q → ¬p
含意の否定
¬(p → q) ≡ p ∧ ¬q
同値(双条件)
p ↔ q ≡ (p → q) ∧ (q → p)
ド・モルガンの法則
¬(p ∧ q) ≡ ¬p ∨ ¬q, ¬(p ∨ q) ≡ ¬p ∧ ¬q
分配法則
p ∨ (q ∧ r) ≡ (p ∨ q) ∧ (p ∨ r), p ∧ (q ∨ r) ≡ (p ∧ q) ∨ (p ∧ r)
量化子の否定
¬∀x P(x) ≡ ∃x ¬P(x), ¬∃x P(x) ≡ ∀x ¬P(x)
肯定式(modus ponens)、否定式(modus tollens)
p → q, p ⊢ q; p → q, ¬q ⊢ ¬p

解き方

  1. 異なる変数の数を数えます:真理値表の行数は 2ⁿ で、最初の行はすべて 1 です。
  2. 部分式ごとに列を用意し、内側から順に列を埋めていきます。
  3. 各結合子の規則を適用します:→ が 0 になるのは 1 → 0 のときだけ、↔ は両辺が一致するとき 1 です。
  4. 同値の判定では最後の列を行ごとに比べます。論証の判定では、すべての前提が 1 である行だけを見ます。
  5. 量化された文を否定するには、¬ を内側へ移し、∀ と ∃ を入れ替え、内側の式を否定します。

集合・関係・関数

2 つの集合
|A ∪ B| = |A| + |B| − |A ∩ B|
3 つの集合
|A ∪ B ∪ C| = |A| + |B| + |C| − |A ∩ B| − |A ∩ C| − |B ∩ C| + |A ∩ B ∩ C|
差集合と補集合
A − B = A ∩ B′, |A′| = |U| − |A|
冪集合と直積
|𝒫(A)| = 2|A|, |A × B| = |A|·|B|
大きさ k の部分集合
C(n, k) = n!/(k!(n − k)!)
関数 A → B
nᵐ; injective n!/(n − m)!; surjective Σ (−1)ᵏ C(n, k)(n − k)ᵐ
n 個の要素上の関係
2n²; reflexive 2n² − n; symmetric 2n(n+1)/2
合成
(g ∘ f)(x) = g(f(x))

解き方

  1. ベン図を描き、集合の式に属する部分を領域ごとに判断します。
  2. 個数を求める問題では、中心から外へ向かって領域を埋めます:すべての集合、次に 2 つずつ、次に 1 つだけ、最後に外側です。
  3. 検算には包除原理を使います:|A ∪ B| = |A| + |B| − |A ∩ B|。
  4. 関係では、各性質をすべての組で確かめ、成り立たないときは反例を 1 つ挙げます。
  5. 関数では、B の各要素に届く矢印を数えます:多くても 1 本なら単射、少なくとも 1 本なら全射です。

グラフ理論

握手補題
Σ deg(v) = 2|E|
完全グラフ
|E(Kn)| = n(n − 1)/2, |E(Km,n)| = m·n
正則グラフ
|E| = n·k/2
木と森
|E| = n − 1, |E| = n − c
木の葉
L = 2 + Σ (deg(v) − 2) over deg(v) ≥ 3
オイラー
閉路:すべての次数が偶数; 路:奇数次数がちょうど 2 つ
Kn のハミルトン閉路
(n − 1)!/2
ダイクストラ法の更新
d(v) = min(d(v), d(u) + w(u, v))
長さ L の歩道
(Mᴸ)ij

解き方

  1. 各頂点の次数を書き出します。次数の総和は辺の数の 2 倍になります。
  2. オイラーの問題では、グラフが連結であることを確かめ、奇数次数の頂点を数えます。
  3. 木では、辺が n − 1 本であることと握手補題を使います。
  4. ダイクストラ法では、暫定距離の表をつくり、毎回、未確定の頂点のうち最小のものを確定します。
  5. 最小全域木では、辺を重みの順に並べ、閉路をつくる辺を飛ばす方法(クラスカル法)か、始点から 1 本の木を成長させる方法(プリム法)を使います。

整数論と合同式

余りのある割り算
a = q·n + r, 0 ≤ r < n
ユークリッド
gcd(a, b) = gcd(b, a mod b)
最小公倍数
lcm(a, b) = a·b/gcd(a, b)
逆行列
a·a⁻¹ ≡ 1 (mod n), gcd(a, n) = 1
一次合同式
a·x ≡ b → x ≡ a⁻¹·b (mod n)
オイラーのトーシェント関数
φ(n) = n·∏(1 − 1/p), φ(pᵏ) = pᵏ − pᵏ⁻¹
フェルマー
aᵖ⁻¹ ≡ 1 (mod p)
RSA
n = pq, φ = (p − 1)(q − 1), d = e⁻¹ mod φ, c = mᵉ mod n, m = cᵈ mod n

解き方

  1. まずすべての数を n で割った余りに直します。余りは 0 から n − 1 の間です。
  2. 最大公約数は、ユークリッドの互除法で割り算を繰り返して求めます。最後の 0 でない余りが最大公約数です。
  3. 逆元は拡張ユークリッドの互除法で求め、a の係数を取ります。負なら n を足します。
  4. a·x ≡ b は a⁻¹ を掛けて解きます。2 つの合同式は x = r₁ + m₁k とおいて組み合わせます。
  5. べき乗では、指数を 2 進数で書いて平方を繰り返します。RSA では d = e⁻¹ mod φ(n)、φ(n) = (p − 1)(q − 1) です。

2演習問題

1.命題論理と証明ふつう
pqrq ∧ p(q ∧ p) ∧ r((q → p) ∧ r) ∧ ((q ∧ p) ∧ r)111?110?101?100?011?010?001?000?

この論理式 ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) は、真理値表の 8 行のうち何行で真になりますか? この数を N とします。

((q → p) ∧ r) ∧ ((q ∧ p) ∧ r)
N =
2.命題論理と証明むずかしい
∃x ∃y (R(x, y) ∧ ¬R(y, x))∀x ∀y (R(x, y) ∧ ¬R(y, x))∃x ∃y (¬R(x, y) ∧ ¬R(y, x))∃x ∃y (R(x, y) → ¬R(y, x))

否定を最も内側まで移したとき、¬∀x ∀y (R(x, y) → R(y, x)) と同値な主張はどれですか? クリックしてください。

¬∀x ∀y (R(x, y) → R(y, x))
  1. 1∃x ∃y (R(x, y) ∧ ¬R(y, x))
  2. 2∀x ∀y (R(x, y) ∧ ¬R(y, x))
  3. 3∃x ∃y (¬R(x, y) ∧ ¬R(y, x))
  4. 4∃x ∃y (R(x, y) → ¬R(y, x))
3.集合・関係・関数ふつう
1234

R = {(1, 1), (1, 2), (3, 3)} は {1, 2, 3, 4} 上の関係です。 R を対称的にするために加えなければならない順序対の最小の個数 k はいくつですか?

R = {(1, 1), (1, 2), (3, 3)}
k =
4.集合・関係・関数むずかしい
x12345f(x)25134

{1, 2, 3, 4, 5} 上の全単射 f が表で与えられています。f−1(2) を求めてください。

f: 1 ↦ 2, 2 ↦ 5, 3 ↦ 1, 4 ↦ 3, 5 ↦ 4
f−1(2) =
5.グラフ理論ふつう

木に 次数 3 の頂点が 4 個, 次数 2 の頂点が 2 個 があり、ほかのすべての頂点は葉(次数 1)です。葉は何枚Lありますか?

4 × deg 32 × deg 2
L =
6.グラフ理論むずかしい
9213412141511ABCDEF

重み付きグラフの最小全域木の重みの合計 W を求めてください。

|V| = 6|E| = 8
W =
7.整数論と合同式ふつう

43 を法とする 18 の逆元を求めてください:0 < x < 43 かつ 18·x ≡ 1 (mod 43) を満たす数 x です。

a = 18n = 43
18−1 mod 43 =
8.整数論と合同式むずかしい
41c = me​ mod n?m = cd​ mod nm(n, e) = (77, 17)d

メッセージ m = 41 を RSA 公開鍵 (n, e) = (77, 17) で暗号化してください。暗号文 c を求めてください。

n = 77e = 17m = 41
c =

3溶液

1.命題論理と証明

答え: N = 1

真理値表:n 個の異なる変数をもつ論理式には、真理値のすべての組み合わせに対応する 2ⁿ 行があります(1 = 真、0 = 偽)。内側から順に進め、部分式ごとに列を用意します。¬a は値を反転させ、a ∧ b は両方が 1 のときだけ 1、a ∨ b は両方が 0 のときだけ 0、a → b は a = 1 かつ b = 0 のときだけ 0、a ↔ b は両辺が等しいとき 1 です。

真理値表を行ごとに見る

p = 1, q = 1, r = 1: q → p = 1, (q → p) ∧ r = 1, q ∧ p = 1, (q ∧ p) ∧ r = 1, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 1
p = 1, q = 1, r = 0: q → p = 1, (q → p) ∧ r = 0, q ∧ p = 1, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 1, q = 0, r = 1: q → p = 1, (q → p) ∧ r = 1, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 1, q = 0, r = 0: q → p = 1, (q → p) ∧ r = 0, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 0, q = 1, r = 1: q → p = 0, (q → p) ∧ r = 0, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 0, q = 1, r = 0: q → p = 0, (q → p) ∧ r = 0, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 0, q = 0, r = 1: q → p = 1, (q → p) ∧ r = 1, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0
p = 0, q = 0, r = 0: q → p = 1, (q → p) ∧ r = 0, q ∧ p = 0, (q ∧ p) ∧ r = 0, ((q → p) ∧ r) ∧ ((q ∧ p) ∧ r) = 0

値が 1 の行を数える

((q → p) ∧ r) ∧ ((q ∧ p) ∧ r): 1, 0, 0, 0, 0, 0, 0, 0
N = 1

答え

N = 1
2.命題論理と証明

答え: ∃x ∃y (R(x, y) ∧ ¬R(y, x))

量化子と論証:¬∀x P(x) ≡ ∃x ¬P(x)、¬∃x P(x) ≡ ∀x ¬P(x)。否定を内側へ移し、通過する量化子をすべて入れ替え、内側の式は ¬(a → b) ≡ a ∧ ¬b のような命題論理の法則で否定します。論証は、すべての前提が 1 であるどの行でも結論が 1 のとき、妥当です。前提が真で結論が偽になる行が 1 つでもあれば、それは反例であり、その論証が妥当でないことを示します。

否定を内側へ移す

¬∀x ∀y (R(x, y) → R(y, x)) ≡ ∃x ∃y (R(x, y) ∧ ¬R(y, x))

答え

∃x ∃y (R(x, y) ∧ ¬R(y, x))

ほかの選択肢は、量化子がそのままになっているか、量化子の順序が変わっているか、内側の式の否定が間違っているかのどれかです。

3.集合・関係・関数

答え: k = 1

関係:集合 X 上の関係 R は、順序対 (x, y) の集合です。R が反射的であるとは、X のすべての x について (x, x) ∈ R となること、対称的であるとは、(x, y) ∈ R のとき必ず (y, x) ∈ R となること、反対称的であるとは、(x, y) と (y, x) の両方が R に属するのは x = y のときだけであること、推移的であるとは、(x, y) と (y, z) が R に属すれば (x, z) ∈ R となることです。同値関係は反射的・対称的・推移的で、X を互いに素な類に分けます。

加える組

{(2, 1)}

数える

k = 1

答え

k = 1
4.集合・関係・関数

答え: f−1(2) = 1

関数と数え上げ:関数 f: A → B は、A のすべての要素に、B の中の像をちょうど 1 つずつ対応させます。f が単射(1 対 1)であるとは、異なる要素が異なる像をもつこと、全射(上への写像)であるとは、B のすべての要素が像になっていること、全単射であるとは、その両方が成り立つことです。|A| = m、|B| = n のとき、関数は nᵐ 個、単射は n!/(n − m)! 個(m ≤ n)、全射は包除原理により Σ (−1)ᵏ·C(n, k)·(n − k)ᵐ 個あります。|𝒫(A)| = 2ᵐ、|A × B| = m·n です。

表を逆向きに読む

f(1) = 2 → f−1(2) = 1

答え

f−1(2) = 1
5.グラフ理論

答え: L = 6

オイラー、ハミルトン、木:連結グラフは、すべての頂点の次数が偶数のときオイラー閉路(すべての辺を 1 回ずつ通って始点に戻る)をもち、ちょうど 2 つの頂点の次数が奇数のとき、閉路でないオイラー路をもちます。その路は、一方の奇数次数の頂点から他方へ通ります。ハミルトン閉路はすべての頂点を 1 回ずつ訪れ、Kn には (n − 1)!/2 個あります。n 個の頂点をもつ木には n − 1 本の辺があり、m 本の辺をもつ連結グラフは、m − n + 1 本の辺を取り除いても全域木が残ります。

木の握手補題

L + 16 = 2(L + 6) − 2
L = 6

答え

L = 6

近道:次数 d ≥ 3 の頂点について L = 2 + Σ (d − 2) です。

6.グラフ理論

答え: W = 41

最短経路と全域木:ダイクストラ法は毎ラウンド 1 つの頂点を確定します:暫定距離が最小の未確定の頂点です。その距離は最終となり、各隣接頂点 v は d(v) = min(d(v), d(u) + w(u, v)) と更新されます。クラスカル法は、辺を軽い順に取り、閉路をつくる辺を飛ばして最小全域木をつくります。プリム法は、始点から 1 本の木を成長させ、その木から出る最も軽い辺を常に加えます。n 個の頂点の全域木には n − 1 本の辺があります。

クラスカル法

AC (2): 取る
CE (4): 取る
AB (9): 取る
BE (11): 飛ばす(閉路ができる)
DE (12): 取る
BC (13): 飛ばす(閉路ができる)
DF (14): 取る

重みの合計

W = 2 + 4 + 9 + 12 + 14 = 41

答え

W = 41
7.整数論と合同式

答え: 18−1 mod 43 = 12

逆元と合同式:a が n を法として逆元をもつのは、gcd(a, n) = 1 のときに限ります。拡張ユークリッドの互除法で 1 = s·n + t·a と書くと、a⁻¹ ≡ t (mod n) です。gcd(a, n) = 1 のとき、合同式 a·x ≡ b (mod n) の解は x ≡ a⁻¹·b です。法が互いに素な 2 つの合同式 x ≡ r₁ (mod m₁) と x ≡ r₂ (mod m₂) には、m₁·m₂ を法として 1 つの解があります(中国の剰余定理)。オイラーの φ(n) は、1 から n までの数のうち n と互いに素なものの個数です:φ(n) = n·∏(1 − 1/p)。

拡張ユークリッドの互除法

各余り r は r ≡ t·18 (mod 43) と書けます。

r = 43, t = 0
r = 18, q = 2, t = 1
r = 7, q = 2, t = −2
r = 4, q = 1, t = 5
r = 3, q = 1, t = −7
r = 1, q = 3, t = 12

逆行列

1 ≡ 12·18 (mod 43)
x = 12
確認: 18·12 = 216 = 5·43 + 1

答え

18−1 mod 43 = 12
8.整数論と合同式

答え: c = 13

冪剰余と RSA:aᵏ mod n は反復二乗法で計算します:k を 2 進数で書き、二乗し、毎回簡約し、ビットが 1 の冪を掛けます。フェルマー:素数 p が a を割り切らないとき aᵖ⁻¹ ≡ 1 (mod p) なので、指数は p − 1 を法として簡約できます。RSA:素数 p と q を選び、n = p·q、φ(n) = (p − 1)(q − 1) とします。公開指数 e は φ(n) と互いに素で、秘密指数は d = e⁻¹ mod φ(n) です。暗号化は c = mᵉ mod n、復号は m = cᵈ mod n で行います。

反復二乗法

17 = 16 + 1
411 ≡ 41 (mod 77)
412 ≡ 64 (mod 77)
414 ≡ 15 (mod 77)
418 ≡ 71 (mod 77)
4116 ≡ 36 (mod 77)
4117 ≡ 41·36 ≡ 13 (mod 77)

暗号文

c = 13

答え

c = 13

ExamProblems · examproblems.com/courses/discrete-mathematics