Saya tidak bekerja dalam teori, tetapi pekerjaan saya membutuhkan membaca (dan memahami) makalah teori sesekali. Setelah saya memahami (set) hasil, saya membahas hasil ini dengan orang-orang yang bekerja dengan saya, yang sebagian besar tidak bekerja secara teori juga. Selama salah satu diskusi tersebut, pertanyaan berikut muncul:
Kapan ada yang mengatakan bahwa dua algoritma yang diberikan "mirip"?
Apa yang saya maksud dengan "mirip"? Katakanlah dua algoritme dikatakan serupa jika Anda dapat membuat salah satu dari klaim berikut dalam makalah tanpa membingungkan / mengganggu pengulas mana pun (disambut dengan definisi yang lebih baik):
Klaim 1. "Algoritma , yang mirip dengan algoritma , juga memecahkan masalah "X
Klaim 2. "Algoritme kami mirip dengan Algoritma "
Biarkan saya membuatnya sedikit lebih spesifik. Misalkan kita bekerja dengan algoritma grafik. Pertama, beberapa kondisi yang diperlukan untuk kedua algoritme agar serupa:
- Mereka harus memecahkan masalah yang sama.
- Mereka harus memiliki ide intuitif tingkat tinggi yang sama.
Sebagai contoh, berbicara tentang traversal grafik, traversal lebar-pertama dan kedalaman-pertama memenuhi dua kondisi di atas; untuk perhitungan jalur terpendek, luasnya pertama dan algoritma Dijkstra memenuhi dua kondisi di atas (tentu saja, pada grafik tidak berbobot); dll.
Apakah ini juga kondisi yang memadai? Lebih khusus, anggap dua algoritma memenuhi kondisi yang diperlukan untuk menjadi serupa. Apakah Anda memang memanggil mereka serupa, jika
- mereka memiliki kinerja asimptotik yang berbeda?
- untuk kelas grafik khusus, satu algoritma memerlukan waktu sementara yang lain membutuhkan waktu ?
- mereka memiliki kondisi pemberhentian yang berbeda? (ingat, mereka memecahkan masalah yang sama)
- langkah pra-pemrosesan berbeda dalam dua algoritma?
- kompleksitas memori berbeda dalam dua algoritma?
Sunting: Pertanyaannya jelas sangat tergantung konteks dan subyektif. Saya berharap bahwa lima kondisi di atas, akan memungkinkan mendapatkan beberapa saran. Saya senang untuk memodifikasi pertanyaan lebih lanjut dan memberikan rincian lebih lanjut, jika diperlukan untuk mendapatkan jawaban. Terima kasih!