コンピュータサイエンス基礎:直前対策パック

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

新しい問題科目に戻る

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

1公式と解法

記数法

位取り
2 進数 2k、8 進数 8k、16 進数 16k
10 進数へ
Σ dk·bk
10 進数から
基数で割り、余りを下から上へ読む
16 進数 ↔ 2 進数
16 進数 1 桁 = 4 ビット
2 の補数
ビットを反転して 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. 量化された文を否定するには、¬ を内側へ移し、∀ と ∃ を入れ替え、内側の式を否定します。

デジタル論理:ゲート・カルノー図・フリップフロップ

基本ゲート
A·B, A + B, A′, (A·B)′, (A + B)′, A ⊕ B
ブールの規則
X + X′ = 1, X·X′ = 0, X + XY = X, XY + XY′ = X
ド・モルガンの法則
(X·Y)′ = X′ + Y′, (X + Y)′ = X′·Y′
カルノー図の並び順
00, 01, 11, 10 (Gray code)
2ᵏ 個のセルのグループ
k 個の変数が消える
4 対 1 マルチプレクサ
F = A′B′I0 + A′BI1 + AB′I2 + ABI3
フリップフロップ
D: Q⁺ = D, T: Q⁺ = T ⊕ Q, JK: Q⁺ = JQ′ + K′Q
カウンタ
n ビット:2ⁿ 状態; mod-N:2ⁿ ≥ N を満たす最小の n; fout = fclk/N
リップルカウンタ
fmax = 1/(n·tpd)
リングカウンタとジョンソンカウンタ
n 状態と 2n 状態

解き方

  1. 回路では、入力から出力へ向かってゲートを 1 つずつ進み、各配線に値を書き込むか、式を書いて真理値表を埋めましょう。
  2. 簡単化するには、1(とドントケアは X として)を、行と列がグレイコード 00, 01, 11, 10 のカルノー図に書き込みましょう。
  3. 1 を、1, 2, 4, 8, 16 個のセルからなる、できるだけ少なくできるだけ大きなグループで、端をまたぎながら覆いましょう。各グループは、一定のままの変数からなる 1 つの積項です。POS 形には 0 をグループ化します。
  4. フリップフロップとカウンタでは、各有効クロックエッジで入力を読み取り、エッジごとの状態を書き出し、n ビットのカウンタは 2ⁿ 個の状態で折り返すことを忘れないようにしましょう。

整数論と合同式

余りのある割り算
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) です。

グラフ理論

握手補題
Σ 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 本の木を成長させる方法(プリム法)を使います。

IPv4 サブネット化

サブネットあたりのホスト数
2(32 − prefix) − 2 (/31: 2, /32: 1)
ブロックサイズ
256 − (mask octet)
ネットワークアドレス
IP AND マスク
ブロードキャストアドレス
IP OR (NOT マスク):ホスト部のビットをすべて 1 にする
n ビット借りたときのサブネット数
2n

2演習問題

1.記数法ふつう
8 ビットの 2 の補数0−12806403201608040201

8 ビットの 2 の補数で −19 を格納するようにビットを設定します。符号なしの数として読むと、このパターンの値 U はいくつですか?

N = −198 bit
U =
2.記数法むずかしい
24 bit1 px1024 px768 pxM = ? KiB

非圧縮の画像が 1024 × 768 ピクセル、1 ピクセルあたり 24 ビットです。必要なメモリ M は何 KiB(1 KiB = 1024 バイト)ですか?

1024 × 768 px24 bit/px1 KiB = 1024 B
M = KiB
3.命題論理と証明ふつう
pqr¬p ∨ r¬(¬p ∨ r)((¬q ∨ r) ↔ p) → ¬(¬p ∨ r)111?110?101?100?011?010?001?000?

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

((¬q ∨ r) ↔ p) → ¬(¬p ∨ r)
N =
4.命題論理と証明むずかしい
pqrq → (r ∨ p)qr111110101100011010001000

前提 q → (r ∨ p); q、結論 r の論証は妥当ではありません。反例となる真理値表の行をクリックしてください。

q → (r ∨ p)q∴ r
  1. 1p = 1, q = 1, r = 1
  2. 2p = 1, q = 1, r = 0
  3. 3p = 1, q = 0, r = 1
  4. 4p = 1, q = 0, r = 0
  5. 5p = 0, q = 1, r = 1
  6. 6p = 0, q = 1, r = 0
  7. 7p = 0, q = 0, r = 1
  8. 8p = 0, q = 0, r = 0
