40 algorytmów, które powinien znać każdy programista. Nauka implementacji algorytmów w Pythonie - Helion
Tytuł oryginału: 40 Algorithms Every Programmer Should Know: Hone your problem-solving skills by learning different algorithms and their implementation in Python
Tłumaczenie: Katarzyna Bogusławska
ISBN: 978-83-283-7777-6
stron: 320, Format: 168x237, okładka: miękka
Data wydania: 2021-07-19
Księgarnia: Helion
Cena książki: 77,00 zł
Wiedza o algorytmach jest niezbÄ™dna każdemu, kto rozwiÄ…zuje problemy programistyczne. Algorytmy sÄ… również ważne w teorii i praktyce obliczeÅ„. Każdy programista powinien znać możliwie szeroki ich zakres. Powinien też umieć z nich korzystać przy rozwiÄ…zywaniu rzeczywistych problemów, w tym przy projektowaniu algorytmów, ich modyfikacji i implementacji. Niezależnie od tego, czy zajmujesz siÄ™ sztucznÄ… inteligencjÄ…, zabezpieczaniem systemów informatycznych lub inżynieriÄ… danych, musisz dobrze zrozumieć, czym wÅ‚aÅ›ciwie sÄ… i jak dziaÅ‚ajÄ… algorytmy.
Ta książka jest praktycznym wprowadzeniem do algorytmów i ich zastosowania. ZnalazÅ‚y siÄ™ w niej podstawowe informacje i pojÄ™cia dotyczÄ…ce algorytmów, ich dziaÅ‚ania, a także ograniczeÅ„, jakim podlegajÄ…. Opisano też techniki ich projektowania z uwzglÄ™dnieniem wymagaÅ„ dotyczÄ…cych struktur danych. Zaprezentowano klasyczne algorytmy sortowania i wyszukiwania, algorytmy grafowe, jak również wiele zagadnieÅ„ zwiÄ…zanych ze sztucznÄ… inteligencjÄ…: algorytmy uczenia maszynowego, sieci neuronowych i przetwarzania jÄ™zyka naturalnego. WażnÄ… częściÄ… publikacji sÄ… rozdziaÅ‚y poÅ›wiÄ™cone przetwarzaniu danych i kryptografii oraz algorytmom powiÄ…zanym z tymi zagadnieniami. WartoÅ›ciowym podsumowaniem prezentowanych treÅ›ci jest omówienie technik pracy z problemami NP-trudnymi.
W książce między innymi:
- struktury danych i algorytmy w bibliotekach Pythona
- algorytm grafowy służący do wykrywania oszustw w procesie analizy sieciowej
- przewidywanie pogody przy użyciu algorytmów uczenia nadzorowanego
- rozpoznawanie obrazu za pomocÄ… syjamskich sieci neuronowych
- tworzenie systemu rekomendacji filmów
- szyfrowanie symetryczne i asymetryczne podczas wdrażania modelu uczenia maszynowego
Oto algorytm: poznaj, zaimplementuj, zastosuj!
Osoby które kupowały "40 algorytmów, które powinien znać każdy programista. Nauka implementacji algorytmów w Pythonie", wybierały także:
- Python na maturze. Kurs video. Algorytmy i podstawy j 135,14 zł, (48,65 zł -64%)
- Algorytmy kryptograficzne. Przewodnik po algorytmach w blockchain, kryptografii kwantowej, protoko 79,00 zł, (39,50 zł -50%)
- Informatyk samouk. Przewodnik po strukturach danych i algorytmach dla pocz 58,98 zł, (29,49 zł -50%)
- My 89,00 zł, (44,50 zł -50%)
- Nauka algorytm 58,98 zł, (29,49 zł -50%)
Spis treści
40 algorytmów, które powinien znać każdy programista. Nauka implementacji algorytmów w Pythonie -- spis treści
O autorze 11
O recenzencie 13
Przedmowa 15
WSTĘP I PODSTAWOWE ALGORYTMY 21
RozdziaÅ‚ 1. Wprowadzenie do algorytmów 23
- Co to jest algorytm? 24
- Fazy algorytmu 24
- Określenie logiki algorytmu 26
- Zrozumienie pseudokodu 26
- Korzystanie z fragmentów kodu (snippetów) 28
- Stworzenie planu wykonania 28
- Wprowadzenie do pakietów w Pythonie 29
- Pakiety w Pythonie 30
- Programowanie w Pythonie z Jupyter Notebook 31
- Techniki projektowania algorytmów 31
- Wymiar danych 33
- Wymiar obliczeniowy 33
- Analiza efektywności 35
- Analiza pamięciowej złożoności obliczeniowej 35
- Czasowa złożoność obliczeniowa 36
- Szacowanie efektywności 37
- Wybór algorytmu 37
- Notacja dużego O 38
- Walidacja algorytmu 41
- Algorytmy dokładne, aproksymacyjne i randomizowane 41
- Możliwość wyjaśnienia 43
- Podsumowanie 43
Rozdział 2. Struktury danych w algorytmach 45
- Struktury danych w Pythonie 46
- Lista 46
- Krotka 50
- SÅ‚ownik 51
- Zbiór 52
- Ramka danych 54
- Macierz 56
- Abstrakcyjne typy danych 57
- Wektor 57
- Stos 58
- Kolejka 60
- Kiedy używać stosów i kolejek? 62
- Drzewo 62
- Podsumowanie 65
Rozdział 3. Algorytmy sortowania wyszukiwania 67
- Wprowadzenie do algorytmów sortowania 68
- Zamiana wartości zmiennych w Pythonie 68
- Sortowanie bÄ…belkowe 68
- Sortowanie przez wstawianie 71
- Sortowanie przez scalanie 72
- Sortowanie Shella 74
- Sortowanie przez wymianÄ™ 76
- Wprowadzenie do algorytmów wyszukiwania 78
- Wyszukiwanie liniowe 78
- Wyszukiwanie binarne 79
- Wyszukiwanie interpolacyjne 79
- Praktyczne przykłady 80
- Podsumowanie 83
RozdziaÅ‚ 4. Projektowanie algorytmów 85
- Wprowadzenie do projektowania algorytmów 86
- Kwestia 1: Czy algorytm zwraca rezultat, jakiego oczekujemy? 87
- Kwestia 2: Czy robi to w optymalny sposób? 87
- Kwestia 3: Jak efektywny bÄ™dzie ten algorytm zastosowany do wiÄ™kszych zbiorów danych? 90
- Strategie algorytmiczne 91
- Strategia "dziel i rządź" 91
- Strategia programowania dynamicznego 93
- Strategia algorytmu zachłannego 93
- Praktyczny przykład - rozwiązanie problemu komiwojażera 94
- Metoda siłowa 95
- Zastosowanie algorytmu zachłannego 98
- Algorytm PageRank 99
- Definicja problemu 100
- Implementacja algorytmu PageRank 100
- Programowanie liniowe 102
- Definicja problemu w programowaniu liniowym 102
- Praktyczny przykład - planowanie przepustowości za pomocą programowania liniowego 103
- Podsumowanie 105
Rozdział 5. Algorytmy grafowe 107
- Reprezentacja grafów 108
- Rodzaje grafów 109
- Specjalne rodzaje krawędzi 111
- Sieci egocentryczne 112
- Analiza sieciowa 112
- Wprowadzenie do teorii analizy sieciowej 113
- Najkrótsza Å›cieżka 113
- Określanie sąsiedztwa 114
- Wskaźnik centralności 115
- Obliczanie wskaźników centralnoÅ›ci w Pythonie 117
- Trawersowanie grafu 119
- Wyszukiwanie wszerz 119
- Wyszukiwanie w głąb 121
- Studium przypadku - analiza oszustw 125
- Prosta analiza pod kÄ…tem oszustwa 127
- Podejście strażnicy 128
- Podsumowanie 130
ALGORYTMY UCZENIA MASZYNOWEGO 131
Rozdział 6. Algorytmy nienadzorowanego uczenia maszynowego 133
- Wprowadzenie do nienadzorowanego uczenia maszynowego 134
- Uczenie nienadzorowane w cyklu życia eksploracji danych 134
- Trendy badawcze w zakresie uczenia nienadzorowanego 137
- Praktyczne przykłady 137
- Algorytmy klasteryzacji 138
- Wyliczanie podobieństw 139
- Grupowanie hierarchiczne 145
- Ocena klastrów 147
- Zastosowania klasteryzacji 148
- Redukcja wymiarów 148
- Analiza gÅ‚ównych skÅ‚adowych 149
- Ograniczenia analizy gÅ‚ównych skÅ‚adowych 151
- Reguły asocjacyjne 151
- Przykłady użycia 151
- Analiza koszykowa 152
- Reguły asocjacyjne 153
- Wskaźniki reguł 154
- Algorytmy analizy asocjacyjnej 156
- Praktyczny przykÅ‚ad - grupowanie podobnych tweetów 160
- Modelowanie tematów 161
- Klasteryzacja 162
- Algorytmy wykrywania odchyleń 162
- Wykorzystanie klastrów 162
- Wykorzystanie wykrywania odchyleń opartego na gęstości 162
- Wykorzystanie maszyny wektorów noÅ›nych 163
- Podsumowanie 163
Rozdział 7. Tradycyjne algorytmy uczenia nadzorowanego 165
- Nadzorowane uczenie maszynowe 166
- Żargon nadzorowanego uczenia maszynowego 166
- Warunki konieczne 168
- Rozróżnienie miÄ™dzy klasyfikatorami a regresorami 169
- Algorytmy klasyfikujÄ…ce 169
- Wyzwanie dla klasyfikatorów 170
- Inżynieria cech w przetwarzaniu potokowym 171
- Ocena klasyfikatorów 173
- Określenie faz klasyfikacji 177
- Algorytm drzewa decyzyjnego 178
- Metody zespolone 181
- Regresja logistyczna 185
- Maszyna wektorów noÅ›nych 187
- Naiwny klasyfikator bayesowski 189
- ZwyciÄ™zcÄ… wÅ›ród algorytmów klasyfikacji jest... 192
- Algorytmy regresji 193
- Wyzwanie dla regresji 193
- Regresja liniowa 195
- Algorytm drzewa regresji 199
- Regresyjny algorytm wzmocnienia gradientowego 199
- ZwyciÄ™zcÄ… wÅ›ród algorytmów regresji jest... 200
- Praktyczny przykład, jak przewidywać pogodę 201
- Podsumowanie 203
Rozdział 8. Algorytmy sieci neuronowych 205
- Wprowadzenie do sieci neuronowych 206
- Ewolucja sieci neuronowych 207
- Trenowanie sieci neuronowej 209
- Anatomia sieci neuronowej 209
- Definicja gradientu prostego 210
- Funkcje aktywacji 212
- Narzędzia i modele 217
- Keras 217
- TensorFlow 220
- Rodzaje sieci neuronowych 222
- Uczenie transferowe 224
- Studium przypadku - użycie uczenia głębokiego do wykrywania oszustw 225
- Metodologia 225
- Podsumowanie 228
Rozdział 9. Algorytmy przetwarzania języka naturalnego 231
- Wprowadzenie do przetwarzania języka naturalnego 232
- Terminologia przetwarzania języka naturalnego 232
- NLTK 234
- Model bag-of-words 234
- Wektorowe przedstawienie sÅ‚ów 237
- Otoczenie słowa 237
- WÅ‚aÅ›ciwoÅ›ci wektorowego przedstawienia sÅ‚ów 237
- Użycie rekurencyjnych sieci neuronowych do przetwarzania języka naturalnego 238
- Wykorzystanie przetwarzania języka naturalnego do analizy sentymentu 239
- Studium przypadku - analiza sentymentu w recenzjach filmowych 241
- Podsumowanie 243
Rozdział 10. Silniki poleceń 245
- Wprowadzenie do silników poleceÅ„ 245
- Rodzaje silników poleceÅ„ 246
- Silniki poleceń oparte na treści 246
- Silniki poleceń oparte na filtrowaniu kooperacyjnym 248
- Hybrydowe silniki poleceń 250
- Ograniczenia systemów poleceÅ„ 252
- Zimny start 252
- Wymagania dotyczÄ…ce metadanych 252
- Problem rzadkości danych 253
- Tendencyjność ze względu na wpływ społeczny 253
- Ograniczone dane 253
- Obszary praktycznych zastosowań 253
- Przykład praktyczny - stworzenie silnika poleceń 254
- Podsumowanie 256
ZAGADNIENIA ZAAWANSOWANE 257
Rozdział 11. Algorytmy danych 259
- Wprowadzenie do algorytmów danych 259
- Klasyfikacja danych 260
- Algorytmy przechowywania danych 261
- Strategie przechowywania danych 261
- Algorytmy strumieniowania danych 263
- Zastosowania strumieniowania 264
- Algorytmy kompresji danych 264
- Algorytmy kompresji bezstratnej 264
- Przykład praktyczny - analiza sentymentu na Twitterze 266
- Podsumowanie 269
Rozdział 12. Kryptografia 271
- Wprowadzenie do kryptografii 271
- Waga najsłabszego ogniwa 272
- Terminologia 272
- Wymagania bezpieczeństwa 273
- Podstawy projektowania szyfrów 275
- Rodzaje technik kryptograficznych 278
- Kryptograficzna funkcja skrótu 278
- Szyfrowanie symetryczne 281
- Szyfrowanie asymetryczne 283
- Przykład - kwestie bezpieczeństwa we wdrażaniu modelu uczenia maszynowego 286
- Atak man-in-the-middle 287
- Obrona przed technikÄ… masquerading 289
- Szyfrowanie danych i modelu 289
- Podsumowanie 291
Rozdział 13. Algorytmy przetwarzania danych w dużej skali 293
- Wprowadzenie do algorytmów przetwarzania danych w dużej skali 294
- Definicja dobrze zaprojektowanego algorytmu przetwarzania danych w dużej skali 294
- Terminologia 294
- Projektowanie algorytmów równolegÅ‚ych 295
- Prawo Amdahla 295
- SzczegóÅ‚owość podprocesów 298
- Równoważenie obciążenia 298
- Przetwarzanie lokalne 299
- Procesy wspóÅ‚bieżne w Pythonie 299
- Tworzenie strategii przetwarzania na puli zasobów 299
- Architektura CUDA 300
- Obliczenia w klastrze 303
- Strategia hybrydowa 305
- Podsumowanie 305
Rozdział 14. Uwagi praktyczne 307
- Wprowadzenie do uwag praktycznych 308
- Smutna historia bota sztucznej inteligencji na Twitterze 308
- Transparentność algorytmu 309
- Algorytmy uczenia maszynowego i transparentność 309
- Etyka i algorytmy 313
- Problemy z algorytmami uczÄ…cymi siÄ™ 313
- Znaczenie kwestii etycznych 313
- Ograniczanie stronniczości modeli 315
- Problemy NP-trudne 316
- Uproszczenie problemu 316
- Dopasowanie dobrze znanego rozwiÄ…zania podobnego problemu 316
- Metoda probabilistyczna 317
- Kiedy używać algorytmów 317
- Praktyczny przykład - teoria czarnego łabędzia 318
- Podsumowanie 320