Spis treści. Rozdział 2. Rekurencja Definicja rekurencji Ilustracja pojęcia rekurencji Jak wykonują się programy rekurencyjne?...

Podobne dokumenty
Rozdział 4. Algorytmy sortowania 73 Rozdział 5. Typy i struktury danych 89 Rozdział 6. Derekursywacja i optymalizacja algorytmów 147

Szczegółowy program kursów szkoły programowania Halpress

Wprowadzenie do algorytmów / Thomas H. Cormen [et al.]. - wyd. 7. Warszawa, Spis treści. Wprowadzenie 2

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

1. Algorytmika. WPROWADZENIE DO ALGORYTMIKI Wprowadzenie do algorytmów. Pojęcie algorytmu.

Rozkład materiału do realizacji informatyki w szkole ponadgimnazjalnej w zakresie rozszerzonym

Zaawansowane algorytmy i struktury danych

Algorytmika i pseudoprogramowanie

Wybrane wymagania dla informatyki w gimnazjum i liceum z podstawy programowej

Algorytmy i struktury danych.

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Algorytmy i struktury danych, C3

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

KARTA MODUŁU KSZTAŁCENIA

Egzamin, AISDI, I termin, 18 czerwca 2015 r.

PRZEDMIOTOWY SYSTEM OCENIANIA INFORMATYKA.

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Roman Mocek Zabrze Opracowanie zbiorcze ze źródeł Scholaris i CKE

Przedmowa... 9 Rozdział 1. Zanim wystartujemy Rozdział 2. Rekurencja Rozdział 3. Analiza złożoności algorytmów... 49

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

WYMAGANIA EGZAMINACYJNE Egzamin maturalny z INFORMATYKI

Matematyka dyskretna

Teraz bajty. Informatyka dla szkół ponadpodstawowych. Zakres rozszerzony. Część 1.

Wprowadzenie do programowania

KARTA PRZEDMIOTU. Algorytmy i struktury danych, C4

Wymagania edukacyjne i sposoby sprawdzania edukacyjnych osiągnięć uczniów z informatyki - klasy II zakres rozszerzony

Algorytmy i Struktury Danych

Opis efektów kształcenia dla modułu zajęć

Opisy efektów kształcenia dla modułu

Zagadnienia na egzamin dyplomowy

PROGRAM KOŁA INFORMATYCZNEGO

Literatura. 1) Pojęcia: złożoność czasowa, rząd funkcji. Aby wyznaczyć pesymistyczną złożoność czasową algorytmu należy:

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny) Niestacjonarne (stacjonarne / niestacjonarne)

Przedmiot: Informatyka wymagania na poszczególne oceny Rok szkolny od 2008/2009

Informatyka A. Algorytmy

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Złożoność obliczeniowa zadania, zestaw 2

Sortowanie - wybrane algorytmy

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010

5. Podstawowe algorytmy i ich cechy.

Technologie informacyjne Wykład VII-IX

Algorytmy i struktury danych Metody programowania Języki i paradygmaty programowania Nazwa jednostki prowadzącej przedmiot Instytut Matematyki

Wymagania edukacyjne i sposoby sprawdzania edukacyjnych osiągnięć uczniów z informatyki - klasy II zakres rozszerzony

Przykładowe rozkłady materiału

Sortowanie przez scalanie

ID2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki stacjonarne

PRZEDMIOTOWY SYSTEM OCENIANIA INFORMATYKA. KLASA 2F

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

PRZEDMIOTOWY SYSTEM OCENIANIA

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013. Projektowanie i analiza algorytmów

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

KLASA 1 i 2. Rozdział I

PODSTAWY PROGRAMOWANIA STRUKTURALNEGO (C) SYLABUS A. Informacje ogólne

Schemat programowania dynamicznego (ang. dynamic programming)

Informatyka wprowadzenie do algorytmów (II) dr hab. inż. Mikołaj Morzy

Niniejszy ebook jest własnością prywatną. Został zakupiony legalnie w serwisie Netpress.pl, będącym oficjalnym Partnerem Wydawcy.

E-1EZ1-03-s2. Elektrotechnika I stopień (I stopień / II stopień) Ogólnoakademicki (ogólno akademicki / praktyczny)

Algorytmy i Struktury Danych.

KARTA KURSU (realizowanego w module specjalności) Metody numeryczne

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

Język programowania DELPHI / Andrzej Marciniak. Poznań, Spis treści

