資料結構與演算法

關於在字串中尋找樣式的 BM 法(Boyer-Moore 演算法)的特徵,下列何者正確?

  1. A從樣式的末尾字元開始比較,並利用「不相符的文本字元不在樣式中」等資訊,一次大幅移動樣式
  2. B從文本開頭每次移動1個字元,每次都從樣式開頭到最後比較所有字元
  3. C先把文本與樣式都排序,再以二分搜尋尋找
查看答案與解析

正確答案:A. 從樣式的末尾字元開始比較,並利用「不相符的文本字元不在樣式中」等資訊,一次大幅移動樣式

BM 法從末尾字元開始比較樣式,並事先建立表格,例如若不相符的文本字元完全不在樣式中,就能把整個樣式移到該字元之後。因此在自然語言的文章中,能跳過文本中許多字元而不必比較。設文本長度為 n、樣式長度為 m,每次移動1個字元並全部比較的單純方法,最差需要 O(nm)。KMP 演算法也利用不相符的資訊來移動,但它從樣式開頭比較,最差也保證 O(n + m)。

  • A. 正確。從末尾比較,並依不相符字元的資訊大幅移動,就是 BM 法。
  • B. 這是單純的(暴力)方法,最差需要 O(nm)。
  • C. 這是要找出字串中位置的問題,排序會失去位置的資訊。
練習這個領域 前往領域頁面

相關計算工具

資料結構與演算法的其他題目

  1. 某個可變長度陣列在容量已滿時加入元素,會重新配置2倍容量的區域並複製所有元素。對容量為1的空陣列逐一加入1,000個元素時,被複製的元素總數為多少?
  2. 在元素很多、負載因子維持在0.5左右的雜湊表中,使用線性探測的開放定址法往往比鏈結法(以鏈結串列串接的方法)快,最適當的原因為下列何者?
  3. 在 GPU 這類平行處理裝置上排序時,有時會使用雙調排序(bitonic sort)這類比較與交換步驟固定的排序(排序網路),其理由為下列何者?
  4. 對於有 n 個元素的陣列,將所有不同的兩個元素組合各比較一次的處理(以雙重迴圈將第 i 個元素與其後的所有元素比較,並讓 i 逐一前進),其時間複雜度為下列何者?
  5. 某個時間複雜度為 O(n²) 的程式,在資料數為1,000時處理時間為0.5秒。若資料數變為4,000,處理時間約為幾秒?