Sementara jawaban lain memberikan poin bagus, saya merasa bahwa saya masih sedikit tidak setuju. Jadi, saya akan membagikan pemikiran saya sendiri tentang hal ini.
Singkatnya, saya pikir menampilkan konstanta 'apa adanya' adalah kesempatan yang sia-sia. Mungkin itu yang terbaik yang bisa kita dapatkan untuk saat ini, tetapi itu jauh dari ideal.
Tapi pertama-tama, saya pikir perjalanan singkat itu perlu.
Kapan kita memiliki algoritma yang efektif?
106
- P
- P2P
- P2, cukup lihat faktorisasi dalam tabel kami dan laporkan. Kalau tidak, laporkan 'kesalahan'
Saya harap jelas bahwa algoritma ini adalah sampah, karena hanya berfungsi dengan benar ketika input kami masuk P2. Namun, dapatkah kita melihat ini ketika diberi algoritma sebagai kotak hitam dan "secara bersamaan" hanya menguji dengan input dariP? Tentu, kami dapat mencoba untuk menguji banyak contoh, tetapi sangat mudah dibuatP sangat besar tanpa algoritma menjadi tidak efektif pada input dari P2 (mungkin kita ingin menggunakan peta-hash atau sesuatu).
Jadi, tidak masuk akal bahwa algoritma sampah kami mungkin kebetulan memiliki speedup 'ajaib'. Sekarang, tentu saja ada banyak teknik desain eksperimen yang dapat mengurangi risiko, tetapi mungkin algoritma 'cepat' yang lebih cerdik yang masih gagal dalam banyak hal, tetapi tidak cukup contoh yang dapat menipu kita! (perhatikan juga bahwa saya berasumsi tidak ada peneliti yang berbahaya , yang memperburuk keadaan!)
Jadi, sekarang saya akan menjawab: "Bangunkan saya ketika ada metrik kinerja yang lebih baik".
Bagaimana kita bisa berbuat lebih baik?
Jika kami mampu menguji algoritme 'kotak hitam' kami untuk semua kasus, kami tidak dapat tertipu oleh hal di atas. Namun, ini tidak mungkin untuk situasi praktis. (Ini dapat dilakukan dalam model teoritis!)
Apa yang kita dapat bukan lakukan adalah untuk membuat statistik hipotesis untuk beberapa diparameterisasi waktu berjalan (biasanya untuk ukuran input) untuk menguji ini, mungkin beradaptasi hipotesis dan uji kami lagi, sampai kita mendapatkan hipotesis kami seperti dan menolak null tampaknya masuk akal. (Perhatikan bahwa kemungkinan ada faktor-faktor lain yang terlibat yang saya abaikan. Saya bisa dibilang ahli matematika. Desain percobaan bukan sesuatu yang sesuai dengan keahlian saya)
Keuntungan dari pengujian statistik pada parameterisasi (mis. Adalah algoritma kami O ( n3)? ) adalah bahwa model lebih umum dan karenanya lebih sulit untuk 'ditipu' seperti pada bagian sebelumnya. Bukan tidak mungkin, tetapi setidaknya klaim statistik tentang apakah ini masuk akal dapat dibenarkan.
Jadi, apa yang harus dilakukan dengan konstanta?
Saya pikir hanya menyatakan "109 speedup, wow! "adalah cara yang buruk dalam menangani kasus ini. Tapi saya juga berpikir sepenuhnya mengabaikan hasil ini juga buruk.
Saya pikir paling berguna untuk menganggap konstanta aneh sebagai anomali , yaitu klaim yang dengan sendirinya menjamin penyelidikan lebih lanjut. Saya pikir membuat hipotesis berdasarkan model yang lebih umum daripada sekadar 'algoritma kami membutuhkan waktu X' adalah alat yang baik untuk melakukan ini. Jadi, sementara saya tidak berpikir kita bisa mengambil alih konvensi CS di sini, sepenuhnya mengabaikan 'penghinaan' untuk konstanta adalah ide yang buruk juga.