{"id":34164,"date":"2019-10-31T21:56:44","date_gmt":"2019-10-31T18:56:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ya-poluchil-ot-knuta-chek-na-0x-3-00\/"},"modified":"2019-10-31T21:56:44","modified_gmt":"2019-10-31T18:56:44","slug":"ya-poluchil-ot-knuta-chek-na-0x-3-00","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","title":{"rendered":"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Donald Knuth<\/b>\u00a0\u2014 znanstvenik na podro\u010dju informatike, ki tako zelo skrbi za pravilnost svojih knjig, da ponuja <b>eno \u0161esteri\u010dno dolar<\/b> ($2,56, 0x$1,00) za vsako najdeno \"napako\", pri kateri \u0161teje vse, kar je \"tehni\u010dno, zgodovinsko, tipografsko ali politi\u010dno napa\u010dno\". Zelo sem \u017eelel prejeti \u010dek od Knutha, zato sem se odlo\u010dil poiskati napake v njegovem izjemnem delu <b>\"Kunst programiranja\"<\/b> (TAOCP). Uspelo mi je najti tri. Po resnici povedano, Knuth mi je poslal \u010dek v vi\u0161ini <b>0x$3,00<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/ea8c328c9f7f67d1e2c0d729268aca01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKot vidite, to ni pravi \u010dek. V preteklosti je Knuth po\u0161iljal prave \u010deke, a je to prenehal po\u010deti leta 2008 zaradi <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/news08.html\">neobvladljive goljufije<\/a><\/noindex>. Zdaj po\u0161ilja \"osebne depozitne certifikate\" v <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/boss.html\">banki San-Serif<\/a><\/noindex> (BoSS). Pravi, da je pripravljen poslati prave denarje v primeru potrebe, vendar se zdi, da je to preve\u010d zapleteno.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nNa\u0161el sem dve tipkarski napaki in eno zgodovinsko napako. Na\u0161tel jih bom po vrstnem redu manj\u0161e trivialnosti.<\/p>\n<h1>Tipkarska napaka \u0161t. 1<\/h1>\n<p>\nPrva tipkarska napaka je na strani 392 tretjega toma \"Razvr\u0161\u010danje in iskanje\", osma vrstica od spodaj: \"Po neuspelem iskanju je v\u010dasih (sometime) priporo\u010dljivo v tabelo vnesti novo zapis, ki vsebuje <i>K<\/i>; metoda, ki to stori, se imenuje algoritem iskanja in vstavljanja. Napaka je v tem, da bi namesto <b><i>sometime<\/i><\/b> moralo biti <b><i>sometimes<\/i><\/b>.<\/p>\n<p>Seveda v taki napaki ni ni\u010d presenetljivega. Le v tem \u010dlanku se gotovo najde nekaj tipkarskih napak (brez nagrad za njihovo iskanje). To, kar je v resnici presenetljivo, pa je, da jih ni nih\u010de opazil tako dolgo. Stran 392 ni globoko zakopana v oddelek z matematiko, to je <b>prva stran<\/b> \u0161este poglavja \"Iskanje\"! Morda en izmed najbolj branih delov knjige. Po logiki bi tam moralo biti najmanj tipkarskih napak, vendar ni.<\/p>\n<p>Mimogrede, \u010de ste kdaj pomislili, da bi prebrali TAOCP, poskusite. Mnogi bodo rekli, da je to <b>priro\u010dnik<\/b>, ki ni namenjen neposrednemu branju, a to ni res. Avtor ima jasno stali\u0161\u010de in svojstven slog. Edina stvar, ki ovira berljivost, je zapletenost matematike. Vendar pa obstaja preprosta re\u0161itev: berite, dokler ne pridete do matematike, ki je ne razumete, presko\u010dite jo in odprite naslednji odsek, ki ga lahko razumete. Tako pri branju presko\u010dim vsaj 80% knjige, toda preostalih 20% je \u010dudovitih!<\/p>\n<p>Prav tako pravijo, da je TAOCP <b>nerelevantna<\/b>, zastarela ali na drug na\u010din neprimenljiva na \u201estvarno programiranje\u201c. To tako\u0111e nije ta\u010dno. Na primer, u prvom delu nakon uvoda razmatra se pretra\u017eivanje elementa u nesortiranom nizu. Najjednostavniji algoritam je poznat svim programerima. Pokrenite pokaziva\u010d na po\u010detku niza, a zatim uradite slede\u0107e u petlji:<\/p>\n<ol>\n<li>Proverite da li je trenutni element \u017eeljeni. Ako jeste, vra\u0107amo ga; u suprotnom,\n<\/li>\n<li>Proverite da li je pokaziva\u010d van granica niza. Ako jeste, vra\u0107amo gre\u0161ku; u suprotnom,\n<\/li>\n<li>Pove\u0107ajte pokaziva\u010d i nastavite.<\/li>\n<\/ol>\n<p>\nSada razmislimo: koliko provere granica zahteva ovaj algoritam, u proseku? U najgorem slu\u010daju, kada niz ne sadr\u017ei element, za svaki element na listi bi\u0107e potrebna jedna provera, i u proseku \u0107e to biti ne\u0161to poput <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/6c99f945807d8a8aeac1d42854c83295.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Pametniji algoritam pretrage mo\u017ee da pro\u0111e sa samo jednom proverom granica. Priklju\u010dite \u017eeljeni element na kraj niza, zatim pokrenite pokaziva\u010d na po\u010detku niza i uradite slede\u0107e u petlji:<\/p>\n<ol>\n<li>Proverite da li je trenutni element \u017eeljeni. Ako jeste, vra\u0107amo odgovor, ako je pokaziva\u010d unutar granica niza, ili gre\u0161ku, ako nije. U suprotnom,\n<\/li>\n<li>Pove\u0107ajte pokaziva\u010d i nastavite.<\/li>\n<\/ol>\n<p>\nBilo kako bilo, element \u0107e sigurno biti prona\u0111en, a provera granica se vr\u0161i samo jednom, kada se to dogodi. To je duboka ideja, ali je dovoljno jednostavna \u010dak i za po\u010detnika programera. Verovatno ne mogu govoriti o relevantnosti posla za druge, ali sam odmah uspeo da primenim ovu mudrost i u li\u010dnom i u profesionalnom kodu. Knjiga TAOCP je puna takvih dragulja (da budemo po\u0161teni, ima tu i mnogo \u010dudnih stvari, poput <noindex><a rel=\"nofollow\" href=\"https:\/\/nickdrozd.github.io\/2018\/11\/02\/bubble.html\">bubblersort<\/a><\/noindex>).<\/p>\n<blockquote><p><i>\u201ePretraga, pretraga<br \/>\nToliko dugo<br \/>\nPretraga, pretraga<br \/>\nSamo sam hteo da ple\u0161em\u201c<\/i> <br \/>\n\u2014 Luther Vandross, \u201ePretraga\u201c (1980)<\/p><\/blockquote>\n<p><\/p>\n<h1>Gre\u0161ka br. 2<\/h1>\n<p>\nDruga napaka je v zvezku 4A, \u201eKombinatorni algoritmi\u201c, del 1. Na strani 60 je opisana naloga na\u010drtovanja nastopov komikov v razli\u010dnih igralnicah. Kot primer je navedenih nekaj realnih komikov, vklju\u010dno z Lily Tomlin, Weird Al Yankovic in Robinom Williamsom, ki je bil \u0161e \u017eiv, ko je knjiga iz\u0161la. Knuth vedno v kazalo vklju\u010duje polna imena, zato je Williams omenjen na strani 882 kot \u201eWilliams, Robin Mac-Lorin\u201c. Vendar se njegovo drugo ime kon\u010da na \u201en\u201c, ne na \u201em\u201c, torej Mac-Lorin.<\/p>\n<p>Mac-Lorin je dekli\u0161ka priimek njegove mame. Bila je pravnukinja Anselma Josepha Mac-Lorina, 34. guvernerja Mississippija. Njegovo vladanje naj bi se o\u010ditno zapomnilo po ni\u010demer dobrem. Iz knjige <noindex><a rel=\"nofollow\" href=\"https:\/\/books.google.com\/books?id=OvNjBAAAQBAJ&amp;pg=PA177&amp;lpg=PA177&amp;dq=anselm+mclaurin&amp;source=bl&amp;ots=kPu_kLXUrz&amp;sig=ACfU3U2UKRAmJyH_dVfcb2tfSmzYemEgTw&amp;hl=en&amp;sa=X&amp;ved=2ahUKEwjTl9vvroDiAhVHI6wKHfCTC6I4MhDoATADegQICRAB#v=onepage&amp;q&amp;f=false\">\u201eMississippi: zgodovina\u201c<\/a><\/noindex>:<\/p>\n<blockquote><p><i>\u201eNajpomembnej\u0161i dogodek v \u010dasu uprave Mac-Lorina je bilo napovedovanje vojne \u0160paniji s strani Zdru\u017eenih dr\u017eav spomladi 1898\u2026 Na \u017ealost je vojna morda nekaterim dr\u017eavnim uslu\u017ebencem dala prilo\u017enost za prakso podkupovanja. Mac-Lorina so obto\u017eili razli\u010dnih dvomljivih praks, vklju\u010dno s kumovstvom in pretirano uporabo pooblastil za pomilostitev. V dobi gibanja za treznost so ga kritiki obto\u017eili alkoholizma, kar je tudi javno priznal.\u201c<\/i><\/p><\/blockquote>\n<p><\/p>\n<h1>Zgodovinska napaka<\/h1>\n<p>\nRazmotrimo <b>tradicionalni algoritem mno\u017eenja<\/b> iz \u0161olske programe. Koliko enomestnih mno\u017eenj zahteva? Recimo, da mno\u017eite <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/d15239ad41c6fc6953641760f9ffcfdd.jpg\" style=\"display:block;margin: 0 auto;\" \/>-mestno \u0161tevilo <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b731d35571751cec684ca767411a023d.jpg\" style=\"display:block;margin: 0 auto;\" \/> na <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c1f7221e05cbca33ff54da5b6f665dd2.jpg\" style=\"display:block;margin: 0 auto;\" \/>-mestno <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/390eee500fc99f74a2252db0b3ba6fe4.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Najprej pomno\u017eite prvo \u0161tevilko <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/8d4db48caef1e8cceac94ae2fca4fc24.jpg\" style=\"display:block;margin: 0 auto;\" \/> z vsako \u0161tevilko <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/dccbe5f9c5f2fe9bd3538f567e2bb214.jpg\" style=\"display:block;margin: 0 auto;\" \/> zaporedoma. Nato pomno\u017eite drugo \u0161tevilko <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b76bfeb3fb4f60f9f1ac66dcb937f736.jpg\" style=\"display:block;margin: 0 auto;\" \/> z vsako \u0161tevilko <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bbe37fb224a8e6115872a2b2cdefa26e.jpg\" style=\"display:block;margin: 0 auto;\" \/> zaporedoma in tako naprej, dokler ne preu\u010dite vseh \u0161tevilk <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df227a29c1bc24a1c7cbf9269c764b21.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Tako tradicionalno mno\u017eenje zahteva <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f0c5ea2abdccff4a5b92fd1c70706d21.jpg\" style=\"display:block;margin: 0 auto;\" \/> enostavnih mno\u017eenj. Zlasti mno\u017eenje dveh \u0161tevil po <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f609965f49d095d59264e127f6db0e64.jpg\" style=\"display:block;margin: 0 auto;\" \/> mestih zahteva <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/fb16f262bc1b872f6e8c003be2efe2d8.jpg\" style=\"display:block;margin: 0 auto;\" \/> enomestna mno\u017eenja.<\/p>\n<p>To je slabo, vendar lahko proces optimiziramo s metodo, ki jo je razvil sovjetski matematik Anatolij Alekseevi\u010d Karacub. Predpostavimo, da <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3f42481650d00fe8cf1083be9479958f.jpg\" style=\"display:block;margin: 0 auto;\" \/> in <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/756872cc2c490be54640606bba6cb8c7.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0so dvomestna decimalna \u0161tevila; torej obstajajo \u0161tevila <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/4f1f27cc95638aab9f6836f809b42cc1.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/0192ac28c89bfd24a20a1fc1b06ce1a6.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bebb062d37ca6e82ce30589b5f790a0f.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/907b83653f451f4a861109f2244b175a.jpg\" style=\"display:block;margin: 0 auto;\" \/> taka, da <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/22b668162b9e64b9aba33d5fe475d65b.jpg\" style=\"display:block;margin: 0 auto;\" \/> in <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3a226e2600b99ec92d37b7acfbd63d20.jpg\" style=\"display:block;margin: 0 auto;\" \/> (posplo\u0161evanje tega algoritma na ve\u010dje \u0161tevilke zahteva dolo\u010dene manipulacije; \u010deprav to ni prete\u017eko, vendar da se ne zmedem v podrobnostih, se bom raje dr\u017eal enostavnega primera). Potem <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/a3a658b41241bf40a1f0e779527b3eb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bf8e1b283d1cfa76314380b74b308b38.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/69c922747089f3affb9d640910047a41.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Mno\u017eenje dvokratnikov daje <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/274f90358c358641db7ccb2bda5896b1.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Do sedaj imamo \u0161e vedno <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/be0a72ca4a77d7c710b99741619c4492.jpg\" style=\"display:block;margin: 0 auto;\" \/> enomestnih mno\u017eenj: <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/10af5b0ea33a7df7bceb34de5757ba5d.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/66919878cca7db5c80eca9e89c2bca13.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c9987bea5bc2a1fb928ef2c60bf880fb.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c6136863142c02a1b6ba260f02544c0c.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Zdaj se\u0161tejmo in od\u0161tejmo <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/1e9707de3bac2233c9343d2d95d5d1bb.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Po ve\u010d presenetljivih spremembah, ki jih pustim kot vajo za bralca, dobimo <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/9015c02c113b58d67e73013fea4ce9dd.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0\u2014 skupno tri enostavne mno\u017eenja! (Obstajajo nekateri stalni koeficienti, a ti se lahko izra\u010dunajo le z Se\u0161tevanjem in premikom mest.)<\/p>\n<p>Ne zahtevajte dokazov, toda <b>Karatsuba algoritem<\/b> (rekurzivno splo\u0161en iz zgoraj navedenega primera) izbolj\u0161a tradicionalno mno\u017eenje z <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/99577e368b573f762034767d5af05032.jpg\" style=\"display:block;margin: 0 auto;\" \/> operacijami do <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df139625f074f236e50343ecf5f2021a.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Upo\u0161tevajte, da gre za pravo izbolj\u0161avo algoritma in ne optimizacijo za ro\u010dne izra\u010dune. Dejansko algoritem ni primeren za ro\u010dne izra\u010dune, saj zahteva velike stro\u0161ke rekurzivnih operacij. Poleg tega se u\u010dinek ne bo v celoti pokazal, dokler \u0161tevilke ne postanejo dovolj velike (na sre\u010do so se nad algoritmom Karatsube pojavile \u0161e hitrej\u0161e metode: marca 2019 je bil objavljen algoritem, ki potrebuje le <noindex><a rel=\"nofollow\" href=\"https:\/\/web.maths.unsw.edu.au\/~davidharvey\/papers\/nlogn\/\"><i>n log n<\/i><\/a><\/noindex> mno\u017eenj; pospe\u0161ek velja le za neverjetno velike \u0161tevilke).<\/p>\n<p>Ta algoritem je opisan na strani 295 drugega toma \"Knjiga algoritmov\". Tam Knuth pi\u0161e: \"Zanimivo je, da so to idejo odkrili \u0161ele v <b>1962<\/b> tem letu\", ko je bila objavljena naloga, ki opisuje algoritem Karatsuba. Ampak! Leta 1995 je Karatsuba objavil \u010dlanek \"Zlo\u017eenost izra\u010dunov\", v katerem pravi ve\u010d stvari: 1) okrog leta 1956 je Kolmogorov predpostavil, da mno\u017eenja ni mogo\u010de izvesti v manj kot <img decoding=\"async\" alt=\"Prejel sem \u010dek od Knuta v vi\u0161ini 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/87c650ae7cb55d5b5cd1f7d440cadbee.jpg\" style=\"display:block;margin: 0 auto;\" \/> korakih; 2) v <b>1960<\/b> tem letu je bil Karatsuba prisoten na seminarju, kjer je Kolmogorov predstavil svojo hipotezo n\u00b2. 3) \"Natan\u010dno teden dni kasneje\" je Karatsuba razvil algoritem \"deli in vladaj\"; 4) leta 1962 je Kolmogorov napisal in objavil \u010dlanek <i>v imenu Karatsuba<\/i> z opisom algoritma. \"O tem \u010dlanku sem izvedel \u0161ele potem, ko so ga ponovno objavili.\"<\/p>\n<p>Tako napaka izhaja iz tega, da namesto <i>1962<\/i> mora biti naveden <i>1960<\/i> leto. To je vse.<\/p>\n<h1>Analiza<\/h1>\n<p>\n<b>Iskanje napak ni zahtevalo posebnega znanja.<\/b><\/p>\n<ol>\n<li>Prva napaka je bila tako banala, kot je to mogo\u010de, in se je nahajala na razmeroma vidnem mestu (za\u010detek poglavja). Kdor koli bi jo na\u0161el; jaz pa sem bil tisti idiot.\n<\/li>\n<li>Iskanje druge napake je zahtevalo sre\u010do in trud, a ne spretnosti. Indeks za \"Williamsa\" se nahaja na predzadnji strani zvezka, kar je precej opazna del knjige. Pravkar sem prelistaval indeks (to ni tako \u017ealostno, kot se zdi, saj so v indeksih Knutha skriti pirhi. Na primer, tam so zapisi v arab\u0161\u010dini in hebrej\u0161\u010dini, ki se oba nana\u0161ata na stran 66. A na tej strani noben od jezikov ni omenjen; namesto tega so omenjeni \"jeziki, ki se berejo z desne proti levi\"). Moje o\u010di so pritegnili drugo ime. Ker obi\u010dajno berem Wikipedijo, sem preveril Robina Williamsa in opazil neskladje.\n<\/li>\n<li>Rad bi rekel, da sem opravil resno raziskavo, da bi na\u0161el zgodovinsko napako, a v resnici sem bil le na <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Karatsuba_algorithm\">strani Wikipedije o Karatsubovem algoritmu<\/a><\/noindex>. V prvih stavkih pi\u0161e: \"Karatsubov algoritem je algoritem hitrega mno\u017eenja. Odkrit leta 1960 od Anatolija Karatsube in objavljen leta 1962.\" Po tem je ostalo le \u0161e se\u0161teti dva in dva.<\/li>\n<\/ol>\n<p>\nV prihodnosti bi rad na\u0161el bolj pomembno napako, \u0161e posebej v Knuthovem kodi. Prav tako bi rad na\u0161el napako v prvem zvezku \"Temeljni algoritmi\". Morda bi jo tudi na\u0161el, a v lokalni knji\u017enici iz nekega razloga imajo le zvezke 2, 3 in 4A.<\/p>\n<p><b>Finan\u010dne dejstva:<\/b><\/p>\n<ul>\n<li>Na splo\u0161no je moj prispevek v TAOCP sestavljen le iz treh simbolov: ene dodane <i>s<\/i>, zamenjave <i>m<\/i> na <i>n<\/i> in <i>2<\/i> na <i>0<\/i>. Po ceni 2,56 USD so to precej dobi\u010dkonosni simboli; \u010de bi vam pla\u010dali toliko denarja, bi vam \u010dlanek dol\u017eine 1000 besed (v povpre\u010dju \u0161tirje simboli) prinesel deset.\n<\/li>\n<li>S tremi hex dolarji skupaj z 29 drugimi dr\u017eavljani delim 69. mesto na seznamu najbogatej\u0161ih vlagateljev banke San-Serriff (k 1. maju 2019).<\/li>\n<\/ul>\n<h1>Druge razprave o \u010dekih od Knutha<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kevinlawler.com\/knuth\">Kako dobiti \u010dek od Knutha<\/a><\/noindex>\n<p>Splo\u0161na priporo\u010dila za iskanje napak v knjigah Knutha. Ve\u010dinoma se nana\u0161ajo na tehni\u010dne napake, katerih nimam. Obstaja en stavek, ki sem ga vzel resno:<\/p>\n<blockquote><p>Raje po\u010dakajte, da zberete komplet napak za po\u0161iljanje. S povezovanjem ve\u010d resni\u010dnih, \u010deprav ne zelo dragocenih napak, boste pove\u010dali verjetnost, da bo ena od njih resni\u010dno obravnavana kot napaka ali nasvet. \u010ce po\u0161iljate napake eno za drugo, lahko vsako posebej zavrnejo.<\/p><\/blockquote>\n<p>\nNisem \u017eelel po\u0161iljati preprosto trapastih napak, ampak sem upo\u0161teval nasvet in poslal pismo \u0161ele, ko sem na\u0161el zgodovinsko napako, ki se je zdela dovolj resna.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/ashutoshmehra.net\/blog\/about\/knuth-reward-checks-and-certificates\/\">\u010ceki A\u0161utosha Mehre<\/a><\/noindex>\n<p>A\u0161utosh Mehra je tretji najbogatej\u0161i vlagatelj v San-Serriffu z ogromnim premo\u017eenjem 0x$207,f0 v BoSS.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.truetex.com\/knuthchk.htm\">\u010cek za nekatere nefunkcionalne napake v pravem TeX kodo.<\/a><\/noindex>\n<\/li>\n<li>Razli\u010dno: <noindex><a rel=\"nofollow\" href=\"http:\/\/ed-thelen.org\/KnuthCheck.html\">#1<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.club.cc.cmu.edu\/~ajo\/knuth-check.html\">#2<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/joaoff.com\/2008\/02\/25\/a-reward-check-from-donald-knuth\/\">#3<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.quora.com\/What-is-it-like-to-receive-a-Knuth-reward-check\">#4<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.joshwakefield.com\/knuth\/\">#5<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"http:\/\/www.righto.com\/2011\/05\/my-knuth-reward-check.html\">#6<\/a><\/noindex><\/li>\n<\/ul>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452812\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442\u00a0\u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439 \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u0441\u0451, \u0447\u0442\u043e \u00ab\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438, \u0442\u0438\u043f\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438 \u0438\u043b\u0438 \u043f\u043e\u043b\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u00bb. \u042f \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0447\u0435\u043a \u043e\u0442 \u041a\u043d\u0443\u0442\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0435\u0448\u0438\u043b \u043f\u043e\u0438\u0441\u043a\u0430\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0438 \u0432 \u0435\u0433\u043e \u0432\u044b\u0434\u0430\u044e\u0449\u0435\u043c\u0441\u044f \u0442\u0440\u0443\u0434\u0435 \u00ab\u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u00bb (TAOCP). \u0423\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":25780,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-34164","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u042f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u041a\u043d\u0443\u0442\u0430 \u0447\u0435\u043a \u043d\u0430 0x$3,00 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:56:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:56:44+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Prejel sem \u010dek od Knutha na 0x$3,00 | ProHoster","description":"Donald Knuth je ra\u010dunalni\u0161ki znanstvenik, ki se tako zelo trudi za pravilnost svojih knjig, da ponuja enajst hex dolar ($2,56, 0x$1,00) za katero koli najdeto \"napako\".","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u042f \u043f\u043e\u043b\u0443\u0447\u0438\u043b \u043e\u0442 \u041a\u043d\u0443\u0442\u0430 \u0447\u0435\u043a \u043d\u0430 0x$3,00 | ProHoster","og:description":"\u0414\u043e\u043d\u0430\u043b\u044c\u0434 \u041a\u043d\u0443\u0442 \u2014 \u0443\u0447\u0451\u043d\u044b\u0439 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0431\u043e\u0442\u0438\u0442\u0441\u044f \u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0432\u043e\u0438\u0445 \u043a\u043d\u0438\u0433, \u0447\u0442\u043e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0435\u0440\u0438\u0447\u043d\u044b\u0439 \u0434\u043e\u043b\u043b\u0430\u0440 ($2,56, 0x$1,00) \u0437\u0430 \u043b\u044e\u0431\u0443\u044e \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u0443\u044e \u00ab\u043e\u0448\u0438\u0431\u043a\u0443\u00bb, \u0433\u0434\u0435 \u043e\u0448\u0438\u0431\u043a\u043e\u0439.","og:url":"https:\/\/prohoster.info\/sl\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:56:44+00:00","article:modified_time":"2019-10-31T18:56:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34164","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 18:10:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:27:29","updated":"2026-01-21 18:10:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/34164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=34164"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/34164\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media\/25780"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=34164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=34164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=34164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}