Knuth Donald E. - Sztuka Programowania. Tom 3 Sortowanie i wyszukiwanie.pdf

851
Donald E. Knuth Sztuka programowania Tom 3 Sortowanie i wyszukiwanie Z angielskiego przełożyli: Krzysztof Diks Adam Malinowski

Transcript of Knuth Donald E. - Sztuka Programowania. Tom 3 Sortowanie i wyszukiwanie.pdf

  • Donald E. Knuth

    Sztuka programowania

    Tom 3 Sortowanie i wyszukiwanie

    Z angielskiego przeoyli:

    Krzysztof Diks Adam Malinowski

  • OD REDAKCJI

    Udostpniane polskim Czytelnikom wielkie dzieo Donalda E. K nutha Sztuka programowania skada si obecnie z trzech tomw. W przedmowie do tomu 1 Autor wspomina o tomach 4 -7 , ktre nie zostay jeszcze opublikowane. Czytelnik nie powinien si wic dziwi, gdy w treci znajdzie odwoania do zagadnie zawartych w planowanych tomach.

    Autor zamieci w swoim dziele wiele cytatw literackich. Niektre z nich s mottami rozdziaw, a inne stanowi podsumowanie treci zawartych w podrozdziaach lub mniejszych partiach tekstu. Cz z nich bylimy zmuszeni pozostawi w wersji oryginalnej. Przekad na jzyk polski nie oddawaby bowiem gry sw wyraajcej myli Autora. Podobnie postpilimy z cytatam i nieangielskimi przytoczonymi przez Autora w oryginalnym brzmieniu. Kilka dzie, z ktrych pochodz m otta, zostao przeoonych na jzyk polski. Gdy jednak tumaczenie literackie nie oddawao intencji Autora i nie zawierao sw, na uyciu ktrych Mu zaleao, zdecydowalimy si przytoczy nowe tumaczenie.

    Niektre z oznacze matematycznych stosowanych przez Autora rni si nieco od spotykanych w tradycyjnych ksikach matematycznych. Poniewa zaleao nam na tym, by polskie wydanie dziea byo pod kadym wzgldem jak najbardziej zblione do oryginau, pozostawilimy je bez zmiany.

  • PRZEDMOWA

    Gotowanie jest sztuk, szlachetn nauk;

    kucharze to dentelmeni.

    T IT U S LIVIUS, Ab Urbe Condita X XX IX .v i (Robert Burton, Anatom y o f Melancholy 1 .2 .2 .2)

    Materia zawarty w tym tomie to dalszy cig rozdziau 2 z tomu 1, powiconego strukturom danych. Do innych strukturalnych poj tam omawianych dodaj pojcie liniowo uporzdkowanych danych.

    Tytu Sortowanie i wyszukiwanie mgby sugerowa, e ta ksika jest przeznaczona tylko dla programistw systemowych, ktrych zadaniem jest przygotowanie programw sortujcych oglnego przeznaczenia lub aplikacji do wyszukiwania informacji. W rzeczywistoci jednak problematyka sortowania i wyszukiwania idealnie nadaje si do omwienia kilku wanych zagadnie natury oglnej:

    W jaki sposb tworzy dobre algorytmy? W jaki sposb poprawia istniejce programy i algorytmy? W jaki sposb matematycznie analizowa efektywno algorytmw? Jak dokonywa racjonalnego wyboru midzy rnymi algorytmami dla tego

    samego zadania? Co to znaczy, e algorytm jest najlepszy z moliwych? Jak oddziauj na siebie teoria i praktyka? W jaki sposb efektywnie wykorzystywa pamici zewntrzne, tak jak tamy,

    bbny i dyski, w duych bazach danych?Rzeczywicie wierz, e kady naprawd wany aspekt programowania daje o sobie zna gdzie w kontekcie sortowania i wyszukiwania!

    Ten tom zawiera rozdziay 5 i 6 caego dziea. Rozdzia 5 jest powicony sortowaniu. Jest to obszerny tem at, ktry podzieliem na dwie czci: sortowanie wewntrzne i sortowanie zewntrzne. Dodatkowo s tu jeszcze podrozdziay, w ktrych omawiam zagadnienia dotyczce permutacji (podrozdzia 5.1) i optymalnych metod sortowania (podrozdzia 5.3). Rozdzia 6 dotyczy problemu wyszukiwania w tablicach lub plikach. Omawiam w nim m etody wyszukiwania liniowego, za pomoc porwnywania kluczy, wykorzystujce wasnoci numeryczne wyszukiwanych elementw oraz haszowanie. Na koniec rozwaam najtrudniejszy

    IX

  • X PRZEDMOWA

    problem wyszukiwania wzgldem kluczy wtrnych. Zaskakujco duo czy te dwa rozdziay. W tym tomie, w uzupenieniu do rozdziau 2, omawiam te dwie wane struktury danych: kolejki priorytetowe (punkt 5.2.3) i listy liniowe reprezentowane jako drzewa zrwnowaone (punkt 6.2.3).

    Tom ten, podobnie jak poprzednie, zawiera wiele materiau, ktry nie wystpuje gdzie indziej. Wiele osb dzielio si ze mn swoimi pomysami. Mam nadziej, e przedstawiajc je wasnymi sowami, nie wypaczyem ich sensu.

    Nie miaem czasu, eby systematycznie ledzi patenty. W rzeczywistoci jednak nie zgadzam si z obecnie panujcym zwyczajem patentowania algorytmw (zobacz punkt 5.4.5). Jeli kto przele mi kopi stosownego patentu, ktry nie jest cytowany w tej ksice, zobowizuj si zamieci odwoanie do niego w kolejnych wydaniach. Zachcam jednak wszystkich do kontynuowania starej matematycznej tradycji publicznego udostpniania nowo odkrywanych algorytmw. Istniej lepsze sposoby zarabiania na ycie ni ograniczanie innym dostpu do wasnych rozwiza.

    Kiedy jeszcze uczyem, wykorzystywaem t ksik jako podrcznik do wykadw ze struktur danych na poziomie redniozaawansowanym i zaawansowanym, pomijajc wikszo m ateriau matematycznego. Matematyczn cz tej ksiki wykorzystywaem na zaawansowanych zajciach z analizy algorytmw. Szczeglnie przydatne byy podrozdzia 5.1, punkt 5.2.2 i podrozdziay 6.3 i 6.4. Do wykadu z konkretnej zoonoci obliczeniowej mona by wykorzysta take podrozdzia 5.3, punkt 5.4.4 oraz punkty 4.3.3, 4.6.3 i 4.6.4 z tomu 2.

    Ksika ta jest w wikszej czci niezalena, z wyjtkiem rozwaa zwizanych z maszyn MIX omwion w tomie 1. Dodatek B zawiera wykaz stosowanych oznacze matematycznych; niektre z nich rni si nieco od tych spotykanych w tradycyjnych ksikach matematycznych.

    Przedmowa do drugiego wydaniaTo nowe wydanie pasuje do trzecich wyda tomw 1 i 2, w wypadku ktrych witowaem zakoczenie prac nad systemami T jK i METR FONT przez wykorzystanie ich do przygotowania publikacji, a zatem do czego, do czego zostay zaprojektowane.

    Przejcie na format elektroniczny umoliwio mi przejrzenie kadego sowa tekstu i kadego znaku przestankowego. Staraem si zachowa modzieczy styl pierwotnych sformuowa, tu i wdzie dodajc czasem kilka dojrzaych sdw. Dooyem mas nowych wicze; do mnstwa starych podopisywaem nowe, poprawione odpowiedzi. Zmiany s wszdzie, ale najwicej jest ich w punkcie 5.1.4 (o perm utacjach i tableaux), w podrozdziale 5.3 (o optymalnym sortowaniu), w punktach 5.4.9 (o sortowaniu na dyskach) i 6.2.2 (o entropii), w podrozdziaach 6.4 (o haszowaniu uniwersalnym) i 6.5 (o drzewach wielowymiarowych i drzewach trie).

  • PRZEDMOWA X

    Rozbudowa dziea Sztuka programowania trwa! Badania nad sortowaniemi wyszukiwaniem rozszerzaj si w niesychanym tempie. Z tego powodu nie

    ktre czci s oznaczone znakiem Uwaga, prace budowlane! ostrzegajcym, e tekst nie zosta zaktualizowany. Dla przykadu, gdybym wykada dzi struktury danych, z pewnoci omwibym struktury zrandomizowane, takie jak drzewa o nazwie treap. Tutaj jednak mogem tylko zacytowa podstawowe prace na ten tem at i zapowiedzie powstanie nowego punktu 6.2.5 (zobacz strona 514). Moje archiwum puchnie od materiaw, ktre zamierzam zamieci w ostatecznym, wspaniaym, trzecim wydaniu tomu 3, by moe za 17 lat; najpierw musz jednak skoczy tomy 4 i 5, a nie chciabym odwleka opublikowania ich duej ni to konieczne.

    Jestem niezmiernie wdziczny wielu setkom osb, ktre przez ostatnich 35 lat pomagay mi zbiera i ulepsza przedstawiony tu m ateria. Wikszo czarnej roboty zwizanej z przygotowaniem nowego wydania wykonali Phyllis Winkler (ktra zapisaa tekst z pierwszego wydania w formacie T^jK), Silvio Levy (ktry go zredagowa i pomg przygotowa wiele ilustracji) i Jeffrey Oldham (ktry przekonwertowa ponad 250 oryginalnych ilustracji na format programu METRP05T). Jak zwykle niezmiernie uczynni okazali si pracownicy dziau produkcyjnego wydawnictwa Addison-Wesley.

    Poprawiem wszystkie bdy, ktre uwani Czytelnicy znaleli w wydaniu pierwszym (jak rwnie bdy, ktrych, mimo wszystko, nikt nie znalaz). Staraem si te unikn bdw w nowych partiach materiau. Spodziewam si jednak, e jakie usterki pozostay i chciabym jak najszybciej je poprawi. Z tego powodu bez alu wypac 2,56 USD kademu pierwszemu znalazcy dowolnego bdu technicznego, typograficznego lub historycznego*. List wszystkich zgaszanych mi na bieco poprawek mona znale w witrynie W W W wymienionej na stronie vi niniejszego tomu.

    Stanford, Kalifornia D. E. K.

    Mam nadziej, e nie ma powodu kwestionowa tego, e kady autor ma pewne przywileje. W szczeglnoci ten, e tam , gdzie nie jes t rozumiany, naley

    wycign wniosek, e chcia przekaza co poytecznego i wanego.

    JO N A TH A N S W IF T , Tale o f a Tub, Preface (1704)

    Luty 1998

    * Dotyczy to niestety tylko angielskiego oryginau (przyp. tum.).

  • UWAGI DO WICZE

    wiczenia zawarte w tym dziele zostay opracowane z myl o Czytelnikach samoksztaccych si lub biorcych udzia w zajciach grupowych. Jest rzecz niezmiernie trudn, o ile w ogle moliw, by nauczy si czego, wycznie o tym czytajc - nie sprawdzajc nabytej wiedzy na konkretnych problemach, a co za tym idzie, nie bdc zmuszonym do mylenia o tym, co si przeczytao. Poza tym najlepiej uczymy si tego, co sami dla siebie odkrywamy. Z tych powodw wiczenia stanowi znaczn cz ksiki. Autor dooy wszelkich stara, by zawrze w nich jak najwicej informacji i wybra problemy ciekawe, a zarazem ksztacce.

    W wielu ksikach proste wiczenia s wymieszane z bardzo trudnymi. Jest to za praktyka, gdy Czytelnik chce z gry wiedzie, ile czasu zajmie mu rozwizanie danego problemu, a przy braku tej informacji moe zdecydowa si na pominicie wszystkich wicze. Klasycznym przykadem takiej ksiki jest Dynamie Programming Richarda Bellmana. To wana, pionierska praca, w ktrej zadania s umieszczone pod wsplnym tytuem wiczenia i problemy badawcze na kocu niektrych rozdziaw. Skrajnie proste pytania wystpuj w tej ksice midzy trudnymi, nierozwizanymi problemami. Plotka gosi, e dr Bellman zapytany kiedy, jak odrni wiczenia od problemw badawczych, odpowiedzia: To, co dasz rad rozwiza, jest wiczeniem, a co nie - problemem badawczym .

    Mona znale dobre argumenty za zamieszczeniem w ksice zarwno wicze, jak i problemw badawczych. Aby zatem uwolni Czytelnika od koniecznoci rozstrzygania, ktre s ktrymi, autor wprowadzi oceny punktowe wskazujce skal trudnoci. Oceny m aj nastpujce znaczenie:

    Ocena Interpretacja

    00 Skrajnie proste wiczenie, ktre mona rozwiza natychmiast, jeeli zrozumiao si tekst. Zazwyczaj takie wiczenie mona zrobi w pamici.

    10 Prosty problem, ktry zmusza do przemylenia przeczytanego tekstu. Czytelnik powinien poradzi sobie z rozwizaniem takiego wiczenia w najgorszym razie w cigu minuty. Przyda si kartka i owek.

    20 Przecitny problem, umoliwiajcy sprawdzenie podstawowego opanowania materiau. Rozwizanie go zajmie od pitnastu do dwudziestu minut.

    30 Problem o umiarkowanym stopniu trudnoci i/lub zoonoci. Rozwizanie go moe zaj ponad dwie godziny. Przy wczonym telewizorze nawet wicej.

    xiii

  • x iv UWAGI DO WICZE

    40 Do trudny lub pracochonny problem, nadajcy si na kolokwium semestralne. Student powinien sobie z nim poradzi w rozsdnym czasie, ale rozwizanie jest nietrywialne.

    50 Problem badawczy, ktrego wedug informacji autora nikt zadowalajco nie rozwiza, cho prbowao wielu. Czytelnik, ktry znajdzie rozwizanie, powinien je opublikowa. Ponadto autor bdzie wdziczny za jak najszybsze poinformowanie go o rozwizaniu (o ile jest poprawne).

    Inne oceny s wyznaczane przez interpolacj powyszej logarytmicznej skali. Ocena 17 wskazuje na przykad wiczenie, ktre jest nieco prostsze od przecitnego. Problemy z ocen 50, ktre zostay ostatnio rozwizane przez Czytelnikw, mog w nastpnych wydaniach (oraz w erracie publikowanej w Internecie, zobacz strona vi) pojawi si ju z ocen 45.

    Reszta z dzielenia oceny punktowej przez 5 oznacza ilo szczegowej pracy do wykonania. Std rozwizywanie wiczenia ocenionego na 2 moe zaj wicej czasu ni wiczenia ocenionego na 25, ale to drugie bdzie wymagao wicej pomysowoci.

    Autor stara si waciwie dobra oceny, ale osobie, ktra wymyla zadanie, trudno stwierdzi, jak pracochonne bdzie znalezienie rozwizania. Przy tym rnym osobom rozwizywanie niektrych typw problemw przychodzi atwiej, a innych trudniej. Pozostaje mie nadziej, e oceny punktowe zadowalajco przybliaj poziom trudnoci. Naley je jednak traktowa raczej jako oglne wskazwki co do stopnia trudnoci ni dokadne miary trudnoci.

    Ksika ta zostaa napisana dla Czytelnikw o rnym stopniu matematycznej biegoci i wyrafinowania. Skutkiem tego niektre wiczenia s przeznaczone dla osb o zaciciu matematycznym. Ocena punktowa trudnoci wiczenia jest poprzedzona liter M, jeeli dotyczy ono matematyki bardziej zaawansowanej ni potrzebna do pisania programw. wiczenie jest oznaczone literami HM, jeeli jego rozwizanie wymaga znajomoci analizy matematycznej lub matematyki wyszej nie przedstawionej w ksice. Oznaczenie HM nie musi wiadczy o tym, e wiczenie jest trudne.

    Niektre wiczenia s poprzedzone strzak s one wyjtkowo pouczajce i wyjtkowo polecane. Oczywicie po adnym studencie/czytelniku nie naley si spodziewa, e rozwie wszystkie wiczenia; dlatego te zostay wyrnione te najcenniejsze. (Nie oznacza to jednak wcale, e pozostaymi nie warto si zajmowa!) Kady Czytelnik powinien przynajmniej sprbowa rozwiza wszystkie wiczenia z ocen 10 lub nisz; strzaki s przy tych z trudniejszych problemw, za ktre naleaoby si zabra w pierwszej kolejnoci.

    Rozwizania wikszoci wicze s zamieszczone w oddzielnej czci zatytuowanej Odpowiedzi do wicze . Naley korzysta z nich mdrze, to znaczy nie podglda odpowiedzi, dopki naprawd nie sprbuje si rozwiza zadania samodzielnie, i nie udawa, e nie ma si czasu. Odpowied moe si okaza pouczajca i pomocna, ale dopiero po samodzielnym rozwizaniu wiczenia lub po uczciwej prbie zrobienia tego. Podane rozwizanie jest zazwyczaj krtkie, a jego szczegy s omwione raczej pobienie. Autor zakada bowiem, e Czy

  • UWAGI DO WICZE XV

    telnik prbowa samodzielnie zrobi wiczenie. Czasami rozwizanie nie stanowi penej odpowiedzi na postawione pytanie, a czasami zawiera a nadto informacji. Cakiem moliwe, e Czytelnik znajdzie lepsze rozwizanie od tego opublikowanego w ksice albo znajdzie w rozwizaniu bd. W takim wypadku autor bdzie wdziczny za podanie wszystkich szczegw. Kolejne wydania ksiki bd zawieray poprawione rozwizania opatrzone nazwiskami pogromcw bdw.

    Przy rozwizywaniu danego wiczenia mona posugiwa si rozwizaniami poprzednich wicze, chyba e tekst wyranie tego zabrania. Poniewa autor uwzgldni tak sytuacj przy doborze ocen punktowych, moe si okaza, e wiczenie n + 1 ma nisz ocen ni wiczenie n, cho rozwizanie wiczenia n wynika z oglniejszego wyniku uzyskanego w wiczeniu n + 1 .

    Zestawienie oznacze: 00 Trywialne10 Proste (minuta)20 rednie (kwadrans)

    Polecane 30 Umiarkowanie trudneM Dla zainteresowanych matematyk 40 Na egzaminHM Wymaga znajomoci matematyki wyszej 50 Problem badawczy

    WICZENIA 1 . [00] Co oznacza ocena M2 0 ?

    2. [10] Co mog da Czytelnikowi wiczenia?3. [HM5] Udowodnij, e dla cakowitych n, n > 2, rwnanie x n -f y n z n nie ma

    rozwiza w dodatnich liczbach cakowitych y, z.

    Dwie godziny wicze dziennie . . . wystarczajco, eby utrzyma wierzchowca w kondycji.

    M. H. M A H O , The Handy Horse Book (1865)

  • SPIS TRECI

    R ozdzia 5 S o r t o w a n i e ......................................................................................... 1

    *5.1. Kombinatoryczne wasnoci p e r m u ta c ji.......................................................... 11*5.1.1. Inw ersje......................................... 11*5.1.2. Permutacje m u ltiz b io r w ...................................................................... 23*5.1.3. S e k w e n s y .................................................................................................... 36*5.1.4. Tableaux i in w o lu c j e ............................................................................... 49

    5.2. Sortowanie w ew n trzn e ........................................................................................ 765.2.1. Sortowanie przez w staw ian ie ................................................................... 835.2.2. Sortowanie przez zamienianie ............................................................... 1105.2.3. Sortowanie przez w yb ieran ie ................................................................... 1455.2.4. Sortowanie przez s c a la n ie ........................................................................ 1665.2.5. Sortowanie przez rozrzucanie................................................................... 178

    5.3. Sortowanie optym alne............................................................................................ 1905.3.1. Sortowanie z minimaln liczb p o r w n a ......................................... 190

    *5.3.2. Scalanie za pomoc minimalnej liczby p o r w n a ............................ 208*5.3.3. Wybr z minimaln liczb p o r w n a ................................................. 219*5.3.4. Sieci s o r tu j c e ............................................................................................ 232

    5.4. Sortowanie z e w n tr z n e ........................................................................................ 2635.4.1. Scalanie wielowejciowe i wybr z p o d m ia n .................................... 267

    *5.4.2. Scalanie w ie lo fa z o w e ............................................................................... 284*5.4.3. Scalanie kaskadow e................................................................................... 306*5.4.4. Odczytywanie tamy w s t e c z .................................................................. 318*5.4.5. Sortowanie o s c y la c y jn e .......................................................................... 332*5.4.6. Praktyczne aspekty scalania ta m o w eg o ............................................. 338*5.4.7. Zewntrzne sortowanie pozycyjne......................................................... 366*5.4.8. Sortowanie na dwch t a m a c h ............................................................. 372*5.4.9. Dyski i b b n y ........................................................................................... 381

    5.5. Podsumowanie, historia i b ib liogra fia .............................................................. 408

    R ozdzia 6 W y sz u k iw a n ie .................................................................................... 421

    6.1. Wyszukiwanie lin io w e............................................................................................ 4256.2. Wyszukiwanie przez porwnywanie k lu c z y ...................................................... 439

    6.2.1. Wyszukiwanie w tablicy uporzdkowanej ........................................ 4396.2.2. Wyszukiwanie w drzewach b in a rn y ch ................................................. 4576.2.3. Drzewa zrwnowaone.............................................................................. 4926.2.4. Drzewa wyszych s to p n i.......................................................................... 517

    xvi

  • SPIS TRECI xv ii

    6.3. Wyszukiwanie cyfrowe ........................................................................ 5286.4. H a szo w a n ie .......................................... 5526.5. Wyszukiwanie wzgldem kluczy w t r n y c h ....................................................... 602

    Odpowiedzi do wicze ............................................................................. 629

    Dodatek A Tabele wielkoci num erycznych ............................................... 807

    1. Podstawowe stae (w systemie dziesitn ym )............................................... 8072. Podstawowe stae (w systemie sem kowym )............................................... 8083. Liczby harmoniczne, liczby Bernouliego, liczby Fibonacciego . . . . 809

    Dodatek B Wykaz oznacze ............................................................................. 811

    Skorowidz ze sownikiem 816

  • R O Z D Z I A P I T Y

    SORTOWANIE

    Nic nie jest tak trudne ani tak ryzykowne, ani te tak niepewne,ja k zaprowadzanie nowych porzdkw.

    Ale nie jeste w stanie przejrze jednoczenie wszystkichpozwole, zaprotestowa Drake.

    Nie musimy tego robi, Paul. Po prostu uporzdkujemy jei poszukamy duplikatw .

    PER RY M ASON, in The Case o f the Angry Mourner (1951)

    Komputer Treesort - Korzystajc z tej nowej komputerowej metody, mona szybko rozpozna

    ponad 260 rnych gatunkw drzew rosncych w Stanach, na Alasce i w Kanadzie, ja k rwnie palmy, drzewa pustynne i inne egzotyczne drzewa.eby okreli, jak i to gatunek drzewa, wystarczy ty i ko woy

    ig.

    Catalog of Edmund Scientific Company (1964)

    Ten rozdzia powicimy zagadnieniu, ktre czsto wystpuje w programowaniu: rozmieszczaniu danych w porzdku rosncym bd malejcym. Wyobramy sobie, jak trudne byoby posugiwanie si sownikiem, gdyby zawarte w nim sowa nie byy uporzdkowane alfabetycznie! Podobnie sposb, w jaki przechowujemy dane w pamici komputera, ma czsto ogromny wpyw na szybko i prostot algorytmw, ktre operuj na tych danych.

    Chocia w sownikach jzyka angielskiego sortowanie (sorting) definiuje si jako proces segregowania lub rozdzielania rzeczy na grupy wedug podobiestwa okrelonych cech, programici komputerowi, tradycyjnie ju, uywaj tego sowa na okrelenie procesu ustawiania obiektw (rzeczy) w porzdku rosncym lub malejcym. Taki proces powinien by moe nazywa si porzdkowaniem (ordering), a nie sortowaniem, ale kady, kto sprbuje uywa sowa porzdkowanie , szybko bdzie mia wtpliwoci z powodu wielu rnych znacze, jakie ma to sowo. Jest tak w szczeglnoci w jzyku angielskim. Rozwamy na przykad zdanie w jzyku angielskim: Since only two of our tape drives were in working order, I was ordered to order more tape units in short order, in order to order the data several order of magnitude faster . W swobodnym tumaczeniu na jzyk polski zdanie to ma posta: Poniewa tylko dwa z naszych napdw tamowych byy w porzdku, polecono mi zamwi szybko wicej jednostek tamowych, tak eby przypieszy porzdkowanie danych o kilka wielkoci . Swko order pojawia si te bardzo czsto w angielskiej terminologii matematycznej. Mwimy

    1

  • 2 SORTOWANIE 5

    order of a group (rzd grupy), order of a perm utation (rzd permutacji), the order of a branch point (stopie punktu podziau), relations of order (relacje porzdku) itd., itd. Tak wic angielskie sowo order moe rzeczywicie doprowadzi do niejednoznacznoci. Dlatego do okrelenia komputerowego porzdkowania uywa si w jzyku angielskim sowa sorting , a za jego polski odpowiednik przyjmiemy sowo sortowanie .

    Na nazw procesu sortowania proponowano te termin sekwencjonowanie (sequencing), czyli ustawianie jeden po drugim. W ydaje si jednak, e to sowo rzadko jest kojarzone z procesem porzdkowania, w szczeglnoci gdy pojawiaj si takie same elementy. Sporadycznie te jest ono w sprzecznoci z innymi terminami. Jest te prawd, e samo sowo sortowanie jest naduywane, ale mimo to zagocio ono ju na stae w jzyku informatyki. Dlatego te bdziemy uywali sowa sortowanie jako nazwy procesu porzdkowania i nie zamierzamy si wicej z tego tumaczy.

    Najwaniejszymi zastosowaniami sortowania s:a) Rozwizanie problemu grupowania, w ktrym wszystkie elementy o tych

    samych identyfikatorach s zbierane razem. Przypumy, e mamy 10000 elementw w dowolnym porzdku, a wiele z nich ma te same wartoci. Naszym celem jest takie rozmieszczenie tych elementw, eby wszystkie o tej samej wartoci wystpoway kolejno obok siebie. To jest w istocie problem sortowania w pierwotnym znaczeniu tego sowa i mona go rozwiza, sortujc dane wejciowe w nowym znaczeniu, tak eby elementy wystpoway w porzdku niemalejcym v\ < V2 < * < ^ioooo- Ten przykad wyjania w peni nowe znaczenie sowa sortowanie .b) Kojarzenie elementw z dwch lub wicej cigw. Jeli kilka cigw danych

    zostao posortowanych w tym samym porzdku, moliwe jest odnalezienie wsplnych elementw tylko w jednym przebiegu. Tak metod posuy si Perry Mason w ledztwie (zobacz cytat na pocztku rozdziau). Zazwyczaj duo szybciej mona przetworzy plik informacji, gdy przetwarzamy go sekwencyjnie od pocztku do koca, zamiast po nim skaka (chyba, e cay plik zmieci si w pamici operacyjnej). Sortowanie umoliwia stosowanie sekwencyjnego dostpu do duych plikw, jako wygodnego sposobu adresowania bezporedniego.

    c) Wyszukiwanie informacji za pomoc kluczy. Sortowanie jest pomocne rwnie w wyszukiwaniu, o czym si przekonamy w rozdziale 6. Tak wic jest przydatne w tworzeniu atwych do odbierania przez ludzi danych wyjciowych. Prawd mwic lista, ktra zostaa uoona w porzdku alfabetycznym, czsto wyglda bardziej miarodajnie, jeli nawet podane na niej wartoci numeryczne zostay le obliczone.

    Chocia sortowanie tradycyjnie byo gwnie wykorzystywane w przetwarzaniu danych biznesowych, to tak naprawd jest ono narzdziem, o ktrym powinien pamita kady programista i ktrego mona uy w wielu sytuacjach. W wiczeniu 2.3.2-17 omwilimy jego zastosowanie w upraszczaniu wyrae algebraicznych. Ponisze wiczenia ilustruj rnorodno typowych zastosowa sortowania.

  • 5 SORTOWANIE 3

    Jednym z pierwszych duych programw komputerowych, ukazujcych wszechstronno sortowania, by kompilator LARC Scientific Compiler opracowany w 1960 roku przez J. Erdwinna, D. E. Fergusona oraz ich partnerw z Computer Sciences Corporation. Ten optymalizujcy kompilator rozszerzonego jzyka FORTRAN bardzo czsto korzysta z sortowania, tak aby rne algorytmy wykorzystywane w procesie kompilacji pojawiay si z waciwymi czciami programu rdowego w dobrej kolejnoci. Pierwszym przebiegiem kompilatora bya analiza leksykalna, w ktrej kod rdowy programu w jzyku FORTRAN by dzielony na pojedyncze leksemy, kady reprezentujcy identyfikator lub sta, lub operator itd. Kademu leksemowi przypisywano kilka numerw porzdkowych; po posortowaniu po identyfikatorach i odpowiednich numerach porzdkowych wszystkie wystpienia danego identyfikatora ukazyway si razem. Identyfikatory definiowane przez uytkownika, takie jak nazwy funkcji, parametry, zmienne tablicowe, dostaway mae numery porzdkowe, tak aby mogy pojawi si jako pierwsze wrd leksemw o tym samym identyfikatorze; uatwiao to wykrywanie nieprawidowoci w uywaniu tych samych identyfikatorw, jak i alokacj pamici zgodnej z deklaracjami EQUIVALENCE. Tak zebrane informacje o kadym identyfikatorze byy doczane do kadego leksemu; w ten sposb nie byo potrzeby utrzymywa w szybkiej pamici wewntrznej tablicy symboli . Zmodyfikowane leksemy byy nastpnie sortowane wzgldem innego numeru porzdkowego, co w zasadzie doprowadzao program rdowy do pocztkowej postaci, z tym e sposb numerowania zosta tak sprytnie skonstruowany, aby wyraenia ary tmetyczne wystpoway w wygodniejszej notacji polskiej . Sortowanie byo rwnie wykorzystywane w dalszych fazach kompilacji do optymalizacji ptli, do tworzenia listy bdw itd. Krtko mwic, kompilator zosta zaprojektowany tak, e w zasadzie cae przetwarzanie mogo by wykonywane sekwencyjnie na podstawie plikw przechowywanych w pomocniczej pamici bbnowej, poniewa odpowiednie numery porzdkowe byy przydzielone danym tak, aby mogy by sortowane na rne potrzebne sposoby.

    W latach szedziesitych producenci komputerw szacowali, biorc pod uwag wszystkich klientw, e sortowanie zajmuje ponad 25 procent czasu pracy komputerw. Faktycznie w wielu instalacjach sortowanie zajmowao ponad poow czasu pracy. Z tych danych statystycznych mona wycign wnioski, e albo (i) sortowanie ma wiele wanych zastosowa, albo (ii) wielu uytkownikw korzysta z sortowania bez potrzeby, albo te (iii) w powszechnym uyciu byy nieefektywne algorytmy sortowania. Prawda pewnie ley gdzie midzy tymi trzema moliwociami, ale w kadym razie widzimy, e sortowanie z praktycznego punktu widzenia zasuguje na dokadniejsze zbadanie.

    Nawet gdyby sortowanie nie miao adnych zastosowa, to i tak byoby wiele powodw do tego, by je zgbi! Wielce pomysowe algorytmy, ktre zostay odkryte, pokazuj, e sortowanie samo w sobie jest niezwykle interesujcym tematem do studiowania. W tej dziedzinie istnieje zarwno wiele fascynujcych, nierozwizanych problemw, jak i sporo ju rozwizanych.

    Z szerszej perspektywy zobaczymy rwnie, e algorytmy sortowania stanowi wartociowe studium sposobw oglnego podejcia do rozwizywania prbie-

  • 4 SORTOWANIE 5

    mw programistycznych. W tym rozdziale przedstawimy wiele istotnych zasad posugiwania si strukturam i danych. Przeledzimy rozwj kilku technik sortowania w celu ukazania idei, ktre za nimi stay. Na podstawie tego studium nauczymy si wiele o strategiach, ktre s pomocne w tworzeniu dobrych algorytmw dla innych zada komputerowych.

    Sortowanie jest doskona ilustracj oglnych zagadnie zwizanych z analiz algorytmw - sposobw okrelania wydajnoci algorytmw w celu dokonania rozsdnego wyboru midzy konkurencyjnymi algorytmami. Czytelnicy o zainteresowaniach matematycznych znajd w tym rozdziale kilka interesujcych sposobw oceny szybkoci dziaania algorytmw oraz rozwizywania zoonych zalenoci rekurencyjnych. M ateria zosta jednak tak opracowany, e Czytelnicy nie zainteresowani matematyk mog spokojnie pomin te rozwaania.

    Zanim przejdziemy dalej, powinnimy janiej zdefiniowa nasze zadanie i wprowadzi potrzebn terminologi. Danych jest N elementw

    iii , i?2, . . . , R n i

    ktre m aj by posortowane. Elementy bdziemy nazywa rekordami, a cay zestaw N rekordw bdziemy nazywa plikiem. Kady rekord Rj ma klucz K j , ktry steruje procesem sortowania. Zazwyczaj poza kluczem wystpuj te dodatkowe dane. Taka dodatkowa informacja nie ma wpywu na sortowanie, z wyjtkiem tego, e musi by przemieszczana jako cz kadego rekordu.

    Relacja porzdku

  • 5 SORTOWANIE 5

    sposb zapisana permutacja wyznaczajca porzdek kluczy, ale same rekordy nie zmieniaj swojego pooenia.

    W kilku metodach sortowania opisywanych w tym rozdziale zakada si istnienie jednej lub obu wartoci oo i oo , ktre definiuje si odpowiednio jako warto wiksz lub mniejsz od wszystkich kluczy:

    -o o < K j < oo, dla 1 < j < N . (3)

    Takie ekstremalne wartoci s czasami wykorzystywane jako sztuczne klucze lub jako wartownicy. W (3) wykluczamy zachodzenie rwnoci; jeli rwno jest dopuszczalna, to nasze algorytmy mona tak zmodyfikowa, eby nadal pracoway, ale zazwyczaj kosztem pewnej elegancji i efektywnoci.

    Sortowanie mona oglnie podzieli na sortowanie wewntrzne, w ktrym rekordy s cakowicie przechowywane w szybkiej pamici wewntrznej, i na sortowanie zewntrzne, gdy mamy wicej rekordw ni jednorazowo mona zmieci w dogodny sposb w pamici wewntrznej. Sortowanie wewntrzne umoliwia wiksz elastyczno w organizowaniu danych i dostpie do nich, podczas gdy sortowanie zewntrzne uczy nas, jak radzi sobie z do ostrymi ograniczeniami dotyczcymi dostpu do danych.

    Czas potrzebny do posortowania N rekordw za pomoc dobrego algorytmu sortowania jest z grubsza proporcjonalny do N \o g N; wykonywanych jest okoo log N przebiegw przez dane. To jest najmniejszy moliwy czas, co pokaemy w punkcie 5.3.1 , jeli rekordy s dane w losowym porzdku i jeli sortowanie jest wykonywane przez porwnywanie kluczy parami. Tak wic, jeli podwoimy liczb rekordw, to czas sortowania zwikszy si niewiele wicej ni dwukrotnie. (W rzeczywistoci, jeli klucze s rne, to przy N dcym do nieskoczonoci lepszym wskanikiem czasu potrzebnego na sortowanie jest TY^logiY)2, poniewa rozmiar kluczy musi rosn co najmniej tak szybko jak log jednak w praktycznych zastosowaniach N nigdy naprawd nie dy do nieskoczonoci).

    Jeli o kluczach wiadomo, e s rozmieszczone losowo zgodnie z pewnym cigym rozkadem liczbowym, to przekonamy si, e mona je posortowa rednio w O(N) krokach.

    WICZENIA - zestaw pierwszy1. [M20] Korzystajc z praw trychotomii i przechodnioci, udowodnij, e permutacja

    p( l )p (2 ) .. .p{N) jest jednoznacznie wyznaczona, jeli o sortowaniu zakada si, e jest stabilne.

    2. [21] Zamy, e w pewnym pliku kady rekord Rj zawiera dwa klucze, klucz gwny Kj i klucz wtrny k j , i na kadym zbiorze kluczy jest okrelony porzdek liniowy

  • 6 SORTOWANIE 5

    gdzie i n = N. Nastpnie posortowaa kad z n grup Rp^ ._!+i), , ^p(ij) P kluczach wtrnych.

    Bolesaw wzi ten sam plik wejciowy i posortowa go najpierw po kluczach wtrnych; nastpnie otrzymany plik posortowa po kluczach gwnych.

    Cezary wzi take ten sam plik, wykona jedno sortowanie, wykorzystujc porzdek leksykograficzny na kluczach gwnych i wtrnych (Kj , k3).

    Czy kade z nich otrzymao ten sam wynik?

    3. [M25] Niech < bdzie relacj na K i , . . . , K n , dla ktrej zachodzi prawo trychoto- mii, ale nie prawo przechodnioci. Udowodnij, e nawet bez prawa przechodnioci jest moliwe posortowanie rekordw w sposb stabilny tak, eby byy spenione warunki (1) i (2); w rzeczywistoci istniej co najmniej trzy rozmieszczenia, ktre speniaj te warunki!

    4. [21] W sownikach w rzeczywistoci nie jest uywany cisy porzdek leksykograficzny, poniewa due i mae litery musz wystpowa na zmian. Tak wic jest potrzebny porzdek przedstawiony poniej:

    a < A < aa < AA < AAA < Aachen < aah < < zzz < ZZZ.

    Wyjanij, w jaki sposb zaimplementowa porzdek sownikowy.

    5. [M28 ] Zaproponuj sposb kodowania binarnego wszystkich nieujemnych liczb cakowitych tak, e jeli kodem n jest sowo p(n), to zachodzi m < n wtedy i tylko wtedy, gdy p(m) jest leksykograficznie mniejsze od p{n). Ponadto, p(m) nie powinno by prefiksem p(n) dla jakiegokolwiek m ^ n. Jeli to moliwe, dugo p(n) powinna wynosi lgn + O (loglogn) dla wszystkich duych n. (Taki kod jest przydatny, jeli chcemy sortowa teksty, ktre zawieraj sowa zmieszane z liczbami, lub jeli chcemy odwzorowa dowolnie duy alfabet na sowa binarne).

    6. [15] Pan B. C. Tpogowy (programista maszyny MIX) chcia si dowiedzie, czy liczba zapamitana w komrce A jest wiksza, mniejsza, czy rwna liczbie zapamitanej w komrce B. Zatem napisa LDA A; SUB B i sprawdza, czy warto rejestru A bya dodatnia, ujemna, czy rwna zero. Jaki powany bd zrobi i co powinien zrobi w zamian?

    7. [17] Napisz podprogram w jzyku maszyny MIX porwnujcy klucze skadajce si z wielu liczb i speniajcy nastpujc specyfikacj:

    Wywoanie: JMP COMPAREWarunki wejciowe: r ll = n; CONTENTS (A + k) dh i CONTENTS (B + k) = 6*, dla

    1 ^ k ^ n; przyjmij, e n ^ 1.Warunki wyjciowe: CI = GREATER, jeli (an, . . , ai) > (6n, . . . , >i);

    CI = EQUAL, jeli (an, . . . , ai ) = (6n, . . . ,&i);CI = LESS, jeli (an, . . . , oi ) < (6n, M ) \ rX i r ll mog by naruszone.

    Tutaj relacja (an, . . . , ai) < (b7L). . . , b\) oznacza porzdek leksykograficzny z lewa na prawo; to znaczy istnieje indeks j taki, e dk = bk dla n ^ k > j , ale a3 < bj.

    8. [30] Komrki A i B zawieraj dwie liczby a i b. Poka, e mona napisa programw jzyku maszyny MIX bez uywania adnego operatora skoku, ktry oblicza i zapamituje min (a, 6) w komrce C. (Ostrzeenie: Poniewa nie wolno testowa, czy wystpi

  • 5 SORTOWANIE 7

    lub nie nadmiar arytmetyczny, zatem mdrze jest zagwarantowa, eby nadmiar by niemoliwy niezalenie od wartoci a i 6).

    9. [M27] Sortujemy niemalejco n liczb wybranych z przedziau (0 ,1) losowo (z rozkadem jednostajnym) i niezalenie. Jakie jest prawdopodobiestwo, e r-ta z tych liczb, w kolejnoci od najmniejszej, jest ^ x l

    WICZENIA - zestaw drugiW kadym z nastpnych wicze sformuowano problem, przed jakim mg stan programista komputerowy w dawnych latach, kiedy to komputery nie miay dostatecznie duej pamici o dostpie bezporednim. Zaproponuj dobry sposb rozwizania takiego problemu, przy zaoeniu7 e do dyspozycji jest tylko pami wewntrzna skadajca si jedynie z kilku tysicy sw oraz okoo p tuzina jednostek tamowych (wystarczajco do sortowania). Algorytmy, ktre zachowuj si dobrze przy takich ograniczeniach, okazuj si by take efektywne na wspczesnych maszynach.

    10. [15] Na tamie znajduje si jeden milion sw danych. W jaki sposb mona sprawdzi, ile rnych sw znajduje si na tamie?11. [18] Pracujesz w urzdzie skarbowym. Otrzymae miliony formularzy informacyjnych, w ktrych instytucje powiadamiaj o dokonanych wypatach dla osb prywatnych, oraz miliony indywidualnych zezna podatkowych o dochodach. W jaki sposb wychwyci osoby, ktre nie poday penej informacji o swoich dochodach?12. [M25] ( Transponowanie macierzy) Dana jest tama magnetyczna zawierajca mil- lion sw, w ktrych zapisano elementy macierzy 1000 x 1000 w porzdku wierszowym: ai,i a i ,2 01,100002,1 . . . 02,1000 aiooo,iooo- W jaki sposb mona utworzy tam, na ktrej elementy macierzy s przechowywane w porzdku kolumnowym ai,i a2,i . . . 01000,1 oi ,2 . . . aiooo,2 * 01000,1000? (Postaraj si wykona mniej ni dwanacie przebiegw przez dane).13. [M26] W jaki sposb potasowa losowo duy plik skadajcy si z N sw?14. [20] Pracujemy na dwch systemach komputerowych, w ktrych kolejno znakw alfanumerycznych jest rna. W jaki sposb mona sortowa pliki alfanumeryczne na jednym komputerze zgodnie z porzdkiem stosowanym na drugim z nich?15. [18] Dana jest wyjtkowo duga lista osb urodzonych w Stanach Zjednoczonych razem z nazwami stanw, w ktrych si urodzili. W jaki sposb mona policzy liczb osb urodzonych w kadym stanie? (Zakadamy, e nikt nie pojawia si na licie wicej ni raz).

    16. [20] eby uatwi dokonywanie zmian w duych programach w jzyku FORTRAN, postanowiono napisa program do tworzenia odsyaczy.; taki program dostaje na wejciu program napisany w jzyku FORTRAN i drukuje ten program wraz z indeksem, ktry pokazuje uycie w nim kadego identyfikatora. W jaki sposb taki program powinien zosta wykonany?

    17. [55] (Sortowanie kart bibliotecznych) Zanim powstay komputerowe bazy danych, w kadej bibliotece znajdowa si katalog z kartami, w ktrym uytkownicy wyszukiwali interesujce ich ksiki. Jednake zadanie utrzymywania kart katalogowych w porzdku wygodnym dla czowieka stawao si coraz bardziej skomplikowane wraz z rozrostem zasobw bibliotecznych. Ponisza lista uoona w porzdku alfabetycznym pozwala zapozna si z procedurami postpowania zalecanymi w Zasadach wypeniania kart katalogowych amerykaskiego stowarzyszenia bibliotek (Chicago: 1942):

  • 8 SORTOWANIE 5

    Tekst na karcie R. Accademia nazionale dei Lincei, Rome 1812; ein historischer Roman Bibliothque dhistoire rvolutionnaire Bibliothque des curiosits Brown, Mrs. J. Crosby Brown, JohnBrown, John, mathematician Brown, John, of Boston Brown, John, 1715-1766 BROWN, JOHN, 1715-1766 Brown, John, d. 1811 Brown, Dr. John, 1810-1882 Brown-Wiiliams, Reginald Makepeace Brown AmericaBrown & Dallisons Nevada directory Brownjohn, AlanDen, Vladimir Eduardovich, 1867- The denDen lieben sssen MdelnDix, Morgan, 1827-19081812 ouvertureLe XIXe sicle franaisThe 1847 issue of U. S. stamps1812 overtureI am a mathematicianIBM journal of research and developmentha-I ha-ehadla; a love storyInternational Business Machines Corporation al-Khuwarizml, Muhammad ibn Ms,

    ft. 813-846 Labour. A magazine for all workers Labor research association Labour, see Labor McCalls cookbook McCarthy, John, 1927- Machine-independent computer

    programming MacMahon, Maj. Percy Alexander,

    1854-1929 Mrs. Dalloway Mistress of mistresses Royal society of London St. Petersburger Zeitung Saint-Sans, Camille, 1835-1921 Ste-Marie, Gaston P Seminumerical algorithms Uncle Toms cabin

    UwagiIgnore foreign royalty (except British) Achtzehnhundert zwolf Treat apostrophe as space in French Ignore accents on letters Ignore designation of rank Names with dates follow those without . . . and the latter are subarranged

    by descriptive words Arrange identical names by birthdate Works about follow works by Sometimes birthdate must be estimated Ignore designation of rank Treat hyphen as space Book titles follow compound names & in English becomes and

    Ignore apostrophe in namesIgnore an initial article. *. provided its in nominative caseNames precede wordsDix-huit cent douzeDix-neuviemeEighteen forty-sevenEighteen twelve(a book by Norbert Wiener)Initials are like one-letter words Ignore initial article Ignore punctuation in titles

    Ignore initial ,,al- in Arabic names Respell it Labor

    Cross-reference card Ignore apostrophe in English Me = Mac

    Treat hyphen as space

    Ignore designation of rank Mrs. = Mistress

    Dont ignore British royalty St . = Saint, even in German Treat hyphen as space Saint e(a book by Donald Ervin Knuth)(a book by Harriet Beecher Stowe)

  • 5 SORTOWANIE 9

    Tekst na karcie Uwagi

    U. S. = United StatesU. S. bureau of the census Vandermonde, Alexandre Thophile,

    1735-1796 Van Valkenburg, Mac Elwyn, 1921- Von Neumann, John, 1903-1957 The whole art of legerdemain Whos afraid of Virginia Woolf? Wijngaarden, Adriaan van, 1916-

    Ignore space after prefix in surnames

    Ignore initial articleIgnore apostrophe in EnglishSurname begins with upper case letter

    (Do wikszoci tych zasad stosuj si pewne wyjtki. Jest take wiele zasad, ktre niezostay tu zilustrowane).

    Jeli naszym zadaniem jest sortowanie za pomoc komputera duych iloci kart bibliotecznych, a nastpnie pielgnowanie bardzo duego pliku takich kart, ale nie mamy wpywu na zmian polityki wypeniania kart, to jak naley zorganizowa dane, eby uatwi ich sortowanie i scalanie?

    18. [M25] (E. T. Parker) Leonard Euler postawi hipotez [Nbva Acta Acad. Sci. Petropolitanae 13 (1795), 45 -63 , 3; napisane w 1778], e rwnanie

    nie ma rozwiza w dodatnich liczbach cakowitych u, v , w , x, y, z. W tym samym czasie postawi take hipotez, e rwnanie

    nie ma cakowitych, dodatnich rozwiza dla kadego n ^ 3, ale ta uoglniona hipoteza okazaa si nieprawdziwa. Za pomoc komputera odkryto, e 275 + 845 + 1105 4- 1335 = 1445; zobacz L. J. Lander, T. R. Parkin, J. L. Selfridge, Math . Comp. 21 (1967), 446-459. Nieskoczenie wiele rozwiza dla n = 4 poda Noam Elkies [Math. Comp. 51 (1988), 825-835]. Czy mona by zastosowa sortowanie do znalezienia kontrprzykadu dla hipotezy Eulera, gdy n 6?

    19. [24] Dany jest plik zawierajcy okoo miliona 30-bitowych sw binarnych x \ , . . . , xjv. Jaki jest dobry sposb na znalezienie w pliku wszystkich dopeniajcych si par {xi ,Xj}, ktre tam wystpuj? (Dwa sowa nazywamy dopeniajcymi si, gdy na tych samych pozycjach w jednym z nich pojawia si 0, a w drugim 1; tak wic dopeniaj si wtedy i tylko wtedy, gdy ich sum jest (11. . . 1)2, jeli potraktujemy je jako liczby binarne).

    20. [25] Dany jest plik zawierajcy 1000 30-bitowych sw x \ , . . . , xiooo; w jaki sposb mona sporzdzi list wszystkich par (x i ,x j ) takich, e Xi = Xj z wyjtkiem co najwyej dwch bitw?

    21. [22] W jaki sposb odnale picioliterowe anagramy, jakimi w jzyku angielskim s na przykad CARET, CARTE, CATER, CRATE, REACT, RECTA, TRAC; CRUEL, LUCRE, ULCER; D0WRY, R0WDY, W0RDY? [Jest interesujce, czy w jzyku angielskim istnieje jakikolwiek inny zbir dziesiciu lub wicej piecioliterowych anagramw poza znanym zbiorem

    n , . n nX\ -|- * + Xn i Xn

    APERS, ASPER, PARES, PARSE, PEARS, PRASE, PRESA, RAPES, REAPS, SPAER, SPARE, SPEAR,

    do ktrego mona doczy francuskie sowo APRS].

  • 10 SORTOWANIE 5

    22. [M28] Mamy dan do du liczb grafw zorientowanych. Jaki jest najwygodniejszy sposb zgrupowania grafw izomorficznych? (Dwa grafy zorientowane s izomorficzne, jeli istnieje wzajemnie jednoznaczna odpowiednio midzy ich wierzchokami i wzajemnie jednoznaczna odpowiednio midzy krawdziami, ktre zachowuj relacj incydencji wierzchokw i krawdzi).23. [30] W pewnej grupie 4096 osb, kada ma okoo 100 znajomych. Przygotowano plik zawierajcy wszystkie pary osb, ktre s znajomymi. (Relacja znajomoci jest symetryczna: jeli x jest znajomym y, to y jest znajomym x. Dlatego w pliku znajduje si okoo 200000 par). Zaproponuj algorytm, ktry dla danego k sporzdzaby list wszystkich /c-osobowych klik w tej grupie osb. (Klika obrazuje znajomo wszystkich ze wszystkimi: W klice kady jest znajomym kadego). Przyjmijmy, e nie ma klik0 rozmiarze 25, tak wic liczba klik nie moe by wielka.

    24. [30] Trzy miliony osb utworzyo ywy acuch rozcigajcy si od Nowego Jorku do Kalifornii. Kady dosta kartk papieru, na ktrej zapisa swoje wasne nazwisko1 nazwisko osoby ssiadujcej bezporednio z nim w acuchu od zachodu. Osoba wysunita najbardziej na zachd nie wiedziaa, co zrobi, i wyrzucia swoj kartk. Pozostaych 2 999 999 kartek zoono w olbrzymim koszu i dostarczono do Narodowego Archiwum w Waszyngtonie. Tutaj zawarto kosza wymieszano, a nastpnie dane z kartek zapisano na tamach magnetycznych.

    Naukowcy zajmujcy si przetwarzaniem informacji zauwayli, e na tamach znajduje si wystarczajco informacji, eby odtworzy kolejno osb w acuchu. Zaproszony informatyk odkry, e mona to zrobi za pomoc mniej ni 1000 przebiegw przez dane zapisane na tamach, wykorzystujc tylko dostp sekwencyjny do plikw tamowych i niewielk ilo pamici o dostpie bezporednim. Jak to jest moliwe?

    [Innymi sowy, dane s w porzdku losowym pary (xi,Xt+1) dla 1 ^ i < JV, gdzie Xi s rne. W jaki sposb mona otrzyma cig X\X2 . . . xjv za pomoc operacji sekwencyjnych waciwych dla tam magnetycznych? Jest to problem sortowania, kiedy nie jest atwo odpowiedzie, ktry z dwch kluczy poprzedza pozostay. Takie pytanie pojawio si ju jako cz wiczenia 2.2.3-25].25. [M21 ] (Logarytmy dyskretne) O liczbie p wiemy, e jest (raczej du) liczb pierwsz i e a jest pierwiastkiem pierwotnym modulo p. Dlatego, dla kadego b z przedziau 1 ^ b < p istnieje dokadnie jedno n takie, e an mod p = 6, 1 ^ n < p, (Takie n nazywamy indeksem b modulo p wzgldem a). Wyjanij, w jaki sposb mona znale rz, majc dane 6, nie potrzebujc do tego fi(n) krokw. [Wskazwka: Wemy m = \y/p] i sprbujmy rozwiza amni = ba~n2 (modulo p) dla 0 ^ 711,712 < m].

  • 5.1.1 INWERSJE 11

    *5.1. KOMBINATORYCZNE WASNOCI PERMUTACJI

    Permutacj skoczonego zbioru nazywamy kade ustawienie jego elementw w szereg. Permutacje odgrywaj szczegln rol w badaniu algorytmw sortowania, poniewa reprezentuj nieposortowane dane wejciowe. W celu zbadania wydajnoci rnych metod sortowania bdziemy chcieli umie wyznacza liczb permutacji, dla ktrych wskazany krok procedury sortujcej jest wykonywany zadan liczb razy.

    Z permutacjami spotykalimy si czsto ju w poprzednich rozdziaach. Na przykad w punkcie 1.2.5 rozwaalimy dwie podstawowe metody generowania wszystkich n! permutacji n obiektw; w punkcie 1.3.3 dokonalimy analizy pewnych algorytmw wykorzystujcych struktur cyklow i wasnoci multi- plikatywne permutacji; w punkcie 3.3.2 badalimy sekwensy. W tym rozdziale przedstawimy inne wasnoci permutacji, a take rozwaymy przypadek oglniejszy, w ktrym dopuszcza si permutacje takich samych elementw. Przy okazji dowiemy si sporo na tem at matematyki kombinatorycznej.

    Wasnoci permutacji s wystarczajco interesujce, eby si zajmowa tylko nimi. Dlatego jest wygodnie omawia je systematycznie w jednym miejscu, zamiast rozrzuca materia po caym rozdziale. Czytelnikom, ktrzy nie lubi matematyki, a take tym, ktrzy chc natychmiast przej do metod sortowania, radzimy rozpocz lektur od razu od podrozdziau 5.2. Tak naprawd ten rozdzia nie ma wielu bezporednich zwizkw z sortowaniem.

    *5.1.1. Inwersje

    Niech ai 2 . . . an bdzie permutacj zbioru {1 ,2 , . . . , n}. Par (a*, aj) nazywamy inwersj tej permutacji, jeli i < j oraz di > aj. Na przykad perm utacja 3 1 4 2 ma trzy inwersje: (3,1), (3,2) i (4,2). Kada inwersja jest par nieposortowanych elementw. Tylko permutacja bez inwersji jest posortowan perm utacj 12 . . . n. Ten zwizek z sortowaniem jest gwnym powodem naszego zainteresowania inwersjami, chocia ju wczeniej uylimy ich do analizy algorytmu dynamicznej alokacji pamici (zobacz wiczenie 2.2.2-9).

    Pojcie inwersji zostao wprowadzone przez G. Cramera w 1750 roku [Intr. l Analyse des Lignes Courbes Algbriques (Geneva: 1750), 657-659; zobacz Thomas Muir, Theory o f Determinants 1 (1906), 11-14], w zwizku z jego synnymi wzorami na rozwizanie ukadu rwna liniowych. Cramer zdefiniowa wyznacznik macierzy n x n w nastpujcy sposb:

    gdzie sumowanie przebiega po wszystkich permutacjach ai 2 .. o,n zbioru {1 , 2, . . . , n}, a inv(aia2 . . . an) jest liczb inwersji permutacji (ai2 . . . bn permutacji a\ 2 . . . an otrzymuje si, przyjmujc za bj liczb tych elementw na lewo od j , ktre s wiksze od j . Innymi sowy, bj jest liczb inwersji, ktrych drug skadow jest j . Na przykad

    det (^11 %12 * * ln

    = ( - l ) inv(ai2"-a")x la i* 2a2 . . . x nan,

  • 12 SORTOWANIE 5.1.1

    perm utacja5 9 1 8 2 6 4 7 3 (i)

    ma wektor inwersji2 3 6 4 0 2 2 1 0, (2)

    poniewa 5 i 9 znajduj si na lewo od 1; 5, 9, 8 znajduj si na lewo od 2 itd. Ta perm utacja ma w sumie 20 inwersji. Z definicji wynika, e liczby bj speniaj ograniczenia

    0 < & i < n - l , 0 < 62 < n 2, . . . , 0 < 6n_i < 1 , bn = 0. (3)

    Prawdopodobnie najwaniejsz obserwacj dotyczc inwersji jest ta pochodzca od Marshalla Halla. Mwi ona, e wektor inwersji jednoznacznie wyznacza odpowiadajc mu permutacj . [Zobacz Proc. Symp. Applied Math. 6 (American Math. Society, 1956), 203]. Dla wektora inwersji b\ 62 . . . bn speniajcego (3) mona odtworzy jedyn odpowiadajc mu permutacj, okrelajc kolejno wzgldne pooenia elementw n ,n 1 , . . . , 1 (w tym porzdku). Na przykad moemy znale permutacj odpowiadajc wektorowi (2) jak nastpuje: Zapisujemy liczb 9; nastpnie umieszczamy 8 po 9, poniewa b$ = 1. Podobnie umieszczamy 7 po 8 i 9, poniewa 67 = 2. Wwczas 6 musi wystpowa po dwch z dotychczas zapisanych liczb, poniewa b$ 2. Jak do tej pory uzyskalimy czciowy wynik

    9 8 6 7.

    Kontynuujemy, umieszczajc 5 na lewym kocu, poniewa 65 = 0; umieszczamy 4 po czterech liczbach; na koniec 3 wstawiamy po szeciu liczbach (tzn. na skrajnie prawym kocu) i otrzymujemy

    5 9 8 6 4 7 3.

    W stawiajc 2 i 1 w analogiczny sposb, dostajemy (1).Przedstawiona odpowiednio jest wana, poniewa pozwala czsto przetu

    maczy problem sformuowany w jzyku permutacji na problem sformuowany w jzyku wektorw inwersji, ktry to moe okaza si atwiejszy do rozwizania. Dla przykadu rozwamy najprostsze z moliwych pyta: Ile jest rnych permutacji zbioru {1 , 2, . . . , n}? Odpowiedzi jest liczba rnych wektorw inwersji, ktra jest atwa do policzenia: mamy n wyborw dla 61, niezalenie n 1 wyborw dla 62, . . . , 1 wybr dla 6n , co daje razem n ( n 1) . . . 1 = n! moliwoci. Inwersje mona atwo liczy, poniewa skadowe b s w peni od siebie niezalene, podczas gdy skadowe a musz si parami rni.

    W punkcie 1.2.10 analizowalimy liczb prawostronnych maksimw w permutacji. Innymi sowy, liczylimy, jak wiele elementw jest wikszych od swoich nastpnikw. (Na przykad prawostronnymi maksimami w (1) s 3, 7, 8 i 9). Jest to liczba tych j , dla ktrych bj przyjmuje najwiksz warto n j. Poniewa bi rwna si n 1 z prawdopodobiestwem l /n , a (niezalenie) 62 rwna si n 2 z prawdopodobiestwem l / ( n 1) itd., zatem, posikujc si inwersjami,

  • 5.1.1 INWERSJE 13

    1234

    R ys. 1. city omiocian ilustrujcy zmian w inwersjach po zamianie w permutacji ssiednich elementw.

    otrzymujemy, e rednia liczba prawostronnych maksimw w losowej permutacji wynosi

    1 1 1 rr I + + - H n.n n 1 1W podobny sposb atwo mona wyprowadzi odpowiedni funkcj tworzc.

    atwo mona te zauway, e jeli zamienimy w permutacji dwa ssiednie elementy, to oglna liczba inwersji wzronie lub zmaleje o jeden. Na rysunku 1 pokazano 24 permutacje zbioru {1 , 2, 3,4}. Odcinkami poczono te permutacje, ktre rni si tylko kolejnoci dwch ssiednich elementw. Przejcie w d po takim odcinku odpowiada zamianie dokadnie dwch elementw. Tak wic liczba inwersji permutacji n jest rwna dugoci cieki z rysunku 1 , prowadzcej w d od 1234 do n. Wszystkie takie cieki musz mie tak sam dugo.

    Nawiasem mwic na diagram z rys. 1 mona patrze jak na trwymiarow bry, city omiocian , ktra ma 8 cian szecioktnych i 6 cian kwadratowych. Jest to jeden z klasycznych wielocianw pforemnych przypisywanych Archimedesowi (zobacz wiczenie 10).

    Nie naley myli inwersji permutacji z permutacj&rt odwrotnymi Przypomnijmy, e permutacj moemy zapisa w dwch wierszach

    na )n / (4)

    Permutacj odwrotn do tej permutacji jest permutacja a[ af2 af3 .. .a'n otrzymywana przez zamian wierszy, a nastpnie uporzdkowanie kolumn tak, eby grny

  • 14 SORTOWANIE 5.1.1

    wiersz by uporzdkowany rosnco:

    f a i a2 a 3 . . . an \\ 1 2 3 . . . n )

    Na przykad perm utacj odwrotn do 5 9 1 8 2 6 4 7 3 jest 3 5 9 7 1 6 8 4 2 , poniewa

    / 5 9 1 8 2 6 4 7 3 \ _ / 1 2 3 4 5 6 7 8 9 \ 1 ^ 1 2 3 4 5 6 7 8 9 / 1 ^ 3 5 9 7 1 6 8 4 2 /

    Innym sposobem zdefiniowania permutacji odwrotnej jest powiedzenie, e a' = k wtedy i tylko wtedy, gdy ak j ,

    Perm utacja odwrotna zostaa po raz pierwszy zdefiniowana przez H. A. Ro- th e a [w Sammlung combinatorisch-analytischer Abhandlungen, wydanym przez K. F. Hindenburga, 2 (Leipzig: 1800), 263-305], ktry zauway interesujcy zwizek midzy permutacjami odwrotnymi a inwersjami: Permutacja i permutacja do niej odwrotna maj dokadnie tyle samo inwersji. Dowd tego faktu podany przez R othea nie by najprostszym z moliwych, ale niemniej by pouczajcy i adny. Budujemy szachownic n x n, umieszczajc kropk w j-te j kolumnie oraz z-tym wierszu, ilekro a* = j . Nastpnie we wszystkich kwadratach, dla ktrych w kolumnie poniej i w wierszu na prawo znajduj si kropki, umieszczamy znak x . Na przykad dla permutacji 5 9 1 8 2 6 4 7 3 otrzymujemy diagram

    X X X X

    X X X X X X X

    X X X X X

    X X

    X

    X

    Liczba znakw x jest liczb inwersji - atwo mona zauway, e bj jest liczb znakw x w kolumnie j . Jeli teraz przetransponujemy nasz diagram, zamieniajc wiersze z kolumnami, otrzymamy diagram dla permutacji odwrotnej. Zatem liczba znakw x (liczba inwersji) jest taka sama w obu przypadkach. Rothe uy powyszego faktu do wykazania, e wyznaczniki macierzy i macierzy do niej transponowanej s takie same.

    Analiza kilku algorytmw sortowania wymaga wiedzy na tem at liczby permutacji n-elementowych o dokadnie k inwersjach. Oznaczmy t liczb przez In (k). Tabela 1 zawiera kilka pierwszych wartoci tej funkcji.

    Posikujc si wektorem inwersji b\ b2 . . . 6n) natychmiast otrzymujemy, e Jn (0) 1 , I n ( 1 ) n 1 oraz wasno symetrycznoci

    M G ) ~k) = l n { k ) - (6)

  • 5.1.1 INWERSJE 15

    n

    Tabela 1PERMUTACJE O k INWERSJACH

    /(O) In(1) /(2) /(3) / n(4) /n(5) In (6) In(7) In(8) / n(9) J(10) /n(l l )

    1 1 0 0 0 0 0 0 0 0 0 0 0

    2 1 1 0 0 0 0 0 0 0 0 0 0

    3 1 2 2 1 0 0 0 0 0 0 0 0

    4 1 3 5 6 5 3 1 0 0 0 0 0

    5 1 4 9 15 20 22 20 15 9 4 1 0

    6 1 5 14 29 49 71 90 101 101 90 71 49

    Dodatkowo, poniewa kad ze skadowych b mona wybra niezalenie od innych, nie jest trudno zauway, e funkcja tworzca

    Gn (z) Jn (0) + I n ( l ) z -f In (2)z2 + (7)

    spenia Gn (z) = (l + z-\ h zn 1)G n- i ( z ) . Zatem ma ona stosunkowo prostposta podan przez O. Rodrigueza [J. de Math. 4 (1839), 236-240]:

    (1 + * + + z71- 1) . . . (1 + *)(1) = (1 - z " ) . . . (1 - 22)(1 - Z ) / { 1 - z)n . (8)

    Korzystajc z tej funkcji tworzcej mona atwo uzupeni tabel 1, jak i sprawdzi, e liczby poniej amanej speniaj rwnanie

    I n(k) = I n (k - 1) + /n-i(fc), dla fc < n. (9)

    (Ta rwno me zachodzi powyej linii amanej). Stosujc bardziej skomplikowan argumentacj (zobacz wiczenie 14), mona wykaza, e w istocie zachodz zwizki:

    ^n{2) ( 2 ) 1 ,

    ' - ( r n ? ) -

    - c i

    a w oglnoci, wzr na In (k) zawiera okoo 1.6\/fc czonw:

    'n+fc 2 \

    n > 2 ;

    n > 3;

    n > 4;

    n > 5;

    n(fc) = fc

    / n+fc3 \ / n+fc 6 \ / n+fc 8'V k - 2 y + \ fc-5 J + V * - 7

    + r _ i v Y ; l V k - u j k - U j - j .

    + n > fc, (10)

    gdzie Uj = (3 j2 j ) /2 jest tak zwan liczb picioktn .

  • 16 SORTOWANIE 5.1.1

    Jeli podzielimy Gn (z) przez n!, dostaniemy funkcj tworzc gn(z) dla rozkadu prawdopodobiestwa liczby inwersji w losowej n-elementowej permutacji. Jest ni iloczyn

    gn (z) = h i(z )h 2{ z ) . . . h n(z), (1 1 )

    gdzie hk(z) = (1 + z + + z k~l ) /k jest funkcj tworzc dla rozkadu jed- nostajnego losowej, nieujemnej liczby cakowitej mniejszej od fc. Wynika std, e

    mean(?n) = m ean(i) + mean(/i2) + * + mean(n)1 n 1 n(n 1) , .

    = 0 + 2 + + = - 4 ^ ; (I2)

    var(#n) = var(fti) + var(2) H--------h var(n)

    1 n 2 1 n(2n + 5)(n 1) , ,= 0 + - H h --------- = ----------------------( i i )

    4 12 72 V 6}

    Zatem rednia liczba inwersji jest do dua i wynosi okoo \ n 2\ odchylenie standardowe jest take do due i wynosi okoo | n 3/ 2.

    Wanego spostrzeenia na tem at rozkadu inwersji dokona P. A. MacMahon [.Amer . J. Math. 35 (1913), 281-322]. Zdefiniujmy indeks permutacji ai a 2 . . . an jako sum wszystkich indeksw j , dla ktrych aj > aj+1 , 1 < j < n. Na przykadindeksem permutacji 5 9 1 8 2 6 4 7 3 jest 2 + 4 + 6 + 8 = 20. Przez przypadekindeks tej permutacji jest rwny liczbie jej inwersji. Jeli wypiszemy wszystkie 24 permutacje zbioru {1, 2, 3,4}, a mianowicie

    Perm utacja Indeks Inwersje Permutacja Indeks Inwersje

    1 2 3 4 0 0 311 2 4 1 21 2 4|3 3 1 311 4|2 4 31 3|2 4 2 1 31211 4 3 31 3 4|2 3 2 32 4|1 4 41 4|2 3 2 2 3 4| 12 2 41 4|3|2 5 3 3 4 |211 5 5

    2|1 3 4 1 1 4|1 2 3 1 3211 4|3 4 2 4|1 3|2 4 42 3|1 4 2 2 4|2113 3 42 3 4|1 3 3 4|2 311 4 52 4|1 3 2 3 4 |3 |1 2 3 52 4|3|1 5 4 4|3|2|1 6 6

    zobaczymy, e permutacji o indeksie k jest tyle samo, co permutacji majcych k inwersji.

    Na pierwszy rzut oka wydaje si to prawie oczywiste, ale po bliszym przyjrzeniu si, fakt ten staje si bardzo tajemniczy. MacMahon poda nastpujcy, pomysowy, ale niebezporedni dowd tego faktu. Niech ind(ai a 2 .. .a n) bdzie

  • 5.1.1 INWERSJE 17

    indeksem permutacji ai a? . . . an i niech

    tf(z) = ] T y nd(ai 2...an) (14)

    bdzie odpowiadajc mu funkcj tworzc; sumowanie w (14) odbywa si po wszystkich permutacjach zbioru {1 , 2, . . . , n } . Pokaemy, e H n {z) ~ Gn (z). W tym celu zdefiniujemy wzajemnie jednoznaczne odwzorowanie midzy n-tkami ( 92, j Qn) nieujemnych liczb cakowitych z jednej strony a uporzdkowanymi parami n-tek

    ((O i,02, . . . , a n), (pi,P2,---,Pn))z drugiej strony, gdzie ai a 2 . - - an jest perm utacj indeksw {1 , 2, . . . , n}, natomiast pi > p2 > * > pn ^ 0. Nasze odwzorowanie bdzie speniao nastpujcy warunek

    Qi +Q2 + *** + qn = i nd (a i a 2 * . an) + (pi + P2 H bp). (15)

    Funkcj tworzc ^ "+^ , gdzie sumowanie odbywa si po wszystkichn-tkach nieujemnych liczb cakowitych (gi,g2) * ,qn), jest Qn (z) = 1/(1 z )n ; natomiast funkcj tworzc ^ zPi+Pz++Pn gdzie sumowanie odbywa si po wszystkich n-tkach liczb cakowitych (pi ,p2, . . . ?Pn) takich, e pi > p2 ^ ^Pn > 0, jest

    Pn (z) = 1/(1 ( 1 - 0 , (16)

    (zobacz wiczenie 15). Z warunku (15) i z wzajemnej jednoznacznoci naszego odwzorowania wynika, e Qn (z) = i i n (^)Pn (z), a std

    # n (z ) = Q n{z)/Pn (z). (17)

    Ale z (8) dostajemy, e Qn {z)/ Pn {z) jest rwne Gn (z).Poszukiwane odwzorowanie definiujemy za pomoc prostej procedury sor

    tujcej. Kad n-tk (gi,g2, . . . ,qn) mona przeksztaci stabilnie w nierosnc n-tk qa i > qa2> - > qan, gdzie a1a2 . . . a n jest permutacj tak, e qaj = qaj+1 implikuje a < aj+x. Wemy (pi ,p2, . -. ,pn ) = {qai, Qa2, * ., 4a J , a nastpnie, dla 1 < j < n, odejmijmy 1 od wszystkich p i, . . . , pj dla kadego j takiego, e aj > Uj+ i . Nadal mamy pi > p2 > > pn , poniewa pj byo ostro wiksze od Pj+U gdy aj > Oj+1- otrzym ana para ( ( a i , a2, . . . , an), (pi ,P2, * ,Pn)) spenia (15), poniewa cznie od skadowych p odjlimy ind(ai a 2 . . . an). Na przykad, jeli n = 9 i ( i , . . . , q$) = ( 3 , 1 , 4 ,1 ,5 ,9 ,2 ,6,5), mamy 04 . . .ag = 6 8 5 9 3 1 7 2 4i ( p i , . . . , p 9) = ( 5 , 2 , 2 , 2 , 2 , 2 , l , l , l ) - /

    Na odwrt, mona atwo dosta (gi, g2, . . . , gn), gdy dane s ax a 2 . . . an i (pi ,P2j jPn)- (Zobacz wiczenie 17). Tak wic okrelilimy dane odwzorowanie i w ten sposb udowodnilimy twierdzenie MacMahona o indeksie.

    Okoo 65 lat po publikacji MacMahona, D. Foata i M. P. Schiitzenberger odkryli zadziwiajce uoglnienie jego twierdzenia: Liczba permutacji n-elemento- wych o k inwersjach i indeksie l jest taka sam ajak liczba permutacji o l inwersjach i indeksie k. W rzeczywistoci Foata i Schiitzenberger znaleli proste wzajemnie jednoznaczne odwzorowanie midzy permutacjami pierwszego i drugiego rodzaju (zobacz wiczenie 25).

  • 18 SORTOWANIE 5.1.1

    WICZENIA1. [10] Podaj wektor inwersji permutacji 2 7 1 8 4 5 9 3 6 . Dla jakiej permutacji wek

    torem inwersji jest 5 0 1 2 1 2 0 0 ?

    2 . [M20] W klasycznym problemie Jzefa Flawiusza (wiczenie 1.3.2-22), n mczyzn ponumerowanych 1, 2 , . . . , n staje w krgu, wanie w takiej kolejnoci. Nastpnie z krgu zostaje usunity m-ty mczyzna, po czym krg si zamyka. Potem cyklicznie zostaje usuwany co m-ty mczyzna, a do chwili, w ktrej nikt ju nie zostanie. Kolejno usuwania mczyzn z krgu jest zadana przez permutacj liczb z {1 , 2 , , . . , n}. Na przykad, gdy n 8 i m = 4, tak permutacj jest 5 4 6 1 3 8 7 2 (mczyzna o numerze 1 jest usuwany jako pity itd.); wektorem inwersji tej permutacji jest 3 6 3 1 0 0 1 0 .

    Podaj prost zaleno rekurencyjn dla elementw b\ b2 bn wektora inwersji permutacji z problemu Jzefa Flawiusza dla n mczyzn, gdy co m-ty mczyzna jest usuwany.

    3. [18] Jeli permutacja ai 2 . . . an odpowiada wektorowi inwersji b\ 62 . bn , to jaka permutacja a\ 0,2 . . . an odpowiada wektorowi inwersji

    (n - 1 - b\) (n 2 b2) . -. (0 bn) ?

    4. [20] Zaprojektuj atwy do komputerowej implementacji algorytm, ktry dla danego wektora inwersji bi 62 bn speniajcego (3 ) znajduje odpowiadajc mu permutacj ai a2 . . . a n. [Wskazwka: Rozwa zastosowanie techniki listowej].

    5. [35] Czas wykonania algorytmu opisanego w wiczeniu 4 jest proporcjonalny don + 61 H-------1- 6n, czyli rednio do (n2). Czy istnieje algorytm, ktrego czas dziaaniaw pesymistycznym przypadku jest istotnie lepszy ni (rzdu) n2?

    6 . [26] Zaprojektuj algorytm, ktry w czasie proporcjonalnym do n log n oblicza wektor inwersji bi >2 . . . bn odpowiadajcy danej permutacji a\ a2 . . . an zbioru { 1 , 2 , . . . , n}.

    7. [20] Oprcz zdefiniowanego w tekcie wektora inwersji b\ 62 -bn , mona zdefiniowa kilka innych rodzajw wektorw inwersji odpowiadajcych danej permutacji ai 02 . . . an zbioru { 1, 2 , . . . , n}. W tym zadaniu rozwaamy trzy inne typy wektorw inwersji, ktre wystpuj w zastosowaniach.

    Niech Cj bdzie liczb inwersji, ktrych pierwsz skadow jest j, to jest liczba elementw na prawo od j, ktre s mniejsze od j . [Dla (1) wektorem inwersji jest 0 0 0 1 4 2 1 5 7 ; oczywicie 0 ^ cj < j ] . Niech Bj = baj i Cj = ca j .

    Poka, e 0 ^ Bj < j i 0 ^ Cj ^ n j dla 1 ^ j ^ n; ponadto poka, e permutacj ai 2 . . . an mona wyznaczy jednoznacznie, jeli dany jest wektor Ci c2 . . . cn lub B l B 2 . . . B n lub C iC 2 . . .C.

    8 . [M2] W dalszym cigu korzystamy z oznacze z wiczenia 7. Niech a a2 .. *an bdzie permutacj odwrotn do ai a2 . . . an i niech odpowiadajcymi jej wektorami inwersji bd b[ bf2 . . . 4, ci c2 B[ B f2 . . . B*n i C[ C2 . . . C^. Znajd tak duo, jak tylko potrafisz, ciekawych zalenoci midzy liczbami a3, bj , Cj, B j , C j , a':i, bj , , B j , C j .

    9. [M21 ] Udowodnij, e permutacja ai a2 . . . an jest inwolucj (tzn. e jest odwrotna do samej siebie) wtedy i tylko wtedy, gdy bj = Cj dla 1 ^ j ^ n (oznaczenia takie jak w wiczeniu 7).

    10. [HM20] Przyjmijmy, e na rysunku 1 przedstawiono trjwymiarowy wielocian. Ile wynosi rednica citego omiocianu (odlego midzy wierzchokami 1234 i 4321), jeli wszystkie jego krawdzie maj jednostkow dugo?

  • 5.1.1 INWERSJE 19

    1 1 . [M25] Jeli 7r = di . . . an jest permutacj zbioru { 1 , 2 , . . . , n}, to niech

    E ( 7r) = {(oi,Oj) | i < j , ca > aj}

    bdzie zbiorem jej inwersji i niech

    E ( 7r) = {(ai ,aj) \ i > j, a,i > aj}

    bdzie zbiorem jej nieinwersji .a) Udowodnij, e E ( tt) i E(n) s przechodnie* (Zbir par uporzdkowanych S jest

    przechodni, gdy z tego, i (a, b) i (6, c) s w 5, wynika, e (a, c) naley 5).b) Na odwrt, niech E bdzie dowolnym przechodnim podzbiorem T {(x ,y) | 1

    y < x ^ n}, ktrego dopenienie E T \ E te jest przechodnie. Wwczas istnieje permutacja n taka, e E ( tt) = E.

    1 2 . [M28] W dalszym cigu trzymamy si oznacze z poprzedniego wiczenia. Udowodnij, e jeli 7ri i 7T2 s permutacjami, a E jest najmniejszym zbiorem przechodnim zawierajcym E ( tti) U (^ 2), to dopenienie E jest przechodnie. [Std, jeli powiemy, e 7Ti ley powyej 7T2, gdy tylko E ( 7Ti) C E ( tt2), to zdefiniujemy krat permutacji; istnieje dokadnie jedna najnisza permutacja powyej dwch danych permutacji. Na rysunku 1 pokazano tak krat dla n 4].

    13. [M23] Jest oglnie znan zasad, e w rozwiniciu wyznacznika poowa skadnikw jest brana ze znakiem plus, a poowa ze znakiem minus. Innymi sowy, jest dokadnie tyle samo permutacji o parzystej liczbie inwersji, co permutacji o nieparzystej liczbie inwersji, gdy tylko n ^ 2. Poka, e w oglnym przypadku liczba permutacji0 liczbie inwersji przystajcej do t modulo m wynosi n \ / m , niezalenie od wyboru liczby cakowitej t, gdy tylko m.

    14. [M24] (F. Franklin) Podziaem liczby n na k rnych skadnikw nazywamy przedstawienie tej liczby w postaci n = pi + P2 + * * * + pk, gdzie pi > p 2 > > Pk > 0. Na przykad, jest 7 podziaw liczby 7 na rne skadniki: 6 + 1, 5 + 2, 4 + 3, 4 + 2 + 1 . Niech fk{n) bdzie liczb podziaw n na k rnych skadnikw; udowodnij, e ^ fc( ^ l ) fe/fc(^) = 0 , jeli tylko n nie jest postaci (3j 2 j ) / 2 dla pewnej nieujemnej liczby cakowitej j; w takim przypadku wartoci sumy jest ( 1)+ Na przykad, gdy n = 7, wartoci sumy jest 1 + 3 1 = 1 i 7 = (3 22 + 2)/2. [ Wskazwka: Przedstaw podzia w postaci diagramu, ktry skada si z tylu wierszy, ile jest skadnikw w podziale (czyli k ), przy czym i-ty wiersz zawiera pi kropek dla1 ^ i ^ k. Znajd najmniejsze takie j , e pj+i < pj 1, a nastpnie obrysuj skrajnie prawe kropki w pierwszych j wierszach. Jeli j < Pk, to te j kropek mona usun, obrci o 45 i umieci w (fc + l)-szym wierszu. Jednake, jeli j ^ pk, k -ty wiersz kropek mona usun, obrci o 45 i umieci na prawo od obrysowanych kropek. (Zobacz rysunek 2). Ten proces umoliwia w wikszoci przypadkw poczenie w pary

    R ys. 2 . Odpowiednio Franklina midzy podziaami na rne skadniki.

  • 20 SORTOWANIE 5.1.1

    podziaw o nieparzystej liczbie wierszy z podziaami o parzystej liczbie wierszy. Tak wic w sumie musimy rozway tylko niesparowane podziay].

    Uwaga: Jako wniosek otrzymujemy wzr Eulera

    (1 - z){ 1 - z2)( 1 - z3) . . . = 1 - z - z 2 + zh + z 1 - z 12 - z 15 +

    = (i y z(3j2+i)/'2. o o < j< o o

    Funkcj tworzc dla zwykych podziaw (w ktrych skadniki nie musz si rni) jest Y l p ( n )zn = 1 /(1 *0(1 ^2)(1 z3) * * i w ten sposb otrzymujemy nieoczywist zaleno rekurencyjn na liczb podziaw,

    p(n) = p(n - 1) + p(n - 2) - p(n 5) - p(n - 7) + p(n - 12) + p(rt - 15) - .

    15. [M23] Udowodnij, e (16) jest funkcj tworzc dla podziaw na co najwyej n skadnikw; to jest udowodnij, e wspczynnik przy z m w 1 /(1 z)( 1 z 2) . . . (1 zn) jest liczb sposobw przedstawienia m w postaci m = pi + p 2 H hPn, gdzie pi ^ p2' ' ^ P n ^ 0. [Wskazwka: Rozmie kropki tak jak w zadaniu 14 i poka, e istnieje wzajemnie jednoznaczne odwzorowanie midzy n-tkami (p i,p2, ,Pn) takimi, e pi ^ P 2 ^ ^ P n ^ 0 i cigami (Pi, P2, P3, . . . ) takimi, e n ^ Pi ^ P2 ^ P3 ^ ^ 0,o wasnoci pi + p2 + * * * + Pn = Pl + P2 + P3 + . Innymi sowy, podziaom na n skadnikw odpowiadaj podziay na skadniki o wartociach nie przekraczajcych n].

    16. [M25] (L. Euler) Udowodnij nastpujce tosamoci, interpretujc obie strony rwnoci w jzyku podziaw:

    TT l = ____________1------------------n ( i _ qkz) (1 _ 2)(1 _ qz){;i _ q2z ) . . .

    _ 1 z z 2~ + 1 - 9 + ( l - 9 ) ( l - 9 2) +

    U (1 + " , f (n- 1,/2/ J ] (1 - q k).n^O / l

  • 5.1.1 INWERSJE 21

    19. [M28] (C, Meyer) Gdy m jest wzgldnie pierwsze z n wiemy, e cig (m mod n)(2m mod n ) . . . ((n 1 )m mod n) jest permutacj zbioru { 1 , 2 , . . . , n 1}. Poka, e liczb inwersji w takiej permutacji mona wyrazi za pomoc sum Dedekinda (zobacz punkt 3.3.3).

    20. [M3] Nastpujca znana tosamo, pochodzca od Jacobiego [Fundamenta No- va Theoriae Functionum Ellipticarum (1829), 64], jest podstaw wielu wanych zalenoci, w ktrych wystpuj funkcje eliptyczne:

    R (i - i i V _1)( i - V ) ( i - ukvk)

    = (1 u )(l v)( l u v)(l u2v)( 1 uv2)(l u2v2) . . .

    = 1 (u + v) + (u3v + uv3) (u6 v3 + u V ) +

    = E ( - 1 yu(^ v( i+ . o o < j < + oo

    Na przykad, jeli wemiemy u = z, v = z 2, to otrzymamy wzr Eulera z wiczenia 14. Jeli wemiemy 2 = y fu/v , q = to dostaniemy

    n ( l - 9 2^ 1^ ) ( l - 9 2fe' 1^ 1) ( l - 9 2':) = E ( - l ) n^ V 2.k^l CXJ

  • 22 SORTOWANIE 5.1.1

    Niech aj = &, jeli mczyzna k ginie jako j - ty. Udowodnij, e kolejno ai a2 . . . an, w ktrej gin skazacy, pojawia si z prawdopodobiestwem, ktre jest funkcj tylko n, p oraz indeksu permutacji dualnej (n + 1 an) . . . (n + 1 a2) (n + 1 ai). Ktra z kolejnoci jest najmniej prawdopodobna?

    24. [M26] Dla danych liczb cakowitych (1) (2). . . t() takich, e t(j) ^ j , uoglnionym indeksem permutacji ai d2 . . . an nazywamy sum wszystkich indeksw j o wasnoci takiej, e aj > t(dj+1), z dodan liczb wszystkich inwersji takich, e i < j i t(aj) ^ di > dj. Zatem, gdy t( j) = j dla kadego j , indeks uoglniony jest tym samym co indeks zwyky. Jednak gdy t(j) ^ n dla kadego j , indeks uoglniony jest liczb wszystkich inwersji. Udowodnij, e liczba permutacji, ktrych indeks uoglniony wynosi k , jest rwna liczbie permutacji zawierajcych k inwersji. [Wskazwka: Poka, e jeli wemiemy dowoln permutacj ai . . . an- i zbioru { l , . . . , n 1} i bdziemy wstawia n na kad z moliwych pozycji, indeks uoglniony bdzie wzrasta o liczby ze zbioru {0 , 1 , . . . , n 1} w pewnym, niekoniecznie wanie takim, porzdku].

    25. [M30] (Foata i Schutzenberger) Dla permutacji a = a\ . . . an oznaczmy przez ind(a) jej indeks, a przez inv(a) liczb jej inwersji.

    a) Zdefiniuj wzajemnie jednoznaczn odpowiednio, ktra kadej permutacji a zbioru { l , . . . , n } przyporzdkowuje permutacj f ( a ) o nastpujcych wasnociach: (i) in d (/(a )) = inv(a); (ii) dla 1 ^ j < n, liczba j pojawia si na lewo od j + 1 w f ( a ) wtedy i tylko wtedy, gdy pojawia si na lewo od j + 1 w ot. Jak wyglda w Twojej konstrukcji permutacja / (a ) , gdy a = 1 9 8 2 6 3 7 4 5 ? Dla jakiej permutacji a jest f ( a ) = 1 9 8 2 6 3 7 4 5? [Wskazwka: Dla n > 1 piszemy a = xiOi\X20i2 . . . ZkCtkUn, gdzie . . . , Xk s wszystkimi elementami < on, jeli di < an ; w przeciwnym przypadku Xi, . . . , Xk s wszystkimi elementami > an ; pozostae elementy wystpuj w (by moe pustych) cigach au, . . . , a^. Porwnaj liczb inwersji permutacji h(a) = 0:1X102X2 otk%k z inv(o); w tej konstrukcji liczba an nie wystpuje w h(a)].

    b) Wykorzystaj / do zdefiniowania jeszcze jednej wzajemnie jednoznacznej odpowied- nioci g o nastpujcych wasnociach: (i) ind(g(a)) = inv(o); (ii) inv(^(o)) ind(o). [Wskazwka: Rozwa permutacje odwrotne].

    26. [M25] Ile wynosi wspczynnik korelacji statystycznej midzy liczb inwersji a indeksem w losowej permutacji? (Zobacz rwnanie 3 .3 .2- ( 2)).

    27. [M37] Jako uzupenienie (15) udowodnij, e istnieje prosta zaleno midzy inv(oi d2 >.. an) oraz n-tk (91,

  • 5.1.2 PERMUTACJE MULTIZBIORW 23

    *5.1.2. Permutacje multizbiorw

    Jak dotd rozwaalimy permutacje zbioru rnych elementw; jest to specjalny przypadek permutacji multizbioru. (W multizbiorze dopuszcza si wielokrotne wystpienia tych samych elementw. Pewne podstawowe wasnoci multizbiorw byy ju omawiane w wiczeniu 4.6.3-19).

    Dla przykadu rozwamy multizbir

    M = {a, a, a, , , c, d, d, d, d}, (i)

    ktry zawiera 3 litery a, 2 litery 6, 1 liter c oraz 4 litery d . Powtrzenia tych samych elementw moemy zaznaczy te w inny sposb, a mianowicie

    M = {3 a, 2 , c, 4 d}. (2)

    Permutacj* zbioru M nazywamy kade ustawienie jego elementw w rzdzie; na przykad

    c a b d d a b d a d .

    Z innego punktu widzenia taki cig zoony z 3 liter a, 2 liter 6, 1 litery c i 4 liter d bdziemy nazywali sowem.

    Ile jest rnych permutacji zbioru M ? Jeli bdziemy rozrniali elementy M, indeksujc je a \ , a2, 3, &i, 62, c i , d\ , 2 , d%, 4, to dostaniemy 10! = 3 628 800 permutacji, ale wiele z nich, po usuniciu indeksw, okae si takich samych. W istocie kada permutacja M pojawia si 3! 2! 1 ! 4! = 288 razy, poniewa moemy wystartowa od jakiejkolwiek permutacji M i nada indeksy literom a na 3! sposobw, literom b (niezalenie) na 2! sposobw, literze c na 1 sposb, a literze d na 4! sposobw. Dlatego prawd jest, e liczba permutacji M wynosi

    10!s i T i R r 12600-

    W oglnoci, uywajc tego samego argumentu, mona pokaza, e liczba permutacji multizbioru jest wspczynnikiem wielomianowym

    n = n! ( \,n 1,n 2, ) n i ! n 2! . . . ^

    gdzie ni jest liczb elementw pierwszego rodzaju, n 2 jest liczb elementwdrugiego rodzaju itd., a n n i +712 H jest czn liczb wszystkich elementw.

    Liczba permutacji zbioru jest znana od ponad 1500 lat. Hebrajska Ksiga stworzenia (okoo 400 roku n.e.), ktra jest najstarszym literackim wytworem ydowskiego filozoficznego mistycyzmu, wymienia poprawne wartoci siedmiu pierwszych silni, po sowach Id i oblicz to, co usta nie mog wypowiedzie, a ucho nie moe usysze . [Sefer Yetzirah, koniec rozdziau 4. Zobacz take Solomon Gandz, Studies in Hebrew Astronomy and Mathematics (New York: Ktav, 1970), 494-496; Aryeh Kapan, Sefer Yetzirah (York Beach, Maine: Samuel Weiser, 1993).] Jest to pierwsze (znane) w historii policzenie permutacji. Drugi taki fakt znajdujemy w klasycznym dziele hinduskim Anuyogadvara-sutra

    * Czasami nazywan permatucj .

  • 24 SORTOWANIE 5.1.2

    (okoo 500 roku); jest to zasada 97, gdzie znajduje si wzr na liczb permutacji szeciu elementw, ktre nie s ani rosnce, ani malejce:

    6 x 5 x 4 x 3 x 2 x l - 2 .

    [Zobacz G. Chakravarti, Bu. Calcutta Math. Soc. 24 (1932), 79-88. Ariuy- ogadvra-sutra jest jedn z ksig kanonu dajminizmu, sekty religijnej popularnej w Indiach].

    W ydaje si, e odpowiedni wzr na liczb permutacji multizbioru pojawi si pierwszy raz w ksice Livati napisanej przez Bhscara Achrya (okoo 1150 roku), rozdziay 270-271. Bhscara poda ten wzr bez uzasadnienia i zilustrowa go tylko na dwch prostych przykadach {2,2,1,1} i {4,8,5, 5,5}. W konsekwencji, w angielskim tumaczeniu jego dziea ten wzr nie jest podany poprawnie. Istniej take przypuszczenia, e sam Bhscara nie wiedzia, o czym pisa. Doszed on do interesujcego wzoru

    (4 + 8 + 5 + 5 + 5) x 120x11111 5 x 6

    na sum 20 liczb 48555 + 45855 + .Poprawny wzr na obliczanie permutacji, gdy tylko jeden element moe

    si powtarza, zosta podany niezalenie przez niemieckiego uczonego, jezuit Athanasiusa Kirchera, w jego wielotomowym traktacie o muzyce [Musurgia Uni- versalis 2 (Rome: 1650), 5 - 7]. Kircher interesowa si liczb melodii, ktre mona uoy z danego zbioru nut. Do tego celu wymyli tzw. muzarytmetyk . Na stronach 18-21 swojego trak ta tu poda poprawn liczb permutacji multizbio- rw {m C, n * D}, dla szeregu wartoci m i n, chocia nie wyjani metody liczenia poza jednym przypadkiem, gdy n = 1 .

    Jean Prestet poda oglny wzr (3) w swojej ksice Elments de Mathmatiques (Paris: 1675), 351-352, ktra to ksika zawieraa tekst jednego z pierwszych wykadw matematyki kombinatorycznej w wiecie zachodnim. Prestet poda poprawny wzr dla dowolnego multizbioru, ale zilustrowa go tylko na prostym przykadzie zbioru {a, a, 6, 6, c, c}. W szczeglnoci zauway, e dzielenie przez sum silni, co byoby naturalnym uoglnieniem wzoru Kirchera, nie jest poprawne. Kilka lat pniej, w ksice Johna Wallisa Discourse of Combinations (Oxford: 1685), rozdzia 2 (wydanym razem z jego Treatise of Algebra) znalazo si janiejsze i bardziej szczegowe omwienie tego wzoru.

    W 1965 roku Dominique Foata wpad na pomys iloczynu z wtrceniami (intercalate product), ktry pozwala rozszerzy wiele znanych wynikw dla zwykych permutacji na permutacje multizbiorw. [Zobacz Publ. Inst. Statistique, Univ. Paris, 14 (1965), 81-241; a take Lecture Notes in Math. 85 (Springer, 1969)]. Zaoywszy, e elementy multizbioru zostay liniowo uporzdkowane w pewien (dowolny) sposb, moemy rozwaa dwuwierszowe reprezentacje permutacji, takie jak

    (a a a b b c d d d d c a b d d a b d a d (4)

  • 5.1.2 PERMUTACJE MULTIZBIORW 25

    gdzie grny wiersz zawiera elementy zbioru M posortowane w porzdku niemale- jcym, natomiast dolny wiersz zawiera sam permutacj. Iloczynem z wtrceniami a j 3 dwch permutacji multizbiorw a i 3 nazywamy permutacj otrzymywan w nastpujcy sposb: (a) a i (3 reprezentujemy dwuwierszowo, (b) zestawiamy razem obie reprezentacje, a nastpnie (c) sortujemy kolumny w porzdku niemalejcym wzgldem grnego wiersza. O sortowaniu zakada si, e jest stabilne w znaczeniu, e zachowuje porzdek midzy elementami w dolnym wierszu, jeli odpowiadajce im elementy w grnym wierszu s takie same. Na przykad c a d a b j b d d a d = c a b d d a b d a d , poniewa

    f a a b c d \ f a b d d d \ _ i a a a b b c d d d d \ , ,\ c a d a b J J \ b d d a d J y c a b d d a b d a d ) '

    Mona zauway, e iloczyn z wtrceniami jest czny:

    { a j f 3 ) j 7 = a T(/3T7); (6)

    stosuj si do niego take dwa prawa skracania:

    7r y q = 7r j /? implikuje a = /?,(7)a j 7r = 3 y 7r implikuje a = 3.

    Operacja iloczynu ma take element neutralny, jedynk,

    a j = e j a = a , (8)

    gdzie e jest perm utacj pust, czyli rozmieszczeniem elementw zbioru pustego. Chocia prawo przemiennoci nie zachodzi w oglnym przypadku (zobacz wiczenie 2), mamy

    a x fi = 3 t a , jeli a i 3 nie zawieraj takich samych elementw. (9)

    W analogiczny sposb mona uoglni pojcie cykli w perm utacjach naprzypadek, gdy elementy si powtarzaj; niech

    (zi x2 . . . xn) (10)

    oznacza permutacj otrzymywan w wyniku stabilnego posortowania wzgldem grnego wiersza kolumn dwuwierszowej reprezentacji permutacji

    c (11)fX\ X2 . . . xn \.X2 X3 . . . Xi )

    Na przykad mamy

    / J L J J ( d b d d a c a a b d \ f a a a b b c d d d d \( d b d d a c a a b d ) = ^ b d d a c a a h d d ^ ^ c a h d d a b d a d y

    a zatem (4) jest w rzeczywistoci cyklem. Moglibymy opisa ten cykl sowami, piszc na przykad d przechodzi na 6, b przechodzi na d, d przechodzi na d, d przechodzi na . . . , na koniec wracamy do d . Zauwamy, e cykle uoglnione nie maj wszystkich wasnoci zwykych cykli; (x x2 . . xn) nie zawsze jest tym samym co (x2 . . . x n xi).

  • 26 SORTOWANIE 5.1.2

    W punkcie 1.3.3 zauwaylimy, e kad (zwyk) permutacj mona jednoznacznie przedstawi jako zoenie (z dokadnoci do kolejnoci skadania) rozcznych cykli. atwo mona zauway, e zoenie rozcznych cyki jest dokadnie tym samym co ich ioczyn z wtrceniami. Sugeruje to, e by moe moglibymy uoglni poprzedni wynik i otrzyma jednoznaczn reprezentacj (w pewnym sensie) dowolnej permutacji multizbioru jako iloczyn z wtrceniami cykli. W rzeczywistoci istniej co najmniej dwa naturalne sposoby, eby to zrobi, z ktrych kady ma wane zastosowania.

    Wyraenie (5) wskazuje jeden sposb przedstawienia c a b d d a b d a d jako iloczynu z wtrceniami krtszych permutacji. Rozwamy oglny problem przedstawienia danej permutacji 7r w postaci iloczynu n a j fi. Pomocnym w tym bdzie rozwaenie konkretnej permutacji, na przykad

    f a a b b b b b c c c d d d d d 7r = I

    \ d b c b c a c d a d d b b b d

    Jeli permutacj 7r moemy zapisa w postaci a j fi, gdzie a zawiera co najmniej jedn liter a, to skrajnie lewe a w grnym wierszu dwuwierszowej reprezentacji a musi lee nad d. Zatem a musi take zawiera co najmniej jedno wystpienie litery d. Jeli teraz przyjrzymy si skrajnie lewemu d w grnym wierszu reprezentacji a , widzimy podobnie, e musi ono lee nad d, a zatem a musi zawiera co najmniej dwa d. Patrzc na drugie d widzimy, e a zawiera co najmniej jedno b. W ten sposb dostajemy

    a b d d

    d .................... d b

    przy jedynym zaoeniu, e a jest lewym czynnikiem w iloczynie 7r zawierajcym liter a. Postpujc dalej w ten sam sposb, odkryjemy, e b z grnego wiersza w (13) musi lee nad liter c itd. Na kocu tego procesu dojdziemy ponownie do litery a i moemy utosami to a z pierwszym a, jeli tylko chcemy. Ta argumentacja dowodzi w istocie, e kady lewy czynnik a w iloczynie (12), ktry zawiera liter a, ma posta (d d b c d b b c a) j a f dla pewnej permutacji a '. (Jest wygodnie zapisa a jako ostatnie w cyklu zamiast jako pierwsze; jest to dopuszczalne, poniewa mamy tylko jedno a). Podobnie, jeli zaoylibymy, e a zawiera liter 6, moglibymy wydedukowa, e a (c d d b) j an dla pewnej permutacji a".

    W oglnoci, argumentujc jak powyej, widzimy, e jeli mamy dowolny rozkad na czynniki a j fi = 7r, gdzie a zawiera liter y. to dokadnie jeden cykl postaci

    O i . . . x n y), n > 0, x i , . . . , x n ^ y , (14)

    jest lewym czynnikiem a . Taki cykl atwo mona znale, gdy dane s 7r i y; jest to najkrtszy lewy czynnik w rozkadzie 7r, ktry zawiera liter y. Jednym z wnioskw z tej obserwacji jest nastpujce twierdzenie:

    T w ie rd z e n ie A . Niech < bdzie relacj liniowego porzdku na elementach multizbioru M. Kad permutacj tt zbioru M mona jednoznacznie przedstawi

    (13)

    (12)

  • 5.1.2 PERMUTACJE MULTIZBIORW 27

    jako iloczyn z wtrceniami

    7T = (xn * Xlniy1) j (x2l . . -X2n2y2)T' * *T (^il t > 0 , (15)

    speniajcy nastpujce dwa warunki:

    Vi < V2 < * < Vt oraz y* < dla 1 < j < n 2, 1 < i < i. (16)

    (Innymi sowy, ostatni element w kadym cyklu jest mniejszy od kadego innego elementu, a cig ostatnich elementw jest niemalejcy).

    Dowd. Jeli 7r = e, to taki rozkad dostajemy, przyjmujc t = 0 . W przeciwnym przypadku niech y\ bdzie najmniejszym elementem w permutacji. Najkrtszy lewy czynnik (xn .. .X\nxyi) w rozkadzie 7r zawierajcy y\ znajdujemy w sposb opisany w przykadzie powyej. Teraz 7r = (asn . . . X\ni y\) j p dla pewnej permutacji p. Indukcyjnie wzgldem dugoci mamy, e

    p = O2I X2n2 2/2) T ' ' T O tl Xtnt Vt ) , t > 1,

    i spenione s warunki (16). To dowodzi istnienia poszukiwanego rozkadu.Pozostaje udowodni, e rozkad (15) speniajcy (16) jest jednoznaczny.

    Oczywicie t 0 wtedy i tylko wtedy, gdy 7r jest perm utacj pust e. Gdy t > 0, z (16) mamy, e y\ jest najmniejszym elementem w permutacji i e (xn . . . x\ni y\) jest najkrtszym lewym czynnikiem zawierajcym y\. Dlatego (xn . . . x\ni yi) jest jednoznacznie wyznaczona. Z prawa skracania (7) i zaoenia indukcyjnego wynika, e rozkad jest (15) jednoznaczny. |

    Na przykad rozkadem kanonicznym (12), speniajcym podane warunki,jest

    (d d b c d b b c a) j (b a) j (c d b) j (d), (17)

    jeli a < b < c < d.Jest wane, eby zauway, e bez szkody dla jednoznacznoci moemy

    opuci w tej reprezentacji nawiasy i znaki j! Kady cykl koczy si zaraz po pojawieniu si najmniejszego brakujcego elementu. Tak wic w tej konstrukcji permutacja

    i:1 d d b c d b b c a b a c d b d

    odpowiada wyjciowej permutacji

    7r = d b c b c a c d a d d b b b d .

    Kiedy w dwuwierszowej reprezentacji 7r wystpuje kolumna postaci gdzie x < y, wtedy w stowarzyszonej z ni permutacji 7r' pojawia si odpowiadajca jej para ssiednich elementw . . . y x . . . . Przykadowo nasza perm utacja 7r zawiera trzy kolumny postaci 5, a nf zawiera trzy wystpienia pary db. W oglnoci powysza konstrukcja umoliwia sformuowanie nastpujcego, godnego uwagi twierdzenia.

  • 28 SORTOWANIE 5.1.2

    T w ie rd z en ie B . Niech M bdzie multizbiorem. Wwczas istnieje wzajemnie jednoznaczna odpowiednio midzy permutacjami zbioru M taka, e jeli ir odpowiada 7r' to spenione s nastpujce warunki:

    a) Skrajnie lewy element w C jest rwny skrajnie lewemu elementowi w n.b) Dla kadej pary permutowanych elementw (x, y) przy x < y, liczba wy

    stpie kolumny yx w dwuwierszowej reprezentacji n jest taka sama jak liczba wystpie x bezporednio przed y w n'. |

    Gdy M jest zwykym zbiorem, wwczas mamy w istocie do czynienia z niezwykym odwzorowaniem (z nieistotnymi zmianami) omawianym na koniec punktu 1.3.3. Oglniejszy wynik z twierdzenia B jest wyjtkowo przydatny w zliczaniu pewnych rodzajw permutacji, poniewa czsto atwiej rozwiza problem na podstawie dwuwierszowej reprezentacji permutacji ni rwnowany problem oparty na warunkach odnoszcych si do par ssiednich elementw.

    P. A. MacMahon rozwaa problemy tego typu w swojej znakomitej ksice Combinatory Analysis 1 (Cambridge Univ. Press, 1915), 168-186. Poda on konstruktywny dowd twierdzenia B w specjalnym przypadku, gdy M zawiera tylko dwa rne rodzaje elementw, powiedzmy a i 6. Jego konstrukcja dla tego przypadku jest w istocie taka sama jak podana tu ta j, chocia wyraona zupenie inaczej. Dla przypadku trzech rnych elementw a, 6, c, dowd MacMahona by skomplikowany i niekonstruktywny. Dowd twierdzenia B w przypadku oglnym poda po raz pierwszy Foata [Comptes Rendus Acad. Sci. Paris 258 (1964), 1672-1675].

    Jako nie trywialny przykad zastosowania twierdzenia B sprbujmy znale liczb sw zoonych z liter a, b, c i zawierajcych dokadnie

    A wystpie litery a;B wystpie litery 5;C wystpie litery c; k wystpie par ssiednich liter ca; l wystpie par ssiednich liter cb; m wystpie par ssiednich liter ba. (18)

    Z twierdzenia B wynika, e ta liczba jest rwna liczbie dwuwierszowych reprezentacji postaci

    A B C

    a b . . . bu u * - u

    A k m a m a

    V--------------------------------------------- v ------------------------------------

    B - l b

    '---------------------------VC c

    (!9 )

  • Litery a mona umieci w drugim wierszu na

    ( , 4 - t - m ) ( ) ( t ) SP0S0 W;

    nastpnie litery b mona umieci na pozostaych miejscach na

    f B + k \ ( C k\

    U - J l i ) sp Pozostae jeszcze pozycje musz zawiera litery c. Zatem poszukiwan liczb jest

    ( , - i - J ( * ) ( ? ) G +- i ) ( V ) - Wrmy teraz do pytania o znajdowanie wszystkich rozkadw danej permu

    tacji. Czy istnieje co takiego jak perm utacja pierwsza , ktra jest iloczynem tylko jej samej i e? Rozwaania poprzedzajce twierdzenie A prowadz szybko do wniosku, e permutacja jest pierwsza wtedy i tylko wtedy, gdy jest cyklem bez powtarzajcych si elementw. Jeli perm utacja jest takim cyklem, to z naszych rozwaa wynika, e jedynymi lewymi czynnikami w rozkadzie mog by e lub sam cykl. Natomiast gdy perm utacja zawiera powtarzajcy si element y, to ma nietrywialny, cykliczny lewy czynnik, w ktrym y pojawia si tylko raz.

    Permutacj, ktra nie jest pierwsz, mona rozkada na coraz mniejsze czynniki, a otrzymamy jej reprezentacj jako iloczyn permutacji pierwszych. Wicej, mona pokaza, e taki rozkad jest jednoznaczny, jeli pomin porzdek wymnaania przemiennych permutacji pierwszych:

    T w ierd zen ie C. Kad permutacj multizbioru mona przedstawi jako iloczyn

  • 30 SORTOWANIE 5.1.2

    rnymi cyklami bez powtarzajcych si elementw i jeli

    p Ta =

  • 5,1.2 PERMUTACJE MULTIZBIGRW 31

    Biorc pod uwag (23), otrzymujemy nastpujc tosamo:

    ( T ) (k ) (

    z M A + B C m, N = C B + m, R = B , S C i j = C B + m k.Podobnie moemy policzy liczb permutacji zbioru { 4 a, B 6, C * c, D * d}

    takich, e liczby kolumn rnych typw s nastpujce:

    Typ a a b b c c d dkolumny: d b a b d a cCzsto: r A r q B q B A + r D r A q D - A - \ - q

    (Tutaj A + C = B + D ). Moliwymi cyklami w rozkadzie na permutacje pierwsze s wwczas

    Cykle: (a b) (b c) (c d) (d a) (a b c d) (d c b a)Czsto: A r s B q s D r s A q s s q A + r + s

    dla pewnego s (zobacz wiczenie 12). W tym przypadku iloczyn cykli (a b) i (c d) jest przemienny, jak i przemienny jest iloczyn cykli (b c) i (da). Tak wic musimy policzy liczb rozkadw na permutacje pierwsze. Okazuje si (zobacz wiczenie 10), e istnieje zawsze dokadnie jeden rozkad, w ktrym (a b) nie wystpuje bezporednio za (c d) oraz (b c) nie wystpuje bezporednio za (d a). Std, wykorzystujc wynik wiczenia 13, mamy

    Sumowanie wzgldem s mona wykona, wykorzystujc (27), tak e otrzyman sum wzgldem t ju atwo mona policzy. Po tym wszystkim okazuje si, e nie

    X (D r s)! (A q s)! s\ (q A + r + s)!

    Dzielc obie strony przez i upraszczajc lew stron, otrzymujemy skomplikowanie wygldajc, picioparametrow tosamo

  • 32 SORTOWANIE 5.1.2

    otrzymujemy adnej tosamoci, ktrej nie potrafilimy ju wczeniej wyprowadzi. Jednak przynajmniej nauczylimy si, jak liczy pewne rodzaje permutacji na dwa rne sposoby. Poznane techniki zliczania s dobrym treningiem przed problemami, ktre na nas czekaj.

    WICZENIA1 . [MO5) Prawda czy fasz: Niech Mi i M2 bd multizbiorami. Jeli a jest permu-

    tacj Mi i fi jest permutacj M2 , to a j fi jest permutacj zbioru Mi U M2.2. [10] Iloczyn z wtrceniami c a d a b i b d d a d zosta policzony w (5 ); oblicz

    iloczyn z wtrcenia