- EOL
Uwaga! Sprzedaż produktu została zakończona. Sprawdź inne w tej kategorii. |
Opis produktu: Algorytmy. Ilustrowany przewodnik - Aditya Y. Bhargava
Książka autorstwa Aditya Y. Bhargava przeznaczona jest dla osób, które chcą nauczyć się projektować aplikacje i programować. Opisuje w jasny sposób działanie algorytmów, które pomagają w rozwiązywaniu problemów programistycznych.
Książka przedstawia m. in.:
- algorytmy sortowania, problem komiwojażera, algorytmy zachłanne
- analizę szybkości algorytmów metodą dużego O
- algorytmy grafów, w tym algorytm wyszukiwania wszerz i algorytm Dijkstry
- algorytm KNN służący do uczenia maszynowego
- wyjaśnia pojęcia takie jak tablice skrótów, listy powiązane, rekurencja
Algorytmy. Ilustrowany przewodnik - Aditya Y. Bhargava. Książka przeznaczona jest dla programistów.
Informacje o książce
- Autor: Aditya Y. Bhargava
- Tytuł oryginalny: Grokking Algorithms: An illustrated guide for programmers and other curious people
- Tłumaczenie: Łukasz Piwko
- Wydawca: Helion SA
- Rok wydania: 2017
- Liczba stron: 256
- ISBN: 978-83-283-3445-8
- Format: 170 x 230 mm
O Autorze
Aditya Bhargava od ponad dwudziestu lat zajmuje się programowaniem. Jako nastolatek pisał gry wideo w językach Basic i ActionScript. Obecnie jest programistą w Etsy.com. Od kilku lat uczy programowania, z powodzeniem przedstawiając trudne koncepcje i idee w taki sposób, aby ich zrozumienie przychodziło bez trudu. Osobiście interesuje się sztuką, literaturą i oczywiście programowaniem.
Spis treści
Przedmowa (XIII)
Podziękowania (XIV)
O książce (XV)
1. Wprowadzenie do algorytmów (1)
- Wprowadzenie (1)
- Czego nauczysz się o wydajności (2)
- Czego nauczysz się o rozwiązywaniu problemów (2)
- Wyszukiwanie binarne (3)
- Lepszy sposób wyszukiwania (5)
- Czas wykonywania (10)
- Notacja dużego O (10)
- Czas wykonywania algorytmów rośnie w różnym tempie (11)
- Wizualizacja różnych czasów wykonywania (13)
- Notacja dużego O określa czas działania w najgorszym przypadku (15)
- Kilka typowych czasów wykonywania (15)
- Problem komiwojażera (17)
- Powtórzenie (19)
2. Sortowanie przez wybieranie (21)
- Jak działa pamięć (22)
- Tablice i listy powiązane (24)
- Listy powiązane (25)
- Tablice (26)
- Terminologia (27)
- Wstawianie elementów w środku listy (29)
- Usuwanie elementów (30)
- Sortowanie przez wybieranie (32)
- Powtórzenie (36)
3. Rekurencja (37)
- Rekurencja (38)
- Przypadki podstawowy i rekurencyjny (40)
- Stos (42)
- Stos wywołań (43)
- Stos wywołań z rekurencją (45)
- Powtórzenie (50)
4. Szybkie sortowanie (51)
- "Dziel i rządź" (52)
- Sortowanie szybkie (60)
- Jeszcze raz o notacji dużego O (66)
- Sortowanie przez scalanie a sortowanie szybkie (67)
- Przypadki średni i najgorszy (68)
- Powtórzenie (72)
5. Tablice skrótów (73)
- Funkcje obliczania skrótów (76)
- Zastosowania tablic skrótów (79)
- Przeszukiwanie tablic skrótów (80)
- Zapobieganie powstawaniu duplikatów elementów (81)
- Tablice skrótów jako pamięć podręczna (83)
- Powtórzenie wiadomości (86)
- Kolizje (86)
- Wydajność (88)
- Współczynnik zapełnienia (90)
- Dobra funkcja obliczania skrótów (92)
- Powtórzenie (94)
6. Przeszukiwanie wszerz (95)
- Wprowadzenie do grafów (96)
- Czym jest graf (98)
- Wyszukiwanie wszerz (99)
- Szukanie najkrótszej drogi (102)
- Kolejki (103)
- Implementacja grafu (105)
- Implementacja algorytmu (107)
- Czas wykonywania (111)
- Powtórzenie (114)
7. Algorytm Dijkstry (115)
- Posługiwanie się algorytmem Dijkstry (116)
- Terminologia (120)
- Szukanie funduszy na fortepian (122)
- Krawędzie o wadze ujemnej (128)
- Implementacja (131)
- Powtórzenie (140)
8. Algorytmy zachłanne (141)
- Plan zajęć w sali lekcyjnej (142)
- Problem plecaka (144)
- Problem pokrycia zbioru (146)
- Algorytmy aproksymacyjne (147)
- Problemy NP-zupełne (152)
- Problem komiwojażera krok po kroku (153)
- Trzy miasta (154)
- Cztery miasta (155)
- Jak rozpoznać, czy problem jest NP-zupełny (158)
- Powtórzenie wiadomości (160)
9. Programowanie dynamiczne (161)
- Problem plecaka (161)
- Proste rozwiązanie (162)
- Programowanie dynamiczne (163)
- Pytania dotyczące problemu plecaka (171)
- Co się dzieje, gdy zostanie dodany element (171)
- Jaki będzie skutek zmiany kolejności wierszy (174)
- Czy siatkę można wypełniać wg kolumn zamiast wierszy (174)
- Co się stanie, gdy doda się mniejszy element (174)
- Czy można ukraść ułamek przedmiotu (175)
- Optymalizacja planu podróży (175)
- Postępowanie z wzajemnie zależnymi przedmiotami (177)
- Czy możliwe jest, aby rozwiązanie wymagało więcej niż dwóch podplecaków (177)
- Czy najlepsze rozwiązanie zawsze oznacza całkowite zapełnienie plecaka? (178)
- Najdłuższa wspólna część łańcucha (178)
- Przygotowanie siatki (179)
- Wypełnianie siatki (180)
- Najdłuższa wspólna podsekwencja (183)
- Najdłuższa wspólna podsekwencja - rozwiązanie (184)
- Powtórzenie (186)
10. K najbliższych sąsiadów (187)
- Klasyfikacja pomarańczy i grejpfrutów (187)
- Budowa systemu rekomendacji (189)
- Wybór cech (191)
- Regresja (195)
- Wybieranie odpowiednich cech (198)
- Wprowadzenie do uczenia maszynowego (199)
- Optyczne rozpoznawanie znaków (199)
- Budowa filtra spamu (200)
- Przewidywanie cen akcji (201)
- Powtórzenie (201)
11. Co dalej (203)
- Drzewa (203)
- Odwrócone indeksy (206)
- Transformata Fouriera (207)
- Algorytmy równoległe (208)
- MapReduce (209)
- Do czego nadają się algorytmy rozproszone (209)
- Funkcja map (209)
- Funkcja reduce (210)
- Filtry Blooma i HyperLogLog (211)
- Filtry Blooma (212)
- HyperLogLog (213)
- Algorytmy SHA (213)
- Porównywanie plików (214)
- Sprawdzanie haseł (215)
- Locality-sensitive hashing (216)
- Wymiana kluczy Diffiego-Hellmana (217)
- Programowanie liniowe (218)
- Epilog (219)
Rozwiązania ćwiczeń (221)
Skorowidz (235)
Przydatne linki |