5.デジタル論理:ゲート・カルノー図・フリップフロップふつう
ABC00011110010011030214151716

カルノー図を使って F(A, B, C) = Σm(1, 4, 5, 6, 7) の最小の和積形(POS)を求めてください。和項(因数)N はいくつありますか?

F(A, B, C) = Σm(1, 4, 5, 6, 7)
N =
6.デジタル論理:ゲート・カルノー図・フリップフロップむずかしい
ABCD000111100001111000110312141517X6X12013X15114X819011010

d はドントケア条件を表します。F(A, B, C, D) = Σm(1, 2, 4, 5, 7, 9, 14) + d(6, 8, 12, 15) の最小の SOP 形を求めてください。リテラル L はいくつ含まれますか?

F(A, B, C, D) = Σm(1, 2, 4, 5, 7, 9, 14) + d(6, 8, 12, 15)
L =
7.整数論と合同式ふつう

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

a = 71n = 97
71−1 mod 97 =
8.整数論と合同式むずかしい
mc = me​ mod n742m = cd​ mod n?(n, e) = (1147, 19)d

ある RSA 鍵は p = 31、q = 37、e = 19 を使います。暗号文 c = 742 を復号して、メッセージ m を求めてください。

p = 31q = 37e = 19c = 742
m =
9.アルゴリズムと計算量ふつう

貪欲法(greedy algorithm)の説明として正しいものはどれですか?

  1. A各ステップで局所的に最良の選択をする
  2. B可能なすべての解を試す
  3. C常に最適解を与える
  4. D再帰のみを使用する
10.アルゴリズムと計算量むずかしい

ある NP 完全問題に対する多項式時間アルゴリズムを誰かが見つけたら、何が導かれますか?

  1. Aすべての指数時間アルゴリズムがただちに線形時間で動くようになる
  2. B停止問題が決定可能になる
  3. CNP のすべての問題が多項式時間で解けることになり、P = NP となる
  4. Dその 1 つの問題だけが P に移る
11.データ構造ふつう

同じ長さの連結リストを走査するより、配列を走査する方が実際にはずっと速いことが多いのはなぜですか。

  1. A配列では値を比較する命令が少なくて済むから
  2. B連結リストは常に要素をディスクに格納するから
  3. C配列の要素は連続しているので、CPU キャッシュを有効に使えるから
  4. D配列の走査は全体で O(1)、連結リストの走査は O(n) だから
12.データ構造むずかしい

n 個の数からなるストリームから、O(k) のメモリで最小の k 個の値を保持しなければなりません。O(n log k) 時間で動作する方法はどれですか。

  1. An 個すべての値のソート済み配列
  2. Bn 個すべての値を保持する最小ヒープで、最後に小さい方から k 個を取り出す
  3. Cサイズ k の最大ヒープを使い、より小さい値が来たら根を置き換える
  4. D最後の k 個の値の FIFO キュー
13.グラフ理論ふつう
ABCDEオイラー閉路オイラー路あり、閉路なしどちらでもない

この連結グラフには、オイラー閉路、閉路でないオイラー路、またはどちらもないのうち、どれがありますか? 答えをクリックしてください。

|V| = 5|E| = 6
  1. 1オイラー閉路
  2. 2オイラー路あり、閉路なし
  3. 3どちらでもない
14.グラフ理論むずかしい
17198614104182ABCDEF

プリム法は、頂点 F から始めて最小全域木をつくります。それが 2 番目に加える辺をクリックしてください。

始点:Fk = 2
  1. 1辺 AB
  2. 2辺 AC
  3. 3辺 BC
  4. 4辺 BD
  5. 5辺 CE
  6. 6辺 DE
  7. 7辺 DF
  8. 8辺 EF
  9. 9辺 BE
15.データベースと SQLふつう

SELECT name, CASE WHEN grade >= 5.5 THEN 'pass' ELSE 'fail' END FROM results は何を返しますか?

  1. ASELECT では CASE が使えないためエラー
  2. B成績に応じて 'pass' か 'fail' のラベルが付いた各名前
  3. C合格した学生だけ
  4. D合格した学生と不合格の学生の人数
16.データベースと SQLむずかしい

テーブルを 3NF ではなく BCNF に分解することの知られた欠点は何ですか?

  1. ABCNF のテーブルは主キーを持てない
  2. B一部の関数従属性が、1 つのテーブル内では確認できなくなることがある
  3. CBCNF は 3NF より多くの冗長性を許す
  4. D分解すると、結合し直したときに必ずデータが失われる
