Teorik olarak çalışmıyorum, ancak çalışmalarım arada bir teori kağıtlarını okumak (ve anlamak) gerektiriyor. (Bir dizi) sonucu anladıktan sonra, bu sonuçları birlikte çalıştığım, çoğu teoride çalışmayan insanlarla tartışıyorum. Bu tür tartışmalardan biri sırasında aşağıdaki soru ortaya çıktı:
Ne zaman verilen iki algoritmanın "benzer" olduğu söylenir?
"Benzer" derken ne demek istiyorum? Diyelim ki iki algoritmanın benzer olduğunu söyleyebiliriz.
İstem 1 " algoritmasına benzer Algoritma , problemini de çözer "B X
İstem 2 "Algoritmamız Algoritma benzer "
Biraz daha spesifik yapmama izin verin. Diyelim ki grafik algoritmalarıyla çalışıyoruz. İlk olarak, iki algoritmanın benzer olması için gerekli bazı koşullar:
- Aynı sorunu çözüyor olmalılar.
- Aynı üst düzey sezgisel fikre sahip olmalılar.
Örneğin, grafik geçişi, önce genişlik ve derinlik ilk geçişi hakkında konuşmak yukarıdaki iki koşulu karşılar; en kısa yol hesaplamaları için, önce genişlik ve Dijkstra'nın algoritması yukarıdaki iki koşulu karşılar (elbette ki ağırlıksız grafiklerde); vb.
Bunlar da yeterli koşullar mı? Daha spesifik olarak, iki algoritmanın benzer olması için gerekli koşulları sağladığını varsayalım. Onlara gerçekten benzer mi diyeceksiniz?
- farklı asimtotik performansları var mı?
- özel bir grafik sınıfı için, bir algoritma zamanı gerektirir, diğeri zamanı gerektirir?O ( n, 1 / 3 )
- farklı sonlandırma koşulları var mı? (hatırlayın, aynı sorunu çözüyorlar)
- ön işleme adımı iki algoritmada farklı mıdır?
- iki algoritmada bellek karmaşıklığı farklı mıdır?
Düzenleme: Soru açıkça çok bağlama bağlıdır ve özneldir. Bununla birlikte, yukarıdaki beş koşulun bazı öneriler almasına izin vereceğini umuyordum. Soruyu daha fazla değiştirmekten ve yanıt almak için gerekirse daha fazla ayrıntı vermekten mutluluk duyuyorum. Teşekkürler!