Darmowa dostawa od 150,00 zł
Myślenie algorytmiczne. Jak rozwiązywać problemy za pomocą algorytmów
Promocja Okazja

Myślenie algorytmiczne. Jak rozwiązywać problemy za pomocą algorytmów

  • Rok wydania: 2022 Oprawa: miękka ISBN: 9788328383357 Ilość stron: 456 Format: 17,5 x 23,5 cm
Rozmiar

80,10 zł

brutto / 1szt.
Najniższa cena z 30 dni przed obniżką: 89,00 zł / szt.-10%
Cena regularna: 89,00 zł / szt.-10%
Cena katalogowa:
Możesz kupić za pkt.
z
Produkt dostępny w bardzo dużej ilości
Skontaktuj się z obsługą sklepu, aby oszacować czas przygotowania tego produktu do wysyłki.
Produkt dostępny w bardzo dużej ilości
Wysyłka
14 dni na łatwy zwrot
Sprawdź, w którym sklepie obejrzysz i kupisz od ręki
Myślenie algorytmiczne. Jak rozwiązywać problemy za pomocą algorytmów
Myślenie algorytmiczne. Jak rozwiązywać problemy za pomocą algorytmów
Bezpieczne zakupy
Odroczone płatności. Kup teraz, zapłać później, jeżeli nie zwrócisz
Kup teraz, zapłać później - 4 kroki
Przy wyborze formy płatności, wybierz PayPo.PayPo - kup teraz, zapłać za 30 dni
PayPo opłaci twój rachunek w sklepie.
Na stronie PayPo sprawdź swoje dane i podaj pesel.
Po otrzymaniu zakupów decydujesz co ci pasuje, a co nie. Możesz zwrócić część albo całość zamówienia - wtedy zmniejszy się też kwota do zapłaty PayPo.
W ciągu 30 dni od zakupu płacisz PayPo za swoje zakupy bez żadnych dodatkowych kosztów. Jeśli chcesz, rozkładasz swoją płatność na raty.
Po zakupie otrzymasz pkt.

Jak już wiesz, struktura danych jest sposobem zorganizowania danych w pamięci komputera, co ma umożliwić szybkie wykonywanie zamierzonych operacji. Pamiętasz też, że algorytm jest sekwencją działań pozwalających na rozwiązanie problemu. Często warunkiem poprawnego działania algorytmu i pomyślnego rozwiązania problemu programistycznego jest trafny wybór struktury danych. To bardzo ważne zagadnienie. Nawet jeśli dobrze znasz wybrany język programowania, to aby pisać dobry kod, musisz nabrać biegłości w posługiwaniu się algorytmami i strukturami danych.

Dzięki tej książce nauczysz się rozwiązywać ambitne problemy algorytmiczne i projektować własne algorytmy. Materiałem do ćwiczeń są tu przykłady zaczerpnięte z konkursów programistycznych o światowej renomie. Dowiesz się, jak klasyfikować problemy, czym się kierować podczas wybierania struktury danych i jak dobierać odpowiednie algorytmy. Sprawdzisz także, w jaki sposób wybór struktury danych może wpłynąć na czas wykonywania algorytmów. Nauczysz się też używać takich metod jak rekurencja, programowanie dynamiczne czy wyszukiwanie binarne. Swoich sił spróbujesz w ramach samodzielnej pracy nad modyfikacją poszczególnych algorytmów. Zamieszczone tu szczegółowe analizy kodu pomogą Ci w zrozumieniu praktycznych aspektów stosowania algorytmów i struktur danych.

W książce między innymi:

  • algorytm przeszukiwania wszerz
  • algorytm Dijkstry
  • struktura zbiorów rozłącznych
  • kopce
  • tablice mieszające

Algorytmy: zmierzysz się z naprawdę trudnymi problemami!

O autorze

Dr Daniel Zingaro jest wielokrotnie nagradzanym wykładowcą Uniwersytetu Toronto. Głównym obszarem jego badań naukowych jest metodyka nauczania informatyki i sposób przyswajania tej dziedziny wiedzy. Słynie z niekonwencjonalnego i innowacyjnego podejścia do pracy ze studentami.

Spis treści

Przedmowa

Podziękowania

Wprowadzenie

  • Zasoby internetowe
  • Dla kogo jest przeznaczona ta książka
  • Język programowania
    • Dlaczego wybrałem język C?
    • Słowo kluczowe static
    • Pliki nagłówkowe
    • Zwalnianie pamięci
  • Zagadnienia
  • Witryny oceniające
  • Anatomia opisu problemu
  • Problem: Kolejki po jedzenie
    • Problem
    • Rozwiązanie problemu
  • Uwagi

