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.
Asam deoksiribonukleat
Riset dalam algoritme pencarian string, yang menemukan kejadian dari urutan huruf di dalam urutan huruf yang lebih besar, dimotivasi sebagian oleh riset DNA, dimana algoritme ini digunakan untuk mencari urutan tertentu dari nukleotida dalam sebuah urutan yang besar. Dalam aplikasi lainnya seperti editor text, bahkan algoritme sederhana untuk masalah ini biasanya mencukupi, tetapi urutan DNA menyebabkan algoritme-algoritme ini untuk menunjukkan sifat kasus-mendekati-terburuk dikarenakan jumlah kecil dari karakter yang berbeda.