Myślę, że kursy projektowania algorytmów i złożoności obliczeniowej zawsze stanowią wyzwanie dla studentów, którzy nie znają tych przedmiotów, ponieważ wymagają pewnego stopnia dojrzałości matematycznej i umiejętności rozwiązywania problemów. Na moim pierwszym kursie na temat „złożoności obliczeniowej” mój przyjaciel, który ukończył matematykę, powiedział mi, jak bardzo był zaskoczony faktem, że chociaż ten kurs nie wymagał dużego przygotowania matematycznego (przynajmniej tak zostało powiedziane w konspektu kursu), wymagało to prawie wszystkich umiejętności, które uzyskał podczas studiów licencjackich z matematyki!
Odkryłem, że najwięcej o „sposobie” dowiedziałem się (kiedy zaczynałem studia) czytając i wykonując ćwiczenia z książki Sipsera . Upewnij się, że wykonujesz ćwiczenia, ponieważ umiejętności rozwiązywania problemów i dojrzałość matematyczna są tym, czego chcesz się nauczyć, a nie tylko garstką faktów lub definicji.
Jednak książka Sipsera jest dobra tylko ze względu na złożoność i kompletność NP, nie wystarczy zastąpić książkę CLRS. Jedynym problemem związanym z książką CLRS jest to, że jej zaletą wszechstronnego zasięgu może stać się jej słabość, ponieważ książka może wydawać się dość przerażająca lub przytłaczająca dla studentów. Moja rada jest taka: powinieneś naprawdę iść do biblioteki i poszukać książek o algorytmach, przejrzeć je jeden po drugim i wybrać te, które najbardziej pasują do twojego sposobu myślenia. I znowu nie zapomnij robić ćwiczeń!
W przypadku algorytmów osobiście sugeruję następujące książki (oprócz tych sugerowanych przez Sadeqa i Jeffa):
- Bardzo czytelna i piękna książka Algorytmy autorstwa S. Dasgupta, CH Papadimitriou i UV Vazirani.
- Notatki zabójcy (lub szkic) autorstwa Jeffa Ericksona. (Ponieważ JeffE jest zbyt skromny, by sugerować własne notatki, muszę to zrobić sam.)
Ogólnie rzecz biorąc, za każdym razem, gdy studiujesz określony algorytm lub strukturę danych, jeśli w jakiś sposób prezentacja w twoim podręczniku nie jest dla ciebie wystarczająco jasna, najlepszym sposobem jest wyszukiwanie w Google notatek z wykładów na ten temat. W niektórych przypadkach różne wyjaśnienia tej samej rzeczy ostatecznie dają pełny obraz. Przynajmniej tak to dla mnie działa.