Lista książek wprowadzających do TCS dla tych, którzy niewiele wiedzą o TCS [zamknięte]
10
Jeśli musisz polecać książki komuś, kto chce dowiedzieć się więcej o TCS na poziomie wprowadzającym, takim jak teoria automatów, algorytmika, teoria złożoności itp., Jakie książki poleciłbyś tym zainteresowanym i chcącym dowiedzieć się więcej o TCS, ale nie miałeś do niego kontaktu?
@Gigili Nie. Listy książek były kiedyś CW, ale to już nie jest zrobione. Przeczytaj post, który podlinkowałem.
Gilles „SO- przestań być zły”
Odpowiedzi:
9
Jeśli chcesz mieć ogólne wprowadzenie bez wchodzenia w szczegóły techniczne, proponuję Algorytmikę Davida Harela : The Spirit of Computing . Następnie jest to moja ulubiona lista:
Wprowadzenie Michaela Sipsera do teorii obliczeń : najlepsze wprowadzenie do teorii automatów, obliczalności i złożoności.
Algorytmy S. Dasgupta, CH Papadimitriou i UV Vazirani: najbardziej intuicyjne wprowadzenie do algorytmów z większym naciskiem na intuicję niż dowody techniczne.
Jon Bentley's Programming Pearls : nie jest to podręcznik na temat algorytmów, ale pięknie pokazuje, jak stosować techniki projektowania algorytmów do rozwiązywania prawdziwych problemów, które irytują prawdziwych programistów. :-) Może to być dobry początek, jeśli masz trochę wiedzy na temat programowania.
DPV nie jest jeszcze w druku; czy to jest ogólnie znane?
Raphael
Ze względu na wynik tej odpowiedzi umieściłem odpowiedzi w odpowiedzi zbiorczej . Rozważ usunięcie ze względu na jasność swojej odpowiedzi.
Raphael
@Raphael DPV jest drukowany od kilku lat, ale wciąż jest dobrze dostępny online. Starałem się nie linkować do komercyjnej strony internetowej, takiej jak Amazon.
Dai
@Dai: Rozumiem. Strona, do której prowadzi link, mówi: „To przedostatni szkic naszego podręcznika, który wkrótce się pojawi”. Dlatego moje zamieszanie.
Raphael
7
Wprowadzenie do algorytmów Cormena, Leisersona, Rivesta, Stein jest popularnym wyborem, tytuł mówi sam za siebie.
Kompilatory: zasady, techniki i narzędzia autorstwa Aho, Ulmana i Sethi to dobra książka o kompilatorach, zawiera także materiał wprowadzający na temat teorii automatów.
Zasady sprawdzania modelu to ogromna książka, którą można wykorzystać jako wprowadzenie do sprawdzania modelu
Uważam, że książka Clarke'a jest trochę za ciężka dla kogoś bez doświadczenia w TCS. Znam (osobiście) doktorantów, którzy uważają książkę za trudną do zrozumienia.
Dai,
@Dai, prawdopodobnie masz rację, zmieniłem go na zasady sprawdzania modelu Baiera
Daniil
Czy można zrozumieć sprawdzanie modelu bez podstaw w logice i / lub automatach?
Raphael
1
Dragon Book jest z pewnością dobrym odniesieniem; czy to jednak wystarczająco teoretyczne? (Naprawdę nie wiem)
Raphael
@Raphael „Zasady” w pewien sposób stanowią wprowadzenie do logiki (przynajmniej niezbędnej wiedzy) i automatów. To także dość duża książka, ~ 980 stron. Jeśli chodzi o The Dragon Book, pomyślałem, że kompilatory to raczej teoretyczny obszar, prawda?
Daniil,
6
Do matematyki potrzebnej w analizie algorytmów polecam jedyny GKP:
Konkretna matematyka autorstwa Grahama, Knutha, Patashnika
Kompleksowe, wysokiej jakości podejście do praktycznie całej matematyki, której będziesz potrzebować w (podstawowych) algorytmach. Jest to zabawna lektura i zawiera wiele ćwiczeń (i rozwiązań).
Próbowałem czytać tę książkę, ale mi się nie podobało, ponieważ wszystko wydawało się bardzo ... niezdarne i skupione. Po prostu nie czułem tam piękna matematyki. Porównaj to z konspektem teorii automatów Sipsera lub książkami Smullyana na temat logiki, a nawet abstrakcyjną algebrą Dummita i Foote'a. Może to tylko ja, tho.
Daniil
Popieram Daniila. To zbiór doskonałych narzędzi dla teoretyków. Ale jest zbyt suchy i techniczny, aby był przyjemny dla początkujących. Naprawdę lubię książki, o których wspomniałem powyżej, ponieważ wydają się mieć własne dusze. Czytają tak, jakby ktoś opowiadał ci historie, interesujące.
Dai,
Niestety, nie obejmuje indukcji strukturalnej, koindukcji, teorii domen i wszystkich innych rzeczy potrzebnych do TCS typu Teoria B.
Dave Clarke
@DaveClarke: Poprawnie. Nie jestem pewien, czy spodziewałbym się, że jakakolwiek książka matematyczna zawiera coś takiego. Ale GKP ma być książką matematyki cs. Nie zawiera też logiki, więc powinnam trochę sformułować.
Raphael
2
@DaveClarke, czy możesz nam polecić kilka książek na temat matematyki teorii B?
Wprowadzenie do teorii automatów, języków i obliczeń JE Hopcroft, JD Ullman, (R. Motwani)
Pierwsze wydanie z 1979 roku ma więcej wyników teoretycznych, których brakuje w drugim wydaniu z 2001 roku. Jeszcze nie spojrzałem na trzeciego Eda.
Chciałbym mieć TAoCP na liście, ale obawiam się, że skrupulatne podejście dona Knutha nie jest niczym, co można by uznać za „wprowadzające”. Niestety ...
Logicomix to z pewnością klejnot, nie mówiąc, że inni nie.
Dave Clarke
Nie podoba mi się sposób, w jaki Logicomix przedstawiał Logików jako „szalonych” ludzi. Pomysły w logice, gdy są odpowiednio wyjaśnione, są bardzo przyziemne i proste, a nie tak „szalone”.
Dai,
1
@Dai Rzuć okiem na życie niezwykłych ludzi, takich jak np. Gödel, Wittgenstein, Nash itp. Byli ... niezwykli.
uli
Które z nich są naprawdę dla początkujących?
Raphael
@Raphael IMHO wszystkie, w przeciwnym razie nie zamieściłbym ich tutaj. Niektóre mogą mieć stromą krzywą uczenia się, ale myślę, że to w porządku.
uli
4
Jeśli jesteś zupełnie nowy w dziedzinie TCS, to Wprowadzenie Sipsera do teorii obliczeń jest zdecydowanie najlepszą książką na początek. Czytałem inne książki wprowadzające i żadna z nich, moim zdaniem, nie zbliża się do sposobu, w jaki Sipser przyniósł sprawę.
Inne, bardziej szczegółowe, dobre książki teoretyczne to:
@DaveClarke Planowałem dodać więcej zasobów do listy, tak jak zrobiłem to teraz z moją edycją, ale chciałem również podkreślić, jak wspaniała jest książka Sipsera, wspominając ją ponownie! :-)
codd
1
Książka Pierce'a to klejnot. Chciałbym, żeby to było w okolicy, kiedy robiłem doktorat (w typach).
Dave Clarke
@DaveClarke Obecnie używam go do mojej pracy licencjackiej według rekomendacji mojego doradcy i jestem też pod wielkim wrażeniem!
Codd
1
Dzięki za referencję, przyjrzę się jej dzisiaj. Widzę, że jesteś profesorem w KUL. Przyjeżdżam tam w przyszłym roku, aby studiować Bezpieczne oprogramowanie (oprogramowanie Veilige). Co za mały świat.
codd
3
Kilka dobrych książek dotyczących części teorii TCS:
Logika w CS : Logika w informatyce: Modelowanie i rozumowanie systemów: Michael Huth i Mark Ryan.
Szeroki zakres różnych zastosowań logiki w informatyce. Około trzeciego roku studiów licencjackich.
Rachunek Lambda : Rachunek Lambda i Kombinatory. Wprowadzenie J. Rogera Hindleya i Jonathana P. Seldina.
Wprowadza rachunek lambda, który jest niezbędnym składnikiem podstaw języków programowania. Około trzeciego roku studiów licencjackich.
Wprowadzenie do teorii domen : Wprowadzenie do krat i porządku (wydanie 2) autorstwa Davey, BA i Priestley, HA Cambridge University Press. (2002).
Obejmuje bardzo przydatny temat, szczególnie jeśli planujesz pracować z semantyką. Jest to trochę bardziej matematyczne niż inne tematy, ale wczesne rozdziały z pewnością są na zaawansowanym poziomie licencjackim.
Semantyka : Semantyka z aplikacjami: przekąska : Hanne Riis Nielson i Flemming Nielson.
Naprawdę miłe wprowadzenie do semantyki języka programowania. Zamiast zagłębiać się w jakikolwiek konkretny formalizm, daje szeroką prezentację i obejmuje aplikacje ogólnie nieuwzględnione w innych książkach dotyczących semantyki. Może być przydatny dla studentów drugiego roku.
Nie znam żadnego z nich nawet ze względu na reputację, więc nie mogę powiedzieć, czy są one dobre (nawet jeśli jestem skłonny uwierzyć ci na słowo). : /
Raphael
1
Dodałem opis każdej książki. Wszystkie są dobre.
Dave Clarke
3
To jest odpowiedź zbiorcza, która zawiera książki z odpowiedzi z wynikiem co najmniej pięciu. Omów jego treść na czacie .
Algorytmy i struktury danych
Wprowadzenie do algorytmów autorstwa Cormena, Leisersona, Rivesta, Steina (3. edycja 2009)
Kompleksowe podejście do podstawowych algorytmów i struktur danych oraz ich analizy bez głębokiego kopania.
Algorytmy Dasgupta, Papadimitriou, Vazirani (2006)
Najbardziej intuicyjne wprowadzenie do algorytmów z większym naciskiem na intuicję niż dowody techniczne.
Obliczalność i złożoność
Wprowadzenie do teorii obliczeń Sipsera (2. wydanie 2005)
Najlepsze wprowadzenie do teorii automatów, obliczalności i złożoności.
Języki formalne i automaty
Kompilatory: zasady, techniki i narzędzia autorstwa Aho, Ulmana i Sethi (2 edycja 2006)
Standardowa książka o kompilatorach; bardzo obszerny. Dotyka też teorii automatów.
Teoria Stosowana
Zasady sprawdzania modelu autorstwa Baiera, Katoen (2008)
Ogromna książka, którą można wykorzystać jako kompleksowe wprowadzenie do sprawdzania modelu.
Programming Pearls autorstwa Jona Bentleya (2nd ed 1999)
Nie jest podręcznikiem na temat algorytmów, ale pięknie pokazuje, jak używać technik projektowania algorytmów do rozwiązywania prawdziwych problemów. Może to być dobry początek, jeśli masz trochę wiedzy na temat programowania.
To nie odpowiada na pytanie, a jeśli ma to na celu, nie jest dobrą odpowiedzią. Czy masz na myśli, że ktoś rozpoczynający TCS musi przeczytać wszystkie te książki? Jeśli nie, jak by wybrali? Pamiętaj, że zgodnie z twoją regułą odpowiedź ta prawdopodobnie będzie zawierać setki książek
Gilles „SO- przestań być zły”
@Raphael Czy uprzejmie jest prosić kogoś innego o usunięcie jego / jej własnej odpowiedzi? Zwykle sam pytający może dokonać agregacji swoich ulubionych odpowiedzi, modyfikując własny tekst pytania, ale nigdy nie widziałem, aby ktokolwiek zmusił inną osobę do usunięcia własnego posta w celu utworzenia własnej odpowiedzi. Ta wymiana stosów staje się dziwna z powodu tych narcystycznych zachowań.
Dai
@Raphael: Uczynienie z niego CW nie uprawnia do poproszenia kogoś o usunięcie własnej odpowiedzi. To tak, jakby napisać, że napiszę książkę / ankietę (którą opublikuję za darmo w Internecie), więc rozglądam się i pytam wszystkich autorów, których artykuły cytuję, by zdjęli własne, aby uniknąć zamieszania.
Dai
@Raphael Nie widzę żadnego miejsca w licencjach CC, które mówią, że moja praca zostanie ostatecznie zlecona przez kogoś innego. Nie wiem, jaką fantazję masz w SE, ale zdecydowanie nie jest to Wikipedia. Wiem, że ciężko pracujesz, aby „moderować” tę witrynę, ale szanuj także czyjąś wolność słowa i prywatność, i po prostu pozwól głosom w górę / w dół zająć się resztą. Myślę, że celem cs SE jest zapewnienie bardziej przyjaznego forum niż cstheory SE dla początkujących, ale zaproponowany tutaj mikro poziom zarządzania znacznie go pogorszył.
Odpowiedzi:
Jeśli chcesz mieć ogólne wprowadzenie bez wchodzenia w szczegóły techniczne, proponuję Algorytmikę Davida Harela : The Spirit of Computing . Następnie jest to moja ulubiona lista:
źródło
źródło
Do matematyki potrzebnej w analizie algorytmów polecam jedyny GKP:
Konkretna matematyka autorstwa Grahama, Knutha, Patashnika
Kompleksowe, wysokiej jakości podejście do praktycznie całej matematyki, której będziesz potrzebować w (podstawowych) algorytmach. Jest to zabawna lektura i zawiera wiele ćwiczeń (i rozwiązań).
źródło
Algorytmy 4. Edycja R. Sedgewick
Wprowadzenie do analizy algorytmów P. Flajolet, R. Sedgewick
Wprowadzenie do teorii automatów, języków i obliczeń JE Hopcroft, JD Ullman, (R. Motwani)
Pierwsze wydanie z 1979 roku ma więcej wyników teoretycznych, których brakuje w drugim wydaniu z 2001 roku. Jeszcze nie spojrzałem na trzeciego Eda.
Wprowadzenie do formalnej teorii języka MA Harrison
Pochodzi z 1978 roku, ale nadal chciałbym zobaczyć ją na liście.
Logicomix: epickie poszukiwanie prawdy A. Doxiadis, CH Papadimitriou
Ponieważ jest całkowicie niesamowite!
Ponownie 1979
Garey and Johnson's Computers and Intractability: Przewodnik po teorii kompletności NP
Chciałbym mieć TAoCP na liście, ale obawiam się, że skrupulatne podejście dona Knutha nie jest niczym, co można by uznać za „wprowadzające”. Niestety ...
źródło
Jeśli jesteś zupełnie nowy w dziedzinie TCS, to Wprowadzenie Sipsera do teorii obliczeń jest zdecydowanie najlepszą książką na początek. Czytałem inne książki wprowadzające i żadna z nich, moim zdaniem, nie zbliża się do sposobu, w jaki Sipser przyniósł sprawę.
Inne, bardziej szczegółowe, dobre książki teoretyczne to:
źródło
Kilka dobrych książek dotyczących części teorii TCS:
Logika w CS : Logika w informatyce: Modelowanie i rozumowanie systemów: Michael Huth i Mark Ryan.
Szeroki zakres różnych zastosowań logiki w informatyce. Około trzeciego roku studiów licencjackich.
Rachunek Lambda : Rachunek Lambda i Kombinatory. Wprowadzenie J. Rogera Hindleya i Jonathana P. Seldina.
Wprowadza rachunek lambda, który jest niezbędnym składnikiem podstaw języków programowania. Około trzeciego roku studiów licencjackich.
Wprowadzenie do teorii domen : Wprowadzenie do krat i porządku (wydanie 2) autorstwa Davey, BA i Priestley, HA Cambridge University Press. (2002).
Obejmuje bardzo przydatny temat, szczególnie jeśli planujesz pracować z semantyką. Jest to trochę bardziej matematyczne niż inne tematy, ale wczesne rozdziały z pewnością są na zaawansowanym poziomie licencjackim.
Semantyka : Semantyka z aplikacjami: przekąska : Hanne Riis Nielson i Flemming Nielson.
Naprawdę miłe wprowadzenie do semantyki języka programowania. Zamiast zagłębiać się w jakikolwiek konkretny formalizm, daje szeroką prezentację i obejmuje aplikacje ogólnie nieuwzględnione w innych książkach dotyczących semantyki. Może być przydatny dla studentów drugiego roku.
źródło
To jest odpowiedź zbiorcza, która zawiera książki z odpowiedzi z wynikiem co najmniej pięciu. Omów jego treść na czacie .
Algorytmy i struktury danych
Kompleksowe podejście do podstawowych algorytmów i struktur danych oraz ich analizy bez głębokiego kopania.
Najbardziej intuicyjne wprowadzenie do algorytmów z większym naciskiem na intuicję niż dowody techniczne.
Obliczalność i złożoność
Najlepsze wprowadzenie do teorii automatów, obliczalności i złożoności.
Języki formalne i automaty
Standardowa książka o kompilatorach; bardzo obszerny. Dotyka też teorii automatów.
Teoria Stosowana
Ogromna książka, którą można wykorzystać jako kompleksowe wprowadzenie do sprawdzania modelu.
Nie jest podręcznikiem na temat algorytmów, ale pięknie pokazuje, jak używać technik projektowania algorytmów do rozwiązywania prawdziwych problemów. Może to być dobry początek, jeśli masz trochę wiedzy na temat programowania.
źródło