次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 コサイン類似度は、二つのベクトルの向きの類似性を測る尺度である。関数calcCosineSimilarityは、いずれも要素数がn(n≧1)である実数型の配列vector1とvector2を受け取り、二つの配列のコサイン類似度を返す。配列vector1が{a1, a2, …, an}、配列vector2が{b1, b2, …, bn}のとき、コサイン類似度は次の数式で計算される。ここで、配列vector1と配列vector2のいずれも、全ての要素に0が格納されていることはないものとする。 コサイン類似度 = (a1b1 + a2b2 + … + anbn) ÷ (√(a1^2 + a2^2 + … + an^2) × √(b1^2 + b2^2 + … + bn^2)) 〔プログラム〕 ○実数型: calcCosineSimilarity(実数型の配列: vector1, 実数型の配列: vector2) 実数型: similarity, numerator, denominator, temp ← 0 整数型: i numerator ← 0 for (i を 1 から vector1の要素数 まで 1 ずつ増やす) numerator ← numerator + a endfor for (i を 1 から vector1の要素数 まで 1 ずつ増やす) temp ← temp + vector1[i]の2乗 endfor denominator ← tempの正の平方根 temp ← 0 for (i を 1 から vector2の要素数 まで 1 ずつ増やす) temp ← temp + vector2[i]の2乗 endfor denominator ← b similarity ← numerator ÷ denominator return similarity
コサイン類似度は内積を両ベクトルのノルムの積で割る
選択肢
- アa: (vector1[i] × vector2[i])の正の平方根 b: denominator × (tempの正の平方根)
- イa: (vector1[i] × vector2[i])の正の平方根 b: denominator + (tempの正の平方根)
- ウa: (vector1[i] × vector2[i])の正の平方根 b: tempの正の平方根
- エa: vector1[i] × vector2[i] b: denominator × (tempの正の平方根)
- オa: vector1[i] × vector2[i] b: denominator + (tempの正の平方根)
- カa: vector1[i] × vector2[i] b: tempの正の平方根
- キa: vector1[i]の2乗 b: denominator × (tempの正の平方根)
- クa: vector1[i]の2乗 b: denominator + (tempの正の平方根)
- 9a: vector1[i]の2乗 b: tempの正の平方根
正解と解説
正解:エ a: vector1[i] × vector2[i] b: denominator × (tempの正の平方根)
分子は対応する要素どうしの積の総和なので、aには2つの配列の同じ位置の要素の積をそのまま加える式が入る。分母は各配列のノルム(2乗和の平方根)の積なので、先に求めたvector1側の平方根が入っているdenominatorに、vector2側の2乗和の平方根を掛ける式がbになる。加算にしたり平方根を余分に取ったりすると定義式と合わなくなる。
選択肢ごとの解説
- ア分子の各項に平方根を取っており、内積の定義と合わない。
- イ分子の平方根も分母の加算も定義式と異なる。
- ウ分子が誤っているうえ、分母がvector2側のノルムだけになっている。
- エ分子は要素積の総和、分母は2つのノルムの積という定義どおりの組合せで正しい。
- オ分母がノルムの積ではなく和になっており、定義式と異なる。
- カ分母がvector2側のノルムだけになり、vector1側が消えてしまう。
- キ分子がvector1の2乗和になっており、内積になっていない。
- ク分子も分母も定義式と一致しない。
- 9分子が内積でなく、分母もvector1側のノルムが反映されない。
同じ分野の他の問題
- 次のプログラム中の a と b に入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。…2026年度 公開問題 科目B 問5
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 関数func1に与…2026年度 公開問題 科目B 問3
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数complementは、引数として渡された8ビット型…2026年度 公開問題 科目B 問2
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。 次のプログラムは、…2026年度 公開問題 科目B 問1
- 次のプログラム中の に入れる正しい答えを、解答群の中から選べ。 関数changeは、10より大きい整数を引数nで受け取り…2025年度 公開問題 科目B 問2
最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。