iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用・114 年第二次・L23・第 33 題

逐一比對所有客戶相似度,時間複雜度是多少?

原題

某資料科學團隊正在開發一個客戶相似度比對系統,用於計算所有客戶之間的相似度分數。若系統需逐一比對每一位客戶與其他所有客戶的資料組合,此時演算法的時間複雜度最可能為哪一種?其代表意義為何?

白話

一個系統要計算所有客戶彼此之間的相似度,做法是讓每位客戶都和其他每位客戶比對一次。

問你:這種「每個人和其他所有人都比一遍」的演算法,時間複雜度是哪一種?

一句話總結

每位客戶都要和其他所有客戶比對一次,答案是 O(n²):客戶數量增加 10 倍,比對次數增加 100 倍,執行時間與資料量的平方成正比,資料量一大就會非常慢。

情境

先感受問題:客戶從 100 人變 1000 人,比對次數爆炸

「精準行銷科技」的工程師王志明要建立一個「找出相似客戶」的系統,讓業務員看到「和這個客戶最像的前 10 名客戶」。

他的第一個版本:每個客戶都和其他所有客戶逐一計算相似度分數。

100 個客戶:每人比 99 次,共 100 × 99 ÷ 2 ≈ 4,950 次比對

1,000 個客戶:每人比 999 次,共約 499,500 次比對

10,000 個客戶:共約 50,000,000 次比對

100,000 個客戶:共約 5,000,000,000 次比對(50 億次!)

客戶數量翻 10 倍,比對次數卻翻了約 100 倍。這就是時間複雜度 O(n²) 的意思:執行時間和客戶數量的「平方」成正比。

當公司客戶從幾千人成長到幾十萬人,這個系統會變得慢到無法使用。

舊方法

為什麼其他複雜度描述不適合這個問題?

  1. O(1) 是固定時間:不管資料量多少,執行時間都一樣,例如「讀取陣列第一個元素」。客戶相似度比對的工作量顯然隨客戶數增加,絕對不可能是 O(1)。
  2. O(n) 是線性成長:每多一個客戶,工作量就多一份,例如「掃過所有客戶一次找最大值」。但我們的系統每新增一個客戶,他要和所有現有客戶都比一次,工作量增加不只一份,所以不是 O(n)。
  3. O(log n) 是對數成長:每次操作把問題縮小一半,例如「在排好序的清單裡用二分搜尋找某人」。兩個人的相似度比對不是「縮小問題」的結構,所以不是 O(log n)。
  4. O(n²) 才是雙層迴圈的複雜度:第一層迴圈跑 n 次(每個客戶),第二層迴圈也跑 n 次(和其他每個客戶比),合計 n × n = n² 次操作。
  5. O(n²) 在實際系統中的代價:資料量一增加,O(n²) 的系統很快就會慢到無法接受,這是工程師選擇演算法時必須考慮的首要因素之一。

新方法

計算比對次數:兩層迴圈就是 n²

王志明的相似度比對系統用雙層迴圈實作:

第一層迴圈:遍歷每一個客戶 i(共 n 次)

第二層迴圈:對每個 i,遍歷每一個客戶 j(共 n 次)

如果 i ≠ j,計算 i 和 j 的相似度

總執行次數:n × n = n²(精確說是 n×(n-1),大 O 省略常數和低階項)

時間複雜度 O(n²) 的直覺理解:把所有客戶排成一張表格,行是「客戶 i」,列是「客戶 j」,需要填滿整張 n×n 的表(排除對角線)。表格大小和 n 的平方成正比。

這就是選項 B 講的:O(n²),執行時間與資料量平方成正比。

錯選項

為什麼其他選項是錯的

AO(n):線性成長

字面在說什麼

客戶相似度比對系統的執行時間和客戶數量成線性關係。

為什麼不對

O(n) 的演算法代表每增加一個客戶,只多一份固定工作量。但在相似度比對中,每增加一個客戶,他要和現有所有客戶都比一次,工作量增加了「n 份」,不是「1 份」。只掃過每個客戶一次才是 O(n),而非兩兩配對。

誰會選錯

直覺上覺得「n 個客戶就做 n 次事情」的人,沒有意識到「兩兩配對」的組合特性讓工作量是 n²,不是 n。

CO(1):固定時間

字面在說什麼

客戶相似度比對的執行時間不隨客戶數量改變。

為什麼不對

O(1) 表示執行時間完全不受輸入規模影響,例如雜湊表查找一個特定元素。相似度比對顯然需要做更多工作當客戶增加,O(1) 完全不合邏輯。

誰會選錯

記憶考試時猜測的人,沒有真正理解各複雜度的意義。通常只有「在 O 表示法中數字最小的那個感覺最快」的錯誤直覺。

DO(log n):對數成長

字面在說什麼

客戶相似度比對的執行時間呈對數成長,每次操作把問題縮小一半。

為什麼不對

O(log n) 通常對應「分而治之」的演算法,如二分搜尋:每次操作都把搜尋範圍縮小一半。相似度比對不具有「每次縮小問題」的結構,而是要遍歷所有配對組合。O(log n) 的演算法不需要看所有元素,相似度比對必須看所有配對。

誰會選錯

知道 O(log n) 是「很好的複雜度」,錯誤地以為系統可以做得這麼有效率,沒有理解這種系統本質上需要窮舉所有配對。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目三 機器學習技術與應用 第 33 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。