- Základní algoritmy
- Donald E. Knuth
978-80-251-2025-5
Computer Press
2008
Nakladatelství Computer
Press se pustilo do historického počinu, když se
rozhodlo vydat překlad kultovní série knih Donalda
Knutha The Art of Computer Programming.
První díl označený podtitulem Základní
algoritmy je pouze začátkem dlouhé série, která
ani v angličtině ještě nevyšla celá, a to přestože na
ní její autor začal pracovat již v roce 1962.
Původně zamýšlel napsat jednosvazkovou knihu o dvanácti
kapitolách, ale nějak se rozepsal (to bych od někud
znal), takže do prvního, více než 600stránkového dílu
se mu vešly jen dvě kapitoly. Rozhodl se proto vydat
knihu ve více dílech, přičemž každý díl měl obsahovat
dvě kapitoly. Bohužel, ani toto předsevzetí nedodržel,
takže 4. díl nakonec rozdělil do pěti svazků, i když
výrazně tenčích.
Ing. Virius, který píše paralelní recenzi, vás v ní
jistě seznámí s duchem knihy a stylem výkladu. Já proto
nyní klasický formát recenze na chvíli opustím a povím
vám něco o zákulisí přípravy této podivuhodné série.
Chtěl bych, abyste z tohoto výkladu pochopili, že
Donald Knuth připravuje všechny texty opravdu nesmírně
pečlivě a snaží se v nich postihnout vše, co je o
probírané problematice známo. I to je jeden z důvodů,
proč známý časopis American Scientist zařadil tuto
sérii knih mezi tucet nejlepších vědeckých monografií
minulého století.
Jak jsem byl řekl, Knuth začal psát v roce 1962, avšak
vycházet začaly jeho knihy až v roce 1968. Do roku 1973
vydal první tři díly. Mezitím ale věda pokročila, tak
se s nakladatelem dohodli, že před vyjitím dalších dílů
vyjde druhé vydání prvních tří.
Při přípravě druhého vydání se ale Knuthovi se ale
nelíbil způsob sazby, tak se rozhodl, že vydání druhého
dílu o pár měsíců práce odloží a během té doby vytvoří
sázecí program, který mu umožní sázet podle jeho
představ. Těch pár měsícpů se nakonec protáhlo na osm
let. Po nich přišel s programem TeX, v němž je nyní
celá kniha sázena a který se stal záhy nejpopulárnějším
autorským i sázecím programem na univerzitách.
Jak zajisté odhadnete, vývoj se nezastavil, a tak bylo
nutno před vyjitím dalších dílů nejprve aktualizovat ty
již dříve vyšedší. V roce 1997 tedy začalo vycházet
třetí vydání prvních dvou dílů, na něž navázalo druhé
vydání třetího dílu a které nyní pokračuje postupným
vydáváním prvního vydání jednotlivých svazků dílu
čtvrtého.
Vzhledem k tomu, že mezi tím uplynulo 11 let, jistě
odhadnete, že se opět mnohé změnilo. Proto ani
plánovaný obsah kapitol, který autor předestře v
předmluvě k prvnímu dílu, nevydržel a za tu dobu se
trochu změnil (tedy přesněji změnil se obsah čtvrtého
dílu). Současný stav je tedy následující:
Press se pustilo do historického počinu, když se
rozhodlo vydat překlad kultovní série knih Donalda
Knutha The Art of Computer Programming.
První díl označený podtitulem Základní
algoritmy je pouze začátkem dlouhé série, která
ani v angličtině ještě nevyšla celá, a to přestože na
ní její autor začal pracovat již v roce 1962.
Původně zamýšlel napsat jednosvazkovou knihu o dvanácti
kapitolách, ale nějak se rozepsal (to bych od někud
znal), takže do prvního, více než 600stránkového dílu
se mu vešly jen dvě kapitoly. Rozhodl se proto vydat
knihu ve více dílech, přičemž každý díl měl obsahovat
dvě kapitoly. Bohužel, ani toto předsevzetí nedodržel,
takže 4. díl nakonec rozdělil do pěti svazků, i když
výrazně tenčích.
Ing. Virius, který píše paralelní recenzi, vás v ní
jistě seznámí s duchem knihy a stylem výkladu. Já proto
nyní klasický formát recenze na chvíli opustím a povím
vám něco o zákulisí přípravy této podivuhodné série.
Chtěl bych, abyste z tohoto výkladu pochopili, že
Donald Knuth připravuje všechny texty opravdu nesmírně
pečlivě a snaží se v nich postihnout vše, co je o
probírané problematice známo. I to je jeden z důvodů,
proč známý časopis American Scientist zařadil tuto
sérii knih mezi tucet nejlepších vědeckých monografií
minulého století.
Jak jsem byl řekl, Knuth začal psát v roce 1962, avšak
vycházet začaly jeho knihy až v roce 1968. Do roku 1973
vydal první tři díly. Mezitím ale věda pokročila, tak
se s nakladatelem dohodli, že před vyjitím dalších dílů
vyjde druhé vydání prvních tří.
Při přípravě druhého vydání se ale Knuthovi se ale
nelíbil způsob sazby, tak se rozhodl, že vydání druhého
dílu o pár měsíců práce odloží a během té doby vytvoří
sázecí program, který mu umožní sázet podle jeho
představ. Těch pár měsícpů se nakonec protáhlo na osm
let. Po nich přišel s programem TeX, v němž je nyní
celá kniha sázena a který se stal záhy nejpopulárnějším
autorským i sázecím programem na univerzitách.
Jak zajisté odhadnete, vývoj se nezastavil, a tak bylo
nutno před vyjitím dalších dílů nejprve aktualizovat ty
již dříve vyšedší. V roce 1997 tedy začalo vycházet
třetí vydání prvních dvou dílů, na něž navázalo druhé
vydání třetího dílu a které nyní pokračuje postupným
vydáváním prvního vydání jednotlivých svazků dílu
čtvrtého.
Vzhledem k tomu, že mezi tím uplynulo 11 let, jistě
odhadnete, že se opět mnohé změnilo. Proto ani
plánovaný obsah kapitol, který autor předestře v
předmluvě k prvnímu dílu, nevydržel a za tu dobu se
trochu změnil (tedy přesněji změnil se obsah čtvrtého
dílu). Současný stav je tedy následující:
- Díl 1: Základní algoritmy
(vyšel v červnu 1997)
Zde se v první kapitole probírá nejprve povšechná
teorie, pak autor vyloží architekturu svého
hypotetického počítače, pro nějž všechny programy
vytváří. Druhá kapitola nás pak seznámí se
základními datovými strukturami: seznamy a
stromy.
- Díl 2: Seminumetrické algoritmy (vyšel v listopadu 1997)
Kniha obsahuje třetí a čtvrtou kapitolu (kapitoly
jsou číslovány plynule skrz jednotlivé díly). Třetí
pojednává pseudonáhodných číslech a jejich
generaci, čtvrtá pak probírá práci s čísly v
plovoucí čárce a optimalizaci numerických algoritmů
včetně faktorizace prvočísel používané v
kryptografii.
- Díl 3: Vyhledávání a třídění
(někdo dá přednost termínu řazení – díl vyšel v
květnu 1998)
Jak jistě sami odhadnete, díl obsahuje pátou a
šestou kapitolu. Pátá pojednává o třídění (řazení),
které rozděluje na externí a interní (každému je
věnována vlastní podkapitole). Šestá se pak zabvývá
vyhledáváním v tabulkách i souborech přičemž je
opět rozdělena na výklad metod pro sekvenční
vyhledávání a metod pro vyhledávání pomocí
klíčů.
- Díl 4: Kombinatorické algoritmy (postupně vychází)
Jak jsem již řekl, tento díl se oproti původním
předpokladům poněkud rozrostl, takže nakonec
vychází v několika svazcích. Jejich příprava ale
autorovi zabrala poměrně dost času, takže jsme si
na vyjití dalších svazků museli počkat a navíc
jednotlivé svazky vycházely na přeskáčku (a zatím
ještě všechny nevyšly). Rozdělení do více svazků
bylo mimo jiné učiněno i pod tlakem čtenářů, kteří
nechtěli čekat na vydání další tlusté knihy a
přiměli autora, aby rozdělil text do útlejších
brožurek s tloušťkou do 200 stran. Čtvrtý díl je
(nebo přesněji bude) tvořen následujícími svazky:
- Svazek 0: Úvod do kombinatorických
algoritmů a booleovských funkcí (vyšel
v dubnu 2008)- Svazek 1: Bitové triky a techniky;
diagramy binárního rozhodování (vyjde v
březnu 2009)- Svazek 2: Generace všech n-tic a
permutací (vyšel v únoru 2005)- Svazek 3: Generování všech kombinací
a částí (vyšla v srpnu 2005)- Svazek 4: Generování všech stromů,
historie kombinatorických generací
(vyšel v únoru 2006)
- Díl 5: Syntaktické algoritmy
(teprve se píše)
Tento díl je prozatím pouze v plánech má opět
obsahovat dvě kapitoly. Devátá se má zabývat
lexikálním prohledáváním (scanning), kam autor
zařazuje i vyhledávání textových řetězců a
komprimaci, desátá pak bude probírat lexikální
analýzu (parsing).
Jak si jistě domyslíte, tato série, která vám postupně
vysvětlí, rozebere a exaktně dokáže téměř vše, co v
současné době víme o algoritmizaci, nemá v odborné
literatuře obdobu. Řekl bych, že každý, kdo to myslí s
programováním vážně a chce je poznat doopravdy do
hloubky, by měl vážně uvažovat o zařazení této
všeobjímající série do své knihovny.