reklama - zainteresowany?

Algorytmy w Pythonie. Techniki programowania dla praktyk - Helion

Algorytmy w Pythonie. Techniki programowania dla praktyk
Autor: Piotr Wr
ISBN: 978-83-283-9368-4
okładka: mi
Księgarnia: Helion

Książka będzie dostępna od maja 2022

Spis treści

Algorytmy w Pythonie. Techniki programowania dla praktyków -- spis treści

Przedmowa

  • PrzykÅ‚adowe programy w Pythonie
  • Co odróżnia tÄ™ książkÄ™ od innych podrÄ™czników?
  • Jak należy czytać tÄ™ książkÄ™?
  • Co zostaÅ‚o opisane w tej książce?
  • Konwencje typograficzne i oznaczenia

Rozdział 1. Zanim wystartujemy

  • Czym powinien siÄ™ charakteryzować algorytm?
  • Jak to wczeÅ›niej bywaÅ‚o, czyli wyjÄ…tki z historii maszyn algorytmicznych
  • Jak to siÄ™ niedawno odbyÅ‚o, czyli o tym, kto wymyÅ›liÅ‚ metodologiÄ™ programowania
  • Proces koncepcji programów
  • Poziomy abstrakcji opisu i wybór jÄ™zyka
  • Maszyna Turinga
  • Modelowanie i realizacja algorytmów
    • Schematy blokowe
    • Przetwarzanie danych - operatory
    • Grupowanie fragmentów kodu w funkcje
    • Pobieranie lub wyÅ›wietlanie wartoÅ›ci
    • Iteracyjne wykonywanie kodu
    • Operatory logiczne
  • Poprawność algorytmów
  • Zadania
  • RozwiÄ…zania i wskazówki do zadaÅ„

Rozdział 2. Systemy obliczeniowe i podstawy kodowania

  • Systemy pozycyjne w piguÅ‚ce
  • System dwójkowy
  • System szesnastkowy
  • System ósemkowy
  • Operacje arytmetyczne na liczbach dwójkowych
  • Kod BCD
  • Kodowanie liczb ze znakiem
    • Kod znak-moduÅ‚ (ZM)
    • Kod U2 (system uzupeÅ‚nienia dwójkowego)
  • Zmienne w pamiÄ™ci komputera
  • Kodowanie znaków
  • Kodowanie obrazów
    • Mapy bitowe na przykÅ‚adzie formatu BMP

Rozdział 3. Rekurencja

  • Definicja rekurencji
  • Ilustracja pojÄ™cia rekurencji
  • Jak wykonujÄ… siÄ™ programy rekurencyjne?
  • NiebezpieczeÅ„stwa rekurencji
    • CiÄ…g Fibonacciego
    • Stack overflow!
  • PuÅ‚apek ciÄ…g dalszy
    • StÄ…d do wiecznoÅ›ci
    • Definicja poprawna, ale.
  • Typy programów rekurencyjnych
  • MyÅ›lenie rekurencyjne
    • PrzykÅ‚ad 1. Spirala
    • PrzykÅ‚ad 2. Kwadraty "parzyste"
  • Przeszukiwanie binarne
  • Uwagi praktyczne na temat technik rekurencyjnych
  • Zadania
  • RozwiÄ…zania i wskazówki do zadaÅ„

RozdziaÅ‚ 4. Analiza zÅ‚ożonoÅ›ci algorytmów

  • Definicje i przykÅ‚ady
    • Jeszcze raz funkcja silnia
    • Wyszukiwanie wspólnego elementu w kolekcjach
    • Zerowanie fragmentu tablicy
    • Wpadamy w puÅ‚apkÄ™
    • Różne typy zÅ‚ożonoÅ›ci obliczeniowej
  • Nowe zadanie: uproÅ›cić obliczenia!
  • Analiza programów rekurencyjnych
    • Terminologia i definicje
    • Ilustracja metody na przykÅ‚adzie
    • RozkÅ‚ad logarytmiczny
    • Przeszukiwanie binarne. tym razem bez matematyki wyższej!
    • Zamiana dziedziny równania rekurencyjnego
    • Funkcja Ackermanna, czyli coÅ› dla smakoszy
  • ZÅ‚ożoność obliczeniowa to nie religia!
  • Techniki optymalizacji programów
  • TrochÄ™ praktyki: pomiary czasów wykonania
  • Zadania
  • RozwiÄ…zania i wskazówki do zadaÅ„

