Tidak ada satu definisi terpadu tentang apa "algoritma yang lebih cepat" itu. Tidak ada badan pengatur yang memutuskan apakah suatu algoritma lebih cepat dari yang lain.
Untuk menunjukkan mengapa ini terjadi, saya ingin menawarkan dua skenario berbeda yang menunjukkan konsep keruh ini.
Contoh pertama adalah algoritme yang mencari daftar data unordered yang tertaut. Jika saya dapat melakukan operasi yang sama dengan sebuah array, saya tidak memiliki perubahan pada ukuran kinerja Oh yang besar. Kedua pencarian adalah O (n). Jika saya hanya melihat nilai-nilai Oh yang besar, saya bisa mengatakan bahwa saya tidak membuat perbaikan sama sekali. Namun, diketahui bahwa pencarian array lebih cepat daripada berjalan dalam daftar tertaut di sebagian besar kasus, jadi orang dapat memutuskan bahwa itu membuat algoritma "lebih cepat," meskipun Oh besar tidak berubah.
Jika saya dapat menggunakan contoh tradisional pemrograman robot untuk membuat sandwich PBJ, saya bisa menunjukkan apa yang saya maksud dengan cara lain. Pertimbangkan saja titik di mana seseorang membuka toples selai kacang.
Pick up the jar
Grab the lid
Unscrew the lid
Melawan
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Put the jar back down
Pick up the jar
Grab the lid
Unscrew the lid
Bahkan dalam pengaturan teoretis paling akademis yang dapat saya pikirkan, Anda akan menemukan bahwa orang menerima bahwa algoritma pertama lebih cepat daripada yang kedua, meskipun hasil notasi Oh besar adalah sama.
Sebaliknya, kita dapat mempertimbangkan algoritma untuk memecah enkripsi RSA. Saat ini, dianggap bahwa proses ini mungkin O (2 ^ n), di mana n adalah jumlah bit. Pertimbangkan algoritma baru yang menjalankan n ^ 100 lebih cepat Ini berarti proses baru saya berjalan di O (2 ^ n / n ^ 100). Namun, dalam dunia kriptografi, percepatan polinomial ke algoritma eksponensial secara tradisional tidak dianggap sebagai kecepatan teoretis sama sekali. Ketika melakukan bukti keamanan, diasumsikan bahwa penyerang dapat menemukan salah satu dari percepatan ini, dan itu tidak akan berpengaruh.
Jadi dalam satu keadaan, kita dapat mengubah O (n) menjadi O (n), dan menyebutnya lebih cepat. Dalam keadaan yang berbeda, kita dapat mengubah O (2 ^ n) menjadi O (2 ^ n / n ^ 100), dan mengklaim tidak ada kecepatan yang berarti sama sekali. Inilah sebabnya saya katakan tidak ada satu definisi yang disatukan untuk "algoritma yang lebih cepat." Itu selalu tergantung secara kontekstual.