1. Tablice mieszające

  • Problem 1. Płatki śniegu
    • Problem
    • Uproszczenie problemu
    • Rozwiązywanie podstawowego problemu
    • Rozwiązanie 1. Porównywanie parami
    • Rozwiązanie 2. Zmniejszenie liczby wykonywanych operacji
  • Tablice mieszające
    • Projekt tablicy mieszającej
    • Dlaczego warto używać tablic mieszających?
  • Problem 2. Słowa złożone
    • Problem
    • Wskazywanie słów złożonych
    • Rozwiązanie
  • Problem 3. Sprawdzanie pisowni - usuwanie litery
    • Problem
    • Rozważania o zastosowaniu tablic mieszających
    • Rozwiązanie doraźne
  • Podsumowanie
  • Uwagi

2. Drzewa i rekurencja

  • Problem 1. Halloweenowy łup
    • Problem
    • Drzewa binarne
    • Rozwiązywanie problemu dla przykładowego drzewa
    • Reprezentacja drzew binarnych
    • Zbieranie wszystkich cukierków
    • Zupełnie inne rozwiązanie
    • Przechodzenie minimalnej liczby ulic
    • Odczyt danych wejściowych
  • Dlaczego korzystać z rekurencji?
  • Problem 2. Odległość pomiędzy potomkami
    • Problem
    • Odczyt danych wejściowych
    • Liczba potomków w odległości d od wierzchołka
    • Liczba potomków dla wszystkich wierzchołków
    • Sortowanie wierzchołków
    • Wyświetlanie wyników
    • Funkcja main
  • Podsumowanie
  • Uwagi

3. Memoizacja i programowanie dynamiczne

  • Problem 1. Burgerowa gorączka
    • Problem
    • Określenie planu rozwiązania problemu
    • Określanie optymalnego rozwiązania
    • Rozwiązanie 1. Zastosowanie rekurencji
    • Rozwiązanie 2. Memoizacja
    • Rozwiązanie 3. Programowanie dynamiczne
  • Memoizacja i programowanie dynamiczne
    • Krok 1. Struktura optymalnego rozwiązania
    • Krok 2. Rozwiązanie rekurencyjne
    • Krok 3. Memoizacja
    • Krok 4. Programowanie dynamiczne
  • Problem 2. Skąpcy
    • Problem
    • Określanie optymalnego rozwiązania
    • Rozwiązanie 1. Rekurencja
    • Funkcja main
    • Rozwiązanie 2. Memoizacja
  • Problem 3. Rywalizacja hokejowa
    • Problem
    • Rozważania dotyczące rywalizacji
    • Określenie optymalnego rozwiązania
    • Rozwiązanie 1. Rekurencja
    • Rozwiązanie 2. Memoizacja
    • Rozwiązanie 3. Programowanie dynamiczne
    • Optymalizacja zużycia pamięci
  • Problem 4. Sposoby zaliczenia
    • Problem
    • Rozwiązanie: memoizacja
  • Podsumowanie
  • Uwagi

4. Grafy i przeszukiwanie wszerz

  • Problem 1. Pogoń skoczka
    • Problem
    • Optymalne ruchy skoczka
    • Najlepszy wynik skoczka
    • Przesunięcie i powrót skoczka
    • Optymalizacja czasu działania
  • Grafy i przeszukiwanie wszerz
    • Czym są grafy?
    • Grafy a drzewa
    • Algorytm BFS na grafach
  • Problem 2. Wspinaczka po linie
    • Problem
    • Rozwiązanie 1. Poszukiwanie ruchów
    • Rozwiązanie 2. Nowy model
  • Problem 3. Tłumaczenie książek
    • Problem
    • Budowanie grafu
    • Implementacja algorytmu BFS
    • Koszt całkowity
  • Podsumowanie
  • Uwagi

5. Najkrótsze ścieżki na grafach ważonych

  • Problem 1. Myszy w labiryncie
    • Problem
    • Zostawiamy algorytm BFS
    • Najkrótsze ścieżki na grafach ważonych
    • Tworzenie grafu
    • Implementacja algorytmu Dijkstry
    • Dwie optymalizacje
  • Algorytm Dijkstry
    • Efektywność działania algorytmu Dijkstry
    • Krawędzie o wagach ujemnych
  • Problem 2. Planowanie odwiedzin u babci
    • Problem
    • Macierz sąsiedztwa
    • Konstruowanie grafu
    • Dziwaczne ścieżki
    • Zadanie 1. Najkrótsze ścieżki
    • Zadanie 2. Liczba najkrótszych ścieżek
  • Podsumowanie
  • Uwagi