WYMAGANIA EDUKACYJNE Z INFORMATYKI dla klasy III gimnazjalnej, Szkoły Podstawowej w Rychtalu

Okręgowa Komisja Egzaminacyjna w Krakowie 1

Język programowania PASCAL

Podstawy programowania. Wprowadzenie

IZ2ZSD2 Złożone struktury danych Advanced data structures. Informatyka II stopień ogólnoakademicki niestacjonarne

Podstawy Programowania

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

Nowa podstawa programowa IV etap edukacyjny szkoła ponadgimnazjalna

ZAGADNIENIA DO EGZAMINU DYPLOMOWEGO NA STUDIACH INŻYNIERSKICH. Matematyka dyskretna, algorytmy i struktury danych, sztuczna inteligencja

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

WYMAGANIA EDUKACYJNE

Szkoły ponadgimnazjalne, PODSTAWA PROGRAMOWA. Cele kształcenia wymagania ogólne

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Przedmiotowe Zasady Oceniania z informatyki KLASA 1

Grafy i sieci w informatyce - opis przedmiotu

Kierunek i poziom studiów: Matematyka, studia I stopnia (licencjackie), rok I

WPROWADZENIE DO ALGORYTMIKI

KARTA KURSU. Algorytmy, struktury danych i techniki programowania. Algorithms, Data Structures and Programming Techniques

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Wstęp do programowania

TEORETYCZNE PODSTAWY INFORMATYKI

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Fakultet Informatyczny Algorytmy i ProgramowanIe (API)

Informatyka klasa III Gimnazjum wymagania na poszczególne oceny

TEORETYCZNE PODSTAWY INFORMATYKI

Wykład 0 Informacje Podstawowe

Wymagania edukacyjne. Języki i techniki programowania. Klasa IIc i IIIc. II Liceum Ogólnokształcące im. Adama Asnyka w Bielsku-Białe

Techniki konstruowania algorytmów. Metoda dziel i zwyciężaj

Strategia "dziel i zwyciężaj"

Zagadnienia na egzamin dyplomowy dla kierunku Informatyka. studia I stopnia rok akademicki 2019/2020

Zwięzły kurs analizy numerycznej

Transkrypt:

Spis treści Przedmowa...... 9 Co odróżnia tę książkę od innych podręczników?......... 9 Dlaczego C++?... IO Jak należy czytać tę książkę?........................ 11 Co zostało opisane w tej książce?........... 11 Programy przykładowe... 13 Konwencje typograficzne i oznaczenia...... 14 Uwagi do wydania V................... 15 Rozdział 1. Zanim wystartujemy...... 17 Jak to wcześniej bywało, czyli wyjątki z historii maszyn algorytmicznych... 19 Jak to się niedawno odbyło, czyli o tym, kto wy myślił" metodologię programowania................ 23 Proces koncepcji programów......................... 24 Poziomy abstrakcji opisu i wybór języka............. 25 Poprawność algorytmów.................. 26 Zadania......... 28 Rozwiązania i wskazówki do zadań........................... 28 Rozdział 2. Rekurencja... 31 Definicja rekurencji............ 31 Ilustracja pojęcia rekurencji................ 33 Jak wykonują się programy rekurencyjne?..................... 34 Niebezp ieczeństwa rekurencji... 36 Ciąg Fibonacciego... 36 Stack overflow!.............. 38 Pułapek ciąg dalszy............ 39 Stąd do wieczności... 40 Definicja poprawna, ale......................... 40 Typy programów rekurencyjnych.:............................... 41 Myślenie rekurencyjne... 43 Przykład 1.: Spirala...................... 44 Przykład 2.: Kwadraty parzyste"............... 45 Uwagi praktyczne na temat technik rekurencyjnych................... 46 Zadania............... 47 Rozwiązania i wskazówki do zadań........... 50

