reklama - zainteresowany?

Algorytmy, struktury danych i techniki programowania. Wydanie III - Helion

Algorytmy, struktury danych i techniki programowania. Wydanie III
Autor: Piotr Wróblewski
ISBN: 83-7361-101-0
stron: 360, Format: B5, okładka: miękka
Data wydania: 2003-11-04
Księgarnia: Helion

Cena książki: 29,90 zł

Dodaj do koszyka Algorytmy, struktury danych i techniki programowania. Wydanie III

Tagi: Algorytmy - Programowanie | Techniki programowania

Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.

To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.

W książce opisano m.in.:
  • Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
  • Sortowanie danych: najpopularniejsze procedury sortujące.
  • Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
  • Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
  • Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
  • Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
  • Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
  • Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
  • Sztuczna inteligencja: czy komputery mogą myśleć?
  • Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.

Dodaj do koszyka Algorytmy, struktury danych i techniki programowania. Wydanie III

 

Osoby które kupowały "Algorytmy, struktury danych i techniki programowania. Wydanie III", wybierały także:

  • Zrozum struktury danych. Algorytmy i praca na danych w Javie
  • Projektowanie oprogramowania dla zupełnie początkujących. Owoce programowania. Wydanie V
  • Python na maturze. Kurs video. Algorytmy i podstawy j
  • Algorytmy Data Science. Siedmiodniowy przewodnik. Wydanie II
  • Tablice informatyczne. Algorytmy

Dodaj do koszyka Algorytmy, struktury danych i techniki programowania. Wydanie III

Spis treści

Algorytmy, struktury danych i techniki programowania. Wydanie III -- spis treści

Przedmowa (11)

Rozdział 1. Zanim wystartujemy (19)

  • 1.1. Jak to wcześniej bywało, czyli wyjątki z historii maszyn algorytmicznych (21)
  • 1.2. Jak to się niedawno odbyło, czyli o tym, kto "wymyślił" metodologię programowania (23)
  • 1.3. Proces koncepcji programów (24)
  • 1.4. Poziomy abstrakcji opisu i wybór języka (25)
  • 1.5. Poprawność algorytmów (27)

Rozdział 2. Rekurencja (29)

  • 2.1. Definicja rekurencji (29)
  • 2.2. Ilustracja pojęcia rekurencji (31)
  • 2.3. Jak wykonują się programy rekurencyjne? (32)
  • 2.4. Niebezpieczeństwa rekurencji (34)
    • 2.4.1. Ciąg Fibonacciego (34)
    • 2.4.2. Stack overflow! (36)
  • 2.5. Pułapek ciąg dalszy (37)
    • 2.5.1. Stąd do wieczności (37)
    • 2.5.2. Definicja poprawna, ale... (38)
  • 2.6. Typy programów rekurencyjnych (39)
  • 2.7. Myślenie rekurencyjne (41)
    • 2.7.1. Przykład 1.: Spirala (42)
    • 2.7.2. Przykład 2.: Kwadraty "parzyste" (44)
  • 2.8. Uwagi praktyczne na temat technik rekurencyjnych (45)
  • 2.9. Zadania (46)
    • 2.9.1. Zadanie 2.1. (46)
    • 2.9.2. Zadanie 2.2. (46)
    • 2.9.3. Zadanie 2.3. (48)
    • 2.9.4. Zadanie 2.4. (48)
    • 2.9.5. Zadanie 2.5. (49)
  • 2.10. Rozwiązania i wskazówki do zadań (49)
    • 2.10.1. Zadanie 2.1. (49)
    • 2.10.2. Zadanie 2.2. (50)
    • 2.10.3. Zadanie 2.3. (50)
    • 2.10.4. Zadanie 2.4. (51)
    • 2.10.5. Zadanie 2.5. (52)

Rozdział 3. Analiza sprawności algorytmów (53)

  • 3.1. Dobre samopoczucie użytkownika programu (54)
  • 3.2. Przykład 1: Jeszcze raz funkcja silnia... (56)
  • 3.3. Przykład 2: Zerowanie fragmentu tablicy (60)
  • 3.4. Przykład 3: Wpadamy w pułapkę (62)
  • 3.5. Przykład 4: Różne typy złożoności obliczeniowej (63)
  • 3.6. Nowe zadanie: uprościć obliczenia! (66)
  • 3.7. Analiza programów rekurencyjnych (66)
    • 3.7.1. Terminologia (67)
    • 3.7.2. Ilustracja metody na przykładzie (68)
    • 3.7.3. Rozkład logarytmiczny (70)
    • 3.7.4. Zamiana dziedziny równania rekurencyjnego (71)
    • 3.7.5. Funkcja Ackermanna, czyli coś dla smakoszy (72)
  • 3.8. Zadania (73)
    • 3.8.1. Zadanie 3.1. (73)
    • 3.8.2. Zadanie 3.2. (74)
    • 3.8.3. Zadanie 3.3. (74)
    • 3.8.4. Zadanie 3.4. (74)
  • 3.9. Rozwiązania i wskazówki do zadań (75)
    • 3.9.1 Zadanie 3.2. (75)
    • 3.9.2. Zadanie 3.4. (76)

