Spis treści

Transkrypt

Spis treści
Księgarnia PWN: T.H. Cormen, Ch.E. Leiserson, R.L. Rivest, C. Stein - Wprowadzenie do algorytmów
Spis treści
Przedmowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XIII
Część I Podstawy
1.
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
Rola algorytmów w obliczeniach . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.1.
1.2.
2.
3.
4.
Algorytmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorytmy jako technologia . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
10
Zaczynamy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.1.
2.2.
2.3.
2.3.1.
2.3.2.
.
.
.
.
.
15
22
29
29
34
Rzędy wielkości funkcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
3.1.
3.2.
44
53
Sortowanie przez wstawianie . . . . . . . . .
Analiza algorytmów . . . . . . . . . . . . .
Projektowanie algorytmów . . . . . . . . . .
Metoda „dziel i zwyciężaj” . . . . . . . . . .
Analiza algorytmów typu „dziel i zwyciężaj”
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Notacja asymptotyczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Standardowe notacje i typowe funkcje . . . . . . . . . . . . . . . . . . . . . . .
Metoda „dziel i zwyciężaj” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
4.1.
4.2.
4.3.
4.4.
4.5.
68
75
83
87
93
Problem maksymalnej podtablicy . . .
Algorytm Strassena mnożenia macierzy
Metoda podstawiania . . . . . . . . . .
Metoda drzewa rekursji . . . . . . . . .
Metoda rekurencji uniwersalnej . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
V
SPIS TREŚCI
⋆
4.6.
Dowód twierdzenia o rekurencji uniwersalnej . . . . . . . . . . . . . . . . . . .
4.6.1. Dowód dla dokładnych potęg . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.6.2. Podłogi i sufity . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5.
Analiza probabilistyczna i algorytmy randomizowane . . . . . . . . . . . . . . . 112
⋆
5.1.
5.2.
5.3.
5.4.
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
losowych wskaźniko. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
112
116
120
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
146
5.4.1.
5.4.2.
5.4.3.
5.4.4.
Problem zatrudnienia sekretarki . . . . . . . .
Zmienne losowe wskaźnikowe . . . . . . . . .
Algorytmy randomizowane . . . . . . . . . . .
Analiza probabilistyczna i dalsze zastosowania
wych . . . . . . . . . . . . . . . . . . . . . . .
Paradoks dnia urodzin . . . . . . . . . . . . .
Kule i urny . . . . . . . . . . . . . . . . . . .
Ciągi „dobrej passy”, czyli sukcesów . . . . .
Problem on-line zatrudnienia sekretarki . . . .
. . . . . .
. . . . . .
. . . . . .
zmiennych
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
96
97
102
128
129
132
133
138
Część II Sortowanie i statystyki pozycyjne
6.
Heapsort – sortowanie przez kopcowanie . . . . . . . . . . . . . . . . . . . . . . 151
6.1.
6.2.
6.3.
6.4.
6.5.
7.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
151
154
156
159
161
Opis algorytmu . . . . . . . . . . . . . . . .
Czas działania algorytmu quicksort . . . . .
Randomizowana wersja algorytmu quicksort
Analiza algorytmu quicksort . . . . . . . . .
Analiza przypadku pesymistycznego . . . . .
Analiza oczekiwanego czasu działania . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
168
172
177
178
178
179
Dolne ograniczenia dla problemu sortowania
Sortowanie przez zliczanie . . . . . . . . . .
Sortowanie pozycyjne . . . . . . . . . . . . .
Sortowanie kubełkowe . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
189
191
194
198
Mediany i statystyki pozycyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
9.1.
9.2.
9.3.
VI
.
.
.
.
.
Sortowanie w czasie liniowym . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
8.1.
8.2.
8.3.
8.4.
9.
.
.
.
.
.
Quicksort – sortowanie szybkie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
7.1.
7.2.
7.3.
7.4.
7.4.1.
7.4.2.
8.
Kopce . . . . . . . . . . . . . . . . . . . . . . . .
Przywracanie własności kopca . . . . . . . . . . .
Budowanie kopca . . . . . . . . . . . . . . . . . .
Algorytm sortowania przez kopcowanie (heapsort)
Kolejki priorytetowe . . . . . . . . . . . . . . . .
Minimum i maksimum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wybór w oczekiwanym czasie liniowym . . . . . . . . . . . . . . . . . . . . .
Wybór w pesymistycznym czasie liniowym . . . . . . . . . . . . . . . . . . . .
211
212
217
SPIS TREŚCI
Część III Struktury danych
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10.
Elementarne struktury danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10.1.
10.2.
10.3.
10.4.
11.
226
Stosy i kolejki . . . . . . . . . . . . . . . . . . . . .
Listy (z dowiązaniami) . . . . . . . . . . . . . . . .
Reprezentowanie struktur wskaźnikowych za pomocą
Reprezentowanie drzew (ukorzenionych) . . . . . . .
. . . .
. . . .
tablic
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
230
234
239
244
Tablice z haszowaniem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
⋆
11.1. Tablice z adresowaniem bezpośrednim
11.2. Tablice z haszowaniem . . . . . . . .
11.3. Funkcje haszujące . . . . . . . . . . .
11.3.1. Haszowanie modularne . . . . . . . .
11.3.2. Haszowanie przez mnożenie . . . . .
11.3.3. Haszowanie uniwersalne . . . . . . .
11.4. Adresowanie otwarte . . . . . . . . .
11.5. Haszowanie doskonałe . . . . . . . .
12.
Drzewa wyszukiwań binarnych . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
⋆
12.1.
12.2.
12.3.
12.4.
13.
Drzewa czerwono-czarne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
⋆
13.1.
13.2.
13.3.
13.4.
14.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Co to jest drzewo wyszukiwań binarnych? . . . . . . .
Wyszukiwanie w drzewie wyszukiwań binarnych . .
Wstawianie i usuwanie . . . . . . . . . . . . . . . . .
Losowo skonstruowane drzewa wyszukiwań binarnych
Własności drzew czerwono-czarnych
Operacje rotacji . . . . . . . . . . . .
Operacja wstawiania . . . . . . . . .
Operacja usuwania . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
252
254
260
262
263
264
269
278
288
290
295
300
309
313
316
324
Wzbogacanie struktur danych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
14.1.
14.2.
14.3.
Dynamiczne statystyki pozycyjne . . . . . . . . . . . . . . . . . . . . . . . . .
Jak wzbogacać strukturę danych . . . . . . . . . . . . . . . . . . . . . . . . . .
Drzewa przedziałowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
342
347
351
Część IV Zaawansowane metody konstruowania i analizowania algorytmów
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15.
360
Programowanie dynamiczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
15.1.
Rozcinanie pręta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
363
VII
SPIS TREŚCI
15.2.
15.3.
15.4.
15.5.
Mnożenie ciągu macierzy . . . . . . . . .
Podstawy programowania dynamicznego
Najdłuższy wspólny podciąg . . . . . . .
Optymalne drzewa wyszukiwań binarnych
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
374
382
394
401
16.
Algorytmy zachłanne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 419
⋆
⋆
16.1.
16.2.
16.3.
16.4.
16.5.
17.
Analiza kosztu zamortyzowanego . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
Problem wyboru zajęć . . . .
Podstawy strategii zachłannej .
Kody Huffmana . . . . . . . .
Matroidy a strategie zachłanne
Problem szeregowania zadań .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17.1. Metoda kosztu sumarycznego . . .
17.2. Metoda księgowania . . . . . . . .
17.3. Metoda potencjału . . . . . . . . .
17.4. Tablice dynamiczne . . . . . . . . .
17.4.1. Powiększanie tablicy . . . . . . . .
17.4.2. Powiększanie i zmniejszanie tablicy
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
420
428
434
442
449
.
.
.
.
.
.
458
462
465
469
470
474
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
488
Część V Złożone struktury danych
18.
B-drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
18.1.
18.2.
18.3.
19.
Struktura kopców Fibonacciego . . . . . . . .
Operacje kopca złączalnego . . . . . . . . . .
Zmniejszanie wartości klucza i usuwanie węzła
Oszacowanie maksymalnego stopnia . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
516
518
527
531
. . . .
. . . .
. . . .
Boasa
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
541
545
547
549
555
555
559
Struktury danych dla zbiorów rozłącznych . . . . . . . . . . . . . . . . . . . . . 571
21.1.
21.2.
VIII
.
.
.
.
Drzewa van Emde Boasa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540
20.1. Wstępne koncepcje . . . . . . . . . . . . . . .
20.2. Struktura rekurencyjna . . . . . . . . . . . . .
20.2.1. Prototypowe struktury van Emde Boasa . . . .
20.2.2. Operacje na prototypowej strukturze van Emde
20.3. Drzewo van Emde Boasa . . . . . . . . . . . .
20.3.1. Drzewa van Emde Boasa . . . . . . . . . . . .
20.3.2. Operacje na drzewie van Emde Boasa . . . . .
21.
496
498
506
Kopce Fibonacciego . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513
19.1.
19.2.
19.3.
19.4.
20.
Definicja B-drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Podstawowe operacje na B-drzewach . . . . . . . . . . . . . . . . . . . . . . . .
Usuwanie klucza z B-drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Operacje na zbiorach rozłącznych . . . . . . . . . . . . . . . . . . . . . . . . .
Listowa reprezentacja zbiorów rozłącznych . . . . . . . . . . . . . . . . . . . .
571
574
SPIS TREŚCI
⋆
21.3.
21.4.
Lasy zbiorów rozłącznych . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Analiza metody łączenia według rangi z kompresją ścieżki . . . . . . . . . . .
579
583
Część VI Algorytmy grafowe
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22.
Podstawowe algorytmy grafowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
22.1.
22.2.
22.3.
22.4.
22.5.
23.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
600
604
614
624
627
Rozrastanie się minimalnego drzewa rozpinającego . . . . . . . . . . . . . . .
Algorytmy Kruskala i Prima . . . . . . . . . . . . . . . . . . . . . . . . . . . .
637
643
Najkrótsze ścieżki z jednym źródłem . . . . . . . . . . . . . . . . . . . . . . . . . 656
24.1.
24.2.
24.3.
24.4.
24.5.
25.
Reprezentacja grafów . .
Przeszukiwanie wszerz .
Przeszukiwanie w głąb .
Sortowanie topologiczne
Silnie spójne składowe .
Minimalne drzewa rozpinające . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636
23.1.
23.2.
24.
598
Algorytm Bellmana-Forda . . . . . . . . . . . . . .
Najkrótsze ścieżki z jednym źródłem w acyklicznych
Algorytm Dijkstry . . . . . . . . . . . . . . . . . . .
Ograniczenia różnicowe i najkrótsze ścieżki . . . . .
Dowody własności najkrótszych ścieżek . . . . . . .
. . . . . . .
grafach . . .
. . . . . . .
. . . . . . .
. . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
664
668
671
678
684
Najkrótsze ścieżki między wszystkimi parami wierzchołków . . . . . . . . . . . 698
25.1.
25.2.
25.3.
Najkrótsze ścieżki i mnożenie macierzy . . . . . . . . . . . . . . . . . . . . . .
Algorytm Floyda-Warshalla . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algorytm Johnsona dla grafów rzadkich . . . . . . . . . . . . . . . . . . . . . .
700
707
714
26.
Maksymalny przepływ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
⋆
⋆
26.1.
26.2.
26.3.
26.4.
26.5.
Sieci przepływowe . . . . . . . . . . . . . . . . .
Metoda Forda-Fulkersona . . . . . . . . . . . . . .
Najliczniejsze skojarzenia w grafach dwudzielnych
Algorytmy typu „prześlij-przemianuj” . . . . . . .
Algorytm „przemianuj i przesuń na początek” . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
724
729
747
752
766
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
788
Część VII Wybrane zagadnienia
27.
Algorytmy wielowątkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
27.1.
27.2.
27.3.
Podstawy dynamicznej wielowątkowości . . . . . . . . . . . . . . . . . . . . . .
Wielowątkowe mnożenie macierzy . . . . . . . . . . . . . . . . . . . . . . . . .
Wielowątkowe sortowanie przez scalanie . . . . . . . . . . . . . . . . . . . . .
794
812
817
IX
SPIS TREŚCI
28.
Operacje na macierzach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
28.1.
28.2.
28.3.
29.
833
847
853
Programowanie liniowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
29.1.
29.2.
29.3.
29.4.
29.5.
30.
Rozwiązywanie układów równań liniowych . . . . . . . . . . . . . . . . . . . .
Odwracanie macierzy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Symetryczne macierze dodatnio określone i metoda najmniejszych kwadratów .
Postać standardowa i uzupełnieniowa . . . . . . . . . . . .
Formułowanie problemów w postaci programów liniowych
Algorytm sympleks . . . . . . . . . . . . . . . . . . . . . .
Dualność . . . . . . . . . . . . . . . . . . . . . . . . . . .
Początkowe bazowe rozwiązanie dopuszczalne . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
871
879
885
901
907
Wielomiany i FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
30.1.
30.2.
30.3.
Reprezentacja wielomianów . . . . . . . . . . . . . . . . . . . . . . . . . . . .
DFT i FFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Efektywne implementacje FFT . . . . . . . . . . . . . . . . . . . . . . . . . . .
922
929
937
31.
Algorytmy teorioliczbowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948
⋆
⋆
31.1.
31.2.
31.3.
31.4.
31.5.
31.6.
31.7.
31.8.
31.9.
32.
Wyszukiwanie wzorca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009
⋆
32.1.
32.2.
32.3.
32.4.
33.
Geometria obliczeniowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
33.1.
33.2.
33.3.
33.4.
34.
Podstawowe pojęcia teorii liczb . . . . . . . . . . .
Największy wspólny dzielnik . . . . . . . . . . . . .
Arytmetyka modularna . . . . . . . . . . . . . . . .
Rozwiązywanie modularnych równań liniowych . . .
Chińskie twierdzenie o resztach . . . . . . . . . . .
Potęgi elementu . . . . . . . . . . . . . . . . . . . .
System kryptograficzny z kluczem publicznym RSA
Sprawdzanie, czy dana liczba jest pierwsza . . . . .
Rozkład na czynniki pierwsze . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Algorytm „naiwny” wyszukiwania wzorca . . . . . . . . . . . .
Algorytm Rabina-Karpa . . . . . . . . . . . . . . . . . . . . . .
Wyszukiwanie wzorca z wykorzystaniem automatów skończonych
Algorytm Knutha-Morrisa-Pratta . . . . . . . . . . . . . . . . . .
Własności odcinków . . . . . . . . . . . . . . .
Sprawdzanie, czy jakakolwiek para odcinków się
Znajdowanie otoczki wypukłej . . . . . . . . . .
Znajdowanie pary najmniej odległych punktów .
. . . . .
przecina
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
950
956
961
969
973
976
981
988
999
1012
1014
1019
1026
1039
1046
1053
1064
NP-zupełność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073
34.1. Czas wielomianowy . . . . . . . . . .
34.2. Weryfikacja w czasie wielomianowym
34.3. NP-zupełność i redukowalność . . . .
34.4. Dowodzenie NP-zupełności . . . . . .
34.5. Problemy NP-zupełne . . . . . . . . .
34.5.1. Problem kliki . . . . . . . . . . . . .
34.5.2. Problem pokrycia wierzchołkowego .
X
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1079
1087
1092
1103
1111
1112
1114
SPIS TREŚCI
34.5.3. Problem cyklu Hamiltona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116
34.5.4. Problem komiwojażera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121
34.5.5. Problem sumy podzbioru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122
35.
Algorytmy aproksymacyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131
35.1. Problem pokrycia wierzchołkowego . . . . . .
35.2. Problem komiwojażera . . . . . . . . . . . . .
35.2.1. Problem komiwojażera z nierównością trójkąta
35.2.2. Ogólny problem komiwojażera . . . . . . . . .
35.3. Problem pokrycia zbioru . . . . . . . . . . . .
35.4. Randomizacja i programowanie liniowe . . . .
35.5. Problem sumy podzbioru . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1133
1137
1138
1140
1143
1148
1153
Część VIII Dodatek: Podstawy matematyczne
Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1168
A.
Sumy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170
A.1.
A.2.
B.
Wzory i własności dotyczące sum . . . . . . . . . . . . . . . . . . . . . . . . . 1170
Szacowanie sum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174
Zbiory i nie tylko . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1183
B.1.
B.2.
B.3.
B.4.
B.5.
B.5.1.
B.5.2.
B.5.3.
Zbiory . . . . . . . . . . . . . . . . .
Relacje . . . . . . . . . . . . . . . . .
Funkcje . . . . . . . . . . . . . . . .
Grafy . . . . . . . . . . . . . . . . .
Drzewa . . . . . . . . . . . . . . . .
Drzewa wolne . . . . . . . . . . . . .
Drzewa ukorzenione i uporządkowane
Drzewa binarne i pozycyjne . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1183
1188
1190
1193
1197
1198
1200
1201
C.
Zliczanie i prawdopodobieństwo . . . . . . . . . . . . . . . . . . . . . . . . . . . 1206
⋆
C.1.
C.2.
C.3.
C.4.
C.5.
D.
Macierze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239
D.1.
D.2.
Zliczanie . . . . . . . . . . . . . . . . .
Prawdopodobieństwo . . . . . . . . . .
Dyskretne zmienne losowe . . . . . . .
Rozkłady: geometryczny i dwumianowy
Krańce rozkładu dwumianowego . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1206
1212
1219
1224
1230
Macierze i operacje na macierzach . . . . . . . . . . . . . . . . . . . . . . . . . 1239
Podstawowe własności macierzy . . . . . . . . . . . . . . . . . . . . . . . . . . 1244
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1252
Skorowidz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1269