4 Algorytmy, struktury danych I techniki programowania Rozdział 3. Typy i struktury danych.. 55 Typy podstawowe i złożone... 56 Tablice... 57 C iągi znaków i napisy w C++... 58 Typy złożone... 60 Struktury i wprowadzenie pojęcia referencji... 60 Klasy i programowanie obiektowe... 62 Abstrakcyjne struktury danych... 63 Listy jednokierunkowe... 64 Tablicowa implementacja list... 84 Stos... 89 Kolejki FIFO... 93 Sterty i kolejki priorytetowe....... 96 Drzewa i ich reprezentacje......................... I O I Zbiory........................... 113 STL, czyli struktury danych dla leniuchów................ I 15 Klasyczne kontenery sekwencyjne........... I 16 Adaptery (nakładki na inne kontenery).... 120 Kontenery asocjacyjne..................... 121 Algorytmy w STL...................... 122 Dalsze materiały na temat STL.................. 123 Zadania.................... 123 Rozwiązan ia zadań...................... 124 Rozdział 4. Analiza złożoności algorytmów............. 125 Definicje i przykłady............... 126 Jeszcze raz funkcja silnia... 129 Zerowanie fragmentu tablicy... 133 Wpadamy w pułapkę... 134 Różne typy złożonośc i obliczeniowej... 136 Nowe zadanie: uprościć obliczenia!...... 137 Analiza programów rekurencyjnych... 138 Terminologia i definicje... 138 lłu stracja metody na przykładz ie... 140 Rozkład logarytmiczny...................................... 140 Zamiana dziedziny równania rekurencyjnego.......................... 142 Funkcja Ackermanna, czyli coś dla smakoszy...... 143 Złożoność obliczeniowa to nie religia!... 144 Techniki optymalizacji programów................................ 144 Zadania............................................... 145 Rozw iązania i wskazówki do zadań............................ 146 Rozdział 5. Derekursywacja i optymalizacja algorytmów...... 149 Jak pracuje kompilator?.................... 150 Odrobina formalizmu nie zaszkodzi!... 151 Kilka przykładów derekursywacji algorytmów...................... 153 Derekursywacja z wykorzystaniem stosu................... 156 Eliminacja zmiennych lokalnych....................... 156 Metoda funkcji przeciwnych................................ 158 Klasyczne schematy derekursywacji.................... 160 Schemat typu white.................... 160 Schemat typu if-else.......... 161 Schemat z podwójnym wywoła niem rekurencyjnym...................... 163 Podsumowanie...................................... 165

Spis treści 5 Rozdział 6. Algorytmy sortowania... 167 Sortowanie przez wstawianie, algorytm klasr, O(N 2 ).... 168 Sortowanie bąbelkowe, algorytm klasy O(N )... 169 Quicksort, algorytm klasy O(N log N)... 171 Heap Sort - sortowanie przez kopcowanie........... 174 Scalanie zbiorów posortowanych... 176 Sortowanie przez scalanie, algorytm klasy O(N log N)... 176 Sortowanie zewnętrzne... 178 Uwagi praktyczne... 181 Rozdział 7. Algorytmy przeszukiwania... 183 Przeszukiwanie liniowe... 183 Przeszukiwanie binarne... 184 Transformacja kluczowa (hashing)... 185 W poszukiwaniu funkcji H.......................................... 187 Najbardziej znane funkcje H... 188 Obsługa konfliktów dostępu.......................... 190 Powrót do źródeł... 190 Jeszcze raz tablice!...... 191 Próbkowanie liniowe... 192 Podwójne kluczowanie... 193 Zastosowania transformacji kluczowej... 195 Podsumowanie metod transformacji kluczowej... 195 Rozdział 8. Przeszukiwanie tekstów... 197 Algorytm typu brute-force................ 197 Nowe algorytmy poszukiwań...... 199 Algorytm K-M-P... 200 Algorytm Boyera i Moore'a... 203 Algorytm Rabina i Karpa... 205 Rozdział 9. Zaawansowane techniki programowania... 209 Programowanie typu dziel i zwyciężaj"... 21 O Odszukiwanie minimum i maksimum w tablicy liczb...... 211 Mnożenie macierzy o rozmiarze N xn...................... 213 Mnożenie liczb całkowitych........................ 216 Inne znane algorytmy dziel i zwyciężaj"............ 217 Algorytmy żarłoczne", czyli przekąsić coś nadszedł już czas... 217 Problem plecakowy, czyli niełatwe jest życie turysty piechura... 218 Wydawanie reszty, czyli,,a nie ma pan drobnych?" w praktyce... 220 Programowanie dynamiczne... 221 Ciąg Fibonacciego... 223 Równania z wieloma zmiennymi... 223 Najdłuższa wspólna podsekwencja... 225 Inne techniki programowania... 227 Uwagi bibliograficzne... 230 Rozdział 10. Elementy algorytmiki grafów... 231 Definicje i pojęcia podstawowe...... 232 Cykle w grafach........................... 234 Sposoby reprezentacji grafów... 237 Reprezentacja tablicowa... 237 Słowniki węzłów...... 239 Listy kontra zbiory... 240

