次のプログラム中の 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

コサイン類似度は内積を両ベクトルのノルムの積で割る

頻出基本情報技術者試験2023年度 公開問題 科目B5/アルゴリズムとプログラミング / アルゴリズム

選択肢

正解と解説

正解: a: vector1[i] × vector2[i]  b: denominator × (tempの正の平方根)

分子は対応する要素どうしの積の総和なので、aには2つの配列の同じ位置の要素の積をそのまま加える式が入る。分母は各配列のノルム(2乗和の平方根)の積なので、先に求めたvector1側の平方根が入っているdenominatorに、vector2側の2乗和の平方根を掛ける式がbになる。加算にしたり平方根を余分に取ったりすると定義式と合わなくなる。

選択肢ごとの解説

出典:令和5年度 公開問題 基本情報技術者試験 科目B 問5(IPA)

同じ分野の他の問題

最終更新:2026-08-25/解説・選択肢ごとの解説は資格暗記が独自に作成しています。問題文と選択肢の出典は上記のとおりです。