Algorytmy bez tajemnic

26

Transcript of Algorytmy bez tajemnic

Page 1: Algorytmy bez tajemnic
Page 2: Algorytmy bez tajemnic

Tytuł oryginału: Algorithms Unlocked

Tłumaczenie: Zdzisław Płoski

ISBN: 978-83-246-7482-4

© Helion 2013.All rights reserved.

© 2013 Massachusetts Institute of Technology

All rights reserved. No part of this book may be reproduced in any form by any electronic or mechanical means (including photocopying, recording, or information storage and retrieval) without permission in writing from the publisher.

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletnei rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.

Wydawnictwo HELIONul. Kościuszki 1c, 44-100 GLIWICEtel. 32 231 22 19, 32 230 98 63e-mail: [email protected]: http://helion.pl (księgarnia internetowa, katalog książek)

Drogi Czytelniku!Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/algbetMożesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.

Printed in Poland.

• Kup książkę• Poleć książkę • Oceń książkę

• Księgarnia internetowa• Lubię to! » Nasza społeczność

Page 3: Algorytmy bez tajemnic

Spis tre ci

Przedmowa 9

1 Co to s algorytmy i dlaczego warto po wi ca im uwag ? 15Poprawno 16U ytkowanie zasobów 17Algorytmy komputerowe dla niekomputerowców 19Algorytmy komputerowe dla komputerowców 20Co czyta dalej 21

2 Jak opisywa i ocenia algorytmy komputerowe 23Jak opisywa algorytmy komputerowe 23Jak charakteryzowa czasy dzia ania 29Niezmienniki p tli 33Rekursja 34Co czyta dalej 36

3 Algorytmy sortowania i wyszukiwania 37Wyszukiwanie binarne 39Sortowanie przez wybieranie 43Sortowanie przez wstawianie 46Sortowanie przez scalanie 50Sortowanie szybkie 59Podsumowanie 66Co czyta dalej 69

4 Dolne ograniczenie sortowania i sposoby jego przezwyci enia 71Regu y sortowania 71Dolne ograniczenie sortowania przez porównania 72Pokonywanie ograniczenia dolnego w sortowaniu przez zliczanie 73Sortowanie pozycyjne 79Co czyta dalej 81

Kup książkę Poleć książkę

Page 4: Algorytmy bez tajemnic

6 Algorytmy bez tajemnic

5 Skierowane grafy acykliczne 83Skierowane grafy acykliczne 87Sortowanie topologiczne 87Jak reprezentowa graf skierowany 90Czas dzia ania sortowania topologicznego 92cie ka krytyczna w diagramie PERT 92

Najkrótsza cie ka w skierowanym grafie acyklicznym 96Co czyta dalej 100

6 Najkrótsze cie ki 101Algorytm Dijkstry 102Algorytm Bellmana-Forda 111Algorytm Floyda-Warshalla 115Co czyta dalej 123

7 Algorytmy napisowe 125Najd u szy wspólny podci g 125Zamiana napisu na inny 130Dopasowywanie napisów 137Co czyta dalej 144

8 Podstawy kryptografii 145Proste szyfry podstawieniowe 146Kryptografia z kluczem symetrycznym 147Kryptografia z kluczem jawnym 151Kryptosystem RSA 153Kryptosystemy hybrydowe 160Obliczanie liczb losowych 161Co czyta dalej 162

9 Kompresja danych 163Kody Huffmana 164Faksy 170Kompresja LZW 171Co czyta dalej 180

Kup książkę Poleć książkę

Page 5: Algorytmy bez tajemnic

Spis tre ci 7

10 Trudne (?) problemy 181Br zowe furgonetki 181Klasy P i NP oraz NP-zupe no 184Problemy decyzyjne i redukcje 186Problem matka 189Próbnik problemów NP-zupe nych 191Ogólne strategie 204Perspektywy 206Problemy nierozstrzygalne 208Podsumowanie 210Co czyta dalej 211

Literatura 213

Skorowidz 215

Kup książkę Poleć książkę

Page 6: Algorytmy bez tajemnic

8 Algorytmy bez tajemnic

Kup książkę Poleć książkę

Page 7: Algorytmy bez tajemnic

1 Co to s algorytmyi dlaczego warto po wi ca im uwag ?

Zacznijmy od pytania, które mi cz sto zadaj : „Co to jest algorytm?”1.Ogólna odpowied mog aby by taka: „zbiór kroków prowadz cych do wyko-

nania zadania”. Na co dzie stosujesz ró ne algorytmy. Masz algorytm mycia z bów:otwierasz tubk z past , bierzesz szczoteczk do r ki, wyciskasz na szczoteczk tylepasty, ile trzeba, zamykasz tubk , wk adasz szczoteczk do jednej wiartki paszczy,przesuwasz ni w gór i w dó (oraz w prawo i w lewo) przez N sekund itd. Je li mu-sisz doje d a do pracy, masz swój algorytm dojazdu do pracy. I tak dalej.

Jednak ta ksi ka zajmuje si algorytmami, które dzia aj na komputerach, a ogól-nie rzecz ujmuj c — na urz dzeniach obliczeniowych. Z algorytmami wykonywa-nymi na komputerach jest podobnie jak z tymi, które wykonujesz na co dzie .Korzystasz z GPS-u, eby znale drog ? eby j odnale , wykonuje on algorytm,który nazywamy „najkrótsza cie ka”. Kupujesz co w Internecie? U ywasz wtedy(a przynajmniej nale a oby!) bezpiecznej witryny sieciowej, która wykonuje algo-rytm szyfrowania. Gdy kupujesz jakie towary w Sieci, kto Ci je dostarcza? Firmakurierska? Korzysta ona z algorytmów przydzielaj cych paczki do furgonetek, a po-tem ustalaj cych kolejno , w jakiej ka dy kierowca powinien te paczki rozwozi .Algorytmy dzia aj w komputerach na ka dym kroku: w Twoim laptopie, smartfonie,na serwerach lub w systemach wbudowanych (np. w Twoim samochodzie czy w mi-krofalówce, w systemach klimatyzacji) — wsz dzie!

Co ró ni algorytmy wykonywane na komputerach od algorytmu wykonywa-nego przez Ciebie? Ty potrafisz tolerowa algorytm, je li jest on niedok adnie opisany,a komputer nie. Na przyk ad, je li jedziesz do pracy, Twój algorytm jed -do-pracymóg by zawiera tak klauzul : „je li jest t oczno, wybierz inn tras ”. Ty mo eszwiedzie , co rozumiesz pod okre leniem „jest t oczno”, natomiast komputer tegonie pojmie.

Dlatego algorytm komputerowy jest zbiorem kroków prowadz cych do wyko-nania zadania, opisanym na tyle precyzyjnie, e potrafi go wykona komputer. Naczym polega ta precyzja, wiesz, je li masz cho troch do wiadczenia w programo-waniu komputerów w Javie, C, C++, Pythonie, Fortranie, Mathlabie lub w czympodobnym. Je li nie masz w dorobku ani jednego programu komputerowego, toniewykluczone, e poczujesz ten stopie dok adno ci, przygl daj c si , jak opisujalgorytmy w tej ksi ce.

