Donald E. Knuth. Umění programování 1. díl, Základní algoritmy
|
|
- Renata Sedláčková
- před 9 lety
- Počet zobrazení:
Transkript
1
2 Donald E. Knuth Umění programování 1. díl, Záladní algoritmy Computer Press, a.s. Brno 2008
3 Umění programování 1. díl, Záladní algoritmy Donald E. Knuth Computer Press, a.s., Vydání první. Přelad: David Krásensý Odborná oretura: Pavel Töpfer, Jan Kučera Jazyová oretura: Alena Láníčová Vnitřní úprava: Petr Soja Sazba: Petr Soja Rejstří: David Krásensý, Petr Soja Obála: Ivana Mitáčová Komentář na zadní straně obály: Rade Hylmar Technicá spolupráce: Jiří Matouše, Petr Soja, David Krásensý, Jiří Rybiča, Petr Klíma Odpovědný redator: Rade Hylmar Technicý redator: Jiří Matouše Produce: Daniela Nečasová Authorized translation from the English language edition, entitled THE ART OF COMPUTER PROGRAMMING, VOLUME 1: FUNDAMENTAL ALGORITHMS, 3rd EDITION, by KNUTH, DONALD E., published by Pearson Education, Inc, publishing as Addison Wesley Professional, Copyright 1997 Addison Wesley. All rights reserved. No part of this boo may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc. CZECH language edition published by COMPUTER PRESS, A.S., Copyright Autorizovaný přelad z originálního anglicého vydání The Art of Computer Programing, Volume 1: Fundamental Algorithms, 3rd Edition. Originální copyright: Addison Wesley, Přelad: Computer Press, a.s., Computer Press, a. s., Holandsá 8, Brno Objednávy nih: distribuce@cpress.cz tel.: ISBN Prodejní ód: K1463 Vydalo naladatelství Computer Press, a. s., jao svou publiaci. Computer Press, a.s. Všechna práva vyhrazena. Žádná část této publiace nesmí být opírována a rozmnožována za účelem rozšiřování v jaéoli formě či jaýmoli způsobem bez písemného souhlasu vydavatele.
4 Tuto sérii nih s lásou a vzpomínami věnuji počítači Typu 650, terý byl dysi instalován na Case Institute of Technology a se terým jsem prožil mnoho nezapomenutelných večerů.
5
6 PŘEDMLUVA Tady je níža, o jejíž vydání jste nás žádali v tisících dopisů. Její sestavení nám trvalo mnoho let, dy jsme prověřovali bezpočet různých receptů a vybírali z nich jen ty nejlepší, ty nejzajímavější a ty nejdoonalejší. Nyní se můžeme bez jediného stínu pochybnosti zaručit za jeden aždý z nich: budete-li se doslova držet předepsaných postupů, dosáhnete přesně stejného výsledu jao my, přestože jste třeba nidy dosud nevařili. McCallova uchařa (1963 Proces přípravy programů pro číslicové počítače je zvláště zajímavý, a to nejen pro své eonomicé a vědecé přínosy, ale taé pro své esteticé strány, díy nimž se podobá sládání veršů nebo hudby. Tato niha je prvním z něolia svazů, ve terých čtenář pozná různé dovednosti zdatného programátora. Následující apitoly nejsou ovšem pojaty jao úvod do programování počítačů; předpoládáme, že již čtenář v tomto smyslu jisté zušenosti má. Požadavy e studiu nihy jsou faticy velmi jednoduché, ale začáteční musí věnovat jistou práci a čas záladnímu seznámení s číslicovým počítačem. Čtenář tétonihybyměl: a Mít nějaou představu o práci číslicového počítače s uloženým programem; není nutné znát jeho eletroniu, ale spíše vědět, ja se instruce uládají do paměti počítače a následně vyonávají. b Být schopen převést řešení problémů do natoli explicitních pojmů, že jim doáže porozumět ipočítač.(počítačetotižnemajížádný zdravýrozum ; udělajípřesněto,cojimřeneme,nicméněanicvíce.tentoprincipjepři prvním setání s počítačem nejobtížnější. c Mít alespoň nějaé znalosti záladních počítačových techni, jao je tvorba cylů(opaované provádění jisté množiny instrucí, volání podprogramů a práce s indexovanými proměnnými. d Znátalespoňtrochupočítačovouhantýru vědět,coje paměť, registry, bity, pohyblivářádováčára, přetečení, software.květšině výrazů, teré nejsou definovány přímo v textu, je uvedena stručná definice v rejstříu na onci svazu. Tyto čtyři předpolady bychom možná mohli shrnout do jediného požadavu, asicežečtenářjižnapsalaotestovaldejmetomunejméněčtyřiprogramypro nejméně jeden počítač.
7 vi PŘEDMLUVA Celou tuto sérii nih se snažím psát ta, aby sloužila něolia účelům. Knihy jsou především referenčními publiacemi, teré shrnují poznaty z něolia důležitých oblastí. Knihy je taé možné využít jao učebnice samostatnému studiu nebo pro vysoošolsé ursy počítačů a informatiy. Pro splnění obou těchto cílů jsem do textu začlenil velé množství cvičení a většinu z nich jsem doplnil i o odpovědi. Mojí snahou bylo taé zaplnit strány faty, a nioli vágním, obecným výladem. Série nih je určena pro čtenáře, teří se budou o počítače zajímat hlouběji, nemusí to ale nutně být počítačoví specialisté. Jedním z mých hlavních cílů bylo sutečně zpřístupnit tyto techniy programování i lidem, teří pracují v jiných oblastech a mohou počítače vhodně využít, ale teří na druhé straně nemají čas hledat všechny potřebné informace v různých odborných časopisech. Tématěchtonihbychommohlioznačitjao nenumericouanalýzu.počítače bývaly tradičně spojovány s řešením různých numericých problémů, jao je výpočet ořenů rovnice, numericé interpolace a integrace atd., ale podobným tématům se zde nija do hlouby nevěnujeme. Numericé programování počítačů je velice zajímavou a rychle se rozvíjející oblastí poznání a je mu věnována celá řada nih. Od začátu 60. let 20. století se ale počítače stále častěji používají ipřiřešeníproblémů,vnichž sesčíslypracuje téměřjen náhodou;zde již nevyužíváme schopnosti počítačů provádět aritmeticé výpočty, ale schopnosti jejich rozhodování. Sčítání a odčítání i v těchto nenumericých oblastech přece jen využijeme, násobení a dělení již méně. Samozřejmě že i člově, terý se zajímá především o numericé programování počítačů, využije znalostí nenumericých techni, protože ty jsou zde uvedeny na pozadí numericých programů. Výsledy výzumů v oblasti nenumericé analýzy najdete v různých odborných časopisech. Mojí snahou bylo vyhledat v této rozsáhlé literatuře ty nejzáladnější techniy, teré se při programování dají uplatnit v mnoha různých situacích.pousiljsemsetytomyšlenysjednotitdojaési teorie,alezároveň jsem se pousil uázat i její apliaci na různé praticé problémy. Nenumericáanalýza jeprotentooborsamozřejměneobyčejněnelichotivým názvem; mnohem vhodnější je charaterizovat jej pomocí výstižného pozitivníhooznačení.pojem zpracováníinformací jeprouvažovanoupubliaci přílišširoýa techniyprogramování jsoujaopojemnaopapřílišúzé.rád bych proto navrhl, aby se témata probíraná v těchto nihách označovala jao analýza algoritmů. Tento název by měl mít význam: teorie vlastností určitých počítačovýchalgoritmů. Celá série nih označená titulem Umění programování je vytvořena podle následující obecné osnovy: Svaze 1. Záladní algoritmy Kapitola 1. Záladní principy Kapitola 2. Informační strutury Svaze 2. Seminumericé algoritmy Kapitola 3. Náhodná čísla
8 PŘEDMLUVA vii Kapitola 4. Aritmetia Svaze 3. Řazení a vyhledávání Kapitola 5. Řazení Kapitola 6. Vyhledávání Svaze 4. Kombinatoricé algoritmy Kapitola 7. Kombinatoricé vyhledávání Kapitola 8. Reurze Svaze 5. Syntaticé algoritmy Kapitola 9. Lexiální prohledávání Kapitola 10. Lexiální analýza Svaze 4 hovoří o ta rozsáhlém tématu, že jej ve sutečnosti tvoří tři samostatné nihy (svazy 4A, AB a 4C. Připravuji taé dva další svazy na speciální témata: Svaze 6, Teorie jazyů(kapitola 11 a Svaze 7, Kompilátory (Kapitola12. Knihusuvedenýmiapitolamijsemzačalpsátvroce1962,atovjediném svazu, ale brzy jsem zjistil, že bude lépe se věnovat jednotlivým tématům do hlouby, než je jen přelétnout po povrchu. Výsledný rozsah textu znamená, že jedna aždá z apitol obsahuje víc než dost materiálu pro celý semestrální urs na vysoé šole; má proto smysl vydat celou sérii v něolia svazcích. Vím,žejeneobvylémítvcelénizejendvěapitoly,alerozhodljsemsepro zachování původního číslování apitol, a tím pádem pro snazší řížové odazy. Plánuji taé zrácenou verzi svazů 1 až 5, terá by měla sloužit jao obecnější reference a/nebo jao studijní materiál pro počítačové ursy řádného studia; jejím obsahem bude podmnožina materiálů z celé série a speciální informace budou vynechány. I ve zrácené verzi bude zachováno stejné číslování apitol jao v ompletním díle. Tentosvazemůžetepovažovatzajaýsi průni celésérie,protožeobsahuje záladní materiál, terý se používá v dalších svazcích. Zbývající svazy 2až5seoprotitomudajíčístnezávislenasobě.Svaze1jenejenreferenční příručou pro studium ostatních svazů, ale zároveň může sloužit pro studijní ursy nebo pro samostatné studium tématu datových strutur(tím zdůrazňujeme látu apitoly 2 nebo jao text z disrétní matematiy(de zdůrazňujeme látu apitol 1.1, 1.2, a nebo jao výlad tématu programování ve strojovém jazyce(tentorát lademe důraz na apitoly 1.3 a 1.4. Při psaní těchto apitol jsem zvolil jiný přístup, než jaý přebírá většina současných nih o programování počítačů: nepoouším se naučit čtenáře pracovat se softwarem něoho jiného. Namísto toho chci, aby se naučil sám psát lepší software. Mým původním cílem bylo přivést čtenáře hranicím poznatů ve všech rozebíraných tématech. Držet ro s oborem, terý je eonomicy ta zisový, je ale neobyčejně těžé, a vzhledem rychlému rozmachu informatiy je tento sen doslova nemožný. Tento obor se stal pestrou mozaiou, do jejíchž desetitisíců
9 viii PŘEDMLUVA amínů přispěly svými drobnými výsledy desetitisíce lidí po celém světě. Vzal jsemsiprotonovýcíl:soustředitsena lasicé techniy,terébudoudůležité izaněolidesítelet,apopsatjeta,janejlépeumím.zejménajsemse pousil sledovat historii aždého z témat a tím vytvořit pevné zálady pro budoucí poro. Pousil jsem se volit taovou terminologii, terá je stručná a je v souladu se současným stavem. A pousil jsem se do textu zahrnout všechny známé myšleny o programování sevenčních počítačů, teré jsou rásné a dají se snadno vyslovit. Nyní je na místě něoli slov matematicému obsahu celé série nih. Láta je uspořádána taovým způsobem, že ji doáže strávit aždý čtenář se znalostmi středošolsé algebry (snad jen přesočí něteré náročnější části; matematicy zdatný čtenář se zde dozví spoustu zajímavých matematicých postupů souvisejících s disrétní matematiou. Této dvojí úrovně výladu jsem dosáhl jedna ohodnocením aždého ze cvičení, mezi nimiž jsou zvlášť vyznačena cvičení matematicého charateru, a taé díy uspořádání většiny částí, dy jsou nejdůležitější matematicé výsledy uvedeny před příslušným důazem. Vlastní důazy jsou buďto ponechány jao cvičení(odpovědi jsou shrnuty do samostatné části textu, nebo jsou uvedeny na onci výladu. Čtenář, terého zajímá spíše programování než matematia, může po dosažení obtížnějších částí matematicého výladu zbyte příslušné části přesočit. Na druhé straně matematicy orientovaný čtenář zde najde množství zajímavého materiálu. Významná část publiovaných matematicých teorií programování počítačů byla přitom chybná, a proto je jedním z úolů této nížy nasměrovat čtenáře matematicy správným směrem. A protože se sám považuji za matematia, je mojí povinností udržovat v co největší možné míře taé matematicou správnost textu. Pro většinu matematicého výladu v těchto svazcích stačí záladní znalosti diferenciálního a integrálního počtu, protože většina ostatních potřebných teorií je odvozena přímo v textu. Ve výladu ale občas používám složitější onstruce teorie funcí omplexní proměnné, teorie pravděpodobnosti, teorie čísel a další; v taovém případě odazuji čtenáře na příslušnou učebnici. Nejtěžší rozhodnutí, jaé jsem musel při přípravě těchto svazů učinit, se týalo způsobu výladu různých postupů. Výhody vývojových diagramů a neformálního popisu algoritmů ro za roem jsou dostatečně známé; podrobnější rozbor je uveden napřílad v článu Computer-Drawn Flowcharts z časopisu ACM Communications, roční 6(září 1963, strány Při popisu jaéhooli počítačového algoritmu je nicméně potřeba taé formální, přesný jazy, a proto jsem se musel rozhodnout, jestli pro tyto účely použít vyšší, algebraicý jazy jao ALGOL nebo FORTRAN, nebo strojově orientovaný jazy. Mnozí z dnešních počítačových expertů nebudou zřejmě s tímto názorem souhlasit, ale z následujících důvodů jsem naonec dospěl definitivnímu přesvědčení, že je toto rozhodnutí správné: a Každý programátor je silně ovlivněn jazyem, ve terém píše programy; lidé mají obrovsou tendenci preferovat taové onstruce, teré jsou v daném
10 PŘEDMLUVA ix jazyce nejjednodušší, nioli ty, teré jsou nejlepší pro daný počítač. Porozumí-li programátor strojově orientovanému jazyu, bude používat mnohem efetivnější metody a výrazně se přiblíží realitě. b Všechny programy, teré společně napíšeme, jsou až na něoli málo výjime ráté, taže by je měl být schopen zpracovat praticy jaýoli vhodný počítač. c Jazyy vyšší úrovně jsou nevhodné pro disusi různých důležitých otáze nízé úrovně, jao je linování oprogramů, generování náhodných čísel, aritmetia s vícenásobnou přesností a řada problémů souvisejících s efetivním využíváním paměti. d Člově s vážnějším zájmem o počítače by měl mít dobré znalosti strojového jazya, protože ten je jednou z nejdůležitějších součástí počítače. e Výstupem mnoha softwarových programů, popsaných v řadě příladů, bude ta jao ta nějaý ód ve strojovém jazyce. f Zhruba aždých pět roů přicházejí a vycházejí z módy nějaé nové algebraicé jazyy, zatímco já zde hovořím o záladních, nadčasových principech. Na druhé straně přiznávám, že v programovacích jazycích vyšší úrovně se programypíšíoněcosnázeažesetaévýrazněsnázeladí.zhrubaodrou1970 píšu své vlastní programy ve strojových jazycích nízé úrovně jen výjimečně, protože dnešní počítače jsou dostatečně velé a rychlé. My se ale v této nížce zaměřujeme na celou řadu problémů, u terých má význam programování jao umění. Něteré ombinatoricé výpočty se napřílad musí opaovat biliónrát a aždá miroseunda, o terou zrátíme vnitřní smyču cylu, znamená úsporu zhruba 11,6 dne výpočetního času. Podobně má smysl věnovat větší úsilí i při psaní jaéhooli softwaru, terý se bude používat mnohorát denně v instalacích na mnoha počítačích, protože napsat jej musíme vždy pouze jednou. Máme-li tedy za sebou rozhodnutí pro strojově orientovaný jazy, terý z jazyů to má být? Mohl jsme zvolit jazy nějaého onrétního počítače X, alepotombysilidé,teřípočítači Xnemajípřístup,mohlimyslet,žejetato niha jen pro majitele systému X. Navíc počítač X bude mít nejspíše spoustu různých zvláštností, teré jsou vzhledem látce uváděné v této nize naprosto irelevantní a teré bychom si tato navíc museli vysvětlit; a naonec výrobce počítače Xpřijdezadvaroyspočítačem X+1nebodoonce10Xapočítač X již nebude nioho zajímat. Tomutodilematujsemsevyhnultím,žejsemsepousilvytvořit ideální počítač, terý pracuje podle velmi jednoduchých pravidel(ta se můžete naučit dejme tomu za pouhou hodinu, ale terý zároveň velice připomíná sutečné počítače.nenídůvod,pročbysestudentimělibátučitsevlastnostivícenež jednoho počítače; jamile zvládnou jeden strojový jazy, přizpůsobí se ostatním již snadno. Taé profesionální programátor se ve své ariéře setává s řadou různýchstrojovýchjazyů.jedinouzbývajícínevýhodoutohoto myticého počítače tedy je, že programy pro něj napsané si jen velmi těžo vyzoušíme.
11 x PŘEDMLUVA Naštěstí to ale velý problém není, protože řada dobrovolníů napsala simulátory tohoto hypoteticého počítače. Taovéto simulátory jsou ideální pro výuu, protože se s nimi pracuje ještě snáze než se sutečnými počítači. Ke aždému tématu jsem se pousil citovat ty nejlepší první doumenty a vybíral jsem taé něteré novější práce. V odazech na literaturu používám standardní zraty názvů periodi; výjimou jsou nejčastěji citované časopisy, teré zracuji následujícím způsobem: CACM = Communications of the Association for Computing Machinery JACM = Journal of the Association for Computing Machinery Comp. J. = The Computer Journal(British Computer Society Math. Comp. = Mathematics of Computation AMM = American Mathematical Monthly SICOMP = SIAM Journal on Computing FOCS = IEEE Symposium on Foundations of Computer Science SODA = ACM-SIAM Symposium on Discrete Algorithms STOC = ACM Symposium on Theory of Computing Crelle = Journal für die reine und angewandte Mathemati Citaci uvedenou o dvě strány zpět zrátím ta napřílad na zápis CACM 6 (1963, Výrazem CMath označuji dále nihu Concrete Mathematics, teroucitujivúvodudočásti1.2. Velá část odborného obsahu těchto nih je soustředěna do cvičení. Poud jsou za nějaým netriviálním cvičením sryté cizí myšleny, snažím se uvést jejich autora. Příslušné odazy na literaturu jsou obvyle uvedeny v doprovodném textudanéčástinihynebovodpovědinacvičení,alevřaděpřípadůjsoucvičení založena na různém nepubliovaném materiálu, e terému ani nelze uvést další odazy. Při přípravě těchto nih mi samozřejmě po celou tu dobu pomáhala spousta jiných lidí, terým jsem nesmírně zavázán. Děuji především své ženě Jill za její neonečnou trpělivost, za přípravu něolia ilustrací a za nevýslovnou další pomoc. Děuji taé Robertu W. Floydovi, terý v šedesátých letech výrazně pomohl zlepšit tento materiál. Svojí pomocí přispěly i tisíce jiných sepsat jen jejich jména by zabralo celou další nížu! Mnozí z nich lasavě svolili využití jejich dosud nepubliované práce. Moje výzumné práce na Caltech a Stanfordu podporovala po dlouhá léta nadace National Science Foundation a Office of Naval Research. Vyniající pomoc a spolupráci mi posytuje taé vydavatelství Addison-Wesley, a to hned od zahájení projetu v roce Nejlépe ale všem poděuji, dyž jim dnes mohu uázat, že jsem s jejich podlady mohl napsat právě taovou nihu, jaou ode mne očeávali. Předmluva e třetímu vydání Po deseti rocích vývoje systémů počítačové sazby TEX a METAFONT si dnes mohu splnit sen, se terým jsem tyto práce začínal: mohu tyto systémy apliovat
12 PŘEDMLUVA xi na celé dílo Umění programování. Přinejmenším celý text této nihy se nachází uvnitř mého osobního počítače v taové eletronicé podobě, terou bude možné snadno přizpůsobit i budoucím změnám v technologiích zobrazování a tisu. Díy novému uspořádání jsem do textu mohl začlenit doslova tisíce zlepšení, na terá jsem už dlouho čeal. V tomto novém vydání jsem znovu prošel celý text slovo za slovem, pousil jsem se zachovat mladicou nevázanost původních vět a zároveň do nich vnést ouse úsudu zralého muže. Přidal jsem desíty nových cvičení a desítám jiných jsem doplnil nové a rozšířené odpovědi. Kniha Umění programování je vša stále ve vývoji. U něterých částí uvidíte protosymbol vevýstavbě,terýmseomlouvám,žedanýmateriálnení zcela atuální. Šuplíy mám plné důležitého materiálu, terý chci začlenit do posledního, nejslavnějšího, čtvrtého vydání Svazu 1, ale nejprve musím doončit svazy4a5ajejichvydánínechciodládatvíce,nežolijeabsolutněnezbytné. Většinu náročných prací na přípravě nového vydání zajistili Phyllis Winler a Silvio Levy, teří zodpovědně přepsali a upravili text druhého vydání, a dále Jeffrey Oldham, jenž převedl téměř všechny původní ilustrace do formátu META- POST. Opravil jsem vešeré chyby, na teré mne čtenáři druhého vydání upozornili (a taé něoli chyb, terých si nido nevšiml, a pooušel jsem se nezanést nové chyby s novým materiálem. Přesto vím, že v nize nějaé závady být mohou, a aždou z nich chci opravit co nejdříve. Za aždou odbornou, typograficou nebo historicou chybu proto s radostí vyplatím 2,56 dolaru tomu, do ji nalezne jao první. Internetová strána obsahuje informace o této nize (včetně atuálního seznamu všech dosud oznámených chyb a o související literatuře. Stanford, California D. E. K. duben 1997 Za poslední dvě desetiletí se věci změnily. BILL GATES (1995
13 1. Začáte 2. Přečti str. xv xvii 3.N Volná zábava 4. Začni apitolu N Ano Ne 17.N 12? 5. Je zajímavá? Ano Ne Ano 6.N 2? Ne 16. ZvýšitN 7. Začni další část Konec apitoly 15. Jdi spát Poprvé Ano 8.? Ne Ano Ne 14. Jsi unavený? = 5? Ne Ano 11. Přesoč matematiu 10. Zontroluj vzorce 12. Vypracuj cvičení 13. Porovnej odpovědi Vývojový diagram pro čtení této série nih.
14 Procedura pro čtení této série nih 1. Začněte číst tuto proceduru, poud jste ji ještě nezačali číst. Pečlivě poračujte podle následujících roů.(obecný formát procedury a doprovodného vývojového diagramu budeme používat i na jiných místech nížy. 2. Přečtěte si Poznámy e cvičením na stranách xv xvii. 3. Přiřaďte Nrovno1. 4. Začněte číst apitolu N. Nečtěte citáty uvedené na začátu apitoly. 5. Jeprovástémaapitolyzajímavé?Poudano,přejdětenaro7,poud ne,přejdětenaro6. 6. Je N 2?Poudne,přejdětenaro16;poudano,projdětepřestotext apitoly.(kapitoly 1 a 2 obsahují důležitý úvodní materiál a taé přehled záladních techni programování. Přinejmenším prolétněte část apitoly o používaných notacích a o počítači MIX. 7. Začnětesečtenímdalšíčástiapitoly;poudjsteužaledošlinaonec apitoly, přejděte na ro Ječísločástiapitolyoznačenoznaem?Poudano,můžetetutočást při prvním čtení vynechat(věnuje se jistému speciálnímu tématu, teré je zajímavé, ale není úplně podstatné; vraťte se na ro Jstematematicyzdatný?Poudjeprovásmatematia španělsávesnice, přejděte na ro 11; jina poračujte roem Zontrolujte matematicá odvození v této části apitoly(a případné chyby oznamte autorovi. Přejděte na ro Poud je tato část apitoly plná matematicých výpočtů, raději popsaná odvozování vůbec nečtěte. Seznamte se ale s nejdůležitějšími výsledy, teré jsou obvyle uvedeny na začátu, nebo šimým písmem naopa na onci obtížnější části. 12. Vypracujte doporučená cvičení této části apitoly, a to v souladu s poyny uvedenýmivpoznámáchecvičení(tyjstesipřečetlivrou Jamile vypracujete cvičení e své spoojenosti, porovnejte svou odpověď s odpovědí uvedenou v příslušném oddíle zadní části nihy(je-li danému problému nějaá odpověď popsána. Přečtěte si taé odpovědi e cvičením,
15 xiv PROCEDURA PRO ČTENÍ TÉTO SÉRIE KNIH na jejichž vypracování jste neměli čas. Poznáma: Ve většině případů je nejrozumnější si nejprve přečíst odpověď e cvičení n a teprve poté začít pracovat na cvičení n + 1, taže roy se obvyle provádějí souběžně. 14. Jsteunaveni?Poudne,vraťtesenaro Jdětespát.Potévstaňteavraťtesenaro Zvyštečíslo Nojedniču.Poudje N=3,5,7,9,11nebo12,začnětečíst další svaze z celé série. 17. Poudje Nmenšíneborovno12,vraťtesenaro Blahopřejeme. Nyní se pouste přesvědčit taé své přátele, aby si oupili Svaze1azačalijejčíst.Dálesevraťtenaro3. Běda tomu, terý čte jen jednu nihu. GEORGE HERBERT, Jacula Prudentum, 1144 (1640 Le défaut unique de tous les ouvrages c est d être trop longs. (Společným nedostatem všech děl je jejich přílišná déla. VAUVENARGUES, Réflexions, 628 (1746 Knihy jsou malicherné. Jen život je nádherný. THOMAS CARLYLE, Journal (1839
16 POZNÁMKY KE CVIČENÍM Cvičenívtétosériinihjsouvhodnájasamostatnémustudiu,taipro výuu.naučitsenějaétémajenstím,žesiněcopřečteme,alenepousíme se uplatnit poznaty na onrétní problémy, je velmi obtížné, ne-li nemožné, protože teprve při cvičení plně pochopíme, co všechno jsme se naučili. Navíc nejlépe se naučíme to, na co přijdeme sami. Proto tvoří cvičení velou část tohoto díla; pooušel jsem se v nich ale zachovat co nejvíce informativní hodnoty a současně volit taové problémy, teré jsou zajímavé a poučné. V mnoha nihách jsou lehá cvičení nahodile zamíchána mezi ta nejobtížnější. To bývá nědy nešťastné, protože čtenáři rádi dopředu vědí, oli času jim řešení problému asi zabere jina mohou všechny problémy naonec vynechat. Klasicým příladem této situace je niha Dynamic Programming, terou napsal Richard Bellman; je to důležité, průopnicé dílo, v němž jsou ovšem problémy na onci něterých apitol sepsány pod jednotný nadpis Exercises and Research Problems,tedy Cvičeníavýzumnéproblémy ;zdejsouažrajnětriviální otázy zařazeny přímo doprostřed složitých a dosud nevyřešených problémů. Říáse,žeseprýjednounědoDr.Bellmanazeptal,japoznáběžnécvičení od výzumného problému; on tehdy odpověděl: Poud doážete otázu vyřešit, znamenáto,žejetocvičení;jinajetovýzumnýproblém. Dávat do nihy podobného druhu ja výzumné problémy, ta i velmi snadná cvičení, je ovšem z řady důvodů rozumné; abych čtenáři ušetřil nepříjemné dilema, teré otázy jsou teré, označil jsem je číselným hodnocením, jež definuje úroveň obtížnosti. Číselné stupně mají následující obecný význam: Hodnocení Význam 00 Velice snadné cvičení, na teré může čtenář, jenž dobře porozuměl probírané látce, odpovědět oamžitě; taovéto cvičení stačí praticy vždyudělatjen zhlavy. 10 Jednoduchý problém, u něhož se musíte zamyslet nad přečtenou látou, ale terý ještě zdalea není obtížný. Taovéto otázy byste měli zvládnout zhruba do jedné minuty a při řešení vám může pomoci tuža a papír. 20 Průměrně složitý problém, na terém si vyzoušíte záladní porozumění probírané látce; úplné odpovědi můžete ale potřebovat patnáct až dvacet minut. 30 Středně obtížný a/nebo složitý problém; plně uspoojivé odpovědi se dopracujete i více než po dvou hodinách, případně po delší době, poud u toho máte zapnutou televizi.
17 xvi POZNÁMKY KE CVIČENÍM 40 Dosti obtížný nebo rozsáhlý problém, terý může být ve výuce vhodným námětem pro semestrální projet. Student by měl být schopen problém vyřešit v rozumném čase, ale řešení není triviální. 50 Výzumný problém, terý dosud nebyl uspoojivě vyřešen(poud bylo autoroviznámovdoběvzniutextu,idyžseojehořešenímnozí pooušeli. Poud se vám podaří najít odpověď taovémuto typu problému, rozhodně ji publiujte; taé autora těchto stráne velice potěší, jestliže mu o řešení dáte co nejdříve vědět(za podmíny, že je řešení správné. Interpolacítéto logaritmicé stupnicemůžemesnadnovysvětlitijinéčíselné hodnocení. Výraz 17 bude napřílad označovat cvičení, teré je o něco více než průměrně jednoduché. Problémy s hodnocením 50, teré později nějaý čtenář vyřeší, mohou být v dalších vydáních nihy i v erratech na Internetu(viz strana iv označeny číslem 45. Zbyte po dělení číselného hodnocení pěti vyjadřuje objem potřebné rutinní práce. Vyřešit cvičení označené číslem 24 může tedy trvat déle než cvičení shodnocením25,aleecvičenísčíslem25jepotřebavícetvořivosti. Autor se pousil přiřadit číselné hodnocení jednotlivých cvičení co nejpřesněji, ale pro člověa, terý nějaý problém vymyslí, je samozřejmě obtížné odhadnout, ja těžé bude hledat řešení pro něoho jiného; aždý má navíc přirozenévlohyprourčitétypyproblémůaužneprojiné.doufám,žejetoto hodnocení dobrým odhadem obtížnosti; čísla berte ale jen jao rámcové vodíto, nioli jao nějaý absolutní indiátor. Knihu jsem psal pro čtenáře s různým stupněm matematicého vzdělání a nadání; něterá ze cvičení jsou proto určena jen pro matematicy zdatné studenty. Cvičení, jehož řešení je potřeba více matematicého myšlení či motivace, než oli je běžné u lidí, teří se zajímají jen o programování samotných algoritmů, má hodnocení připojeno písmeno M. Poud jsou e cvičení nezbytné znalosti diferenciálního počtu nebo jiné vyšší matematiy, terá není v této nizeodvozena,jeoznačenopísmeny VM.Samotnéoznačení VM ovšem neznamená, že by cvičení nutně muselo být obtížné. Předněterýmicvičenímijeuvedenašipa, ;tauvádíproblémy,teré jsou obzvláště názorné a jejichž řešení je možné čtenáři doporučit. Neočeávám samozřejmě, že aždý čtenář či student vypracuje úplně všechna cvičení, a proto jsem tato označil ta nejcennější.(tím vás ale nechci odradit od těch ostatních! Každý čtenář by se ovšem měl přinejmenším pousit o vyřešení všech problémů s hodnocením 10 a menším; podle šipe se může rozhodnout, terým ze cvičení o vyšším hodnocení dá přednost. Řešení většiny cvičení je uvedeno v seci odpovědí. Ty prosím používejte s rozumem a na odpověď se nedívejte, poud se nepousíte problém poctivě vyřešit sami nebo poud na vyřešení tohoto onrétního problému sutečně nemáte čas. Ažpoté,copřijdetenasvojevlastnířešení,neboseotoalespoňpousíte,může pro vás být vzorová odpověď poučením a návodem. Řešení uvedená v nize jsou často velmi stručná a detailní postupy jsou postaveny na předpoladu, že jste
18 POZNÁMKY KE CVIČENÍM xvii se nejprve poctivě pousili problém vyřešit vlastními silami. Nědy se z řešení dozvíte méně informací, než oli bylo v otázce požadováno, jindy naopa více. Jetaédocelamožné,žesevámpodařínajítlepšíodpověď,nežjaájevnize uvedena;vtomtopřípaděbudeautorpotěšen,poudsesnímořešenípodělíte. V dalších vydáních nihy se pa podle možností objeví zdoonalené řešení spolu se jménem řešitele. Při práci na cvičeních můžete obvyle využívat odpovědi na předchozí cvičení, poud to není výslovně zaázáno. Taé číselná hodnocení jsou definována sohledemnatotopravidlo;jeprotomožné,žecvičení n+1budemítnižší hodnocení než cvičení n, i dyž ve svém speciálním případě využívá výsledů cvičení n. Shrnutí ódů: Doporučené M Matematicy orientované VM Vyžaduje vyšší matematiu 00 Oamžitá odpověď 10 Jednoduchá (do jedné minuty 20 Průměrná (čtvrt hodiny 30 Středně obtížná 40 Semestrální projet 50 Výzumný problém CVIČENÍ 1. [00] Co znamená hodnocení M20? 2. [10] Jaou hodnotu mohou mít cvičení v učebnici pro jejího čtenáře? 3. [14] Doažte, že 13 3 = Svoji odpověď zobecněte. [To je přílad hrozivého typu problémů, terým se autor poouší vyhýbat.] 4. [VM45] Doažte, že pro žádné celé číslon, den>2, nemá rovnicex n +y n =z n žádné řešení v množině ladných celých číselx,y,z. Můžeme našemu problému čelit. Můžeme taovéto sutečnosti zařídit s náležitým řádem a postupem. HERCULE POIROT, v Vražda v Orient Expressu (1934
19 OBSAH Kapitola 1 Záladní principy Algoritmy Matematicé zálady Matematicá induce Čísla, mocniny a logaritmy Součty a součiny Celočíselné funce a teorie čísel Permutace a fatoriály Binomicé oeficienty Harmonicá čísla Fibonacciho čísla Generující funce Analýza algoritmů * Asymptoticá reprezentace * O-notace * Eulerův sumační vzorec * Něteré asymptoticé výpočty Počítač MIX Popis počítače MIX Assembler pro MIX Apliace při výpočtu permutací Něteré záladní techniy programování Podprogramy Koprogramy Interpretační programy Simulátor počítače MIX * Trasovací podprogramy Vstup a výstup Historie a literatura Kapitola 2 Informační strutury Úvod Lineární seznamy Zásobníy, fronty a oboustranné fronty Sevenční aloace Spojová aloace
20 OBSAH xix Kruhové seznamy Obousměrně propojené seznamy Pole a ortogonální seznamy Stromy Průchod binárním stromem Reprezentace stromu binárním stromem Jiné reprezentace stromu Záladní matematicé vlastnosti stromů Volné stromy Orientované stromy * Königovo neonečné lemma * Výčet stromů Déla cesty * Historie a literatura Seznamy a uvolňování paměti Vícenásobně propojené strutury Dynamicá aloace paměti Historie a literatura Odpovědi na cvičení Příloha A Tabuly číselných veličin Záladní onstanty (desítově Záladní onstanty (osmičově Harmonicá čísla, Bernoulliho čísla, Fibonacciho čísla Příloha B Rejstří notací Rejstří a slovníče pojmů
21
22 KAPITOLA PRVNÍ ZÁKLADNÍ PRINCIPY Mnozí lidé, teří nejsou zběhlí v matematicých disciplínách, se domnívají, že poud je jeho úolem [Babbageova Analyticého Počítače] dávat výsledy v číselné notaci, musí mít i jeho procesy aritmeticou a číselnou povahu, nioli algebraicou a analyticou. To je ovšem chyba. Stroj doáže uspořádat a zombinovat svoje číselné veličiny přesně stejně, jao by to byla písmena nebo jiné obecné symboly; a ve sutečnosti může po přijetí odpovídajících opatření podávat výsledy i v algebraicé notaci. AUGUSTA ADA, hraběna z Lovelace (1844 Zísej cvi, probůh, v malých věcech; potom poračuj v těch velých. EPIKTÉTOS (Epitétovy rozpravy IV.i 1.1. ALGORITMY Slovo algoritmus je při programování počítačů natoli záladním pojmem, že musíme začít jeho pečlivým rozborem. Užsamotnéslovo algoritmus jedocelazajímavé:naprvnípohledtovypadá,jaobynědochtělnapsat logaritmus,aleprvníčtyřipísmenatrochu zpřeházel. V anglicém slovníu Webster s New World Dictionary se toto slovo objeviloažvroce1957;dotédobyjsmezdenalezlijenjehostaršípodobu algorism sještěstaršímvýznamem,terýmbyloprováděníaritmeticýchvýpočtů s arabsými číslicemi. Za středověu totiž abaisté počítali na abau a algoristé pomocí algorismů. V období renesance byl ale původ tohoto slova nejasný a první lingvisté se pooušeli vysvětlit je různými ombinacemi, napřílad algiros[bolestný]+arithmos[číslo]; jiní tvrdili, že slovo pochází od astilsého rále Algora. Naonec ale historiové matematiy nalezli sutečný původ slova algorism: pochází ze jména slavného persého matematia a autora učebnic, terý se jmenoval Abū Abd Allāh Muḥammad ibn Mūsā al-chwārizmī(c. 825, doslova otecabdulláha,mohammeda,synmojžíšův,narozenývchorezmu. Aralsému moři ve Střední Asii se totiž dysi říalo jezero Chorezm(Chvárizm, v anglicé transripci Khwārizm a oblast Chorezm se nachází v povodí řey Amu-Darji jižně od tohoto moře. Al-Chwārizmī napsal slavný arabsý text Kitāb al-jabrwa l-muqābala( Pravidlaproodvozováníasrovnávání ;zesamotného názvu nihy, terá se systematicy věnovala řešení lineárních a vadraticých rovnic,papocházídalšídůležitéslovo, algebra.[bližšípojednáníoživotě a díle al-chwārizmīho najdete v článu H. Zemane, Lecture Notes in Computer Science 122(1981, 1 81.]
23 2 ZÁKLADNÍ PRINCIPY 1.1 Tvarivýznampůvodníhoslovaalgorismsealepostupněposunula ja vysvětluje slovní Oxford English Dictionary slovo prošlo množstvím pseudoetymologicých zomolení, mimo jiné nedávným slovem algoritmus, teré se vědecyzaměňuje sřecýmpůvodemslovaaritmetia.jestližesiuvědomíme, že lidé dávno zapomněli originální původ slova, není těžé tento posun od slova algorism algoritmus pochopit.jedenzprvníchněmecýchmatematicých slovníů, Vollständiges mathematisches Lexicon(Leipzig: 1747, definuje slovo Algoritmus následovně: Pod tímto pojmem vysytují se významy čtyř typů aritmeticýchvýpočtů,jmenovitěsčítání,odčítání,násobeníadělení. Latinsým výrazem algorithmus infinitesimalis se v té době označovaly způsoby výpočtů sneonečněmalýmiveličinami,terévynalezlleibniz. Do rou 1950 bylo slovo algoritmus spojováno nejčastěji s Eulidovým algoritmem, terý slouží e zjištění největšího společného dělitele dvou čísel a terý jeuvedenveulidovědílezálady(kniha7,věta1a2.neníodvěcisinyní Eulidův algoritmus uvést: Algoritmus E (Eulidův algoritmus. Jsou-li dána dvě ladná celá čísla m a n, najděte jejich největšího společného dělitele, tedy největší ladné celé číslo, terým jsou beze zbytu dělitelná čísla m i n. E1.[Nalezení zbytu.] Vydělte m číslem n a nechť r je zbyte.(znamená to, že 0 r < n. E2.[Jezbyterovennule?]Poud r=0,algoritmusončíanjeodpověď. E3.[Reduce.]Přiřaďte m n, n r,avraťtesenaroe1. Eulides samozřejmě neuváděl svůj algoritmus v přesně tomto znění. Na tomto zápise si pouze ilustrujeme, jaým způsobem budeme uvádět i ostatní algoritmy v této nize. Každý rozebíraný algoritmus zde dostane písmenné označení(v předcházejícím příladu to bylo E a jednotlivé roy mají označení stejného písmene následovaného číslicí(e1, E2, E3. Kapitoly nihy jsou rozděleny do částí a v aždé části stačí identifiaci algoritmu jen jeho písmeno; poud se ale odvoláváme na algoritmus z jiné části nihy, doplníme i číslo části. Nyní se napřílad nacházíme v části 1.1, a proto ve stejné části nihy budeme Eulidův algoritmus nazývat jen jao Algoritmus E, zatímco v dalších částech to bude Algoritmus 1.1E. Každý ro algoritmu, jao napřílad ro E1, začíná rátou frází v hranatých závorách, terá co nejstručněji vystihuje podstatný význam rou. Stejnou frázi najdeme obvyle taé v doprovodném vývojovém diagramu, jehož přílad je na obrázu 1, taže čtenář si činnost algoritmu může lépe představit. Ne E1. Nalezení zbytu E2. Je zbyte roven nule? E3. Reduce Ano Obr. 1. Vývojový diagram Algoritmu E
24 1.1 ALGORITMY 3 Za tímto stručným shrnutím následuje popis, terý pomocí slov a symbolů vyjadřuje prováděnou aci či operaci nebo nějaé rozhodování. Mohou zde být uvedenytaéomentářevzávorách,jaojevroue1druhávěta.tyobsahují různé vysvětlující informace a často popisují jisté invarianty neboli neměnné vlastnosti proměnných, případně cíle, teré je třeba v tomto rou splnit. Nepopisují ta ace vlastního algoritmu, ale co nejvíce pomáhají čtenáři při jeho pochopení. Šipa vroue3jezevšehonejdůležitějšíoperace,asicenahrazení, nědynazývanátaépřiřazenínebosubstituce: m n znamená,žehodnotu proměnné m nahradíme atuální hodnotou proměnné n. Při zahájení algoritmu E obsahují hodnoty proměnných m a n původně zadaná čísla, ale při jeho sončení již v nich budou obvyle jiné hodnoty. Šipa ta odlišuje operaci nahrazení od relacerovnosti:neříáme Nechť m=n,alemohlibychomsezeptat, Je m= = n? Znaméno = označujetedypodmínu,naterousemůžemeptát (testovat, zatímco vyjadřuje aci (operaci, terou je možné provést. Operacizvýšení nojedničuzapíšemetudížvýrazem n n+1 (čtete n budenahrazenoza n+1 nebo do nzapíšeme n+1.výraz proměnná vzorec paobvyleznamená,ževypočtemevzorecnazáladěsoučasných hodnot zapsaných v proměnných a poté výsledem nahradíme dosavadní hodnotu proměnné uvedené vlevo od šipy. Lidé bez znalostí práce s počítačem mívají slony vyjadřovat operaci zvýšení n o jedniču větou n bude rovno n + +1 azapisovatjijao n n+1 ;tatosymboliavedeovšemjenezmatení, protože je v rozporu se standardními zvylostmi, a proto ji nepoužívejte. Všimněte si, že v rou E3 je významné i pořadí jednotlivých ací: nechť m n, n r mánaprostojinývýznamnež nechť n r, m n,protože u druhého uvedeného zápisu se předchozí hodnota n ztratí, a nemůžeme ji tedy zapsatdo m.druhásevenceoperacíjetedyevivalentnízápisu nechť n r, m r.přiřazenístejnéveličinydoněoliaproměnnýchmůžemevyjádřit něoliašipamiposoběanapříladmísto n r, m r zapsat n m r.výměnuhodnotdvouproměnnýchmůžemestručnězapsat Vyměnit m n ;stejouoperacimůžemedefinovattaépomocínovéproměnné t,seterou napíšeme: Nechť t m, m n, n t. Každý algoritmus začíná roem o nejnižším čísle, obvyle roem 1, a další roy provádí v běžném sevenčním pořadí, není-li řečeno jina. V rou E3 jenapříladuvedenpříaz vraťtesenaroe1,terýzřejmýmzpůsobem definuje pořadí roů ve výpočtu. V rou E2 je před operací uvedena podmína Poud r=0 ;je-litedy r 0,zbytepříazujižneplatíažádnáoperacese neprovádí. Mohli bychom doplnit další větu, terá je již ale redundantní: Poud r 0,přejdětenaroE3. Silnávertiálníčára naonciroue3označujeonecalgoritmu,za terým opět poračuje běžný text. Nyní jsme tedy rozebrali praticy všechny onvence používané v této nize pro zápis algoritmů, jen s výjimou notace indexovaných polože, teré definují prvyuspořádanéhopole.dejmetomu,žemáme nveličin, v 1, v 2,...,v n ;namísto zápisu v j budemečasto j-týelementoznačovatpomocínotace v[j].podobně
25 4 ZÁKLADNÍ PRINCIPY 1.1 zápis a[i, j]nahrazujenědynotacisdvojitýmindexem, a ij.proměnnébývají taé označovány identifiátorem z něolia písmen, napřílad TEMP může být název proměnné pro dočasné uložení vypočtené hodnoty, PRIME[K] může být K-té prvočíslo apod. Toli tedy formě algoritmů a nyní zusíme jeden provést. Na tomto místě je ale třeba čtenáře upozornit, že se algoritmy nedají číst jao texty v rásné literatuře; při taovéto lehé četbě bychom těžo pochopili, o co v něm jde. Algoritmu musíme věřit a nejlépe jeho význam pochopíme ta, že si jej vyzoušíme.čtenářbysiměleaždémualgoritmuvzíttužuapapírazusit si jej ihned projít. Obvyle bude načrtnut hotový funční přílad, jindy si jej čtenář snadno sestaví sám. Je to jednoduchý a bezbolestný způsob, ja daný algoritmus pochopit; jaýoli jiný postup bývá obvyle neúspěšný. ProjděmesitedynynípříladAlgoritmuE.Nechťjedáno m=119an= = 544; můžeme tedy začít roem 1.(Čtenář může lasavě sledovat činnost algoritmu,podleznámého šolahrou.dělení mčíslem njevtomtopřípadě jednoduché, snad až příliš jednoduché, protože neúplný podíl je roven nule azbyteje119.mámetedy r 119.PoračujemeroemE2,aprotože r 0,neprovádímežádnouoperaci.VrouE3přiřadíme m 544, n 119. Jezřejmé,žepoudbylopůvodně m < n,budeprvnípodílvroue1vždy nula,aalgoritmustavdalšímroufaticyvyměníproměnné man,idyž poněud těžopádným způsobem. Mohli bychom doplnit nový ro: E0.[Zajistit m n.]poudje m < n,vyměňte m n. Pro samotný algoritmus by to neznamenalo žádnou podstatnou změnu, jen bychom ho tím mírně prodloužili a zhruba v polovině případů bychom zároveň zrátili dobu jeho provádění. Vrátíme-lisezpětdorouE1,zjistíme,že544/119=4+68/119,taže r 68.PodmínavE2taopětneplatíavrouE3přiřadíme m 119, n 68.Přidalšímprůchodudostáváme r 51anásledně m 68, n 51. Ještějedenprůchoddávýslede r 17am 51, n 17.Naonecdělíme51 číslem17aonečněmáme r 0,tažealgoritmusvrouE2sončí.Největší společnýdělitelčísel119a544je17. To je tedy algoritmus. Moderní význam slova algoritmus je hodně podobný výrazům jao recept, proces, metoda, technia, procedura, postup, bláboly, jen slovo algoritmus znamenápřecejentrošuněcojiného.algoritmusjenejen onečnou množinou pravidel, terá popisují posloupnost operací pro řešení jistého typu problémů, ale zároveň musí splňovat pět důležitých vlastností: 1 Konečnost. Algoritmus musí vždy po onečném počtu roů sončit. Popsaný algoritmus E tuto podmínu splňuje, protože po provedení rou E1 je hodnotaproměnné r menší než n;poudtedy r 0,hodnotaproměnné n se v příštím průchodu roem E1 sníží. Každá lesající posloupnost ladných celýchčíselmusíjednousončit,aprotoseiroe1přiaždédanéhodnotě n provádí jen po onečný počet opaování. Poznamenejme ale, že počet roů (průchodů může být libovolně velý; při vhodně zvolených velých hodnotách manseroe1můžeprovésttřebavícenežmilionrát.
26 1.1 ALGORITMY 5 (Proceduru, terá vyazuje všechny charateristicé vlastnosti algoritmu, ale terá nemusí splňovat podmínu onečnosti, můžeme nazývat výpočetní metoda.eulides původně vytvořil nejen algoritmus výpočtu největšího společného dělitele dvou čísel, ale taé velmi podobný geometricý postup pro onstruci největšíspolečnémíry déledvouúseče;poudjsoualedélyobouzadaných úseče nesouměřitelné, tato výpočetní metoda nesončí. Jiným příladem neuončené výpočetní metody je reativní proces, terý nepřetržitě reaguje na podněty ze svého prostředí. 2 Určitost. Každý ro algoritmu musí být přesně definován a pro aždý případ v něm musí být s určitostí a jednoznačností popsány prováděné operace. Algoritmy v této nížce budou(doufejme tuto podmínu splňovat, jsou ale napsány v přirozeném jazyce, taže se může stát, že čtenář neporozumí přesně záměrům autora. Pro přeonání těchto obtíží s jednoznačnou interpretací se algoritmy zapisují ve formálně definovaných programovacích jazycích neboli počítačových jazycích, de má aždý příaz přesně určený význam. Celá řada algoritmů budevtétonizepopsánajavběžném,taivpočítačovémjazyce.vyjádření jisté výpočetní metody v počítačovém jazyce je označováno jao program. Kritérium určitosti u rou E1 v algoritmu E vyjadřuje, že čtenář přesně rozumí,coznamenávydělitčíslo mčíslem nastanovitzbyte.poudale man nejsou ladná celá čísla, není přesný výlad této operace jednotný: jaý je zbyte po dělení 8 děleno π? A jaý je zbyte 59/13 děleno nulou? Kritérium určitosti zde tedy mimo jiné znamená, že musíme před provedením rou E1 zontrolovat, zdajsouhodnoty manvždyladnáceláčísla.nazačátujetatopodmína splněna díy předpoladu; po provedení rou E1 je již r určitě nezáporné celé číslo,apoudsedostanemenaroe3,musíbýtzároveňnenulové.tažečísla m a n jsou sutečně při dělení vždy ladná a celá, ja potřebujeme. 3 Vstup. Každý algoritmus má nula nebo více vstupů: to jsou veličiny, teré do algoritmu zadáme před jeho zahájením nebo teré načteme dynamicy za běhu. Tyto vstupy se přebírají z určené množiny objetů. V algoritmu E máme napříladdvavstupy,jmenovitě man,avolímejezmnožinyladnýchcelých čísel. 4 Výstup. Algoritmus má taé jeden nebo více výstupů: to jsou veličiny, teré mají zadaný vztah e vstupům. Algoritmus E má jeden výstup, a to proměnnou n definovanou v rou E2, terá nabude hodnoty největšího společného dělitele obou vstupních veličin. (Že je toto číslo sutečně největším společným dělitelem, to můžeme snadno doázat; podívejme se na důaz. Po provedení rou E1 dostáváme m=qn+r, pronějaéceléčíslo q.poud r=0,je mnásobemčísla navtaovémpřípadě je samozřejmě zároveň největším společným dělitelem čísel m a n. Jestliže r 0, pajaéoličíslo,teréjedělitelem man,musíbezezbytudělittaé m qn= = rajaéoličíslo,teréjedělitelem nar,musíbezezbytudělit qn+r=m; množina společných dělitelů čísel {m, n} je tudíž stejná jao množina společných
27 6 ZÁKLADNÍ PRINCIPY 1.1 dělitelů čísel {n, r}. Zejména pa největší společný dělitel čísel {m, n} je stejný jao největší společný dělitel čísel {n, r}. Kro E3 proto nezmění odpověď na náš původní problém. 5 Efetivita. Algoritmus by měl být zároveň efetivním, což znamená, že všechnyjehooperacemusíbýtvrozumnémířejednoduché,tažebyjevprincipuměl být schopen přesně a za onečnou dobu provést dooli s tužou a papírem. Algoritmus E používá jen operace dělení jednoho ladného celého čísla druhým, testování rovnosti celého čísla s nulou a přiřazení hodnoty jedné proměnné do druhé proměnné. Tyto operace jsou efetivní, protože celá čísla se dají na papíře vyjádřit onečným způsobem a protože existuje nejméně jedna metoda( algoritmusdělení proděleníjednohočísladruhým.stejnéoperacealenebudou efetivní, poud za obě hodnoty zvolíme libovolná reálná čísla s neonečným desetinným rozvojem nebo poud místo nich zadáme délu úsečy(terou taé nelze přesně stanovit. Jiným příladem neefetivního rou může být: Poud je 4 největší celé číslo n, pro teré existuje řešení rovnice w n + x n + y n = = z n vladnýchcelýchčíslech w, x, yaz,přejdětenaroe4. Taováto věta nemůže být efetivní operací, doud nědo úspěšně nevytvoří algoritmus, terým by zjistil, jestli 4 je, nebo není největším číslem s uvedenou vlastností. Porovnejme nyní pojem algoritmu s receptem z uchařsé nihy. Každý recept je s nejvyšší pravděpodobností onečný(i dyž se říá, že hrnec, na terý se jen díváme, nezačne vařit, má nějaé vstupy(vejce, mouu atd. a taé výstupy(večeře podle televize apod., zároveň mu ale zoufale chybí určitost. V uchařsých nihách najdeme až příliš často různé neurčité instruce: Přidejtešpetusoli. Taová špeta jedefinovánajao méněnež 1 / 8 ávové lžičy adefinicesolibymělabýtjasnáaždému;aleammámesůlpřidat nahoru? nebo na stranu? Podobné instruce jao zleha promíchávejte, doud nenísměshladá,nebo ohřejteoňavmalépánvi jsoudostatečnýmvysvětlením snad jen pro zušeného šéfuchaře; algoritmus musí být ale specifiován do taového stupně přesnosti, že podle něj může pracovat i počítač. I počítačový programátor se nicméně může studiem uchařy hodně naučit.(autor jen těžo odolávalpoušenínazvattentosvaze Kuchařouprogramátora ;možnáse jednohodnepousínapsatnihusnázvem Algoritmydouchyně. Nutno poznamenat, že samotná podmína onečnosti není pro praticé použití dostatečně silná. Aby byl algoritmus užitečný, musí sončit nejen po onečném, ale po velmi onečném, tedy rozumném počtu roů. Existuje napřílad algoritmus, terý zjistí, jestli bílý může šachovou partii vždy vyhrát, poud neudělá chybu(viz cvičení Tento algoritmus doáže tedy vyřešit problém,oterýseživězajímajítisícelidínacelémsvětě,alepřestosemůžeme v lidu vsadit, že za svého života odpověď nepoznáme; provedení algoritmu totiž trvá přímo nesutečné množství času, i dyž je sám onečný. Výlad na téma ta velých čísel, terá jsou již za hranicemi normálního chápání, najdete v apitole 8. V praxi ovšem požadujeme nejen nějaé algoritmy, ale taové algoritmy, teré jsou v jaémsi volně definovaném esteticém smyslu dobré. Jedním z ri-
28 1.1 ALGORITMY 7 térií dobrého algoritmu je doba nezbytná jeho provedení; můžeme ji vyjádřit taé počtem opaování aždého rou. Dalším ritériem může být adaptabilita algoritmu pro různé typy počítačů, jeho jednoduchost a elegance atd. Často je řešením jednoho stejného problému hned něoli algoritmů, z nichž musíme vybrat ten nejlepší. Tím se dostáváme jedné velice zajímavé a současně důležité oblasti analýzy algoritmů: je-li dán nějaý algoritmus, stanovte jeho výonovou charateristiu. Uvažujme napřílad znovu Eulidův algoritmus a předpoládejme tuto otázu: Poudjehodnotačísla npevnědaná,ale mmůženabývatlibovolnéholadnéhoceléhočísla,jaýmprůměrnýmpočtemopaování T n projdevalgoritmue roe1? Nejprvesemusímepřesvědčit,jestlimátatootázavůbecsmysluplnou odpověď, protože se pooušíme stanovit průměr z neonečně mnoha hodnot m. Jealezřejmé,žejižpoprvnímprovedenírouE1jepodstatnýpouzezbytepo dělení mčíslem n.prozjištěníčísla T n námtedystačívyzoušetalgoritmuspro m=1, m=2,..., m=n,spočítatcelovýpočetprovedeníroue1avýslede podělit číslem n. Nynípřicházídůležitáotázastanovenípovahyčísla T n ;budepřibližněrovno 1 3 n,nebotřeba n?stanovitodpověďnataovoutootázujeneobyčejněobtížný a fascinující matematicý problém, terý dosud není úplně vyřešen; podrobněji semuvěnujemevčásti4.5.3.proveléhodnotyčísla njemožnédoázat,že je T n přibližněrovno ( 12(ln2/π 2 lnn,tedyžejepřímoúměrnépřirozenému logaritmu čísla n, přičemž násobící onstantu by sotva do doázal přímo odhadnout! Podrobnější informace Eulidově algoritmu a dalším způsobům výpočtu největšího společného dělitele najdete v části Výrazem analýza algoritmů popisuje autor různá šetření podobného charateru. Záladní myšlenou je vzít určitý algoritmus a stanovit jeho vantitativní chování; příležitostně taé zoumáme, jestli daný algoritmus je nebo není v jistém slova smyslu optimální. Teorie algoritmů je zcela jiné téma, teré se zabývá především existencí nebo neexistencí efetivního algoritmu pro výpočet určitých veličin. Zatím byl náš výlad algoritmů poměrně málo přesný a matematicy orientovaný čtenář se může po právu domnívat, že předcházející text je jen velmi chatrným záladem pro výstavbu jaéoli teorie algoritmů. Tuto část textu uzavřeme proto stručným popisem jisté metody, pomocí níž můžeme pojem algoritmu pevně zaotvit do sféry matematicé teorie čísel. Definujeme proto formálněvýpočetnímetodujaočtveřici(q, I,Ω, f,de Qjemnožinaobsahující podmnožinyziaω,afjezobrazenízmnožiny Qdosebesama.Navíc fmusí býtnapodmnožiněωidenticé,tedy f(qmusíbýtrovno qprovšechna qzω. Uvedené čtyři veličiny Q, I, Ω, f po řadě reprezentují stavy výpočtu, vstupy, výstupy a výpočetní pravidla. Každý vstup x v množině I definuje následujícím způsobemvýpočetníposloupnost x 0, x 1, x 2,...: x 0 = x a x +1 = f(x pro 0. (1 Říáme, že výpočetní posloupnost ončí v rocích, poud je nejmenší celé číslo,proteré x náležídoω;zároveňříáme,žezxjeodvozenvýstup x.
3. Mocninné a Taylorovy řady
3. Mocninné a Taylorovy řady A. Záladní pojmy. Obor onvergence Mocninné řady jsou nejjednodušším speciálním případem funčních řad. Jsou to funční řady, jejichž členy jsou mocninné funce. V této apitole
Ach, drahá Ofélie! Nevyznám se v básnění; nedovedu počítat [své vzdechy]. HAMLET (Jednání II, obraz 2, řádek 120). Překlad František Nevrla
PŘEDMLUVA Ach, drahá Ofélie! Nevyznám se v básnění; nedovedu počítat [své vzdechy]. HAMLET (Jednání II, obraz 2, řádek 120). Překlad František Nevrla Algoritmy probírané v této knize pracují přímo s čísly;
1.5.7 Prvočísla a složená čísla
17 Prvočísla a složená čísla Předpolady: 103, 106 Dnes bez alulačy Číslo 1 je dělitelné čísly 1,, 3,, 6 a 1 Množinu, terou tvoří právě tato čísla, nazýváme D 1 množina dělitelů čísla 1, značíme ( ) Platí:
Binomická věta
97 Binomicá věta Předpolady: 96 Kdysi dávno v prvním ročníu jsme se učili vzorce na umocňování dvojčlenu Př : V tabulce jsou vypsány vzorce pro umocňování dvojčlenu Najdi podobnost s jinou dosud probíranou
Geometrická zobrazení
Pomocný text Geometricá zobrazení hodná zobrazení hodná zobrazení patří nejjednodušším zobrazením na rovině. Je jich vša hrozně málo a často se stává, že musíme sáhnout i po jiných, nědy výrazně složitějších
1 Gaussova kvadratura
Cvičení - zadání a řešení úloh Zálady numericé matematiy - NMNM0 Verze z 7. prosince 08 Gaussova vadratura Fat, že pro něterá rovnoměrná rozložení uzlů dostáváme přesnost o stupeň vyšší napovídá, že pro
Buckinghamův Π-teorém (viz Barenblatt, Scaling, 2003)
Bucinghamův Π-teorém (viz Barenblatt, Scaling, 2003) Formalizace rozměrové analýzy ( výsledné jednoty na obou stranách musí souhlasit ). Rozměr fyziální veličiny Mějme nějaou třídu jednote, napřílad [(g,
Metoda konjugovaných gradientů
0 Metoda onjugovaných gradientů Ludě Kučera MFF UK 11. ledna 2017 V tomto textu je popsáno, ja metodou onjugovaných gradientů řešit soustavu lineárních rovnic Ax = b, de b je daný vetor a A je symetricá
7.3.9 Směrnicový tvar rovnice přímky
739 Směrnicový tvar rovnice přímy Předpolady: 7306 Pedagogicá poznáma: Stává se, že v hodině nestihneme poslední část s určováním vztahu mezi směrnicemi olmých příme Vrátíme se obecné rovnici přímy: Obecná
4 všechny koeficienty jsou záporné, nedochází k žádné změně. Rovnice tedy záporné reálné kořeny nemá.
Přílad 1. Řešte v R rovnici x 4x + x 4 0. Výslede vypočtěte s přesností alespoň 0,07. 1) Reálné ořeny rovnice budou ležet v intervalu ( 5,5), protože největší z oeficientů polynomu bez ohledu na znaméno
RAW s programem Adobe Photoshop CS
RAW s programem Adobe Photoshop CS RAW s programem Adobe Photoshop CS Jiří Heller Bruce Fraser Peachpit Press Authorized translation from the English language edition, entitled REAL WORLD CAMERA RAW WITH
(iv) D - vybíráme 2 koule a ty mají různou barvu.
2 cvičení - pravděpodobnost 2102018 18cv2tex Definice pojmů a záladní vzorce Vlastnosti pravděpodobnosti Pravděpodobnost P splňuje pro libovolné jevy A a B následující vlastnosti: 1 0, 1 2 P (0) = 0, P
3.3.4 Thaletova věta. Předpoklady:
3.3.4 Thaletova věta Předpolady: 030303 Př. : Narýsuj ružnici ( ;5cm) a její průměr. Na ružnici narýsuj libovolný bod různý od bodů, (bod zvol jina než soused v lavici). Narýsuj trojúhelní. Má nějaou speciální
Hodnocení přesnosti výsledků z metody FMECA
Hodnocení přesnosti výsledů z metody FMECA Josef Chudoba 1. Úvod Metoda FMECA je semivantitativní metoda, pomocí teré se identifiují poruchy s významnými důsledy ovlivňující funci systému. Závažnost následů
PRVOČÍSLA 1 Jan Malý UK v Praze a UJEP v Ústí n. L. Obsah
PRVOČÍSLA Jan Malý UK v Praze a UJEP v Ústí n. L. Obsah. Elementární úlohy o prvočíslech 2. Kongruence 2 3. Algebraicé rovnice a polynomy 3 4. Binomicá a trinomicá věta 5 5. Malá Fermatova věta 7 6. Diferenční
1. KOMBINATORIKA. Příklad 1.1: Mějme množinu A a. f) uspořádaných pětic množiny B a. Řešení: a)
1. KOMBINATORIKA Kombinatoria je obor matematiy, terý zoumá supiny prvů vybíraných z jisté záladní množiny. Tyto supiny dělíme jedna podle toho, zda u nich záleží nebo nezáleží na pořadí zastoupených prvů
3 Co je algoritmus? 2 3.1 Trocha historie... 2 3.2 Definice algoritmu... 3 3.3 Vlastnosti algoritmu... 3
Obsah Obsah 1 Program přednášek 1 2 Podmínky zápočtu 2 3 Co je algoritmus? 2 3.1 Trocha historie............................ 2 3.2 Definice algoritmu.......................... 3 3.3 Vlastnosti algoritmu.........................
Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.
Algoritmus Algoritmus je schematický postup pro řešení určitého druhu problémů, který je prováděn pomocí konečného množství přesně definovaných kroků. nebo Algoritmus lze definovat jako jednoznačně určenou
Příklady: - počet členů dané domácnosti - počet zákazníků ve frontě - počet pokusů do padnutí čísla šest - životnost televizoru - věk člověka
Náhodná veličina Náhodnou veličinou nazýváme veličinu, terá s určitými p-stmi nabývá reálných hodnot jednoznačně přiřazených výsledům příslušných náhodných pousů Náhodné veličiny obvyle dělíme na dva záladní
programování formulářů Windows
C# a WinForms programování formulářů Windows M i c r o s o f t. N E T D e v e l o p m e n t S e r i e s Chris Sells Microsoft.NET Development Series Windows Forms Programming in C# Authorized translation
Základním pojmem v kombinatorice je pojem (k-prvková) skupina, nebo také k-tice prvků, kde k je přirozené číslo.
přednáša KOMBINATORIKA Při řešení mnoha praticých problémů se setáváme s úlohami, ve terých utváříme supiny z prvů nějaé onečné množiny Napřílad máme sestavit rozvrh hodin z daných předmětů, potřebujeme
2. STAVBA PARTPROGRAMU
Stavba partprogramu 2 2. STAVBA PARTPROGRAMU 2.1 Slovo partprogramu 2.1.1 Stavba slova Elementárním stavebním prvem partprogramu je tzv. slovo (instruce programu). Každé slovo sestává z písmene adresy
Úlohy krajského kola kategorie A
63. roční matematicé olympiády Úlohy rajsého ola ategorie A 1. Najděte všechna celá ladná čísla, terá nejsou mocninou čísla 2 a terá se rovnají součtu trojnásobu svého největšího lichého dělitele a pětinásobu
Kombinace s opakováním
9..3 Kombinace s opaováním Předpolady: 907. 908, 9, 92 Pedagogicá poznáma: Tato hodina zabere opět minimálně 70 minut. Asi ji čeá rozšíření na dvě hodiny. Netradiční začáte. Nemáme žádné přílady, ale rovnou
Adobe Illustrator CS5
Adobe Creative Team Adobe Illustrator CS5 Oficiální výukový kurz Computer Press Brno 2012 Adobe Illustrator CS5 Oficiální výukový kurz Adobe Creative Team Překlad: Marcel Goliaš Obálka: Adobe Creative
Kombinace s opakováním
9..3 Kombinace s opaováním Předpolady: 907. 908, 9, 92 Pedagogicá poznáma: Časová náročnost této hodiny je podobná hodině předchozí. Netradiční začáte. Nemáme žádné přílady, ale rovnou definici. Definice
KMA/P506 Pravděpodobnost a statistika KMA/P507 Statistika na PC
Přednáša 04 Přírodovědecá faulta Katedra matematiy KMA/P506 Pravděpodobnost a statistia KMA/P507 Statistia na PC jiri.cihlar@ujep.cz Záon velých čísel Lemma Nechť náhodná veličina nabývá pouze nezáporných
6 5 = 0, = 0, = 0, = 0, 0032
III. Opaované pousy, Bernoulliho nerovnost. Házíme pětrát hrací ostou a sledujeme výsyt šesty. Spočtěte pravděpodobnosti možných výsledů a určete, terý má největší pravděpodobnost. Řešení: Jedná se o serii
20 - Číslicové a diskrétní řízení
20 - Číslicové a disrétní řízení Michael Šebe Automaticé řízení 2013 22-4-14 Analogové a číslicové řízení Proč číslicově? Snadno se přeprogramuje (srovnej s výměnou rezistorů/apacitorů v analogové řídicím
Reprezentace přirozených čísel ve Fibonacciho soustavě František Maňák, FJFI ČVUT, 2005
Reprezentace přirozených čísel ve ibonacciho soustavě rantiše Maňá, JI ČVUT, 2005 Úvod Ja víme, přirozená čísla lze vyádřit různými způsoby Nečastěi zápisu čísel používáme soustavu desítovou, ale umíme
Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty
Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)
MATEMATIKA II V PŘÍKLADECH
VYSOKÁ ŠKOL BÁŇSKÁ TECHICKÁ UIVERZIT OSTRV FKULT STROJÍ MTEMTIK II V PŘÍKLDECH CVIČEÍ Č 0 Ing Petra Schreiberová, PhD Ostrava 0 Ing Petra Schreiberová, PhD Vysoá šola báňsá Technicá univerzita Ostrava
7.3.9 Směrnicový tvar rovnice přímky
7.3.9 Směrnicový tvar rovnice přímy Předpolady: 7306 Pedagogicá poznáma: Stává se, že v hodině nestihneme poslední část s určováním vztahu mezi směrnicemi olmých příme. Vrátíme se obecné rovnici přímy:
( ) Příklady na otočení. Předpoklady: Př. 1: Je dána kružnice k ( S ;5cm)
3.5.9 Přílady na otočení Předpolady: 3508 Př. 1: Je dána ružnice ( ;5cm), na teré leží body, '. Vně ružnice leží bod L, uvnitř ružnice bod M. Naresli obrazy bodů L, M v zobrazení řeš bez úhloměru. R (
SPOTŘEBITELSKÝ ÚVĚR. Na začátku provedeme inicializaci proměnných jejich vynulováním příkazem "restart". To oceníme při opakovaném použití dokumentu.
Úloha 1 - Koupě nového televizoru SPOTŘEBITELSKÝ ÚVĚR Chceme si oupit nový televizor v hodnotě 000,-Kč. Bana nám půjčí, přičemž její úroová sazba činí 11%. Předpoládejme, že si půjčujeme na jeden ro a
Rozlišujeme dva základní typy šifrování a to symetrické a asymetrické. Symetrické
1 Šifrování Kryptografie Každý z nás si určitě umí představit situaci, dy je důležité utajit obsah posílané zprávy ta aby ho byl schopen přečíst jen ten omu je určená a nido nepovolaný nebyl schopen zjistit
Základy algoritmizace
Algoritmus Toto je sice na první pohled pravdivá, ale při bližším prozkoumání nepřesná definice. Například některé matematické postupy by této definici vyhovovaly, ale nejsou algoritmy. Přesné znění definice
55. ročník Matematické olympiády 2005/2006
55. roční Matematicé olympiády 005/006 Úlohy ústředního ola ategorie P 1. soutěžní den Na řešení úloh máte,5 hodiny čistého času. Řešení aždého příladu musí obsahovat: Popis řešení, to znamená slovní popis
NUMP403 (Pravděpodobnost a Matematická statistika I)
NUMP0 (Pravděpodobnost a Matematicá statistia I Střední hodnota disrétního rozdělení. V apce máte jednu desetiorunu, dvě dvacetioruny a jednu padesátiorunu. Zloděj Vám z apsy náhodně vybere tři mince.
Analýza a zpracování signálů. 5. Z-transformace
nalýa a pracování signálů 5. Z-transformace Z-tranformace je mocný nástroj použitelný pro analýu lineárních discretetime systémů Oboustranná Z-transformace X j F j x, je omplexní číslo r e r e Oboustranná
20 - Číslicové a diskrétní řízení
20 - Číslicové a disrétní řízení Michael Šebe Automaticé řízení 2018 18-4-18 Automaticé řízení - Kybernetia a robotia Analogové a číslicové řízení Proč číslicově? Snadno se přeprogramuje (srovnej s výměnou
Pravděpodobnost a statistika
Pravděpodobnost a statistia Přílady a otázy Petr Hebá a Hana Salsá GAUDEAMUS 2011 Autoři: prof. Ing. Petr Hebá, CSc. Autoři: prof. RNDr. Hana Salsá, CSc. Recenzenti: doc. RNDr. Tatiana Gavalcová, CSc.
6. Měření Youngova modulu pružnosti v tahu a ve smyku
6. Měření Youngova modulu pružnosti v tahu a ve smyu Úol : Určete Youngův modul pružnosti drátu metodou přímou (z protažení drátu). Prostudujte doporučenou literaturu: BROŽ, J. Zálady fyziálních měření..
Základním pojmem v kombinatorice je pojem (k-prvková) skupina, nebo také k-tice prvků, kde k je přirozené číslo.
přednáša KOMBINATORIKA Kombinatoria je obor matematiy, terý se zabývá uspořádáním daných prvů podle určitých pravidel do určitých supin Záladním pojmem v ombinatorice je pojem (-prvová) supina, nebo taé
P. Rozhodni, zda bod P leží uvnitř, vně nebo na kružnici k. Pokud existují, najdi tečny kružnice procházející bodem P.
756 Tečny ružnic II Předpolady: 45, 454 Pedagogicá poznáma: Tato hodina patří na gymnázium mezi početně nejnáročnější Ačoliv jsou přílady optimalizované na co nejmenší početní obtížnost, všichni studenti
1 Mnohočleny a algebraické rovnice
1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem
Základní grafové algoritmy
i Základní grafové algoritmy Jakub Černý KAM, MFF UK 24. listopadu 2010 Verze 0.95 Homepage http://kam.mff.cuni.cz/ ~ kuba/ka Kontakt: kuba@kam.mff.cuni.cz ii Obsah Úvod v iii iv OBSAH Úvod Text je psán
3. Reálná čísla. většinou racionálních čísel. V analytických úvahách, které praktickým výpočtům
RACIONÁLNÍ A IRACIONÁLNÍ ČÍSLA Význačnými množinami jsou číselné množiny K nejvýznamnějším patří množina reálných čísel, obsahující jako podmnožiny množiny přirozených, celých, racionálních a iracionálních
Příloha č. 1 Část II. Ekonomika systému IDS JMK
Příloha č. 1 Část II. Eonomia systému IDS JMK Květen 2011 Eonomia systému IDS JMK I. EKONOMICKÉ JEDNOTKY Pro účely dělení výnosů je rozděleno území IDS JMK do eonomicých jednote tvořených supinami tarifních
Zavedení a vlastnosti reálných čísel
Zavedení a vlastnosti reálných čísel jsou základním kamenem matematické analýzy. Konstrukce reálných čísel sice není náplní matematické analýzy, ale množina reálných čísel R je pro matematickou analýzu
V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti
Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení
a) formulujte Weierstrassovo kritérium stejnoměrné konvergence b) pomocí tohoto kritéria ukažte, že funkční řada konverguje stejnoměrně na celé R
) ČÍSELNÉ A FUNKČNÍ ŘADY (5b) a) formulujte Leibnitzovo ritérium včetně absolutní onvergence b) apliujte toto ritérium na řadu a) formulujte podílové ritérium b) posuďte onvergenci řad c) oli členů této
1 Mnohočleny a algebraické rovnice
1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem
Operátory pro maticové operace (operace s celými maticemi) * násobení maticové Pro čísla platí: 2*2
* násobení maticové Pro čísla platí: Pro matice - násobení inverzní maticí inv inverzní matice A -1 k dané matici A je taková matice, která po vynásobení s původní maticí dá jednotkovou matici. Inverzní
Jméno a Příjmení. Třída. Škola
Studentský dotazník Vážení studenti, cílem tohoto průzkumu je zjistit váš postoj k matematice a k výukovému nástroji Khan Academy. Vaše názory a odpovědi pomohou dalším studentům a učitelům při zapojování
Název: Chemická rovnováha II
Název: Chemicá rovnováha II Autor: Mgr. Štěpán Miča Název šoly: Gymnázium Jana Nerudy, šola hl. města Prahy Předmět, mezipředmětové vztahy: chemie, fyzia Roční: 6. Tématicý cele: Chemicá rovnováha (fyziální
Dijkstrův algoritmus
Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované
β 180 α úhel ve stupních β úhel v radiánech β = GONIOMETRIE = = 7π 6 5π 6 3 3π 2 π 11π 6 Velikost úhlu v obloukové a stupňové míře: Stupňová míra:
GONIOMETRIE Veliost úhlu v oblouové a stupňové míře: Stupňová míra: Jednota (stupeň) 60 600 jeden stupeň 60 minut 600 vteřin Př. 5,4 5 4 0,4 0,4 60 4 Oblouová míra: Jednota radián radián je veliost taového
f (k) (x 0 ) (x x 0 ) k, x (x 0 r, x 0 + r). k! f(x) = k=1 Řada se nazývá Taylorovou řadou funkce f v bodě x 0. Přehled některých Taylorových řad.
8. Taylorova řada. V urzu matematiy jsme uázali, že je možné funci f, terá má v oolí bodu x derivace aproximovat polynomem, jehož derivace se shodují s derivacemi aproximované funce v bodě x. Poud má funce
Báze a dimenze vektorových prostorů
Báze a dimenze vektorových prostorů Buď (V, +, ) vektorový prostor nad tělesem (T, +, ). Nechť u 1, u 2,..., u n je konečná posloupnost vektorů z V. Existují-li prvky s 1, s 2,..., s n T, z nichž alespoň
MATEMATIKA B 2. Integrální počet 1
metodický list č. 1 Integrální počet 1 V tomto tématickém celku se posluchači seznámí s některými definicemi, větami a výpočetními metodami užívanými v části matematiky obecně známé jako integrální počet
Návrh vysokofrekvenčních linkových transformátorů
inové transformátory inové transformátory Při požadavu na transformaci impedancí v široém frevenčním pásmu, dy nelze obsáhnout požadovanou oblast mitočtů ani široopásmovými obvody, je třeba použít široopásmových
1.3.7 Trojúhelník. Předpoklady:
1.3.7 Trojúhení Předpoady: 010306 Př. 1: Narýsuj tři body,,, teré neeží na přímce. Narýsuj všechny úsečy určené těmito třemi body. Jaý útvar vznine? Zísai jsme trojúhení. Ja přiše trojúhení e svému jménu?
4. Přednáška: Kvazi-Newtonovské metody:
4 Přednáša: Kvazi-Newtonovsé metody: Metody s proměnnou metriou, modifiace Newtonovy metody Efetivní pro menší úlohy s hustou Hessovou maticí Newtonova metoda (opaování): f aproximujeme loálně vadraticou
7B. Výpočet limit L Hospitalovo pravidlo
7B. Výpočet it L Hospitalovo pravidlo V prai často potřebujeme určit itu výrazů, které vzniknou operacemi nebo složením několika spojitých funkcí. Většinou pomohou pravidla typu ita součtu násobku, součinu,
Reciprokou funkci znáte ze základní školy pod označením nepřímá úměra.
@091 7. Reciproá funce Reciproou funci znáte ze záladní šoly pod označením nepřímá úměra. Definice: Reciproá funce je dána předpisem ( 0 je reálné číslo) f : y R \ {0} A) Definiční obor funce: Je třeba
Binární vyhledávací stromy pokročilé partie
Binární vyhledávací stromy pokročilé partie KMI/ALS lekce Jan Konečný 30.9.204 Literatura Cormen Thomas H., Introduction to Algorithms, 2nd edition MIT Press, 200. ISBN 0-262-5396-8 6, 3, A Knuth Donald
Obsah přednášky. 1. Principy Meta-learningu 2. Bumping 3. Bagging 4. Stacking 5. Boosting 6. Shrnutí
1 Obsah přednášy 1. Principy Meta-learningu 2. Bumping 3. Bagging 4. Stacing 5. Boosting 6. Shrnutí 2 Meta learning = Ensemble methods Cíl použít predici ombinaci více různých modelů Meta learning (meta
7. TRANSFORMÁTORY. 7.1 Štítkové údaje. 7.2 Měření odporů vinutí. 7.3 Měření naprázdno
7. TRANSFORMÁTORY Pro zjednodušení budeme měření provádět na jednofázovém transformátoru. Na trojfázovém transformátoru provedeme pouze ontrolu jeho zapojení měřením hodinových úhlů. 7.1 Štítové údaje
THE POSSIBILITY OF RELOCATION WAREHOUSES IN CZECH-POLISH BORDER MOŽNOSTI RELOKACE SKLADŮ V ČESKO-POLSKÉM PŘÍHRANIČÍ
Jan CHOCHOLÁČ 1 THE POSSIBILITY OF RELOCATION WAREHOUSES IN CZECH-POLISH BORDER MOŽNOSTI RELOKACE SKLADŮ V ČESKO-POLSKÉM PŘÍHRANIČÍ BIO NOTE Jan CHOCHOLÁČ Asistent na Katedře dopravního managementu, maretingu
Matematika pro informatiku 4
Matematika pro informatiku 4 Doc. RNDr. Alena Šolcová, Ph. D., KTI FIT ČVUT v Praze 7.března 2011 Evropský sociální fond Investujeme do vaší budoucnosti Alena Šolcová Lámejte si hlavu - L1 Určete všechny
MATEMATIKA 1 4 A B C D. didaktický test. Zadání neotvírejte, počkejte na pokyn! MA1ACZMZ07DT. Pokyny pro vyplňování záznamového archu
MAACZMZ07DT MATURITA NANEČISTO 007 MATEMATIKA didaticý test Testový sešit obsahuje 0 úloh. Na řešení úloh máte 90 minut. Úlohy řešte v testovém sešitu. Odpovědi pište do záznamového archu. Používejte rýsovací
Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace
Vektory a matice Aplikovaná matematika I Dana Říhová Mendelu Brno Obsah 1 Vektory Základní pojmy a operace Lineární závislost a nezávislost vektorů 2 Matice Základní pojmy, druhy matic Operace s maticemi
2. Množiny, funkce. Poznámka: Prvky množiny mohou být opět množiny. Takovou množinu, pak nazýváme systém množin, značí se
MNOŽIN, ZÁKLDNÍ POJMY Pojem množiny patří v matematice ke stěžejním. Nelze jej zavést ve formě definice pomocí primitivních pojmů; považuje se totiž rovněž za pojem primitivní. Představa o pojmu množina
Matematická analýza pro informatiky I. Limita posloupnosti (I)
Matematická analýza pro informatiky I. 3. přednáška Limita posloupnosti (I) Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 25. února 2011 tomecek@inf.upol.cz
Měření indukčností cívek
7..00 Ṫeorie eletromagneticého pole Měření indučností cíve.......... Petr Česá, studijní supina 05 Letní semestr 000/00 . Měření indučností cíve Měření vlastní a vzájemné indučnosti válcových cíve ZAÁNÍ
1 Strukturované programování
Projekt OP VK Inovace studijních oborů zajišťovaných katedrami PřF UHK Registrační číslo: CZ.1.07/2.2.00/28.0118 1 Cíl Seznámení s principy strukturovaného programování, s blokovou strukturou programů,
Zrychlete své WWW stránky!
Zrychlete své WWW stránky! ZRYCHLETE své WWW STRÁNKY! Foto: Jiří Heller Andrew B. King Authorized translation from the English language edition, entitled SPEED UP YOUR SITE: WEB SITE OPTIMI- ZATION, 1st
Dynamika populací s oddělenými generacemi
Dynamia populací s oddělenými generacemi Tento text chce představit nejjednodušší disrétní deterministicé dynamicé modely populací. Deterministicé nebudeme uvažovat náhodné vlivy na populace působící nebo
9 Skonto, porovnání různých forem financování
9 Sonto, porovnání různých forem financování Sonto je sráža (sleva) z ceny, terou posytuje prodávající upujícímu v případě, že upující zaplatí oamžitě (resp. během dohodnuté ráté lhůty). Výše sonta je
( ) ( ) Rozklad mnohočlenů na součin I (vytýkání) Předpoklady:
1.8.6 Rozklad mnohočlenů na součin I (vytýkání) Předpoklady: 010805 Pedagogická poznámka: Na začátku každé rozkládací hodiny jsou přidány příklady na opakování úprav mnohočlenů. Důvod je jediný, čtyři
Jednoduché cykly 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45.
Jednoduché cykly Tento oddíl obsahuje úlohy na první procvičení práce s cykly. Při řešení každé ze zde uvedených úloh stačí použít vedle podmíněných příkazů jen jediný cyklus. Nepotřebujeme používat ani
3.2.9 Věta o středovém a obvodovém úhlu
3..9 ěta o středovém a obvodovém úhlu Předpolady: ody, rozdělují ružnici na dva oblouy. Polopřímy a pa rozdělují rovinu na dva úhly. rcholy obou úhlů leží ve středu ružnice říáme, že jde o středové úhly
PRAVDĚPODOBNOST A STATISTIKA
PRAVDĚPODOBNOST A STATISTIKA Číselné charateristiy náhodných proměnných Charateristiy náhodných proměnných dělíme nejčastěji na charateristiy polohy a variability. Mezi charateristiy polohy se nejčastěji
9 Stupně vrcholů, Věta Havla-Hakimiho
Typicé přílady pro zápočtové písemy DiM 470-301 (Kovář, Kovářová, Kubesa) (verze: November 5, 018) 1 9 Stupně vrcholů, Věta Havla-Haimiho 9.1. Doážete nareslit graf na 9 vrcholech, ve terém mají aždé dva
χ 2 testy. Test nekorelovanosti.
χ 2 testy. Test neorelovanosti. Petr Poší Části doumentu jsou převzaty (i doslovně) z Miro Navara: Pravděpodobnost a matematicá statistia, https://cw.fel.cvut.cz/lib/exe/fetch.php/courses/a6m33ssl/pms_print.pdf
Budeme pokračovat v nahrazování funkce f(x) v okolí bodu a polynomy, tj. hledat vhodné konstanty c n tak, aby bylo pro malá x a. = f (a), f(x) f(a)
Předáša 7 Derivace a difereciály vyšších řádů Budeme poračovat v ahrazováí fuce f(x v oolí bodu a polyomy, tj hledat vhodé ostaty c ta, aby bylo pro malá x a f(x c 0 + c 1 (x a + c 2 (x a 2 + c 3 (x a
6 Impedanční přizpůsobení
6 Impedanční přizpůsobení edení optimálně přenáší eletromagneticou energii, je-li zatěžovací impedance rovna charateristicé impedanci. Říáme, že zátěž je impedančně přizpůsobená. e stavu impedančního přizpůsobení
Riemannova hypotéza Martin Havlík 2. A
Riemannova hypotéza Martin Havlík 2. A Motivace: Motivace mého projektu je jednoduchá, pochopit matematiky označovaný nejtěžší a nejdůležitější problém současné matematiky. Cíle: Dokázání téhle hypotézy
Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice
Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice Vektorové podprostory K množina reálných nebo komplexních čísel, U vektorový prostor nad K. Lineární kombinace vektorů u 1, u 2,...,u
9 Kolmost vektorových podprostorů
9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.
7 = 3 = = Učivo Vysvětlení Př. + pozn. Zlomek = vyjádření části celku 3 část snědla jsem 3 kousky
0 Učivo Vysvětlení Př. + pozn. Zlomek vyjádření části celku část snědla jsem kousky celek a pizza byla rozdělena na kousky Pojem zlomek Vyjádření zlomku Základní tvar: čitatel a jmenovatel jsou nesoudělná
Algoritmizace a programování
Algoritmizace a programování Výrazy Operátory Výrazy Verze pro akademický rok 2012/2013 1 Operace, operátory Unární jeden operand, operátor se zapisuje ve většině případů před operand, v některých případech
F6180 Úvod do nelineární dynamiky. F6150 Pokročilé numerické metody FX003 Plánování a vyhodnocování experimentu. F7780 Nelineární vlny a solitony
Moderní metody modelování ve fyzice jaro 2015 přednáša: D. Hemzal cvičení: F. Münz F1400 Programování F5330 Záladní numericé metody F7270 Matematicé metody zpracování měření F6180 Úvod do nelineární dynamiy
1. Několik základních pojmů ze středoškolské matematiky. Na začátku si připomeneme následující pojmy:
Opakování středoškolské matematiky Slovo úvodem: Tato pomůcka je určena zejména těm studentům presenčního i kombinovaného studia na VŠFS, kteří na středních školách neprošli dostatečnou průpravou z matematiky
V této sekci zobecníme vnější kalkulus z kapitoly 4 operaci vnějšího. se sice na zde zavedené operace budeme odvolávat, vždy ale jen jako
[2.03,1.12,1.14,2.04,2.02,2.02,2.03,2.03,2.02,0,1.03] Kapitola 8 Kovariantní vnější derivace V této seci zobecníme vnější alulus z apitoly 4 operaci vnějšího součinu a vnější derivace na obecnější tenzorové
Logika a jazyk. filosofický slovník, Praha:Svoboda 1966)
Logika a jazyk V úvodu bylo řečeno, že logika je věda o správnosti (lidského) usuzování. A protože veškeré usuzování, odvozování a myšlení vůbec se odehrává v jazyce, je problematika jazyka a jeho analýza
1.5.2 Číselné soustavy II
.. Číselné soustavy II Předpoklady: Př. : Převeď do desítkové soustavy čísla. a) ( ) b) ( ) 4 c) ( ) 6 = + + + = 7 + 9 + = a) = 4 + 4 + 4 = 6 + 4 + = 9 b) 4 = 6 + 6 + 6 = 6 + 6 + = 6 + + = 69. c) 6 Pedagogická
5 Orientované grafy, Toky v sítích
Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost
NÁRODNÍ TESTOVÁNÍ 2018/2019
průměrný percentil Průměrný celkový percentil po jednotlivých třídách y 6. A 6. B 6. C ZŠ GYM 54 64 53 47 61 51 55 55 55 OSP ČJ MA Graf znázorňuje průměrné celkové percentily všech tříd u vaší školy. Zároveň