Moje pytanie jest ogólne: jak zacząć myśleć o projektowaniu i złożoności algorytmów? Mam zamiar podjąć kurs magisterski z projektowania algorytmów. Zapisałem się na to wcześniej, ale porzuciłem go później, ponieważ nie mogłem nadążyć. Muszę wziąć ten kurs jako wymóg.
Czy istnieje „sztuczka” do myślenia w ten sposób? Wiem, że jest to dość brutalne, ale czasami nowa perspektywa pomaga inaczej myśleć na dany temat.
Główny problem, jaki mam z tym kursem (i podobnymi kursami teoretycznymi), to: Skąd mam wiedzieć, że zaproponowane przeze mnie rozwiązania są poprawne? Uważam, że część teoretyczna jest arbitralna, zwłaszcza gdy „udowadnianie”, że pewien algorytm działa lub zachowuje się w określony sposób?
Nasz kurs będzie wykorzystywał standardowy tekst: Wprowadzenie do algorytmów CLRS.
Czy są jakieś podręczniki / strony / książki / itp. może to dać sposób na uzyskanie pewności w tej dziedzinie?
Dziękuję wszystkim,
Jason Dane
Odpowiedzi:
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):
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.
źródło