Przejd my do nast pnego pytania: „Czego oczekujemy od algorytmu komputero-wego?”.

1 Lub, jak by rzek mój kolega, z którym gram w hokeja: „What’s a nalgorithm?”.

Kup książkę Poleć książkę

Page 8: Algorytmy bez tajemnic

16 Algorytmy bez tajemnic

Algorytmy komputerowe rozwi zuj problemy obliczeniowe. Od algorytmukomputerowego oczekujemy dwóch rzeczy: maj c dane do problemu, powinienzawsze wytwarza poprawne rozwi zanie tego problemu, a robi c to, powinienoszcz dnie zu ywa zasoby obliczeniowe. Przyjrzyjmy si obu tym postulatom.

Poprawno

Co oznacza poprawne rozwi zanie problemu? Na ogó potrafimy precyzyjnie okre-li , co powinno zawiera poprawne rozwi zanie. Na przyk ad, je li Twój GPS wy-

twarza poprawne rozwi zanie, gdy chodzi o znalezienie najlepszej trasy podró y,to mog oby to polega na wybraniu takiej trasy spo ród wszystkich mo liwych dowytyczenia mi dzy miejscem Twojego pobytu a miejscem docelowym, któr dotrzesztam najszybciej. Albo trasy mo liwie najkrótszej. Albo takiej, która nie tylko po-prowadzi Ci do celu najszybciej, lecz równie pozwoli unikn p acenia myta. Ja-sne, e informacje, których Twój GPS u ywa do wyznaczenia trasy, mog nie od-powiada rzeczywisto ci. O ile nie ma on dost pu w czasie rzeczywistym do danycho ruchu drogowym, móg by przyj , e czas potrzebny do przebycia drogi równa sid ugo ci drogi podzielonej przez dopuszczaln na niej pr dko . Je li jednak drogajest zat oczona, GPS móg by Ci le doradzi w poszukiwaniach najszybszej trasy.Mimo to nadal mo emy uzna , e algorytm wytyczania trasy dzia a poprawnie —nawet je li nie mo na tego powiedzie o jego danych wej ciowych; dla zadanegowej cia algorytm trasuj cy okre la tras najszybsz .

Z kolei dla pewnych problemów ustalenie, czy dany algorytm wytwarza po-prawne rozwi zanie, mo e si okaza trudne lub nawet niemo liwe. Jako przyk adwe my optyczne rozpoznawanie znaków. Czy ten obrazek o wymiarach 11 6 pikslijest cyfr 5, czy liter S?

Niektórzy powiedz , e to pi tka, podczas gdy inni — e S, jak zatem mogliby-my uzna poprawno lub niepoprawno decyzji komputerowej? Nie da si . W tej

ksi ce skoncentrujemy si na algorytmach komputerowych, których rozwi zanias znane.

Czasami jednak godzimy si z tym, e algorytm komputerowy produkuje nie-poprawn odpowied , o ile tylko potrafimy panowa nad tym, jak cz sto mu sito zdarza. Dobry przyk ad stanowi szyfrowanie. Powszechnie u ywany krypto-system RSA polega na okre laniu, czy du e liczby — naprawd du e, maj ce setkicyfr — s pierwsze. Je li zdarzy o Ci si pisa programy komputerowe, to jednymz nich by pewnie taki, który sprawdza , czy liczba n jest pierwsza. Móg on badawszystkie potencjalne podzielniki od 2 do n – 1 i je li który z nich okaza sirzeczywi cie podzielnikiem n, to n by a liczb z o on . Je li adna liczba mi dzy2 a n – 1 nie jest podzielnikiem n, to n jest pierwsza. Je li jednak n ma setki cyfr, topotencjalnych podzielników jest mnóstwo — tak du o, e nawet naprawd szybki

Kup książkę Poleć książkę

Page 9: Algorytmy bez tajemnic

Rozdzia 1. • Co to s algorytmy i dlaczego warto po wi ca im uwag ?� 17

komputer nie da by rady tego sprawdzi w rozs dnym czasie. Oczywi cie móg bydokona pewnych ulepsze , na przyk ad wyeliminowa wszystkie kandydatki pa-rzyste po wykazaniu, e 2 nie jest podzielnikiem, lub poprzesta na dotarciu do

n (bo je li d jest wi ksze ni n i d jest podzielnikiem n, to dn / jest mniejsze

ni n i równie jest podzielnikiem n; je li wi c n ma podzielnik, to znajdziesz go nim

dojdziesz do n ). Je li n ma setki cyfr, to chocia n ma oko o o po ow cyfrmniej ni n, nadal jest naprawd wielk liczb . I tu dobra wiadomo : znamy al-gorytm, który szybko sprawdza, czy liczba jest pierwsza. Z wiadomo ci jest to,e mo e on pope nia b dy. W szczególno ci, je li o wiadcza, e n jest z o ona, to

n jest na pewno z o ona, lecz je li o wiadcza, e n jest pierwsza, to istnieje pew-na szansa, e n jest jednak z o ona. Lecz owe z e wiadomo ci nie s a tak z e:mo emy utrzymywa wska nik b du na naprawd niskim poziomie, wynosz -cym na przyk ad jeden b d na ka de 502 razy. Jest to na tyle rzadko — jeden b draz na ka de sto oktylionów — e wi kszo z nas ze spokojem przyjmuje w RSAokre lanie t metod , czy liczba jest pierwsza.

Poprawno jest delikatnym zagadnieniem w innej klasie algorytmów, nazywa-nych aproksymacyjnymi. Algorytmy aproksymacyjne (przybli ania pewnej warto-ci — przyp. t um.) s stosowane w problemach optymalizacyjnych, w których chce-

my znale najlepsze rozwi zanie wzgl dem pewnej miary ilo ciowej. Znajdowanienajszybszej trasy, wykonywane przez GPS, jest jednym z przyk adów — tu miarilo ciow jest czas podró y. Dla niektórych problemów nie mamy dobrych algoryt-mów znajduj cych optymalne rozwi zanie w rozs dnym czasie, znamy natomiastalgorytm aproksymacyjny, który w zadowalaj cym czasie potrafi znale rozwi za-nie prawie optymalne. Przez „prawie optymalne” zazwyczaj rozumiemy, e ilo ciowamiara rozwi zania znajdowana przez algorytm aproksymacyjny ró ni si pewnymznanym czynnikiem od optymalnej miary ilo ciowej rozwi zania. Je li tylko okre-limy, ile ów po dany czynnik wynosi, mo emy mówi , e poprawnym rozwi za-

niem algorytmu aproksymacyjnego jest ka de rozwi zanie ró ni ce si tym czynni-kiem od rozwi zania optymalnego.

U ytkowanie zasobów