17.コンピュータネットワークふつう

インターネット上で TCP コネクションの一方の端を一意に識別するものは何ですか?

  1. Aサブネットマスクとゲートウェイ
  2. Bドメイン名だけ
  3. CIP アドレスとポート番号の組
  4. DMAC アドレスだけ
18.コンピュータネットワークむずかしい

衝突を繰り返した後、従来の Ethernet の端末は、毎回 2 倍になる範囲から待ち時間を選びます。なぜですか?

  1. Aケーブルが信号をより遠くまで運べるようにするため
  2. B多数の端末が競合しているときに再び衝突する確率を下げるため
  3. Cすべての端末を 1 つのクロックに同期させるため
  4. D共有ケーブル上で、MAC アドレスが最も大きい端末を優先するため
19.IPv4 サブネット化ふつう
/22 → /2611111111111111111111111111000000ネットワーク部ホスト部

ネットワーク 10.145.36.0/22 を、プレフィックス /26 の等しいサブネットに分割します。サブネットはいくつ N ありますか?

10.145.36.0/22/26
N =
20.IPv4 サブネット化むずかしい
最後のオクテット = 173112806413201618140211ネットワークホスト

あるホストのアドレスは 10.20.106.173/26 です。そのサブネットで最後に使えるホストアドレスの第 4 オクテット x はいくつですか?

10.20.106.173/26
x =

3溶液

1.記数法

答え: U = 237

ビットの設定:各ビットは 2 のべき乗(128、64、…、1)の値をもちます。16 進の 1 桁はちょうど 4 ビットで、8 ビットの 2 の補数では、いちばん左のビットの値は −128 です。ビット演算は、各ビット位置を別々に扱います。

反転して 1 を足す

19 = 0001 0011
反転後: 1110 1100
+1 → 1110 1101

符号なしとして読む

1110 1101₂ = 256 − 19 = 237

答え

U = 237
2.記数法

答え: M = 2304 KiB

位取り記数法:各桁の値は、その数字に基数のべき乗を掛けたものです。2 進数では各桁の重みが 1、2、4、8、16、…、16 進数では 1、16、256、… で、A–F は 10–15 を表します。8 ビットの 2 の補数では、最上位ビットの重みが +128 ではなく −128 になり、こうして負の数を表します。

ビットとバイト

1024·768·24 = 18874368 bit = 2359296 B

KiB に換算する

2359296/1024 = 2304 KiB

答え

M = 2304 KiB
3.命題論理と証明

答え: N = 5

真理値表: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 = 0, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 1, ¬p = 0, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 0
p = 1, q = 1, r = 0: ¬q = 0, ¬q ∨ r = 0, (¬q ∨ r) ↔ p = 0, ¬p = 0, ¬p ∨ r = 0, ¬(¬p ∨ r) = 1, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 1
p = 1, q = 0, r = 1: ¬q = 1, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 1, ¬p = 0, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 0
p = 1, q = 0, r = 0: ¬q = 1, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 1, ¬p = 0, ¬p ∨ r = 0, ¬(¬p ∨ r) = 1, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 1
p = 0, q = 1, r = 1: ¬q = 0, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 0, ¬p = 1, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 1
p = 0, q = 1, r = 0: ¬q = 0, ¬q ∨ r = 0, (¬q ∨ r) ↔ p = 1, ¬p = 1, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 0
p = 0, q = 0, r = 1: ¬q = 1, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 0, ¬p = 1, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 1
p = 0, q = 0, r = 0: ¬q = 1, ¬q ∨ r = 1, (¬q ∨ r) ↔ p = 0, ¬p = 1, ¬p ∨ r = 1, ¬(¬p ∨ r) = 0, ((¬q ∨ r) ↔ p) → ¬(¬p ∨ r) = 1

値が 1 の行を数える

((¬q ∨ r) ↔ p) → ¬(¬p ∨ r): 0, 1, 0, 1, 1, 0, 1, 1
N = 5

答え

N = 5
4.命題論理と証明

答え: p = 1, q = 1, r = 0

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

前提と結論を行ごとに見る

p = 1, q = 1, r = 1: 1 1 | 1
p = 1, q = 1, r = 0: 1 1 | 0
p = 1, q = 0, r = 1: 1 0 | 1
p = 1, q = 0, r = 0: 1 0 | 0
p = 0, q = 1, r = 1: 1 1 | 1
p = 0, q = 1, r = 0: 0 1 | 0
p = 0, q = 0, r = 1: 1 0 | 1
p = 0, q = 0, r = 0: 1 0 | 0