6. Wyszukiwanie binarne

  • Problem 1. Karmienie mrówek
    • Problem
    • Nowy rodzaj problemów z drzewami
    • Wczytywanie danych wejściowych
    • Sprawdzanie wykonalności
    • Poszukiwanie rozwiązania
  • Wyszukiwanie binarne
    • Wydajność działania algorytmu wyszukiwania binarnego
    • Określanie wykonalności
    • Przeszukiwanie tablicy posortowanej
  • Problem 2. Skok przez rzekę
    • Problem
    • Koncepcja zachłanności
    • Testowanie wykonalności
    • Poszukiwanie rozwiązania
    • Wczytywanie danych wejściowych
  • Problem 3. Jakość życia
    • Problem
    • Sortowanie wszystkich prostokątów
    • Wyszukiwanie binarne
    • Sprawdzanie wykonalności
    • Szybsze sprawdzanie wykonalności
  • Problem 4. Drzwi w jaskini
    • Problem
    • Rozwiązywanie podzadań
    • Zastosowanie wyszukiwania liniowego
    • Stosowanie wyszukiwania binarnego
  • Podsumowanie
  • Uwagi

7. Kopce i drzewa segmentów

  • Problem 1. Promocja w supermarkecie
    • Problem
    • Rozwiązanie 1. Wartość maksymalna i minimalna w tablicy
    • Kopce maksymalne
    • Kopce minimalne
    • Rozwiązanie 2. Kopce
  • Kopce
    • Inne zastosowania
    • Wybór struktury danych
  • Problem 2. Budowanie drzewców
    • Problem
    • Rekurencyjne wyświetlanie drzewców
    • Sortowanie na podstawie etykiet
    • Rozwiązanie 1. Rekurencja
    • Pytania o sumę zakresu
    • Drzewa segmentów
    • Rozwiązanie 2. Drzewa segmentów
  • Drzewa segmentów
  • Problem 3. Suma dwóch
    • Problem
    • Wypełnianie drzewa segmentów
    • Znajdowanie odpowiedzi z użyciem drzewa segmentów
    • Aktualizacja drzewa segmentów
    • Funkcja main
  • Podsumowanie
  • Uwagi

8. Struktura zbiorów rozłącznych

  • Problem 1. Sieć społecznościowa
    • Problem
    • Modelowanie danych w formie grafu
    • Rozwiązanie 1. BFS
    • Struktura zbiorów rozłącznych
    • Rozwiązanie 2. Struktura zbiorów rozłącznych
    • Optymalizacja 1. Łączenie na podstawie wielkości
    • Optymalizacja 2. Skracanie ścieżek
  • Struktura zbiorów rozłącznych
    • Relacje: Trzy wymagania
    • Wybieranie struktury zbiorów rozłącznych
    • Optymalizacje
  • Problem 2. Przyjaciele i wrogowie
    • Problem
    • Rozszerzenie: wrogowie
    • Funkcja main
    • Operacje find i union
    • Operacje UstawJakoPrzyjaciół i UstawJakoWrogów
    • Operacje CzySąPrzyjaciółmi i CzySąWrogami
  • Problem 3. Kłopot z szufladami
    • Problem
    • Równoważne szuflady
    • Funkcja main
    • Implementacja operacji find i union
  • Podsumowanie
  • Uwagi

Podsumowanie

A. Efektywność algorytmów

  • Kwestia czasu. i nie tylko
  • Notacja dużego O
    • Czas liniowy
    • Czas stały
    • Inny przykład
    • Czas kwadratowy
    • Notacja dużego O w tej książce

B. Ponieważ nie mogłem się powstrzymać

  • Płatki śniegu: niejawne listy połączone
  • Burgerowa gorączka: rekonstrukcja rozwiązania
  • Pogoń skoczka: kodowanie ruchów
  • Algorytm Dijkstry: stosowanie kopca
    • Myszy w labiryncie: śledzenie z użyciem kopców
    • Myszy w labiryncie: implementacja z użyciem kopca
  • Skracanie skracania ścieżek
    • Krok 1. Żadnych więcej operatorów trójargumentowych
    • Krok 2. Bardziej czytelne operatory przypisania
    • Krok 3. Wyjaśnienie rekurencji

C. Z podziękowaniem za problemy

Marka
Autor
Daniel Zingaro
ISBN
9788328383357
Potrzebujesz pomocy? Masz pytania?Zadaj pytanie a my odpowiemy niezwłocznie, najciekawsze pytania i odpowiedzi publikując dla innych.
Zapytaj o produkt
Jeżeli powyższy opis jest dla Ciebie niewystarczający, prześlij nam swoje pytanie odnośnie tego produktu. Postaramy się odpowiedzieć tak szybko jak tylko będzie to możliwe. Dane są przetwarzane zgodnie z polityką prywatności. Przesyłając je, akceptujesz jej postanowienia.
Napisz swoją opinię
Twoja ocena:
5/5
Dodaj własne zdjęcie produktu:
pixel