Co to znaczy w odniesieniu do algorytmu efektywne u ytkowanie zasobów oblicze-niowych? O jednej z miar efektywno ci wspomnieli my, omawiaj c algorytmy aprok-symacyjne — by ni czas. Algorytm, który daje poprawne rozwi zanie, lecz zu ywadu o czasu na jego wytworzenie, mo e mie znikom warto lub by bezwarto-ciowy. Gdyby Twój GPS przez godzin wyznacza zalecan tras , chcia oby Ci si

go w ogóle w cza ? Rzeczywi cie, czas jest podstawow miar efektywno ci, któreju ywamy do oceny algorytmu, kiedy ju wyka emy, e daje poprawne rozwi zanie.Lecz nie jest to miara jedyna. Mo e nas interesowa ilo pami ci komputerowejwymaganej przez algorytm („ lad” jaki odciska w pami ci), poniewa algorytmmusi dzia a w dost pnej pami ci. Inne zasoby, które mog by u ywane przez al-gorytm, to: komunikacja sieciowa, losowe bity (poniewa algorytmy, które dokonuj

Kup książkę Poleć książkę

Page 10: Algorytmy bez tajemnic

18 Algorytmy bez tajemnic

losowych wyborów, potrzebuj ród a liczb losowych) lub operacje dyskowe (dlaalgorytmów przeznaczonych do pracy z danymi przechowywanymi na dysku).

W tej ksi ce, tak jak w wi kszo ci literatury o algorytmach, koncentrujemy sitylko na jednym zasobie — jest nim czas. Jak rozs dzamy o czasie wymaganymprzez algorytm? W odró nieniu od poprawno ci, niezale cej od konkretnego kom-putera, na którym dzia a algorytm, faktyczny czas algorytmów zale y od kilkuczynników zewn trznych wzgl dem samego algorytmu: szybko ci komputera, j zykaprogramowania, w którym algorytm jest zrealizowany, kompilatora lub interpreterat umacz cego program na kod wykonywany w komputerze, umiej tno ci osoby pi-sz cej dany program i innych dzia a i zdarze zachodz cych w komputerze rów-nolegle z wykonywanym programem. Przy tym wszystkim zak ada si , e algorytmjest wykonywany tylko przez jeden komputer, mieszcz cy w pami ci wszystkie jegodane.

Gdyby my mieli ocenia szybko algorytmu zrealizowanego w prawdziwym j -zyku programowania, wykonuj c go na konkretnym komputerze dla okre lonychdanych i mierz c jego czas dzia ania, nie dowiedzieliby my si niczego o tym, jakszybko dzia a by ten algorytm z danymi innego rozmiaru, a mo e nawet z innymidanymi o tym samym rozmiarze. A gdyby my chcieli porówna wzgl dn szybkodanego algorytmu z innym, dla tego samego problemu, musieliby my zaimplemen-towa oba i wykona ka dy z nich z ró nymi danymi, o ró nych rozmiarach. Jakzatem mo emy oceni szybko algorytmu?

Otó robimy to, cz c dwa pomys y. Po pierwsze, okre lamy, jak d ugo dzia aalgorytm w funkcji rozmiaru jego danych. W przyk adzie ze znajdowaniem trasydane wej ciowe by yby pewn reprezentacj mapy drogowej, a ich rozmiar zale a byod liczby skrzy owa i liczby dróg cz cych skrzy owania na mapie. (Fizycznyrozmiar sieci dróg nie ma znaczenia, poniewa wszystkie odleg o ci mo emy przed-stawi za pomoc liczb, a wszystkie liczby zajmuj tyle samo miejsca na wej ciu; d u-go drogi nie wp ywa na rozmiar danych wej ciowych). W prostszym przyk adzie— przeszukiwaniu zadanej listy elementów w celu sprawdzenia, czy okre lony ele-ment jest na niej obecny — rozmiarem danych by aby liczba pozycji na li cie.

Po drugie, skupiamy si na tym, jak szybko funkcja charakteryzuj ca czas dzia-ania ro nie z rozmiarem danych wej ciowych, tzn. na tempie wzrostu czasu dzia ania.

W rozdziale 2 zapoznamy si z notacj , której u ywamy do scharakteryzowania czasudzia ania algorytmu, lecz to, co jest w naszym podej ciu najbardziej interesuj ce, touwzgl dnianie w czasie dzia ania tylko dominuj cego sk adnika; nie zwracamy przytym uwagi na wspó czynniki. Koncentrujemy si zatem na rz dzie wzrostu czasudzia ania. Za ó my na przyk ad, e uda o si nam ustali , i dana realizacja pewnegoalgorytmu przeszukiwania listy n elementów zajmuje 50n + 125 cykli maszyno-wych. Sk adnik 50n zdominuje sk adnik 125, je li n stanie si dostatecznie du e, po-czynaj c od n 3 i zwi kszaj c jeszcze t przewag dla list o wi kszych rozmiarach.Wobec tego, opisuj c czas dzia ania tego hipotetycznego algorytmu, nie bierzemypod uwag sk adnika 125 ma ego rz du. Mo e si zdziwisz, ale odrzucamy tewspó czynnik 50. Prowadzi to do okre lenia czasu dzia ania jako rosn cego liniowo

Kup książkę Poleć książkę

Page 11: Algorytmy bez tajemnic

Rozdzia 1. • Co to s algorytmy i dlaczego warto po wi ca im uwag ?� 19

z rozmiarem danych n. Oto inny przyk ad: gdyby algorytm zu ywa 20n3 + 100n2 +300n + 200 cykli maszynowych, to powiedzieliby my, e jego czas dzia ania ro niejak n3. Równie w tym przypadku sk adniki ni szego rz du: 100n2, 300n i 200, stajsi coraz mniej istotne ze wzrostem rozmiaru n danych wej ciowych.

W praktyce lekcewa one przez nas wspó czynniki maj jednak znaczenie. Zale- one jednak w tak du ym stopniu od czynników zewn trznych, e jest prawie

pewne, i przy porównywaniu dwóch algorytmów A i B, maj cych ten sam rz dwzrostu i dzia aj cych na tych samych danych, A mo e dzia a szybciej ni B dlapewnej kombinacji maszyny, j zyka programowania, kompilatora (lub interpretera)i programisty, a B zadzia a szybciej ni A dla innej kombinacji. Oczywi cie, je elioba algorytmy A i B produkuj poprawne rozwi zania i A zawsze dzia a dwa razyszybciej ni B, to je li wszystko inne jest takie samo, b dziemy zawsze preferowaliwykonywanie A zamiast B. Jednak e z punktu widzenia abstrakcyjnego porówny-wania algorytmów zawsze koncentrujemy si na rz dzie wzrostu, nie przystrajaj cgo wspó czynnikami lub sk adnikami niskiego rz du.

I ostatnie pytanie, które stawiamy w tym rozdziale: „Dlaczego mia oby mi si op a-ca zajmowanie algorytmami komputerowymi?”. Odpowied na nie zale y od tego,kim jeste .

Algorytmy komputerowe dla niekomputerowców