Rozdział 5. Typy proste wbudowane

  • Zmienne (nie zawsze) proste
    • Typy proste
    • StaÅ‚e symboliczne
    • PojÄ™cie referencji
    • ZasiÄ™g zmiennych
    • Napis niezmienny jest i basta!
    • Konwersje napisów na liczby (i odwrotnie)
  • Formatowanie wyników z użyciem notacji f"
  • Tablice (nie caÅ‚kiem) klasyczne
    • Inicjalizacja tablic o staÅ‚ym wymiarze
  • Tuple (czasem zwane krotkami)
    • Modyfikacja tupli
    • Zastosowania programistyczne

Rozdział 6. Modelowanie abstrakcyjnych struktur danych

  • Szablon nowej struktury danych
  • DokÅ‚adamy logikÄ™ biznesowÄ…
    • BÅ‚Ä™dne użycie obiektów klasy i wyjÄ…tki
  • Przeciążanie operatorów arytmetycznych
  • Poszerzanie definicji modelu danych
  • Rekurencyjne struktury danych
  • PuÅ‚apki OOP w Pythonie

Rozdział 7. Przykładowe realizacje wybranych struktur danych

  • Listy jednokierunkowe
  • "Tablicowa" implementacja list
  • Listy innych typów
  • Listy z iteratorem
  • Zbiory
  • Modelowanie kolekcji - podsumowanie

Rozdział 8. Typy złożone wbudowane

  • Listy, czyli tablice dynamiczne
    • Metody dostÄ™pne dla list w Pythonie
    • Listy tworzone na podstawie wyrażeÅ„
  • Zbiory
    • Zbiory tworzone na podstawie wyrażeÅ„
  • SÅ‚owniki
  • Szybkie tablice NumPy
    • Instalacja
    • N-wymiarowe tablice NumPy
    • Tablice i macierze NumPy
    • Deklarowanie tablic i macierzy NumPy
    • Funkcje tablicowe NumPy
    • Zmiany ukÅ‚adu i rozmiaru tablic NumPy
  • Wycinki w tablicach

Rozdział 9. Struktury danych o dostępie ograniczonym

  • Stos
    • Zasada dziaÅ‚ania stosu
    • Realizacja programowa stosu
    • Sprawdzanie typu danych obiektu
  • Kolejki FIFO
  • Sterty i kolejki priorytetowe
    • Sortowanie za pomocÄ… sterty

Rozdział 10. Drzewa i ich reprezentacje

  • Binarne drzewa poszukiwaÅ„ (BST)
  • Drzewa binarne i wyrażenia arytmetyczne
  • Uniwersalna struktura sÅ‚ownikowa
    • ZajÄ™tość pamiÄ™ci sÅ‚ownika
    • Drzewa "egzotyczne"

Rozdział 11. Algorytmy przeszukiwania

  • Przeszukiwanie liniowe
  • Generyczne funkcje porównawcze
  • Przeszukiwanie binarne
  • Transformacja kluczowa (hashing)
    • W poszukiwaniu funkcji H()
    • Najbardziej znane funkcje H()
    • ObsÅ‚uga konfliktów dostÄ™pu
    • Powrót do źródeÅ‚
    • Jeszcze raz tablice!
    • Próbkowanie liniowe
    • Podwójne kluczowanie
    • Zastosowania transformacji kluczowej
    • Klasyczne funkcje hashujÄ…ce
    • Piszemy wÅ‚asnÄ… tablicÄ™ hashujÄ…cÄ…
  • Podsumowanie metod transformacji kluczowej
  • Przeszukiwanie danych w wybranych strukturach Pythona

Rozdział 12. Algorytmy sortowania

  • Sortowanie przez wstawianie, algorytm klasy O(N2)
  • Sortowanie bÄ…belkowe, algorytm klasy O(N2)
  • Sortowanie szybkie (Quicksort) - algorytm klasy O(N log N)
  • Scalanie zbiorów posortowanych
  • Sortowanie przez scalanie, algorytm klasy O(N log N)
  • Sortowanie zewnÄ™trzne
  • Sortowanie z użyciem bibliotek Pythona
  • Uwagi praktyczne

RozdziaÅ‚ 13. Derekursywacja i optymalizacja algorytmów

  • Jak pracuje kompilator?
  • Odrobina formalizmu nie zaszkodzi!
  • Kilka przykÅ‚adów derekursywacji algorytmów
  • Derekursywacja z wykorzystaniem stosu
    • Eliminacja zmiennych lokalnych
  • Metoda funkcji przeciwnych
  • Klasyczne schematy derekursywacji
    • Schemat typu while
    • Schemat typu if-else
    • Schemat z podwójnym wywoÅ‚aniem rekurencyjnym
  • Podsumowanie

RozdziaÅ‚ 14. Przeszukiwanie tekstów

  • Algorytm typu brute force
  • Nowe algorytmy poszukiwaÅ„
    • Algorytm KMP
    • Algorytm Boyera-Moore'a
    • Algorytm Rabina-Karpa
  • Kilka prostych zadaÅ„
    • RozwiÄ…zania