Rozdział 4. Algorytmy sortowania (77)

  • 4.1. Sortowanie przez wstawianie, algorytm klasy O(N2) (78)
  • 4.2. Sortowanie bąbelkowe, algorytm klasy O(N2) (80)
  • 4.3. Quicksort, algorytm klasy O(N log N) (82)
  • 4.4. Heap Sort - sortowanie przez kopcowanie (85)
  • 4.5. Sortowanie przez scalanie (88)
  • 4.6. Uwagi praktyczne (90)

Rozdział 5. Struktury danych (93)

  • 5.1. Listy jednokierunkowe (94)
    • 5.1.1. Realizacja struktur danych listy jednokierunkowej (96)
    • 5.1.2. Tworzenie listy jednokierunkowej (97)
    • 5.1.3. Listy jednokierunkowe - teoria i rzeczywistość (106)
  • 5.2. Tablicowa implementacja list (119)
    • 5.2.1. Klasyczna reprezentacja tablicowa (119)
    • 5.2.2. Metoda tablic równoległych (121)
    • 5.2.3. Listy innych typów (123)
  • 5.3. Stos (125)
    • 5.3.1. Zasada działania stosu (125)
  • 5.4. Kolejki FIFO (129)
  • 5.5. Sterty i kolejki priorytetowe (132)
  • 5.6. Drzewa i ich reprezentacje (139)
    • 5.6.1. Drzewa binarne i wyrażenia arytmetyczne (142)
  • 5.7. Uniwersalna struktura słownikowa (147)
  • 5.8. Zbiory (152)
  • 5.9. Zadania (155)
    • 5.9.1. Zadanie 5.1. (155)
    • 5.9.2. Zadanie 5.2. (155)
    • 5.9.3. Zadanie 5.3. (155)
  • 5.10. Rozwiązania zadań (155)
    • 5.10.1. Zadanie 5.1. (155)
    • 5.10.2. Zadanie 5.3. (156)

Rozdział 6. Derekursywacja i optymalizacja algorytmów (157)

  • 6.1. Jak pracuje kompilator? (158)
  • 6.2. Odrobina formalizmu nie zaszkodzi! (160)
  • 6.3. Kilka przykładów derekursywacji algorytmów (162)
  • 6.4. Derekursywacja z wykorzystaniem stosu (165)
    • 6.4.1. Eliminacja zmiennych lokalnych (166)
  • 6.5. Metoda funkcji przeciwnych (168)
  • 6.6. Klasyczne schematy derekursywacji (170)
    • 6.6.1. Schemat typu while (171)
    • 6.6.2. Schemat typu if-else (173)
    • 6.6.3. Schemat z podwójnym wywołaniem rekurencyjnym (175)
  • 6.7. Podsumowanie (177)

Rozdział 7. Algorytmy przeszukiwania (179)

  • 7.1. Przeszukiwanie liniowe (179)
  • 7.2. Przeszukiwanie binarne (180)
  • 7.3. Transformacja kluczowa (hashing) (181)
    • 7.3.1. W poszukiwaniu funkcji H (183)
    • 7.3.2. Najbardziej znane funkcje H (184)
    • 7.3.3. Obsługa konfliktów dostępu (187)
    • 7.3.4. Powrót do źródeł (187)
    • 7.3.5. Jeszcze raz tablice! (188)
    • 7.3.6. Próbkowanie liniowe (189)
    • 7.3.7. Podwójne kluczowanie (191)
    • 7.3.8. Zastosowania transformacji kluczowej (193)
    • 7.3.9. Podsumowanie metod transformacji kluczowej (193)

Rozdział 8. Przeszukiwanie tekstów (195)

  • 8.1. Algorytm typu brute-force (195)
  • 8.2. Nowe algorytmy poszukiwań (197)
    • 8.2.1. Algorytm K-M-P (198)
    • 8.2.2.Algorytm Boyera i Moore'a (203)
    • 8.2.3. Algorytm Rabina i Karpa (205)