Nawet je li w sferze komputerów nie uwa asz si za osob dobrze poinformowan ,algorytmy komputerowe stanowi dla Ciebie du warto . W ko cu, wyj wszysytuacj , w której podró ujesz po bezdro ach bez GPS-u, zapewne u ywasz go codnia. Szuka e czego dzisiaj w Internecie? W u ywanej przez Ciebie wyszukiwarce— Google, Bing lub jakiejkolwiek innej — s stosowane wyrafinowane algorytmyprzeszukiwania Sieci i rozstrzygania, w jakiej kolejno ci nale y przedstawia ichwyniki. Prowadzi e dzi samochód? O ile nie je dzisz klasycznym wehiku em, jegokomputery pok adowe podj y podczas Twej podró y miliony decyzji, a wszystkieoparte by y na algorytmach. Móg bym tak wymienia bez ko ca.

Jako docelowy u ytkownik algorytmów sobie zawdzi czasz ch dowiedzeniasi czego o tym, jak projektujemy, charakteryzujemy i oceniamy algorytmy. Zak a-dam, e przejawiasz przynajmniej umiarkowane zainteresowanie, skoro ta ksi katrafi a do Twoich r k i czytasz j do tego miejsca. Powodzenia! Zobaczmy, czy udasi nam rozkr ci Ci na tyle, e na nast pnym spotkaniu towarzyskim dotrzymasztonu innym, gdy rozmowa zejdzie na algorytmy2.

2 No tak, przyznaj , je li nie mieszkasz w Dolinie Krzemowej, temat algorytmów rzadko

wyp ynie podczas koktajli, w których bierzesz udzia , niemniej z pewnych wzgl dów my,profesorowie informatyki, uwa amy, e jest wa ne, aby nasi studenci nie konsternowali nasna spotkaniach towarzyskich brakiem wiedzy z poszczególnych dziedzin informatyki.

Kup książkę Poleć książkę

Page 12: Algorytmy bez tajemnic

20 Algorytmy bez tajemnic

Algorytmy komputerowe dla komputerowców

Je li jeste za pan brat z komputerami, to masz wi ksze obowi zki wobec algoryt-mów! One nie tylko znajduj si w centrum wszystkiego, co si dzieje w Twoim kom-puterze — algorytmy s technologi , i to równie istotn jak wszystko, co wspó -tworzy Twój komputer. Mo esz zap aci dodatkow cen za komputer z najnowszymi najwi kszym procesorem, lecz aby te pieni dze okaza y si trafionym wydatkiem,potrzebujesz, by w tym komputerze dzia a y realizacje dobrych algorytmów.

Oto przyk ad ilustruj cy, e algorytmy rzeczywi cie stanowi technologi . W trze-cim rozdziale przyjrzymy si trzem ró nym algorytmom sortowania w porz dku ro-sn cym listy n warto ci. Niektóre z tych algorytmów b d osi ga y czasy dzia aniarosn ce jak n2, lecz inne b d dzia a w czasie rosn cym tylko jak n lg n. Co to jestlg n? Jest to logarytm przy podstawie 2 z n, czyli log2 n. Informatycy u ywaj lo-garytmów z podstaw 2 tak cz sto, e podobnie jak matematycy i naukowcy, któ-rzy dla skrócenia stosuj zapis ln n na oznaczenie logarytmu naturalnego — loge n,równie oni u ywaj w asnego skrótu dla logarytmów przy podstawie 2. I tak,poniewa funkcja lg n jest odwrotno ci funkcji wyk adniczej, ro nie ona bardzopowoli z n. Je li n = 2x, to x = lg n. Na przyk ad 210 = 1024, wi c lg 1024 wynositylko 10, podobnie 220 = 1 048 576, zatem lg 1 048 576 wynosi zaledwie 20, a 230 =1 073 741 824, co oznacza, e lg 1 073 741 824 wynosi raptem 30. Tak wi c wewzro cie n lg n w porównaniu ze wzrostem n2 zachodzi wymiana czynnika n na je-dynie ln n, a to ju jest gra warta wieczki.

Skonkretyzujmy nieco bardziej ten przyk ad, wystawiaj c szybszy komputer(komputer A) wykonuj cy algorytm sortowania, którego czas dzia ania dla n war-to ci ro nie jak n2, przeciw wolniejszemu komputerowi B, wykonuj cemu algo-rytm sortowania w czasie rosn cym jak n lg n. Ka dy z komputerów musi posor-towa 10 milionów liczb. (Cho mo e si wydawa , e 10 milionów liczb to du o,je li s to 8-bajtowe liczby ca kowite, ich rozmiar na wej ciu zajmie oko o 80 me-gabajtów, co zmie ci si w pami ci nawet niedrogiego laptopa sprzed wielu lat).Przypu my, e komputer A wykonuje 10 miliardów operacji na sekund (jest szyb-szy od ka dego sekwencyjnego komputera w chwili, gdy pisz te s owa), a komputerB wykonuje tylko 10 milionów operacji na sekund , czyli komputer A jest 1000 razyszybszy od komputera B, bior c pod uwag sam moc obliczeniow . Aby powi k-szy jeszcze ró nic , za ó my, e wiatowej s awy programistka koduje komputerA w j zyku maszynowym, a kod wynikowy wymaga do posortowania n liczb 2n2

rozkazów. Za ó my dalej, e program dla komputera B pisze programista zupe nieprzeci tny, korzystaj c z j zyka wysokiego poziomu i ma o efektywnego kompila-tora, w wyniku czego powstaje kod z o ony z 50n lg n rozkazów. Aby posortowa10 milionów liczb, komputer A zu ywa

sekund,000 20sekund/rozkazów10