反例

p = 1, q = 1, r = 0

答え

p = 1, q = 1, r = 0

この形の論証は妥当な規則のように見えますが、1 行あれば妥当でないことを示せます。

5.デジタル論理:ゲート・カルノー図・フリップフロップ

答え: N = 2

カルノー図:セルはグレイコード(00, 01, 11, 10)の順に並んでいるので、端をまたぐものも含め、隣り合うセルはちょうど 1 つの変数だけが異なります。1 を、1, 2, 4, 8, 16 個のセルからなる長方形で、できるだけ大きく、できるだけ少ない数でグループ化し、すべての 1 を覆います。各グループは 1 つの積項で、グループの中で一定のままの変数からなります。2ᵏ 個のセルのグループでは k 個の変数が消えます。ドントケア(X)はグループを大きくするために使えますが、覆う必要はありません。代わりに 0 をグループ化すると、最小の POS 形が得られます。

ABC00011110010011030214151716

0 をグループ化する

各グループは 2ᵏ 個のセルからなる長方形です。端のセルは、反対側の端のセルと隣り合っています。

(A + C)
(A + B′)

最小の POS 形

F = (A + C)(A + B′)
N = 2

答え

N = 2
6.デジタル論理:ゲート・カルノー図・フリップフロップ

答え: L = 10

カルノー図:セルはグレイコード(00, 01, 11, 10)の順に並んでいるので、端をまたぐものも含め、隣り合うセルはちょうど 1 つの変数だけが異なります。1 を、1, 2, 4, 8, 16 個のセルからなる長方形で、できるだけ大きく、できるだけ少ない数でグループ化し、すべての 1 を覆います。各グループは 1 つの積項で、グループの中で一定のままの変数からなります。2ᵏ 個のセルのグループでは k 個の変数が消えます。ドントケア(X)はグループを大きくするために使えますが、覆う必要はありません。代わりに 0 をグループ化すると、最小の POS 形が得られます。

主項

1 と X からつくれる最大のグループ。

BD′, BC, B′C′D, A′C′D, A′CD′, A′B, AB′C′
ABCD000111100001111000110312141517X6X12013X15114X819011010

最小被覆

F = BD′ + B′C′D + A′CD′ + A′B
L = 10

答え

L = 10

同じ大きさの別のグループ分けもあります。項の数もリテラルの数も同じです。

7.整数論と合同式

答え: 71−1 mod 97 = 41

逆元と合同式: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·71 (mod 97) と書けます。

r = 97, t = 0
r = 71, q = 1, t = 1
r = 26, q = 2, t = −1
r = 19, q = 1, t = 3
r = 7, q = 2, t = −4
r = 5, q = 1, t = 11
r = 2, q = 2, t = −15
r = 1, q = 2, t = 41

逆行列

1 ≡ 41·71 (mod 97)
x = 41
確認: 71·41 = 2911 = 30·97 + 1

答え

71−1 mod 97 = 41
8.整数論と合同式

答え: m = 294

冪剰余と 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 で行います。

秘密指数

n = 1147, φ(n) = 1080
d = 19−1 mod 1080 = 739

反復二乗法で復号する

739 = 512 + 128 + 64 + 32 + 2 + 1
7421 ≡ 742 (mod 1147)
7422 ≡ 4 (mod 1147)
7424 ≡ 16 (mod 1147)
7428 ≡ 256 (mod 1147)
74216 ≡ 157 (mod 1147)
74232 ≡ 562 (mod 1147)
74264 ≡ 419 (mod 1147)
742128 ≡ 70 (mod 1147)
742256 ≡ 312 (mod 1147)
742512 ≡ 996 (mod 1147)
742739 ≡ 742·4·562·419·70·996 ≡ 294 (mod 1147)

メッセージ

m = 294
確認: 29419 mod 1147 = 742

答え

m = 294
9.アルゴリズムと計算量

答え: A · 各ステップで局所的に最良の選択をする

これが答えになる理由

貪欲法は高速で、一部の問題(例:Dijkstra、Huffman 符号化)では最適ですが、一般にはそうではありません(例:ある硬貨体系での両替問題)。

答え

A · 各ステップで局所的に最良の選択をする
10.アルゴリズムと計算量

答え: C · NP のすべての問題が多項式時間で解けることになり、P = NP となる

これが答えになる理由

