Algoritme
Algoritme bisa diklasifikasikan berdasarkan jumlah waktu yang dibutuhkan untuk selesai dibandingkan dengan ukuran inputnya. Ada berbagai varietas: beberapa algoritme selesai dalam waktu linear relatif terhadap ukuran input, beberapa selesai dalam jumlah waktu yang eksponensial atau lebih buruh, dan beberapa berhenti. Sebagai tambahan, beberapa masalah bisa memiliki berbagai algoritme dengan kompleksitas yang berbeda, sementara permasalahan yang lain bisa saja tidak memiliki algoritme atau tidak diketahui algoritmanya yang efisien. Ada juga pemetaan dari beberapa algoritme terhadap permasalahan lain. Karena itu, lebih cocok untuk mengklasifikasikan permasalahan itu sendiri bukannya algoritme menjadi kelas-kelas yang sama berdasarkan kompleksitas dari kemungkinan algoritme terbaik baginya.
Algoritme Boyer-Moore
Misalnya ada sebuah usaha pencocokan yang terjadi pada formula_1, dan anggap ketidakcocokan pertama terjadi di antara formula_2 dan formula_3, dengan formula_4. Berarti, formula_5 dan formula_6 tidak sama dengan formula_7. Jika formula_8 adalah akhiran dari pattern sebelum formula_9 dan formula_10 adalah sebuah awalan dari pattern, maka penggeseran-penggeseran yang mungkin adalah:
Secara sistematis, langkah-langkah yang dilakukan algoritme Boyer-Moore pada saat mencocokkan string adalah: