Algoritma tasarımı ve hesaplama karmaşıklığı ile ilgili derslerin bu konulara aşina olmayan öğrenciler için her zaman zor olduğunu düşünüyorum çünkü bir dereceye kadar matematiksel olgunluk ve problem çözme becerisi gerektiriyorlar. "Hesaplamalı karmaşıklık" üzerine ilk yüksek lisans dersimde, saf matematik diplomasına sahip olan bir arkadaşım bana, bu dersin çok fazla matematik geçmişi gerektirmemesine rağmen ne kadar şaşırmış olduğunu söyledi. ders taslağı), aslında onun saf matematik lisans derecesi neredeyse tüm becerileri gerekli!
Sipser'in kitabından okuma ve alıştırmalar yaparak en çok "yol" hakkında bilgi sahibi olduğumu buldum (lisansüstü eğitimime ilk başladığımda) . Alıştırmaları yaptığınızdan emin olun, çünkü problem çözme becerisi ve matematiksel olgunluk sadece bir grup gerçek veya tanım değil, öğrenmek istediğiniz şeydir.
Bununla birlikte, Sipser'in kitabı sadece karmaşıklık ve NP bütünlüğü maddeleri için iyidir, CLRS kitabını değiştirmek yeterli olmayacaktır. CLRS kitabıyla ilgili tek sorun, kapsamlı kapsama alanının avantajının zayıflığı olabileceğidir, çünkü kitap öğrenciler için oldukça korkutucu veya ezici görünebilir. Bu yüzden tavsiyem gerçekten kütüphaneye gitmeli ve algoritmalarla ilgili kitaplar aramalı, tek tek taramalı ve düşünme modelinize en uygun olanları seçmelisiniz. Ve yine egzersiz yapmayı unutmayın!
Algoritmalar için şahsen aşağıdaki kitapları öneriyorum (Sadeq ve JeffE tarafından önerilenlerin yanı sıra):
- S. Dasgupta, CH Papadimitriou ve UV Vazirani'nin çok okunabilir ve güzel kitabı Algoritmaları .
- Katil , Jeff Erickson'un notlarını (veya kitap taslağını). (JeffE kendi notlarını öneremeyecek kadar mütevazı olduğu için, bunu kendim yapmak zorundayım.)
Genel olarak, belirli bir algoritmayı veya veri yapısını her incelediğinizde, bir şekilde ders kitabınızdaki açıklama sizin için yeterince açık değilse, o zaman en iyi yol google'da o konunun ders notlarını aramaktır. Mayıs ayında, aynı şeyin farklı açıklamaları sonunda size tam resmi verir. En azından benim için böyle çalışıyor.