6 Algorytmy, struktury danych i t echniki programowania Podstawowe operacje na grafach.... 240 Suma grafów..... 240 Kompozycja grafów................................. 240 Graf do potęgi....... 241 Algorytm Roya-Warshalla...... 242 Algorytm Floyda-Warshalla......................................... 245 Algorytm Dijkstry........................................... 248 Algorytm Bellmana-Forda....'......................... 249 Drzewo rozpinające minimalne...... 249 Algorytm Kruskala.......................... 250 Algorytm Prima.......... 251 Przeszukiwanie grafów......... 251 Strategia w głąb" (przeszukiwanie zstępujące)... 252 Strategia wszerz"..................................... 253 Inne strategie przeszukiwania...... 255 Problem właściwego doboru....... 255 Podsumowanie......................... 259 Zadania............................................... 259 Rozdział 11. Algorytmy numeryczne... 261 Poszukiwanie miejsc zerowych funkcji.... 262 Iteracyjne obliczanie wartości funkcji.. 263 Interpolacja funkcji metodą Lagrange'a. 264 Różniczkowanie funkcji............................... 265 Całkowanie funkcji metodą Simpsona.. 267 Rozwiązywanie układów równań liniowych metodą Gaussa....... 268 Uwagi końcowe....................... 271 Rozdział 12. Czy komputery mogą myśleć?... 273 Przegląd obszarów zainteresowań sztucznej inteligencji {SI). 274 Systemy eksperckie..... 275 Sieci neuronowe............................. 276 Reprezentacja problemów.... 278 Gry dwuosobowe i drzewa gier........ 279 Algorytm mini-max..................... 280 Rozdział 13. Kodowanie i kompresja danych... 285 Kodowanie danych i arytmetyka dużych liczb 287 Kodowanie symetryczne............................... 287 Kodowanie asymetryczne.................................. 288 Metody prymitywne.................................... 293 Łamanie szyfrów............................. 295 Techniki kompresji danych............................... 295 Kompresja za pomocą modelowania matematycznego. 297 Kompresja metodą RLE....................... 298 Kompresja danych metodą Huffmana..... 299 Kodowanie LZW.......................... 303 Idea kodowania słownikowego na przykładach.. 304 Opis formatu GIF.................................... 306 Rozdział 14. Zadania różne... 309 Teksty zadań................................... 309 Rozwiązania.................................... 3 I l

Spis treści 7 Dodatek A Poznaj C++ w pięć minut!...... 315 Elementy języka C++ na przykjadacb... 315 Pierwszy program... 315 Dyrektywa #include... 316 Podprogramy... 316 Procedury... 3 16 Funkcje............... 317 Operacje arytmetyczne...................... 318 Operacje logiczne... 318 Wskaźniki i zmienne dynamiczne... 3 I 9 Referencje... 320 Typy złożone... 320 Tablice... 321 Rekordy... 321 Instrukcja switch... 322 Iteracje... 322 Struktury rekurencyjne... 323 Parametry programu mai n()... 323 Operacje na plikach w C++............. 323 Programowanie obiektowe w C++... 324 Terminologia... 325 Obiekty na przykjadzie... 326 SkJadowe statyczne kjas... 328 Metody stałe klas... 329 Dziedziczenie własn ości... 329 Kod warunkowy w C++... 33 I Dodatek B Systemy obliczeniowe w pigułce... 333 System dziesiętny i kilka definicji............ 333 System dwójkowy... 334 Operacje arytmetyczne na liczbach dwójkowych...... 335 Operacje logiczne na liczbach dwójkowych................. 336 System ósemkowy... 337 System szesnastkowy... 337 Zmienne w pamięci komputera... 338 Kodowanie znaków... 339 Dodatek C Kompilowanie programów przykładowych... 341 Zawartość archiwum ZIP na ftp... 34 I Darmowe kompilatory C++... 342 GNU C Compiłer................... 342 Microsoft Visual Studio Community.............. 344 Dev-C++ (Orwell)... 345 Kompilacja i uruchamianie programów w C++... 345 GCC... 346 Microsoft Visual Studio... 347 Dev-C++... 352 Literatura... 355 Spis tabel...... 357 Spis ilustracji...... 359 Skorowidz... 365