NP 全体がどの NP 完全問題にも多項式時間で帰着するので、1 つに対する高速なアルゴリズムはすべてに対する高速なアルゴリズムを与えます。

答え

C · NP のすべての問題が多項式時間で解けることになり、P = NP となる
11.データ構造

答え: C · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから

これが答えになる理由

連続したメモリは参照の局所性がよい一方、連結されたノードはばらばらに配置されていることがあり、多くのキャッシュミスを引き起こします。

答え

C · 配列の要素は連続しているので、CPU キャッシュを有効に使えるから
12.データ構造

答え: C · サイズ k の最大ヒープを使い、より小さい値が来たら根を置き換える

これが答えになる理由

最大ヒープの根は保持している値の最大値です。それより小さい新しい値は O(log k) でそれと置き換わるので、ヒープは常にそれまでの最小の k 個を保持します。

答え

C · サイズ k の最大ヒープを使い、より小さい値が来たら根を置き換える
13.グラフ理論

答え: オイラー閉路

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

次数

deg(A) = 2, deg(B) = 4, deg(C) = 2, deg(D) = 2, deg(E) = 2

奇数次数の頂点

0
オイラー閉路

答え

オイラー閉路
14.グラフ理論

答え: 辺 BD

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

プリム法

1. DF (4)
2. BD (6)
3. BE (2)
4. BC (8)
5. AB (17)

辺の番号 2

BD

答え

辺 BD
15.データベースと SQL

答え: B · 成績に応じて 'pass' か 'fail' のラベルが付いた各名前

これが答えになる理由

CASE 式は行ごとに条件を評価し、一致する値を返すため、すべての行にラベルが付きます。

答え

B · 成績に応じて 'pass' か 'fail' のラベルが付いた各名前
16.データベースと SQL

答え: B · 一部の関数従属性が、1 つのテーブル内では確認できなくなることがある

これが答えになる理由

無損失な BCNF 分解は常に存在しますが、従属性を保存しないことがあります。3NF なら常に無損失かつ従属性保存にできます。

答え

B · 一部の関数従属性が、1 つのテーブル内では確認できなくなることがある
17.コンピュータネットワーク

答え: C · IP アドレスとポート番号の組

これが答えになる理由

TCP コネクションは、送信元の IP とポート、宛先の IP とポートで識別されます。ポートは 1 台のホスト上の多数のアプリケーションを区別します。

答え

C · IP アドレスとポート番号の組
18.コンピュータネットワーク

答え: B · 多数の端末が競合しているときに再び衝突する確率を下げるため

これが答えになる理由

衝突が重なるほど競合が多いことを示すため、ランダムな範囲を広げると、端末が異なるスロットを選ぶ可能性が高くなります。中央の制御なしに負荷に適応します。

答え

B · 多数の端末が競合しているときに再び衝突する確率を下げるため
19.IPv4 サブネット化

答え: N = 16

IPv4 subnetting: an address has 32 bits. The prefix /p says how many leading bits identify the network; the remaining 32 − p bits number the hosts. A subnet has 2³²⁻ᵖ addresses, but the first (network address) and last (broadcast address) cannot be given to hosts, so 2³²⁻ᵖ − 2 hosts fit. Exceptions: a /31 (point-to-point link, RFC 3021) uses both of its 2 addresses for hosts, and a /32 is one single address (a single host or a loopback).

借りたビット

26 − 22 = 4

サブネット数

N = 24 = 16

答え

N = 16

各 /26 サブネットには 26 − 2 = 62 個の使えるホストがあります。

20.IPv4 サブネット化

答え: x = 190

IPv4 サブネット化:アドレスは 32 ビットです。プレフィックス /p は先頭の何ビットがネットワークを表すかを示し、残りの 32 − p ビットでホストを番号付けします。サブネットには 2³²⁻ᵖ 個のアドレスがありますが、最初(ネットワークアドレス)と最後(ブロードキャストアドレス)はホストに割り当てられないため、2³²⁻ᵖ − 2 台のホストが収まります。 例外:/31(ポイントツーポイントリンク、RFC 3021)は 2 つのアドレスを両方ともホストに使い、/32 は単一のアドレス(単一ホストまたはループバック)です。

ブロックサイズ

26 = 64

このホストのサブネット

ネットワーク: ⌊173/64⌋·64 = 128
ブロードキャスト: 128 + 64 − 1 = 191
使えるホスト: 129 … 190

答え

x = 190

ExamProblems · examproblems.com/courses/computer-science-fundamentals