Rozdział 9. Zaawansowane techniki programowania (209)

  • 9.1. Programowanie typu "dziel i zwyciężaj" (210)
    • 9.1.1. Odszukiwanie minimum i maksimum w tablicy liczb (211)
    • 9.1.2. Mnożenie macierzy o rozmiarze N(N (214)
    • 9.1.3. Mnożenie liczb całkowitych (217)
    • 9.1.4. Inne znane algorytmy "dziel i zwyciężaj" (218)
  • 9.2. Algorytmy "żarłoczne", czyli przekąsić coś nadszedł już czas... (219)
    • 9.2.1. Problem plecakowy, czyli niełatwe jest życie turysty-piechura (220)
  • 9.3. Programowanie dynamiczne (223)
  • 9.4. Uwagi bibliograficzne (227)

Rozdział 10. Elementy algorytmiki grafów (229)

  • 10.1. Definicje i pojęcia podstawowe (230)
  • 10.2. Sposoby reprezentacji grafów (232)
  • 10.3. Podstawowe operacje na grafach (234)
    • 10.3.1. Suma grafów (234)
    • 10.3.2. Kompozycja grafów (234)
    • 10.3.3. Potęga grafu (235)
  • 10.4. Algorytm Roy-Warshalla (236)
  • 10.5. Algorytm Floyda-Warshalla (239)
  • 10.6. Algorytm Dijkstry (243)
  • 10.7. Drzewo rozpinające minimalne (244)
  • 10.8. Przeszukiwanie grafów (245)
    • 10.8.1. Strategia "w głąb" (246)
    • 10.8.2. Strategia "wszerz" (247)
  • 10.9. Problem właściwego doboru (249)
  • 10.10. Podsumowanie (254)

Rozdział 11.Algorytmy numeryczne (255)

  • 11.1. Poszukiwanie miejsc zerowych funkcji (255)
  • 11.2. Iteracyjne obliczanie wartości funkcji (257)
  • 11.3. Interpolacja funkcji metodą Lagrange'a (258)
  • 11.4. Różniczkowanie funkcji (260)
  • 11.5. Całkowanie funkcji metodą Simpsona (262)
  • 11.6. Rozwiązywanie układów równań liniowych metodą Gaussa (263)
  • 11.7. Uwagi końcowe (266)

Rozdział 12. Czy komputery mogą myśleć? (267)

  • 12.1. Przegląd obszarów zainteresowań Sztucznej Inteligencji (268)
    • 12.1.1. Systemy eksperckie (269)
    • 12.1.2. Sieci neuronowe (271)
  • 12.2. Reprezentacja problemów (272)
    • 12.2.1. Ćwiczenie 12.1. (274)
  • 12.3. Gry dwuosobowe i drzewa gier (274)
  • 12.4. Algorytm mini-max (276)

Rozdział 13. Kodowanie i kompresja danych (281)

  • 13.1. Kodowanie danych i arytmetyka dużych liczb (283)
    • 13.1.1. Kodowanie symetryczne (284)
    • 13.1.2. Kodowanie asymetryczne (285)
    • 13.1.3. Metody prymitywne (292)
    • 13.1.4. Łamanie szyfrów (293)
  • 13.2. Techniki kompresji danych (294)
    • 13.2.1. Kompresja poprzez modelowanie matematyczne (296)
    • 13.2.2. Kompresja metodą RLE (297)
    • 13.2.3. Kompresja danych metodą Huffmana (298)
    • 13.2.4. Kodowanie LZW (304)
    • 13.2.5. Idea kodowania słownikowego na przykładach (304)
    • 13.2.6. Opis formatu GIF (307)

Rozdział 14. Zadania różne (311)

  • 14.1. Teksty zadań (311)
    • 14.1.1. Zadanie 14.1. (311)
    • 14.1.2. Zadanie 14.2. (312)
    • 14.1.3. Zadanie 14.3. (312)
    • 14.1.4. Zadanie 14.4. (312)
    • 14.1.5. Zadanie 14.5. (312)
    • 14.1.6. Zadanie 14.6. (312)
    • 14.1.7. Zadanie 14.7. (312)
    • 14.1.8. Zadanie 14.8. (313)
    • 14.1.9. Zadanie 14.9. (313)
    • 14.1.10. Zadanie 14.10. (313)
    • 14.1.11. Zadanie 14.11. (313)
    • 14.1.12. Zadanie 14.12. (313)
  • 14.2. Rozwiązania (313)
    • 14.2.1. Zadanie 14.1. (313)
    • 14.2.2. Zadanie 14.3. (314)
    • 14.2.3. Zadanie 14.4. (315)
    • 14.2.4. Zadanie 14.10. (315)
    • 14.2.5. Zadanie 14.12. (316)

Dodatek A Poznaj C++ w pięć minut! (319)

Dodatek B Systemy obliczeniowe w pigułce (337)

Literatura (343)

Spis ilustracji (345)

Spis tablic (349)

Skorowidz (351)

Dodaj do koszyka Algorytmy, struktury danych i techniki programowania. Wydanie III

Code, Publish & WebDesing by CATALIST.com.pl



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