rozkazów)10(2 10

27

co stanowi wi cej ni 5 i pó godziny, podczas gdy komputerowi B zabiera to

Kup książkę Poleć książkę

Page 13: Algorytmy bez tajemnic

Rozdzia 1. • Co to s algorytmy i dlaczego warto po wi ca im uwag ?� 21

sekundy163 1sekund/rozkazów10

rozkazów10lg1050 7

77

— równowarto mniej ni 20 minut. Stosuj c algorytm, którego czas dzia aniaro nie znacznie wolniej, nawet z marnym kompilatorem, komputer B dzia a 17razy szybciej ni komputer A! Przewaga algorytmu n lg n by aby jeszcze wyra -niejsza, gdyby my sortowali 100 milionów liczb. Komputerowi A zabra oby toponad 23 dni, algorytm n lg n na komputerze B upora by si z robot w czterygodziny. Uogólniaj c, wraz ze wzrostem rozmiaru problemu ro nie wzgl dnaprzewaga algorytmu n lg n.

Nawet mimo imponuj cego post pu, który nieustannie obserwujemy w sprz ciekomputerowym, ca o ciowa produktywno systemu zale y w równym stopniu oddoboru efektywnych algorytmów, co od doboru szybkiego sprz tu lub sprawnie dzia-aj cych systemów operacyjnych. B yskawiczny post p, jaki dokona si w innych

technologiach komputerowych, dotyczy tak e algorytmów.

Co czyta dalej

W moim bardzo subiektywnym odczuciu najklarowniejszym i najbardziej u ytecz-nym ród em wiedzy o algorytmach komputerowych jest Wprowadzenie do algoryt-mów [CLRS09], napisane przez czterech diabelnie przystojnych facetów. Ksi ka tajest powszechnie okre lana jako „CLRS”, od inicja ów autorów. Si ga em do niejpo wi kszo materia u pomieszczonego w tej ksi ce. Jest ona nieporównanie bar-dziej kompletna od tej ksi ki, lecz zak ada si w niej, e masz cho troch do wiad-czenia w programowaniu komputerów i jeste za pan brat z matematyk . Je li uznasz,e odpowiada Ci poziom matematyczny niniejszej ksi ki, i masz odwag ruszy

g biej w temat, nie mo esz post pi lepiej, ni si gn po CLRS. (W mojej skromnejopinii, ma si rozumie ).

Ksi ka Johna MacCormica Nine Algorithms That Changed the Future [Mac12]zawiera opis kilku algorytmów i zwi zanych z nimi kwestii obliczeniowych, któreoddzia uj na nasze codzienne ycie. Uj cie zastosowane przez MacCormica jestmniej techniczne ni w tej ksi ce. Je li dojdziesz do wniosku, e tutaj by o „zbytmatematycznie”, to polecam Ci skosztowanie lektury MacCormica. Zdo asz przy-swoi z niej wiele, nawet je li masz w t e przygotowanie matematyczne.

W ma o prawdopodobnym przypadku, gdy uznasz, e CLRS jest zbyt rozwod-nione, mo esz spróbowa zaczerpn z wielotomowego zbioru Donalda Knutha TheArt of Computer Programming [Knu97, Knu98a, Knu98b, Knu11]. Chocia tytu seriisugeruje, e skupia si ona na pisaniu kodu, ksi ki te zawieraj wspania , g bokanaliz algorytmów3. Ostrzegam jednak: materia zawarty w TAOCP si ga g boko.Przy okazji, je li zastanawiasz si , sk d si wzi o s owo „algorytm”, to Knuth powia-da, e pochodzi ono od imienia „al-Khowârizmî” perskiego matematyka z IX wieku. 3 Sztuka programowania, WNT, Warszawa 2002 – 2007. Jak dot d ukaza y si 4 ksi ki

z jeszcze nie uko czonego cyklu, który Donald Knuth zaplanowa na 7 tomów — przyp.t um.

Kup książkę Poleć książkę

Page 14: Algorytmy bez tajemnic

22 Algorytmy bez tajemnic

Oprócz CLRS przez lata ukaza o si kilka innych wietnych tekstów o algoryt-mach komputerowych. Noty do rozdzia u 1 w CLRS zawieraj odwo ania do wielutakich tekstów. Zamiast powiela je tutaj, kieruj Ci wprost do CLRS.

Kup książkę Poleć książkę

Page 15: Algorytmy bez tajemnic

Skorowidz

Aabstract data type, Patrz: ADTabstrahowanie, 107adjacency matrix, Patrz: macierz s siedztwaadjacency-list represention, Patrz: lista

s siedztwa reprezentacjaAdleman Leonard, 153ADT, 107Advanced Encryption Standard, Patrz: AESAES, 150, 160algorytm, 15, 21

aproksymacyjny, 17, 208Bellmana-Forda, 102, 111, 183, 186

czas dzia ania, Patrz: czas dzia aniaalgorytmu Bellmana-Forda

czas dzia ania, Patrz: czas dzia aniaDijkstry, 102, 104, 105, 107, 110, 169, 210

czas dzia ania, 106Euklidesa, 157Floyda-Warshalla, 102, 115, 116, 117,

118, 122, 210czas dzia ania, 116, 121

KMP, 143Knutha-Morrisa-Pratta, 143komputerowy, 19, 20

opisywanie, 23o czasie wielomianowym, Patrz:

algorytm wielomianowyprzybli aj cy, Patrz: algorytm

aproksymacyjnyredukcji w czasie wielomianowym,

187, 189rekurencyjny, 35sortowania, Patrz: sortowanieszybko , 18wielomianowy, 183, 184, 186, 187, 193,

194, 196, 202, 210zach anny, 169znajdowania najkrótszej cie ki, 94

all-pairs shortest-paths, Patrz: problemnajkrótszych cie ek mi dzy wszystkimiparami wierzcho ków

alternatywawykluczaj ca, Patrz: XOR

approximation algorithm, Patrz: algorytmaproksymacyjny

arbitrage opportunity, Patrz: mo liwoarbitra u

arbitra , Patrz: mo liwo arbitra uarray, Patrz: tablicaarytmetyka

modularna, 153, 156modulo, Patrz: arytmetyka modularna

assigns, Patrz: procedura przypiswyanieauthentication, Patrz: uwierzytelnienieautomat sko czony, 138, 139, 141

BBacon Kevin, 101base cases, Patrz: przypadek bazowyBellman Richard, 111Bellmana-Forda algorytm, Patrz: algorytm

Bellmana-Fordabinary heap, Patrz: kopiec binarnybinary tree, Patrz: drzewo binarnebiologia obliczeniowa, 125, 131block cipher, Patrz: szyfr blokowybloczek jednorazowy, Patrz: podk adka

jednorazowaBoole George, 190boolean formula, Patrz: formu a boolowskaboolean formula satisfiability problem,

Patrz: problem spe nialno ci formu yboolowskiej

branch and bound method, Patrz: metodapodzia u i ogranicze

Ccertificate, Patrz: certyfikatcertyfikat, 185, 186, 195, 197CGF, 210child, Patrz: dzieckoci g, 125cipher block chaining, Patrz: a cuchowanie

bloków szyfru

Kup książkę Poleć książkę

Page 16: Algorytmy bez tajemnic

216 Algorytmy bez tajemnic

ciphertext, Patrz: tekst zaszyfrowanyclause, Patrz: klauzulacommon subsequence, Patrz: podci g

wspólnycomparison sort, Patrz: sortowanie

porównaniecomplete graph, Patrz: graf pe nycomposite number, Patrz: liczba z o onaconcatenation, Patrz: z czenieconnected graph, Patrz: graf spójnycontex-free grammar problem, Patrz: CGFcounting sort, Patrz: sortowanie zliczaniecritical path, Patrz: cie ka krytycznacykl, 87, 94, 101

Eulera, 183, 184, 186Hamiltona, 183, 184, 185, 186, 196,

197, 198, 204, 205, 206z wag ujemn , 113

czas, 17, 18dzia ania, 20

algorytmu Bellmana-Forda, 113, 183algorytmu Dijkstry:, 106algorytmu Floyda-Warshalla, 116, 121algorytmu redukcji, 187dopasowywania napisów, 143notacja, 23ograniczenie, Patrz: ograniczenieograniczony przez funkcj liniow , 30operacji, 29rosn cy liniowo, 18rz d wzrostu, 18, 19tempo wzrostu, 18wielomianowy, Patrz: algorytm

wielomianowywyszukiwanie binarne, Patrz:

wyszukiwanie binarne czas dzia anialiniowy, 210podliniowy, 210sortowania, 38

pozycyjne, 71scalanie, 50, 58, 59, 67, 71szybkie, 59, 65, 67, 71topologiczne, 92wstawianie, 49, 50, 67, 71wybieranie, 45, 46, 50, 67, 71zliczanie, 71, 78

weryfikacji certyfikatu, 185wielomianowy, Patrz: algorytm

wielomianowy

Ddag, 87, 92, 96, 101

sortowanie topologiczne, Patrz:sortowanie topologiczne

danedekompresja, Patrz: dekompresjakompresja, Patrz: kompresjanadmiarowe, 164satelickie, Patrz: dane towarzysz cestruktura, 107, 179tablica, Patrz: tablicatowarzysz ce, 38, 39, 71, 73, 78typ abstrakcyjny, Patrz: ADTwej ciowe, 24

kopia, 51rozmiar, 18, 29

wyj ciowe, Patrz: wynikdata structure, Patrz: dane strukturadecidable problem, Patrz: problem podatnydecision problems, Patrz: problem

decyzyjnydecryption, Patrz: deszyfrowaniedekompresja, 163, 165, 169, 170

LZW, 176, 177dense graph, Patrz: graf g stydeszyfrowanie, 145

d ugiego komunikatu, 160diagram, 83, 87

PERT, 92, 93, 100z zanegowanymi czasami, 95

digraf, Patrz: graf skierowanyDijkstra Edsger, 102directed acyclic graph, Patrz: dagdirected edge, Patrz: kraw d skierowanadirected graph, Patrz: graf skierowanydivide-and-conquer, Patrz: metoda dziel

i zwyci ajDNA, 125, 164doubly linked list, Patrz: lista powi zana

dwukierunkowadroga Eulera, Patrz: cykl Euleradrzewo binarne, 108, 109, 166

aktualizacja, 170dynamic programming, Patrz:

programowanie dynamicznedziecko, 109

Kup książkę Poleć książkę

Page 17: Algorytmy bez tajemnic

Skorowidz 217

Eefektywno , Patrz: rozwi zanie efektywne

miara, 17element

osiowy, 59, 62, 63rozdzielaj cy, Patrz: element osiowyuporz dkowanie, Patrz: uporz dkowanie

encryption, Patrz: szyfrowanieentry, Patrz: wpisErdös Paul, 101escape code, Patrz: kod sygna owyEuler Leonhard, 183Euler tour, Patrz: cykl EuleraEulera cykl, Patrz: cykl Euleraexclusive-or, Patrz: XOR

Ffaks, 164, 170Fermata twierdzenie, Patrz: twierdzenie

Fermata ma efinite automaton, Patrz: automat

sko czonyF-kopiec, Patrz: kopiec FibonacciegoFloyd Robert, 116Ford Lester, 111formal language, Patrz: j zyk formalnyformat

JPEG, Patrz: MP3MP3, Patrz: MP3

formu aboolowska, 190, 199, 205

posta 3-koniunkcyjn normalna, 191koniunkcja klauzul, 191logiczna, Patrz: formu a boolowskaspe nialna, 190spe nialno ci, 189

funkcja, Patrz: procedura

Ggad et, 197, 206generator liczb pseudolosowych, Patrz:

PRNGgraf, 186

acykliczny, 207cykliczny, 101g sty, 110, 116

nieskierowany, 183, 192, 195, 199pe ny, 198rzadki, 110, 116skierowany, 87

acykliczny, Patrz: dagreprezentacja, 90wa ony, 94, 95, 101

spójny, 183nieskierowany, 183, 184

grafika komputerowa, 38grafu, 108gramatyka bezkontekstowa, 210greedy algorithm, Patrz: algorytm

zach anny

Hhalting problem, Patrz: problem stopuHamilton William, 184hamiltonian cycle, Patrz: cykl Hamiltonahamiltonian-path problem, Patrz: problem

cie ki Hamiltonahash table, Patrz: tablica z haszowaniemheap property, Patrz: klucz w asno kopcaheapsort, Patrz: sortowanie na kopcuHuffman David, 165Huffmana kod, Patrz: kod Huffmana

Iin place, Patrz: sortowanie na miejscuincident edge, Patrz: kraw d incydentnain-degree, Patrz: stopnie wej ciowyinitialization vector, Patrz: wektor

pocz tkowyinsertion sort, Patrz: sortowanie

wstawianieinternal node, Patrz: w ze wewn trznyiteracja, 26, 43, 49

Jj zyk

formalny, 210programowania, 156Python, Patrz: Python

Juliusz Cezar, 146

Kup książkę Poleć książkę

Page 18: Algorytmy bez tajemnic

218 Algorytmy bez tajemnic

Kkarta kredytowa, 145, 147key, Patrz: kluczklauzula, 191, 194, 199, 201klika, 192, 194

problem, 192rozmiar, 192

klucz, 37, 71, 74jawny, Patrz: klucz publicznykryptograficzny, 146podk adka, 149potomka, 109prywatny, Patrz: klucz tajnypubliczny, 151, 160symetryczny, 147, 150, 160tajny, 151, 152w z a, 109w asno kopca, 109

knapsack problem, Patrz: problemplecakowy

Knuth Donald, 21kod

bezprzedrostkowy, 165, 166Huffmana, 165, 171, 179

adaptacyjny, 170seria-d ugo , 170sygna owy, 170

kolejka priorytetowa, 107kompresja, 163, 170

bezstratna, 163, 164, 171LZW, 171, 173, 176, 179stratna, 163, 164

koniunkcja, 191konkatenacja, Patrz: z czeniekopiec

binarny, 109Fibonacciego, 111

kraw d , 91, 183incydentna, 183, 184o ujemnych wagach, 102os abianie, Patrz: os abianieskierowana, 87waga, 94

krok os abiaj cy, 97kryptografia, 145

z kluczem jawnym, 151, 153z kluczem symetrycznym, 147, 150

kryptosystemhybrydowy, 151, 160RSA, 145, Patrz: RSAz kluczem jawnym, 153, 159

kube kowanie, Patrz: szufladkowanie

Llast in first out, Patrz: porz dek LIFOLCS, 125, 126, 127, 129leaf, Patrz: lilexicographic ordering, Patrz:

uporz dkowanie leksykograficzneliczba

Bacona, 101Erdösa, 102Erdösa-Bacona, 102losowa, 161pierwsza, 16, 153, 154

du a, 156twierdzenie, 156

wzgl dnie pierwsza, 155, 157z o ona, 154

linear search, Patrz: wyszukiwanie liniowelinked list, Patrz: lista powi zanalista, 23

powi zana, 91, 92dwukierunkowa, 92jednokierunkowa, 92

s siedztwa, 91reprezentacja, 91, 92

z dowi zaniami, Patrz: lista powi zanali , 109, 166

g boko , 167literal, Patrz: literalitera , 191, 194, 199logarytm, 20

naturalny, 20przy podstawie 2, 20

longest common subsequence, Patrz: LCSlongest-acyclic-path problem, Patrz:

problem najd u szej cie ki prostejloop, Patrz: p tlaloop body, Patrz: p tla treloop invariant, Patrz: p tla niezmiennikloop variable, Patrz: zmienna p tlilossless compression, Patrz: kompresja

bezstratnalossy compression, Patrz: kompresja stratna

Kup książkę Poleć książkę

Page 19: Algorytmy bez tajemnic

Skorowidz 219

a cuch, Patrz: napisa cuchowanie bloków szyfru, 150uk, Patrz: kraw d skierowana

MMacCormic John, 21macierz s siedztwa, 90, 91merge sort, Patrz: sortowanie scalaniemetoda, Patrz: procedura

2-opt, 207dziel i zwyci aj, 51, 59podzia u i ogranicze , 207przeszukiwanie s siedztwa, 207rekurencji uniwersalnej, 59

modular arithmetic, Patrz: arytmetykamodularna

Mother Problem, Patrz: problem matkamo liwo arbitra u, 115

Nnadmiarowo , 164napis, 125, 209

dopasowywanie, 125, 137, 141, 143czas dzia ania, 143

wzorcowy, 137z tekstem, 137zamiana na inny, 125, 130, 131, 132z czenie, Patrz: z czenie

neighborhood search, Patrz: metodaprzeszukiwanie s siedztwa

nierówno trójk ta, 208node, Patrz: w ze , wierzcho eknotacja

, 30, 31, 32, 43, 45, 73, 116asymptotyczna, 32, 46O, 31, 32, 43

NP-complete problem, Patrz: problem NP-zupe ny

NP-hard problem, Patrz: problem NP-trudny

Oograniczenie

dolne, 32, 45, 46, 73, 78egzystencjalne, 73uniwersalne, 73

górne, 30, 31, 32, 45, 46

one-time pad, Patrz: podk adka jednorazowaoperacja

alternatywy wykluczaj cej, 148, 149czas dzia ania, 29koszt, 131, 134

operator„i”, 48krótko spinaj cy, 48

optymalizacja, 17os abianie, 97, 98, 104, 107, 111, 169out-degree, Patrz: stopie wyj ciowyoutput, Patrz: wynik

Ppad, Patrz: podk adkaparadygmat

dziel i zwyci aj, Patrz: metoda dzieli zwyci aj

paradygmat algorytmiczny, Patrz: algorytmparadygmat

parametr, 24partition problem, Patrz: problem podzia upartitioning, Patrz: rozdzielaniepath, Patrz: cie kapattern string, Patrz: napis wzorcowyPCP, 209, 210pel, 164, 171p tla, 26

niezmiennik, 33, 45, 105, 106inicjowanie, 33, 42utrzymanie, 33, 42zako czenie, 33, 42

tre , 26zmienna, 26

pivot, Patrz: element osiowyplaintext, Patrz: tekst jawnypodci g, 125

wspólny, 126najd u szy, Patrz: LCS

podk adka, 149jednorazowa, 147, 149

podnapis, 126podnoszenie do kwadratu powtarzane, 159podstruktura optymalna, 122, 126, 127pod cie ka, 117podtablica, 40, 47pokrycie wierzcho kowe, 195, 196, 206

problem, 195rozmiar, 195

Kup książkę Poleć książkę

Page 20: Algorytmy bez tajemnic

220 Algorytmy bez tajemnic

polynomial-time algorithm, Patrz: algorytmwielomianowy

polynomial-time reduction algorithm,Patrz: algorytm redukcji w czasiewielomianowym

poprawno , Patrz: rozwi zanie poprawnepoprzednik, 97, 118porz dek, 84

LIFO, 89liniowy, 87ostatni przychodzi, pierwszy wychodzi,

Patrz: porz dek LIFOPost’s correspondence problem, Patrz: PCPpost p arytmetyczny, 45potomek, 108

klucz, 109predecessor, Patrz: poprzednikprefix, Patrz: przedrostekprefix-free code, Patrz: kod

bezprzedrostkowyprime number, Patrz: liczba pierwszapriority queue, Patrz: kolejka priorytetowaPRNG, 161problem

cyklu Hamiltona, Patrz: cykl Hamiltonadecyzyjny, 186, 187dopasowywania napisów, 125, 137,

141, 143gramatyki bezkontekstowej, Patrz: CGFkliki, 192, 195, 206komiwoja era, 182, 197, 198, 204, 205,

206, 207, 208matka, 189, 191, 205najd u szej cie ki acyklicznej, Patrz:

problem najd u szej cie ki prostejnajd u szej cie ki prostej, 199najkrótszych cie ek mi dzy wszystkimi

parami wierzcho ków, 115nierozstrzygalny, 208, 209, 210NP-trudny, 186, 187, 189, 197, 198,

203, 204NP-zupe ny, 183, 184, 185, 186, 187, 189,

192, 197, 204, 205, 206, 207, 208odpowiednio ci Posta, Patrz: PCPoptymalizacyjny, 186, 204, 207plecakowy, 204podatny, 184, 185podzia u, 203, 204pokrycia wierzcho kowego, 195, 206

spe nialno ci 3-CNF, 192, 193spe nialno ci formu y boolowskiej,

190, 191stopu, 208sumy podzbioru, 199, 203cie ki Hamiltona, 197

w klasie NP, 185, 186, 187, 198w klasie P, 184, 185zatrzymania, Patrz: problem stopu

procedura, 24automat sko czony, 141Bellmana-Forda, 111cykl z wag ujemn , 114dekompresja LZW, 177Dijkstra, 104dopasowywania napisów, 141drzewo Huffmana, 168, 169Euklidesa, 157Floyda-Warshalla, 119kompresja LZW, 174, 179LCS, 128

rekurencyjna, 129parametr, Patrz: parametrprzypisywanie, 26rozdzielanie, 63, 66sortowanie

na kopcu, 110scalanie, 51, 52, 57szybkie, 60topologiczne, 88wstawianie, 47wybieranie, 44

wyszukiwanie binarne, 41wywo anie, 24

program deterministyczny, 161programowanie dynamiczne, 121, 122,

123, 126przedrostek, 126, 142, 165przegl darka, 145przegródka, 39przep yw sterowania, 23przeszukiwanie s siedztwa, Patrz: metoda

przeszukiwanie s siedztwaprzypadek bazowy, 35, 51przyrostek, 142pseudokod, 23pseudorandom number generator, Patrz:

PRNGpublic key, Patrz: klucz publiczny

Kup książkę Poleć książkę

Page 21: Algorytmy bez tajemnic

Skorowidz 221

public key cryptography, Patrz: kryptografiaz kluczem jawnym

Qquicksort, Patrz: sortowanie szybkie

Rrecurrence equation, Patrz: rekurencjarecursion, Patrz: rekursjareduction, Patrz: redukcjaredukcja, 187, 188, 191, 194, 197, 202,

203, 204, 205rekurencja, 58

uniwersalna, 59, 65rekursja, 34, 52relacja przechodnia, 83relaksacja, Patrz: os abianierelative prime number, Patrz: liczba

wzgl dnie pierwszarelaxation step, Patrz: krok os abiaj cyRivest Ronald, 153rozdzielanie, 60, 62

procedura, 63, 66rozwi zanie

efektywne, 16, 17oszcz dne, Patrz: rozwi zanie efektywnepoprawne, 16, 17prawie optymalne, 17

RSA, 16, 153, 154, 156, 159run-length encoding, Patrz: kod seria-

d ugo

Ssatellite data, Patrz: dane towarzysz cesatisfiable formula, Patrz: formu a

spe nialnasecret key, Patrz: klucz tajnyseed, Patrz: ziarnoselection sort, Patrz: sortowanie wybieraniesentinel, Patrz: wartowniksequence, Patrz: ci gShamir Adi, 153shift cipher, Patrz: szyfr z przesuni ciemshort circuiting, Patrz: operator krótko

spinaj cyshortest of path, Patrz: cie ka najkrótsza

sieci rednica, 116simple substitution cipher, Patrz: szyfr

prosty podstawieniowysingle-pair shortest path, Patrz: cie ka

najkrótsza mi dzy jedn parwierzcho ków

single-source shortest paths, Patrz: cie kanajkrótsza z jednym ród em

singly linked list, Patrz: lista powi zanajednokierunkowa

slot, Patrz: przegródkasort key, Patrz: sortowanie kluczsortowanie, 39

binarne, 210czas dzia ania, 38, 45, 46, 49, 50, 59, 62,

65, 67, 71, 78, 92, 210deterministyczne, 68klucz, 38, 39na kopcu, 110na miejscu, 51, 56, 59porównanie, 72pozycyjne, 79, 80, 81, 210

czas dzia ania, 71scalanie, 38, 50, 58, 67, 210

czas dzia ania, 50, 58, 59, 67, 71stabilne, 79, 80szybkie, 38, 59, 62, 67, 210

czas dzia ania, 59, 65, 67, 71topologiczne, 87, 88, 89, 210

czas dzia ania, 92w porz dku rosn cym, 20wstawianie, 38, 46, 47, 50, 67, 210

czas dzia ania, 49, 50, 67, 71wybieranie, 38, 43, 46, 67, 210

czas dzia ania, 45, 46, 50, 67, 71zliczanie, 79, 80, 81, 210

czas dzia ania, 71, 78procedura, 78

source vertex, Patrz: wierzcho ek ród owysparse graph, Patrz: graf rzadkispe nialno

3-CNF, 191, 192, 199, 205, 206stack, Patrz: stosstan, 139state, Patrz: stanStinson Douglas, 146stopie

wej ciowy, 88, 90, 94wyj ciowy, 88, 94

Kup książkę Poleć książkę

Page 22: Algorytmy bez tajemnic

222 Algorytmy bez tajemnic

stos, 89string, Patrz: napisstring matching, Patrz: problem

dopasowywania napisówsubsequence, Patrz: podci gsubset-sum problem, Patrz: problem sumy

podzbiorusubstring, Patrz: podnapissuffix, Patrz: przyrosteksymbol , 148symmetric-key cryptography, Patrz:

kryptografia z kluczem symetrycznymsystem AES, Patrz: AESszufladkowanie, 39szyfr

blokowy, 149, 150a cuchowanie bloków, Patrz:

a cuchowanie bloków szyfruprosty podstawieniowy, 146z kluczem symetrycznym, 147, 150z przesuni ciem, 146

szyfrowanie, 16, 145d ugiego komunikatu, 160standard zaawansowany, Patrz: AES

cie ka, 93krytyczna, 92, 93, 94najkrótsza, 94, 95, 96

mi dzy jedn par wierzcho ków, 101mi dzy wszystkimi parami

wierzcho ków, 115pod cie ka, 117, 118waga, 117z jednym ród em, 97, 101

waga, 95, 117rednica sieci, 116wiadectwo, Patrz: certyfikat

Ttabela indeks pozycji, Patrz: wpistablica, 24, 40, 90, 107

b d indeksowania, 48element, 24indeksowanie, 78odwrotnie uporz dkowana, 67permutowanie, 43

posortowana, 37, 38, Patrz te :sortowanie

prawie posortowana, 50przeszukiwanie, 25z haszowaniem, 179

target vertex, Patrz: wierzcho ek docelowytekst

jawny, 146, 149kostkowanie bloków, 150plasterkowanie bloków, 150

zaszyfrowany, 146, 149, 152test prymarno ci

AKS, 154Millera-Rabina, 154, 156oparty na ma ym twierdzeniu Fermata,

159text string, Patrz: napis z tekstemtraveling-salesman problem, Patrz: problem

komiwoja eratriangle inequality, Patrz: nierówno

trójk tatrie, 179Turing Alan, 208twierdzenie

Fermata ma e, 156, 160o liczbach pierwszych, 156

Uundecidable problem, Patrz: problem

nierozstrzygalnyundirected graph, Patrz: graf

nieskierowanyuporz dkowanie, 37

leksykograficzne, 37uwierzytelnienie, 145

Vvariable, Patrz: zmiennavertex, Patrz: wierzcho ekvertex cover, Patrz: pokrycie

wierzcho kowevertex cover problem, Patrz: pokrycie

wierzcho kowe problemvertex degree, Patrz: wierzcho ek stopie

Kup książkę Poleć książkę

Page 23: Algorytmy bez tajemnic

Skorowidz 223

WWarshall Stephen, 116warto ciowanie, 192wartownik, 28weight, Patrz: kraw d wagaweight of path, Patrz: cie ka wagaweighted directed graph, Patrz: graf

skierowany wa onywektor

pocz tkowy, 150wetware, 23w ze , 108, Patrz: wierzcho ek

klucz, 109wewn trzny, 166

wierzcho ek, 87docelowy, 96stopie , 184ród owy, 96

wpis, 24

wyszukiwaniebinarne, 37, 39, 40, 41, 67

czas dzia ania, 39, 43, 67zapis rekurencyjny, 42

liniowe, 25, 26, 27, 67, 210czas dzia ania, 29, 30, 31, 67z wartownikiem, 28, 29, 32zapis rekurencyjny, 35

XXOR, 148, 149

Zzale no rekurencyjna, Patrz: rekurencjazasoby obliczeniowe, 16, 17ziarno, 161z czenie, 142zmienna, 26, 27

p tli, 26znak

, 148zdekodowany, 170

Kup książkę Poleć książkę

Page 24: Algorytmy bez tajemnic

224 Algorytmy bez tajemnic

Kup książkę Poleć książkę

Page 26: Algorytmy bez tajemnic