Książki do nauki algorytmów i struktur danych
JumpSmerf
Patrząc na ilość wątków, w których ludzie pytają się, „z czego uczyć się algorytmiki” postanowiłem napisać artykuł, w którym byłaby opisana literatura do nauki algorytmów nienumerycznych oraz tego, co jest potrzebne do jej studiowania, czyli matematyki dyskretnej. Algorytmika w porównaniu z innymi działami informatyki nie starzeje się. Książka z lat 70 może służyć bardzo dobrze również w dzisiejszych czasach. Tylko żeby ktoś nie myślał, że nie ma obecnie postępu w tym najstarszym dziale informatyki. Owszem jest, ale jest najczęściej dokumentowany w różnych pracach naukowych lub w najnowszej literaturze specjalistycznej, która jest najczęściej dostępna tylko w języku angielskim.
Przegląd literatury będzie podzielony na kategorie – początkujący, średniozaawansowany i zaawansowany, które oznaczają wiedzę potrzebną do czytania książek (nie zawsze algorytmiczną, lecz czasami np. matematyczną).
Początkujący:
Jeżeli ma być to twoja pierwsza lektura z algorytmiki, to tutaj znajdziesz coś dla siebie. Przydaje się znajomość programowania w jakimś języku (najczęściej Pascal lub C/C++), ale często nie jest konieczna.
Algorytmy
Autor: Maciej Marek Sysło
Wydawnictwo: WSIP
Rok wydania: 2008
Ilość stron: 288
Gdzie kupić: dostępna w sprzedaży
Język: Pascal
Książka zawiera wiedzę z algorytmiki na poziomie szkoły średniej. Nie jest wymagana żadna wiedza na temat programowania, przydaje się jedynie znajomość języka Pascal, ale nie jest konieczna. Algorytmy są opisane w postaci listy kroków, czasami w Pascalu (wszystkie kody w tym języku można pobrać ze strony wydawcy), a czasami w ELI – programie do tworzenia schematów blokowych. Książka jest bardzo dobra dla osoby, która jeszcze dokładnie nie wie, co to jest algorytm oraz dla przygotowującej się do matury. Na końcu zawiera zadania maturalne z omówieniem.
Rozdziały:
- Algorytmy i sposoby ich przedstawiania
- Algorytmy liniowe
- Algorytmy z rozgałęzieniami
- Porządkowanie kilku liczb
- O czym mówią dane — algorytmy iteracyjne
- Porządkowanie ciągu elementów
- Inne algorytmy iteracyjne — schemat Hornera, algorytm Euklidesa, sito Eratostenesa
- Algorytmy rekurencyjne
- Dziel i zwyciężaj
- Porządkowanie ciągu elementów
- Wychodzenie z labiryntu i pakowanie plecaka
- Własności algorytmów — podsumowanie
- Problemy
- Gdzie szukać dalszych informacji o algorytmach
- Algorytmika w zadaniach maturalnych
Algorytmy + struktury danych = programy
Autor: Niklaus Wirth
Wydawnictwo: WNT
Rok wydania: 2004
Ilość stron: 382
Gdzie kupić: allegro, antykwariaty
Język: Pascal
Niklaus Wirth, twórca języka Pascal przedstawia nam algorytmikę od podstaw. Jedynym wymaganiem jest pewne obycie z językiem Pascal, wystarczą podstawy, ponieważ autor wyjaśnia elementy języka związane ze strukturami danych. Polecana przez wielu, klasyczna lektura z podstaw algorytmów i struktur danych.
Rozdziały:
1.Podstawowe struktury danych
2. Sortowanie
3. Algorytmy rekurencyjne
4. Dynamiczne struktury informacyjne
5. Struktury językowe i kompilatory
Perełki oprogramowania / Perełki programowania
Autor: Jon Bentley
Wydawnictwo: WNT/Helion
Rok wydania: 2008 WNT/2011 (w planach)
Ilość stron: 300
Gdzie kupić: dostępne w sprzedaży (od wydawnictwa Helion)/allegro (od wydawnictwa WNT)
Język: C/C++
Książka omawia algorytmy, najczęściej praktyczne. Jest to pozycja wyróżniająca się, ponieważ opowiada o tym jak praktycznie pisać szybkie programy. Jest to zbiór artykułów Jona Bentley’a, które autor postanowił zebrać w całość. Autor przytacza różne historie, które przydarzyły mu się podczas jego kariery programisty. Wymagana znajomość dowolnego języka, ale najlepiej C i C++, w których są pisane programy. Istnieje również inna książka tego samego autora „Więcej perełek oprogramowania. Wyznania programisty”, powinny po nią sięgnąć osoby, którym spodobała się ta książka.
Część I. Podstawowe wiadomości
Rozdział 1. Otwieranie ostrygi
Rozdział 2. Algorytmy typu Aha!
Rozdział 3. Programy podporządkowane strukturom danych
Rozdział 4. Pisanie poprawnych programów
Rozdział 5. Drobna kwestia programowania
Część II. Efektywność programów
Rozdział 6. O efektywności ogólnie
Rozdział 7. Obliczenia na odwrocie koperty
Rozdział 8. Techniki projektowania algorytmów
Rozdział 9. Doskonalenie kodu
Rozdział 10. Ograniczanie wykorzystywanej pamięci
Część III. Produkt
Rozdział 11. Sortowanie
Rozdział 12. Przykładowy problem
Rozdział 13. Wyszukiwanie
Rozdział 14. Kopce
Rozdział 15. Sznury perełek
Więcej perełek oprogramowania. Wyznania programisty
Autor: Jon Bentley
Wydawnictwo: WNT
Rok wydania: 2008
Ilość stron: 260
Gdzie kupić: allegro
Język: C/C++, Awk
Kolejny zbiór artykułów Jona Bentley’a. Tym razem autor czasami używa również języka Awk.
Rozdziały:
Część I. Metody programowania
Rozdział 1. Systemy profilowania
Rozdział 2. Tablice asocjacyjne
Rozdział 3. Wyznania programisty
Rozdział 4. Samoopisujące się dane
Część II. Zawodowe sztuczki
Rozdział 5. Przecinanie węzła gordyjskiego
Rozdział 6. Informatyczne slogany
Rozdział 7. Powrót koperty
Rozdział 8. Memorandum Furbelowa
Część III. Wejście-wyjście dostosowane do ludzi
Rozdział 9. Małe języki
Rozdział 10. Projektowanie dokumentu
Rozdział 11. Wyjście graficzne
Rozdział 12. Sondaż sondaży
Część IV. Algorytmy
Rozdział 13. Przykład błyskotliwości
Rozdział 14. Narodziny numeryka
Rozdział 15. Wybór
Algorytmy, struktury danych i techniki programowania
Autor: Piotr Wróblewski
Wydawnictwo: Helion
Rok wydania: 2015
Ilość stron: 376
Gdzie kupić: w sprzedaży
Język: C++
Książka wprowadza do tematu projektowania i analizy algorytmów. Zawiera podstawy, które każdy programista powinien umieć. Zawiera tematykę najczęściej pomijaną przy innych książkach do nienumerycznego przetwarzania danych: wprowadzenie do sztucznej inteligencji, kodowanie i kompresja danych oraz algorytmy numeryczne.
Rozdziały:
Rozdział 1. Zanim wystartujemy
Rozdział 2. Rekurencja
Rozdział 3. Typy i struktury danych
Rozdział 4. Analiza złożoności algorytmów
Rozdział 5. Derekursywacja i optymalizacja algorytmów
Rozdział 6. Algorytmy sortowania
Rozdział 7. Algorytmy przeszukiwania
Rozdział 8. Przeszukiwanie tekstów
Rozdział 9. Zaawansowane techniki programowania
Rozdział 10. Elementy algorytmiki grafów
Rozdział 11. Algorytmy numeryczne
Rozdział 12. Czy komputery mogą myśleć?
Rozdział 13. Kodowanie i kompresja danych
Rozdział 14. Zadania różne
C++. Algorytmy i struktury danych
Autor: Adam Drozdek
Wydawnictwo: Helion
Rok wydania: 2004
Ilość stron: 616
Gdzie kupić: czasami dostępne na allegro
Język: C++
Książka omawia od podstaw algorytmy i struktury danych z wykorzystaniem języka C++. Czytelnik powinien potrafić pisać programy strukturalne w C++.
Rozdziały:
Rozdział 1. Programowanie obiektowe w C++
Rozdział 2. Analiza złożoności
Rozdział 3. Listy
Rozdział 4. Stosy i kolejki
Rozdział 5. Rekurencja
Rozdział 6. Drzewa binarne
Rozdział 7. Drzewa wielokierunkowe
Rozdział 8. Grafy
Rozdział 9. Sortowanie
Rozdział 10. Mieszanie
Rozdział 11. Kompresja danych
Rozdział 12. Zarządzanie pamięcią
Algorytmy i struktury danych
Autor: Alfred V. Aho, John E. Hopcroft, Jeffrey D. Ullman
Wydawnictwo: Helion
Rok wydania: 2003
Ilość stron: 448
Gdzie kupić: allegro
Język: Pascal (pseudokod)
Klasyczna pozycja omawiająca podstawy projektowania i analiza algorytmów. Autorzy traktują tematykę od podstaw.
Rozdziały:
Rozdział 1. Projektowanie i analiza algorytmów
Rozdział 2. Podstawowe abstrakcyjne typy danych
Rozdział 3. Drzewa
Rozdział 4. Podstawowe operacje na zbiorach
Rozdział 5. Zaawansowane metody reprezentowania zbiorów
Rozdział 6. Grafy skierowane
Rozdział 7. Grafy nieskierowane
Rozdział 8. Sortowanie
Rozdział 9. Techniki analizy algorytmów
Rozdział 10. Techniki projektowania algorytmów
Rozdział 11. Struktury danych i algorytmy obróbki danych zewnętrznych
Rozdział 12. Zarządzanie pamięcią
Rzecz o istocie informatyki - Algorytmika
Autorzy: David Harel, Yishai Feldman
Wydawnictwo: WNT
Rok wydania: 2008
Ilość stron: 594
Gdzie kupić: w sprzedaży
Język: pseudokod
Książka ta różni się od reszty pozycji informatycznych. Bardziej można ją uznać za książkę popularnonaukową opowiadającą o informatyce ze szczególnym naciskiem na algorytmikę. Książkę może równie dobrze czytać zarówno osoba nieobeznania z informatyką jak i specjalista. Jest to doskonały wstęp do informatyki.
Rozdziały:
Część I. Wstęp
- Wprowadzenie i przegląd historyczny
- Algorytmy idane
- Języki i paradygmaty programowania
Część II. Metody i analiza
4. Metody algorytmiczne
5. Poprawność algorytmów
6. Sprawność algorytmów
Część III. Ograniczenia i odporność
7. Nieefektywność i nierozwiązywalność
8. Nieobliczalność i nierozstrzygalność
9. Algorytmiczna uniwersalność i odporność
Część IV. Osłabianie reguł
10. Równoległość, współbieżność i modele alternatywne
11. Algorytmy probabilistyczne
12. Kryptografia i niezawodna interakcja
Część V. Szersze spojrzenie
13. Inżynieria oprogramowania
14. Systemy reaktywne
15. Algorytmika i inteligencja
Średniozaawansowani:
Literatura dla osób, które mają już pewne obeznanie z algorytmiką. Często wymagana jest znajomość matematyki wyższej na pewnym poziomie. Są to książki bardziej szczegółowe i trudniejsze od wyżej wymienionych.
Wprowadzenie do algorytmów
Autorzy: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein
Wydawnictwo: WNT (starsze wydania) / PWN (nowe wydanie)
Rok wydania: 1997 - 2012
Ilość stron: 1117/1196/1300
Gdzie kupić: dostępna w sprzedaży
Język: Pseudokod (przypominający C, C++, Javę i Pythona w nowym wydaniu, w starym podobny Pascala)
Jeśli szukasz książki, która dokładnie tłumaczy trudną sztukę projektowania i analizy algorytmów, to trafiłeś na dobry adres. Książka opisuje większość działów algorytmiki. Na początku wkraczasz w świat matematyki dyskretnej (uzupełnione w dodatku). Następnie poznajesz metody sortowania, struktury danych, zaawansowane techniki projektowania algorytmów, teorię grafów i wybrane zagadnienia, które przedstawiają kilka wybranych działów algorytmiki. Książka właściwie przez wszystkich polecana.
Rozdziały:
Część I. Podstawy
Wprowadzenie
- Rola algorytmów w obliczeniach
- Zaczynamy
- Rzędy wielkości funkcji
- Metoda „dziel i zwyciężaj”
- Analiza probabilistyczna i algorytmy randomizowane
Część II. Sortowanie i statystyki pozycyjne
6. Heapsort - sortowanie przez kopcowanie
7. Quicksort - sortowanie szybkie
8. Sortowanie w czasie liniowym
9. Mediany i statystyki pozycyjne
Część III. Struktury danych
10. Elementarne struktury danych
11. Tablice z haszowaniem
12. Drzewa wyszukiwań binarnych
13. Drzewa czerwono-czarne
14. Wzbogacanie struktur danych
Część IV. Zaawansowanie metody konstruowania i analizowania algorytmów
15. Programowanie dynamiczne
16. Algorytmy zachłanne
17. Analiza kosztu zamortyzowanego
Część V. Złożone struktury danych
18. B-drzewa
19. Kopce Fibonacciego
20. Drzewa van Emde Boasa
21. Struktury danych dla zbiorów rozłącznych
Część VI. Algorytmy grafowe
22. Podstawowe algorytmy grafowe
23. Minimalne drzewa rozpinające
24. Najkrótsze ścieżki z jednym źródłem
25. Najkrótsze ścieżki między wszystkimi parami wierzchołków
26. Maksymalny przepływ
Część VII. Wybrane zagadnienia
27. Algorytmy wielowątkowe
28. Operacje na macierzach
29. Programowanie liniowe
30. Wielomiany i FFT
31. Algorytmy teorioliczbowe
32. Wyszukiwanie wzorca
33. Geometria obliczeniowa
34. NP- zupełność
35. Algorytmy aproksymacyjne
Część VIII. Dodatek: Podstawy matematyczne
Wprowadzenie
A. Sumy
B. Zbiory i nie tylko
C. Zliczanie i prawdopodobieństwo
D. Macierze
Algorytmy. Wydanie IV
Autorzy: Robert Sedgewick, Kevin Wayne
Wydawnictwo: Helion
Rok wydania: 2012
Ilość stron: 952
Gdzie kupić: dostępna w sprzedaży
Język: Java
Podręcznik do algorytmiki, który bywa porównywany z „Wprowadzeniem do algorytmów”. Wprowadza w podstawy i szerzej omawia działy: sortowanie, wyszukiwanie, teorię grafów i operacje na tekstach.
Rozdziały:
- Podstawy
- Sortowanie
- Wyszukiwanie
- Grafy
- Łańcuchy znaków
- Kontekst
Algorytmy i struktury danych
Autorzy: L. Banachowski, K. Diks, W. Rytter
Wydawnictwo: WNT
Rok wydania: 2006
Ilość stron: 290
Gdzie kupić: w sprzedaży
Język: Pascal (pseudokod)
Początkowo skrypt do przedmiotu algorytmy i struktury danych, który wkrótce przerodził się w książkę. Na początku mamy podstawy, następnie sortowanie, słowniki, struktury danych, algorytmy tekstowe, równoległe, grafowe i geometryczne. Czasami autorzy chcieli upchać za dużo rzeczy na małej ilości stron, przez co nie dostajemy wszystkiego podanego na tacy, lecz część opisów jest na wysokim poziomie. Polecana jako uzupełnienie „Wprowadzenia do algorytmów”.
Rozdziały:
- Podstawowe zasady analizy algorytmów
- Sortowanie
- Słowniki
- Złożone struktury danych dla zbiorów elementów
- Algorytmy tekstowe
- Algorytmy równoległe
- Algorytmy grafowe
- Algorytmy geometryczne
Projektowanie i analiza algorytmów / Projektowanie i analiza algorytmów komputerowych
Wydawnictwo: Helion/PWN
Rok wydania: 2003/1983
Ilość stron: 488/588
Gdzie kupić: allegro
Język: Pascal (pseudokod)
Klasyczna pozycja na temat algorytmiki. Omawia algorytmy i struktury danych z różnych działów m.in.: sortowanie, teoria grafów, operacje na macierzach, FFT czy teoria liczb.
Rozdziały:
- Modele obliczania
- Projektowanie efektywnych algorytmów
- Sortowanie i statystyka pozycyjna
- Struktury danych dla zadań operujących na zbiorach
- Algorytmy na grafach
- Mnożenie macierzy i pokrewne operacje
- Szybkie przekształcenie Fouriera z zastosowaniami
- Arytmetyka na liczbach całkowitych i wielomianach
- Algorytmy dopasowania wzorców
- Problemy NP-zupełne
- Problemy niełatwe na podstawie dowodu
- Ograniczenia dolne liczby operacji arytmetycznych
Algorytmy w C++
Wydawnictwo: RM
Autor: Robert Sedgewick
Rok wydania: 1999, 2003
Ilość stron: 634 (tom I), 472 (tom V)
Gdzie kupić: allegro (rzadko dostępna, należy raczej szukać w bibliotece, szczególnie tomu V)
Język: C++
Autor przedstawia algorytmy i prezentuje od razu praktyczną implementację w C++. Niestety na język polski został przetłumaczony tylko tom I i V. W tomie I można znaleźć podstawy algorytmiki, a w tomie V mnóstwo informacji o algorytmach grafowych.
Rozdziały:
Tom I
1 Podstawy
2 Dane strukturalne
3 Sortowanie
4 Wyszukiwanie
Tom V – Grafy
Rozdział 17. Rodzaje grafów i ich własności
Rozdział 18. Przeszukiwanie grafów
Rozdział 19. Grafy skierowane i dagi
Rozdział 20. Minimalne drzewa rozpinające
Rozdział 21. Najkrótsze ścieżki
Rozdział 22. Przepływ sieci
Algorytmika praktyczna. Nie tylko dla mistrzów
Wydawnictwo: PWN
Autor: Piotr Stańczyk
Rok wydania: 2009
Ilość stron: 312
Gdzie kupić: w sprzedaży
Język: C++
Książka ta jest inna niż wcześniej wymienione pozycje. Nie znajdziesz w niej analizy algorytmu. Znajdziesz za to opis i dokładną implementację w C++ algorytmów, które najczęściej występują na konkursach algorytmiczno-programistycznych. Wymagana jest znajomość C++ wraz z biblioteką STL. Autor omawia działy informatyki najczęściej występujące na konkursach i jednocześnie podaje literaturę, w której znajdziemy teoretyczny opis algorytmu. Praktyczne nastawienie do tematu miała również książka „Wyzwania programistyczne” która, niestety, jest niedostępna w sprzedaży, nie ma jej nawet na allegro.
Rozdziały:
- Algorytmy grafowe
- Geometria obliczeniowa na płaszczyźnie
- Kombinatoryka
- Teoria liczb
- Struktury danych
- Algorytmy tekstowe
- Algebra liniowa
- Elementy strategii podczas zawodów
Wyzwania programistyczne
Wydawnictwo: WSIP
Autor: Steven S. Skiena, Miguel A. Revilla
Rok wydania: 2004
Ilość stron: 352
Gdzie kupić: raczej nie do kupienia, jedynie można szukać w bibliotekach
Język: Java, C, C++, Pascal
Jest to książka, która również skupia się na przygotowaniach do konkursów informatycznych. Książka składa się z kilkunastu rozdziałów, dotyczących różnych działów algorytmiki, w tym: sortowania, teorii liczb, przeszukiwania grafów, algorytmów grafowych, przeszukiwania z nawrotami, programowania dynamicznego, geometrii obliczeniowej. Niestety obecnie nie do dostania – należy szukać w bibliotekach.
Algorytmy
Wydawnictwo: PWN
Autorzy: Sanjoy Dasgupta, Christos Papadimitriou, Umesh Vazirani
Rok wydania: 2011
Ilość stron: 360
Gdzie kupić: w sprzedaży
Język: pseudokod
Autorzy omawiają po kolei różne działy algorytmiki. Jako jedna z nielicznych zawiera wprowadzenie do algorytmów kwantowych.
Rozdziały:
0. Prolog
- Algorytmy na liczbach
- Algorytmy "dziel i zwyciężaj"
- Dekompozycje grafów
- Scieżki w grafach
- Algorytmy zachłanne
- Programowanie dynamiczne
- Programowanie liniowe i redukcje
- Problemy NP-zupełne
- Jak radzić sobie z NP-zupełnością
- Algorytmy kwantowe
Olimpiada informatyczna (niebieskie książeczki) I - XVIII
Wydawnictwo: Komitet Główny Olimpiady Informatycznej
Autorzy: Profesorowie i byli olimpijczycy
Rok wydania: 1994 - 2012
Gdzie kupić: część w sprzedaży, wszystkie do pobrania (na stronie olimpiady)
Język: pseudokod, Pascal, C, C++
Książeczki z olimpiady informatycznej zwane niebieskimi książeczkami zawierają informacje o przebiegu olimpiady, oraz – co najważniejsze – omówienie każdego zadania. Bardzo przydatne, ponieważ można się nauczyć jak w praktyce wykorzystać wiedzę algorytmiczną.
Zaawansowani:
Literatura dla osób, które mają już pewną wiedzę z różnych działów algorytmiki. i szukają bardziej specjalistycznych opracowań.
Sztuka programowania
Wydawnictwo: WNT
Autorzy: Donald E. Knuth
Rok wydania: 2002 - 2008
Gdzie kupić: allegro (czasami)
Język: asembler
Dzieło Donalda Knutha jest uznawane za jedną z najlepszych książek informatycznych w historii. Jest to dzieło napisane wybitnie dla specjalistów. Każdy algorytm opisany w książce został dokładnie przeanalizowany. Polecam każdemu kto ma już doświadczenie w projektowaniu i analiza algorytmów i chce pogłębić swoją wiedzę.
Rozdziały:
Tom I – Algorytmy podstawowe
Rozdział 1. Pojęcia podstawowe
Rozdział 2. Struktury danych
Tom 1 zeszyt 1 MMIX - Komputer na nowe tysiąclecie
Tom II – Algorytmy seminumeryczne
Rozdział 3. Liczby losowe
Rozdział 4. Arytmetyka
Tom III – Sortowanie i wyszukiwanie
Rozdział 5 - Sortowanie
Rozdział 6 – Wyszukiwanie
Tom IV zeszyt 2 - Generowanie wszystkich krotek i permutacji
Rozdział 7 – Wyszukiwanie kombinatoryczne (tylko część druga rozdziału)
Kombinatoryka dla programistów
Wydawnictwo: WNT
Autor: Witold Lipski
Rok wydania: 2003
Ilość stron: 276
Gdzie kupić: w sprzedaży
Język: Pascal, C++
W książce przedstawiono kombinatorykę, która jest przydatna informatykom. Każdy algorytm został opisany, przeanalizowany i zapisany w języku Pascal (tylko w ostatnim rozdziale są pseudokody). Dodatkowo w nowym wydaniu na końcu można znaleźć kod algorytmów w C++ napisany przez znanego Polskiego programistę Tomasza Czajkę. Nie jest to lektura łatwa, ale przydatna dla każdego kto chce lepiej poznać algorytmy kombinatoryczne.
- Wprowadzenie do kombinatoryki
- Algorytmy grafowe
- Znajdowanie najkrótszych dróg w grafie
- Przepływy w sieciach i zagadnienia pokrewne
- Matroidy
Geometria obliczeniowa algorytmy i zastosowania
Wydawnictwo: WNT
Autorzy: M. de Berg, M. van Kreveld, M. Overmars, O. Schwarzkopf
Rok wydania: 2007
Ilość stron: 432
Gdzie kupić: w sprzedaży
Język: Pseudokod
Geometria obliczeniowa znajduje w dzisiejszych czasach szerokie zastosowanie w wielu dziedzinach nauki. Autorzy przybliżają geometrię obliczeniową wraz z zastosowaniami. Wymagana jest podstawowa wiedza z algorytmów i struktur danych, ale nie jest wymagana jakaś szczególna wiedza z geometrii.
Rozdziały:
- Geometria obliczeniowa
- Przecinanie się odcinków Nakładanie map tematycznych
- Triangulacja wielokąta. Ochrona galerii sztuki
- Programowanie liniowe Produkcja z użyciem form odlewniczych
- Przeszukiwanie obszarów ortogonalnych Zadawanie pytań bazie danych
- Lokalizacja punktu. Wiedza o tym, gdzie się znajdujemy
- Diagramy Yoronoi. Problem urzędu pocztowego
- Układy i dualność. Superpróbkowanie w śledzeniu promieni
- Triangulacje Delaunaya. Interpolacja wysokości
- Więcej geometrycznych struktur danych. Okienkowanie
- Otoczka wypukła. Pomieszanie sprawy
- Binarne podziały przestrzeni. Algorytm malarza
- Planowanie ruchu robota. Docieranie tam, gdzie chcemy być
- Drzewa ćwiartek. Tworzenie niejednolitych siatek
- Grafy widzialności. Znajdywanie najkrótszej drogi
- Przeszukiwanie obszarów sympleksowych Okienkowanie jeszcze raz
Geometria obliczeniowa. Wprowadzenie
Wydawnictwo: Helion
Autorzy: M Franco P. Preparata, Michael Ian Shamos
Rok wydania: 2003
Ilość stron: 392
Gdzie kupić: allegro (rzadko dostępne, lepiej poszukać w bibliotekach)
Język: Pascal
Jest to książka szczegółowo wprowadzająca w tematykę geometrii obliczeniowej. Jest to rozwinięcie doktoratu jednego z autorów.
Rozdziały:
- Wprowadzenie
- Przeszukiwanie geometryczne
- Otoczki wypukłe: algorytmy podstawowe
- Otoczki wypukłe: rozszerzenia i zastosowanie
- Bliskość: algorytmy podstawowe
- Bliskość: odmiany i uogólnienia
- Przecięcia
- Geometria prostokątów
Algorytmy aproksymacyjne
Wydawnictwo: WNT
Autor: Vijay V. Vazarini
Rok wydania: 2005
Ilość stron: 384
Gdzie kupić: w sprzedaży
Język: Pseudokod
Problemy NP-zupełne od wielu lat dręczą informatyków. Algorytmy wykładnicze są zbyt wolne, aby używać je dla sensownej liczby danych. W takim przypadku pozostaje nam zaprojektowanie algorytmu wielomianowego, który by dawał przybliżone rozwiązanie problemu (ale często wystarczające), czyli algorytmu aproksymacyjnego. O tym właśnie traktuje ta książka. Nie jest to lektura łatwa, ale w sam raz dla osoby, która umie już sporo algorytmiki i matematyki dyskretnej i chce pogłębić wiedzę na temat algorytmów aproksymacyjnych i klasy problemów NP-zupełnych.
Rozdziały:
Rozdział 1. Wstęp
Część I. Algorytmy kombinatoryczne
Rozdział 2. Pokrycie zbioru
Rozdział 3. Drzewo Steinera i problem komiwojażera
Rozdział 4. Przekrój wielokrotny i k-przekrój
Rozdział 5. Problem k-centrum
Rozdział 6. Rozcyklający zbiór wierzchołków
Rozdział 7. Najkrótsze nadsłowo
Rozdział 8. Problem plecakowy
Rozdział 9. Pakowanie
Rozdział 10. Najkrótsze uszeregowanie
Rozdział 11. Euklidesowy problem komiwojażera
Część II. Algorytmy oparte na programowaniu liniowym
Rozdział 12. Wprowadzenie do dualności programowania liniowego
Rozdział 13. Dopasowanie dualne dla problemu pokrycia zbioru
Rozdział 14. Zastosowanie zaokrąglania do problemu pokrycia zbioru
Rozdział 15. Schemat prymalno—dualny dla problemu pokrycia zbioru
Rozdział 16. Maksymalna spełnialność
Rozdział 17. Szeregowanie zadań na niezależnych maszynach
Rozdział 18. Multiprzekrój i całkowitoliczbowy przepływ wielotowarowy w drzewach
Rozdział 19. Przekrój wielokrotny
Rozdział 20. Multiprzekrój w dowolnych grafach
Rozdział 21. Najbardziej rozrzedzony przekrój
Rozdział 22. Las Steinera
Rozdział 23. Sieć Steinera
Rozdział 24. Problem lokalizacji
Rozdział 25. Problem k-mediany
Rozdział 26. Programowanie półokreślone
Część III. Inne zagadnienia
Rozdział 27. Najkrótszy wektor
Rozdział 28. Zliczanie
Rozdział 29. Trudność aproksymacji
Rozdział 30. Problemy otwarte
Rozdział A. Przegląd teorii złożoności obliczeniowej
Rozdział B. Podstawowe fakty z teorii prawdopodobieństwa
Matematyka używana przy projektowaniu i analizie algorytmów:
Pierwsze algorytmy powstały jeszcze zanim pojawiły się pierwsze komputery – były przydatne do obliczeń matematycznych. Nikt zajmujący się algorytmiką nie może się obyć bez podstawowego aparatu matematycznego.
Matematyka konkretna
Wydawnictwo: PWN
Autorzy: Ronald L. Graham, Donald E. Knuth, Oren PatashnikRok wydania: 2008
Ilość stron: 720
Rok wydania: 2008
Gdzie kupić: w sprzedaży
Jest to książka, w której autorzy starają się nauczyć czytelnika umiejętności rachunkowych. Po przeczytaniu tej książki nikomu nie powinna być straszna nawet największa suma. W dodatku autorzy robią to z humorem – sądzą, że matematyka nie musi być wcale szalenie poważną dziedziną i można się przy niej dobrze bawić.
Rozdziały:
- Problemy rekurencyjne
- Sumy
- Funkcje całkowitoliczbowe
- Teoria liczb
- Współczynniki dwumianowe
- Liczby szczególne
- Funkcje tworzące
- Prawdopodobieństwo dyskretne
- Asymptotyka
Matematyka dyskretna
Wydawnictwo: PWN
Autorzy: Ronald Kennweth A. Ross, Charles R.B. Wright
Ilość stron: 900
Rok wydania: 2008
Gdzie kupić: w sprzedaży
Książka przedstawia całą podstawową matematykę przydatną informatykom. Na początku przedstawione są rozdziały podstawowe, dzięki czemu osoba o słabszym przygotowaniu matematycznym będzie mogła łatwiej rozpocząć studiowanie tej książki.
Rozdziały:
- Zbiory, ciągi i funkcje
- Elementy logiki
- Relacje
- Indukcja i rekurencja
- Zliczanie
- Wprowadzenie do grafów i drzew
- Rekurencja, drzewa i algorytmy
- Grafy skierowane
- Rachunek prawdopodobieństwa
- Algebry Boole’a
- Więcej o relacjach
- Struktury algebraiczne
- Rachunek predykatów i zbiory nieskończone
Wprowadzenie do teorii grafów
Wydawnictwo: PWN
Autorzy: Robin J. Wilson
Ilość stron: 224
Rok wydania: 2007
Gdzie kupić: w sprzedaży
Jest to książka łagodnie wprowadzająca w problematykę teorii grafów. Duża ilość przykładów i rysunków pozwala na stosunkowo łatwe przyswojenie materiału.
Rozdziały:
- Wprowadzenie
- Definicje i przykłady
- Drogi i cykle
- Drzewa
- Planarność
- Kolorowanie grafów
- Digrafy
- Skojarzenia, małżeństwa i twierdzenie Mengera
- Matroidy
Aspekty kombinatoryki
Wydawnictwo: WNT
Autorzy: Victor Bryant
Ilość stron: 290
Rok wydania: 2007
Gdzie kupić: allegro
Książka omawia kombinatorykę. Zawiera bardzo dużo informacji o teorii grafów. Oprócz kombinatoryki zawiera również inne tematy z matematyki dyskretnej.
Rozdziały:
- Współczynniki dwumianowe
- Ile jest drzew?
- Twierdzenie o małżeństwach
- Trzy podstawowe zasady
- Kwadraty łacińskie
- Pierwsze twierdzenie teorii grafów
- Kolorowe krawędzi
- Haremy i turnieje
- Twierdzenia minimaksowe
- Rekurencja
- Kolorowanie wierzchołków
- Wielomiany szachowe
- Grafy planarne
- Kolorowanie map
- Konfiguracje i kody
- Teoria Ramseya
Wykłady z kombinatoryki
Wydawnictwo: WNT
Autorzy: Zbigniew Palka, Andrzej Ruciński
Ilość stron: 199
Rok wydania: 2007
Gdzie kupić: w sprzedaży
Pozycja przedstawia zagadnienia matematyki dyskretnej kładąc szczególny nacisk na kombinatorykę.
Rozdziały:
- Czym zajmuje się kombinatoryka?
- Prawa i metody przeliczania
- Schematy wyboru
- Ciągi binarne i współczynniki dwumianowe
- Równania rekurencyjne i funkcje tworzące
- Zasada włączania i wyłączania
- Wybory z ograniczeniami
- Podziały
- Przeliczanie grafów oznaczonych
10.Przeliczanie struktur nieoznaczonych
Dzięki! Czegoś takiego szukałem.
Dobra robota.
@tdudzik Ta jasne przeczytałem, jakby tak było, to bym był encyklopedią algorytmiczną. Część czytałem, a większość co najmniej przejrzałem.
Czy "Wprowadzenie do algorytmów" opisuje algorytmy wyszukiwania najkrótszej ścieżki w grafie, takie jak A* i IDA*?
Algorytmy, struktury danych i techniki programowania Piotra Wróblewskiego ma nowe piąte, znacznie poszerzone wydanie. http://kaczus.ppa.pl/art/algorytmy_struktury,21.html
@JumpSmerf przeczytałeś wszystkie te książki? :D
Dzięki za wpis! Bardzo pomocny:)