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