Zostałem poproszony o zalecenie zasobu (on-line, książki lub samouczek) do nauki algorytmów (w sensie MIT Intro to Algorithms) dla CS lub matematyka. Oczywiście książka MIT jest zbyt zaangażowana, a niektóre z lżejszych metod leczenia (takich jak algorytmy OReilly w skrócie) wciąż wydają się być potrzebne w analizie algorytmicznej. Czy istnieje zasób, który przedstawia materiał w taki sposób, aby przydatne okazały się twórcy, którzy nie mają podstaw teoretycznego informatyki?Zasób do nauki Algorytmy dla stopni nie-CS/matematyki
Odpowiedz
Uważam, że najlepszym sposobem poznania algorytmów są różne witryny konkurencji.
- USACO - mój osobisty faworyt, ponieważ daje jasną drogę przez materiał
- TopCoder - wspomnianego już
- Sphere Online Judge - wielki, jeśli chcesz pracować w innym języku niż C/C++/Java
Jeśli chodzi o książki, najlepsze pojedyncze intro, jakie widziałem dla specjalisty nie matematycznego, to Data Structures and Algorithms. Przeprowadza cię przez algorytm po linii i pokazuje, jak rozkłada się on matematycznie, coś, co jest poza tym doskonałą sekcją analizy CLRS.
Skiena Algorithm Design Manual jest również doskonała, podobnie jak jego Programming Challenges, która jest w zasadzie tutorialem przez Valladolid Online Judge.
Szczerze mówiąc, uważam, że najbardziej przydatną rzeczą, jaką może zrobić początkujący, jest implementacja różnych algorytmów - sortowanie scalone, powiedzmy, a następnie Quicksort - i ustawianie ich na różne wejścia o różnej wielkości. Utwórz arkusz kalkulacyjny z wykresem, który pokazuje ich wzrost w czasie. Bardzo niewielu nie-specjalistów będzie miało cierpliwość lub know-how, aby ustalić relację i rozwiązać problem. Ale musisz zrozumieć wpływ, powiedzmy, wzrostu w czasie, i nie ma lepszego sposobu, aby się tego nauczyć, niż obserwować, jak twój własny program przebija swój stos pamięci. :)
Mówię to jako programista spoza matematyki, który nie spędził wiele czasu z matematyką, który spędził dobre kilka miesięcy, owijając mój umysł wokół analizy algorytmicznej.
Nie jestem pewien, do której książki MIT się powołujesz, ale tekst kanoniczny brzmi: CLRS. Nie sądzę, że to naprawdę ma jakiekolwiek pochodzenie oprócz matematyki w szkole średniej.
Osobiście odkryłem, że w ciągu ostatnich kilku lat zrobiłem TopCoder konkursy algorytmów, aby być najlepszym sposobem na nauczenie się wspólnych algorytmów i zastosowanie ich w praktyce. Być może powinieneś spróbować tego samego. Cokolwiek robisz, sugeruję, byś spędzał dużo więcej czasu na klawiaturze, realizując rzeczy, których się uczysz, niż czas w głowie, ponieważ jest to sposób na internalizację różnych technik.
Tak, mówię o CLRS. Masz rację, ponieważ jest to tekst wprowadzający, jednak jego rozmiar i sposób akademicki jest onieśmielający dla wielu .... – ennuikiller
@ennuikiller - CLRS jest o wiele mniej onieśmielający, kiedy pierwszy raz spróbowałeś Knuth. Wiem to poprzez bolesne doświadczenie ... – rtperson
Poszedłem po Algorithm Design Manual, przez Stevena Skienę. Jest bardzo czytelny i zaczyna się od podstaw w łatwy do zrozumienia sposób. Na przykład bardzo dobrze tłumaczy notację big-o. Nacisk kładzie się na praktyczne zastosowanie, co jest dużą premią dla początkujących, którzy pochodzą z dziedziny nie-teoretycznej.
Druga część książki jest odniesieniem do typowych problemów z algorytmem i praktycznych podejść do ich rozwiązań. Uważam to za nieocenione jako pomoc do nauki, a teraz jako punkt odniesienia.
Dzięki za rekomendację! – ennuikiller
- 1. Zasób do nauki generycznych Java?
- 2. Dobry zasób internetowy do nauki Direct Compute?
- 3. zasoby do nauki dla mockito
- 4. Zasób do nauki TDD z asp.net MVC 3
- 5. Najlepszy darmowy zasób do nauki zaawansowanego wykorzystania plików wsadowych?
- 6. Algorytmy dla 3D Mazes
- 7. Algorytmy dla pozycji rankingowych
- 8. Algorytmy w C
- 9. Jakie są najlepsze zasoby do nauki Ant?
- 10. Algorytmy dla grupowania według preferencji
- 11. Zasoby dla teorii kategorii nauki
- 12. Pasek postępu dla nauki scikit?
- 13. Co to jest dobry zasób do nauki kodu MASM (nie HLA)?
- 14. Konwersja wyniku Math.sin (x) do wyniku dla stopni w java
- 15. Dobre zasoby do nauki MacRuby
- 16. Najlepszy samouczek do nauki SSIS
- 17. Blog do nauki Objective-C
- 18. Diff algorytmy
- 19. Plan nauki dla ASP.NET MVC 3
- 20. Skąd mogę uzyskać zasoby do nauki dla trzech.js?
- 21. Odsyłacz do gniazda sieciowego do nauki
- 22. Ustalanie optymalnej reguły nauki dla SSN
- 23. Utwórz obrót do rysowania 180 stopni
- 24. Python: Dobre miejsce do nauki o "wieloprocesowości.
- 25. Jakie są dobre zasoby do nauki Grails?
- 26. Droga do nauki Smalltalk aka Zapiszczeć
- 27. Algorytmy lub wzorce do czytania tekstu
- 28. Wymagania wstępne do nauki Język składania
- 29. Algorytmy oparte na tożsamości fizycznej do Hashtbl.hash
- 30. Resource.Designer.cs: "Zasób ... nie zawiera definicji dla ..."
tu nie ma konkurencji, tylko kolega – none
@none - nazywam je "stronami konkursowymi", ponieważ są one skonfigurowane specjalnie, aby umożliwić ludziom trenowanie w różnych konkursach algorytmicznych. Są doskonałymi narzędziami do nauki. – rtperson