Rozdział 15. Zaawansowane techniki programowania

  • Programowanie typu "dziel i zwyciężaj"
    • Znajdowanie minimum i maksimum w tablicy liczb
    • Mnożenie macierzy o rozmiarze NxN
    • Mnożenie liczb caÅ‚kowitych
    • Inne znane algorytmy "dziel i zwyciężaj"
  • Algorytmy "żarÅ‚oczne", czyli przekÄ…sić coÅ› nadszedÅ‚ już czas.
    • Problem plecakowy, czyli nieÅ‚atwe jest życie turysty piechura
    • Wydawanie reszty, czyli "A nie ma pan drobnych?" w praktyce
  • Programowanie dynamiczne
    • CiÄ…g Fibonacciego
    • Równania z wieloma zmiennymi
    • NajdÅ‚uższa wspólna podsekwencja
    • NajdÅ‚uższy wspólny podÅ‚aÅ„cuch
  • Heurystyki i inne techniki programowania
  • Uwagi bibliograficzne

Rozdział 16. Algorytmy grafowe

  • Definicje i pojÄ™cia podstawowe
    • Etykiety i wartoÅ›ci
  • Cykle w grafach
  • Sposoby reprezentacji grafów
    • Reprezentacja tablicowa
    • SÅ‚owniki wÄ™zÅ‚ów
    • Listy kontra zbiory
  • Podstawowe operacje na grafach
    • Suma grafów
    • Kompozycja grafów
    • Graf do potÄ™gi
  • Algorytm Warshalla
  • Algorytm Floyda-Warshalla
  • Algorytm Dijkstry
  • Algorytm Bellmana-Forda
  • Drzewo rozpinajÄ…ce minimalne
    • Algorytm Kruskala
    • Algorytm Prima
  • Przeszukiwanie grafów
    • Strategia "w gÅ‚Ä…b" (przeszukiwanie zstÄ™pujÄ…ce)
    • Strategia "wszerz"
    • Inne strategie przeszukiwania
  • Problem wÅ‚aÅ›ciwego doboru
  • Podsumowanie

Rozdział 17. Matematyka i Python

  • Biblioteki naukowe dla Pythona
  • Klasyczne funkcje i metody matematyczne
  • Funkcje matematyczne NumPy
  • Poszukiwanie miejsc zerowych funkcji
  • Iteracyjne obliczanie wartoÅ›ci funkcji
  • Interpolacja funkcji metodÄ… Lagrange'a
    • Różniczkowanie funkcji
  • CaÅ‚kowanie funkcji metodÄ… Simpsona
  • RozwiÄ…zywanie ukÅ‚adów równaÅ„ liniowych metodÄ… Gaussa
  • Uwagi koÅ„cowe
  • Wizualizacja danych z użyciem Matplotlib
    • Instalacja pakietu
    • Pierwszy wykres
    • Modyfikacje wyglÄ…du wykresu
    • Wykresy statystyczne

Rozdział 18. Kodowanie i kompresja danych

  • Kodowanie danych i arytmetyka dużych liczb
    • Metody prymitywne
    • Kodowanie symetryczne
    • Kodowanie asymetryczne
    • Kodowanie Base64
  • Obliczenia na bardzo dużych liczbach caÅ‚kowitych
    • Reprezentacja dużych liczb caÅ‚kowitych
    • Wyliczanie wartoÅ›ci modulo
  • Wybrane techniki Å‚amania kodów
    • Jakość klucza szyfrujÄ…cego
    • Metody Å‚amania szyfrów
  • Techniki kompresji danych
    • Kompresja za pomocÄ… modelowania matematycznego
    • Kompresja metodÄ… RLE
    • Kompresja danych metodÄ… Huffmana
    • Kodowanie LZW

Rozdział 19. Czy komputery mogą myśleć.?

  • PrzeglÄ…d obszarów zainteresowaÅ„ sztucznej inteligencji (SI)
    • Systemy eksperckie
    • Sieci neuronowe
  • Reprezentacja problemów
  • Gry dwuosobowe i drzewa gier
    • Algorytm min-max

Dodatek A. Python - lokalne środowisko pracy

  • Testujemy poprawność instalacji Pythona
  • Instalator pip i biblioteki Pythona
  • Edytory do Pythona
  • Åšrodowiska IDE (i dlaczego PyCharm)
    • IDLE
    • PyCharm
    • Visual Studio Community
  • Dokumentacja Pythona
  • Używanie zasobów GitHuba

Literatura

Spis rysunków

Spis tabel

Skorowidz

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.