EBOOKI WYDAWCY
Autor:
Wydawca:
Format:
epub, mobi
Problemy informatyki, które wydają się nowe lub unikatowe, często są zakorzenione w klasycznych algorytmach, technikach kodowania czy zasadach inżynierii. I klasyczne metody są nadal najlepszym sposobem ich rozwiązywania! Opanowanie tych technik w Pythonie zwiększa szanse sukcesu realizowanych projektów webowych, przetwarzania danych, uczenia maszynowego i wielu innych.
Książka Klasyczne problemy informatyki w Pythonie podszlifuje Twoje umiejętności rozwiazywania problemów informatyki na podstawie sprawdzonych scenariuszy, ćwiczeń i algorytmów wykorzystujących Pythona. Przedstawia ona dziesiątki wyzwań, począwszy od prostych zadań, takich jak algorytm wyszukiwania binarnego po klasteryzację danych przy użyciu k-średnich. Poczujesz szczególną satysfakcję, gdy uda Ci się rozwiązać zadania łączące informatykę z praktycznymi problemami, takimi jak aplikacje, dane, wydajność, a nawet pomyślne przejście przez następną rozmowę kwalifikacyjną!
Książka jest przeznaczona dla średniozaawansowanych programistów Pythona.
Rok wydania | 2020 |
---|---|
Liczba stron | 250 |
Kategoria | Programowanie |
Wydawca | Wydawnictwo Naukowe PWN |
Tłumaczenie | Natalia Chounlamany-Turalska |
ISBN-13 | 978-83-01-20993-3 |
Numer wydania | 1 |
Język publikacji | polski |
Informacja o sprzedawcy | ePWN sp. z o.o. |
EBOOKI WYDAWCY
POLECAMY
Ciekawe propozycje
Spis treści
podziękowania xv | |
o autorze xvii | |
o ilustracji na okładce xviii | |
wprowadzenie xix | |
1. Małe problemy | 1 |
1.1. Ciąg Fibonacciego | 1 |
Pierwsza próba rekurencyjna | 1 |
Wykorzystywanie przypadków podstawowych | 3 |
Memoizacja na ratunek | 4 |
Memoizacja automatyczna | 5 |
Uproszczony Fibonacci | 6 |
Generowanie liczb Fibonacciego za pomocą generatora | 7 |
1.2. Trywialna kompresja | 7 |
1.3. Szyfr nie do złamania | 12 |
Przygotowywanie danych | 12 |
Szyfrowanie i deszyfrowanie | 13 |
1.4. Wyznaczanie liczby pi | 15 |
1.5. Wieże Hanoi | 16 |
Modelowanie wież | 17 |
Rozwiązywanie problemu wież Hanoi | 18 |
1.6. Praktyczne zastosowania | 19 |
1.7. Ćwiczenia | 20 |
2. Problemy wyszukiwania | 21 |
2.1. Przeszukiwanie DNA | 21 |
Przechowywanie DNA | 21 |
Przeszukiwanie liniowe | 23 |
Wyszukiwanie binarne | 24 |
Uogólniony przykład | 26 |
2.2. Rozwiązywanie labiryntów | 28 |
Generowanie losowego labiryntu | 29 |
Detale labiryntu | 30 |
Przeszukiwanie w głąb | 31 |
Przeszukiwanie wszerz | 35 |
Algorytm A* | 39 |
2.3. Misjonarze i kanibale | 44 |
Modelowanie problemu | 44 |
Rozwiązywanie problemu | 47 |
2.4. Praktyczne zastosowania | 48 |
2.5. Ćwiczenia | 49 |
3. Problemy spełniania ograniczeń | 51 |
3.1. Budowanie systemu do rozwiązywania problemów spełniania ograniczeń | 52 |
3.2. Problem kolorowania mapy Australii | 56 |
3.3. Problem ośmiu hetmanów | 59 |
3.4. Wykreślanki | 61 |
3.5. SEND + MORE = MONEY | 64 |
3.6. Układ chipów na płytce | 66 |
3.7. Praktyczne zastosowania | 66 |
3.8. Ćwiczenia | 67 |
4. Problemy grafowe 69 | |
4.1. Mapa jako graf | 69 |
4.2. Budowanie szkieletu grafu | 72 |
Stosowanie klas Edge i Graph | 76 |
4.3. Znajdowanie najkrótszej drogi | 77 |
Powrót do przeszukiwania wszerz (BFS) | 77 |
4.4. Minimalizowanie kosztu budowania sieci | 79 |
Stosowanie wag | 79 |
Znajdowanie minimalnego drzewa rozpinającego | 83 |
4.5. Znajdowanie najkrótszych dróg w grafie z wagami | 89 |
Algorytm Dijkstry | 89 |
4.6. Praktyczne zastosowania | 94 |
4.7. Ćwiczenia | 95 |
5. Algorytmy genetyczne | 97 |
5.1. Podstawy biologiczne | 97 |
5.2. Generyczny algorytm genetyczny | 98 |
5.3. Naiwny test | 105 |
5.4. SEND + MORE = MONEY – ciąg dalszy | 107 |
5.5. Optymalizowanie kompresji list | 111 |
5.6. Wyzwania związane z algorytmami genetycznymi | 113 |
5.7. Praktyczne zastosowania | 114 |
5.8. Ćwiczenia | 115 |
6. Algorytm klasteryzacji 117 | |
6.1. Przygotowania | 118 |
6.2. Algorytm klasteryzacji metodą k-średnich | 120 |
6.3. Klasteryzacja gubernatorów według wieku i długości geograficznej | 125 |
6.4. Klasteryzacja albumów Michaela Jacksona według długości | 128 |
6.5. Problemy i rozszerzenia algorytmu klasteryzacji metodą k-średnich | 130 |
6.6. Praktyczne zastosowania | 131 |
6.7. Ćwiczenia | 132 |
7. Dość proste sieci neuronowe | 133 |
7.1. Podłoże biologiczne? | 134 |
7.2. Sztuczne sieci neuronowe | 135 |
Neurony | 135 |
Warstwy | 136 |
Propagacja wsteczna | 137 |
Pełen obraz | 141 |
7.3. Przygotowania | 141 |
Iloczyn skalarny | 142 |
Funkcja aktywacji | 142 |
7.4. Budowanie sieci | 142 |
Implementowanie neuronów | 143 |
Implementowanie warstw | 145 |
Implementowanie sieci | 146 |
7.5. Problemy klasyfikacji | 149 |
Normalizowanie danych | 149 |
Klasyczny zbiór danych iris | 150 |
Klasyfikowanie wina | 153 |
7.6. Przyspieszanie sieci neuronowych | 156 |
7.7. Problemy i rozszerzenia sieci neuronowych | 156 |
7.8. Praktyczne zastosowania | 158 |
7.9. Ćwiczenia | 159 |
8. Przeszukiwanie z przeciwnikiem 161 | |
8.1. Podstawowe elementy gry planszowej | 161 |
8.2. Kółko i krzyżyk | 163 |
Zarządzanie stanem gry kółko i krzyżyk | 163 |
Minimax | 166 |
Testowanie funkcji minimax na grze kółko i krzyżyk | 169 |
Rozwijanie sztucznej inteligencji w grze kółko i krzyżyk | 170 |
8.3. Connect 4 | 171 |
Mechanizm gry Connect 4 | 172 |
Sztuczna inteligencja w grze Connect 4 | 176 |
Poprawianie algorytmu minimax przez redukcję alfa-beta | 177 |
8.4. Inne ulepszenia algorytmu minimax | 178 |
8.5. Praktyczne zastosowania | 179 |
8.6. Ćwiczenia | 180 |
9. Inne problemy 181 | |
9.1. Problem plecakowy | 181 |
9.2. Problem komiwojażera | 186 |
Naiwne podejście | 186 |
Możliwości ulepszenia projektu | 190 |
9.3. Mnemotechniki dla numerów telefonów | 191 |
9.4. Praktyczne zastosowania | 193 |
9.5. Ćwiczenia | 194 |
dodatek A. Glosariusz | 195 |
dodatek B. Dodatkowe materiały | 201 |
B.1. Python | 201 |
B.2. Algorytmy i struktury danych | 202 |
B.3. Sztuczna inteligencja | 203 |
B.4. Programowanie funkcyjne | 203 |
B.5. Projekty open source pomocne w uczeniu maszynowym | 204 |
dodatek C. Krótkie wprowadzenie do adnotacji typów 205 | |
C.1. Czym są adnotacje typów? | 205 |
C.2. Jak wyglądają adnotacje typów? | 206 |
C.3. Do czego przydają się adnotacje typów? | 207 |
C.4. Jakie są wady adnotacji typów? | 208 |
C.5. Zdobywanie dodatkowych informacji | 209 |
indeks | 211 |