{"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\/pt\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","title":{"rendered":"Eu recebi de Knuth um cheque de 0x$3,00","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Donald Knuth<\/b>\u00a0\u2014 um cientista da computa\u00e7\u00e3o que se preocupa tanto com a precis\u00e3o de seus livros que oferece <b>um d\u00f3lar hexadecimal<\/b> ($2,56, 0x$1,00) por qualquer \"erro\" encontrado, onde um erro \u00e9 considerado tudo o que \u00e9 \"tecnicamente, historicamente, tipograficamente ou politicamente incorreto\". Eu realmente queria receber um cheque de Knuth, ent\u00e3o decidi procurar erros em sua obra-prima <b>\"A Arte da Programa\u00e7\u00e3o\"<\/b> (TAOCP). Consegui encontrar tr\u00eas. Verdade seja dita, Knuth enviou um cheque de <b>0x$3,00<\/b>.<\/p>\n<p><img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/ea8c328c9f7f67d1e2c0d729268aca01.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nComo voc\u00ea pode ver, isso n\u00e3o \u00e9 um cheque real. Antes, Knuth enviava cheques reais, mas parou em 2008 devido a <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/news08.html\">fraude desenfreada<\/a><\/noindex>. Agora ele envia \"certificados de dep\u00f3sito pessoais\" no <noindex><a rel=\"nofollow\" href=\"https:\/\/www-cs-faculty.stanford.edu\/~knuth\/boss.html\">Banco San Serif<\/a><\/noindex> (BoSS). Ele diz que est\u00e1 disposto a enviar dinheiro real se necess\u00e1rio, mas parece que isso \u00e9 um grande inc\u00f4modo.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nEncontrei duas typos e um erro hist\u00f3rico. Listarei-os em ordem decrescente de trivialidade.<\/p>\n<h1>Typo #1<\/h1>\n<p>\nA primeira typo \u2014 na p\u00e1gina 392 do terceiro volume \"Ordena\u00e7\u00e3o e Busca\", oitava linha a partir de baixo: \"Ap\u00f3s uma busca malsucedida, \u00e0s vezes (sometime) \u00e9 desej\u00e1vel inserir um novo registro na tabela contendo <i>K<\/i>; o m\u00e9todo que faz isso \u00e9 chamado de algoritmo de busca e inser\u00e7\u00e3o. O erro \u00e9 que em vez de <b><i>sometime<\/i><\/b> deveria ser <b><i>sometimes<\/i><\/b>.<\/p>\n<p>Claro, n\u00e3o h\u00e1 nada surpreendente em tal erro. Apenas neste artigo, deve haver v\u00e1rias typos (nenhuma recompensa por encontr\u00e1-las). O que realmente surpreende \u00e9 que ningu\u00e9m notou por tanto tempo. A p\u00e1gina 392 n\u00e3o est\u00e1 escondida profundamente em uma se\u00e7\u00e3o de matem\u00e1tica, \u00e9 <b>a primeira p\u00e1gina<\/b> do sexto cap\u00edtulo \"Busca\"! Talvez, uma das se\u00e7\u00f5es mais lidas do livro. Em teoria, deveria haver menos typos l\u00e1, mas n\u00e3o \u00e9 o caso.<\/p>\n<p>Por falar nisso, se voc\u00ea alguma vez pensou em ler o TAOCP, tente. Muitos dir\u00e3o que \u00e9 um <b>manual<\/b>, n\u00e3o destinado \u00e0 leitura direta, mas isso n\u00e3o \u00e9 verdade. O autor tem um ponto de vista claro e um estilo distintivo. A \u00fanica coisa que dificulta a legibilidade \u00e9 a complexidade da matem\u00e1tica. No entanto, h\u00e1 uma solu\u00e7\u00e3o simples: leia at\u00e9 que chegue \u00e0 matem\u00e1tica que voc\u00ea n\u00e3o entende, pule-a e passe para a pr\u00f3xima se\u00e7\u00e3o que voc\u00ea consegue compreender. Lendo dessa forma, eu pulo pelo menos 80% do livro, mas os outros 20% s\u00e3o magn\u00edficos!<\/p>\n<p>Tamb\u00e9m dizem que o TAOCP <b>\u00e9 irrelevante<\/b>, obsoleta ou de outra forma irrelevante para a \"programa\u00e7\u00e3o real\". Isso tamb\u00e9m n\u00e3o \u00e9 verdade. Por exemplo, na primeira se\u00e7\u00e3o ap\u00f3s a introdu\u00e7\u00e3o, \u00e9 discutida a busca de um elemento em um array n\u00e3o ordenado. O algoritmo mais simples \u00e9 conhecido por todos os programadores. Execute o ponteiro no in\u00edcio do array e, em seguida, execute as seguintes etapas em um loop:<\/p>\n<ol>\n<li>Verifique se o elemento atual \u00e9 o desejado. Se for, retornamos; caso contr\u00e1rio,\n<\/li>\n<li>Verifique se o ponteiro est\u00e1 fora do limite do array. Se estiver, retornamos um erro; caso contr\u00e1rio,\n<\/li>\n<li>Aumente o ponteiro e continue.<\/li>\n<\/ol>\n<p>\nAgora, vejamos: quantas verifica\u00e7\u00f5es de limite este algoritmo requer, em m\u00e9dia? No pior caso, quando o array n\u00e3o cont\u00e9m o elemento, para cada elemento na lista ser\u00e1 necess\u00e1ria uma verifica\u00e7\u00e3o, e, em m\u00e9dia, isso ser\u00e1 algo como <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/6c99f945807d8a8aeac1d42854c83295.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Um algoritmo de busca mais inteligente pode se sair apenas com uma verifica\u00e7\u00e3o de limite. Anexe o elemento desejado ao final do array, em seguida, execute o ponteiro no in\u00edcio do array e execute as seguintes etapas em um loop:<\/p>\n<ol>\n<li>Verifique se o elemento atual \u00e9 o desejado. Se for, retornamos a resposta se o ponteiro estiver dentro do limite do array ou um erro se n\u00e3o estiver. Caso contr\u00e1rio,\n<\/li>\n<li>Aumente o ponteiro e continue.<\/li>\n<\/ol>\n<p>\nDe qualquer forma, o elemento ser\u00e1 encontrado com certeza, e a verifica\u00e7\u00e3o de limites \u00e9 realizada apenas uma vez, quando isso ocorre. Essa \u00e9 uma ideia profunda, mas \u00e9 simples o suficiente at\u00e9 para um programador iniciante. Provavelmente, n\u00e3o posso falar sobre a relev\u00e2ncia do trabalho para os outros, mas consegui aplicar essa sabedoria imediatamente tanto em c\u00f3digos pessoais quanto profissionais. O livro TAOCP est\u00e1 cheio de tais joias (para ser justo, h\u00e1 tamb\u00e9m muitas coisas estranhas l\u00e1, como <noindex><a rel=\"nofollow\" href=\"https:\/\/nickdrozd.github.io\/2018\/11\/02\/bubble.html\">classifica\u00e7\u00e3o de bolha<\/a><\/noindex>).<\/p>\n<blockquote><p><i>\"Busca, busca<br \/>\nT\u00e3o longa<br \/>\nBusca, busca<br \/>\nEu s\u00f3 queria dan\u00e7ar\"<\/i> <br \/>\n\u2014 Luther Vandross, \"Busca\" (1980)<\/p><\/blockquote>\n<p><\/p>\n<h1>Erro de digita\u00e7\u00e3o n\u00ba 2<\/h1>\n<p>\nO segundo erro est\u00e1 no volume 4A, \"Algoritmos Combinat\u00f3rios\", parte 1. Na p\u00e1gina 60, \u00e9 descrito um problema de planejamento de apresenta\u00e7\u00f5es de comediantes em v\u00e1rios cassinos. Como exemplo, s\u00e3o mencionados alguns comediantes reais, incluindo Lily Tomlin, Weird Al Yankovic e Robin Williams, que ainda estava vivo quando o livro foi publicado. Knuth sempre fornece os nomes completos no \u00edndice, ent\u00e3o Williams \u00e9 mencionado na p\u00e1gina 882 como \"Williams, Robin McLorin\". Mas seu segundo nome termina em \"n\" e n\u00e3o em \"m\", ou seja, McLorin.<\/p>\n<p>McLorin \u00e9 o sobrenome de solteira de sua m\u00e3e. Ela era bisneta de Anselm Joseph McLorin, o 34\u00ba governador do Mississippi. Seu governo, aparentemente, n\u00e3o foi lembrado por nada de bom. Do livro <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\">\"Mississippi: Hist\u00f3ria\"<\/a><\/noindex>:<\/p>\n<blockquote><p><i>\"O evento mais importante durante a administra\u00e7\u00e3o de McLorin foi a declara\u00e7\u00e3o de guerra dos Estados Unidos \u00e0 Espanha na primavera de 1898... Infelizmente, a guerra pode ter proporcionado a alguns funcion\u00e1rios p\u00fablicos a oportunidade de praticar corrup\u00e7\u00e3o. McLorin foi acusado de v\u00e1rias pr\u00e1ticas duvidosas, incluindo nepotismo e uso excessivo de poderes de indulto. Na era do movimento de temperan\u00e7a, cr\u00edticos acusaram o governador de beber, o que ele reconheceu publicamente.\"<\/i><\/p><\/blockquote>\n<p><\/p>\n<h1>Erro hist\u00f3rico<\/h1>\n<p>\nVamos considerar <b>o algoritmo tradicional de multiplica\u00e7\u00e3o<\/b> do programa escolar. Quantas opera\u00e7\u00f5es de multiplica\u00e7\u00e3o de um d\u00edgito ele requer? Suponha que voc\u00ea est\u00e1 multiplicando <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/d15239ad41c6fc6953641760f9ffcfdd.jpg\" style=\"display:block;margin: 0 auto;\" \/>um n\u00famero de -d\u00edgitos <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b731d35571751cec684ca767411a023d.jpg\" style=\"display:block;margin: 0 auto;\" \/> para <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c1f7221e05cbca33ff54da5b6f665dd2.jpg\" style=\"display:block;margin: 0 auto;\" \/>de -d\u00edgitos <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/390eee500fc99f74a2252db0b3ba6fe4.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Primeiro, voc\u00ea multiplica o primeiro d\u00edgito <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/8d4db48caef1e8cceac94ae2fca4fc24.jpg\" style=\"display:block;margin: 0 auto;\" \/> por cada d\u00edgito <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/dccbe5f9c5f2fe9bd3538f567e2bb214.jpg\" style=\"display:block;margin: 0 auto;\" \/> em ordem. Em seguida, multiplica o segundo d\u00edgito <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/b76bfeb3fb4f60f9f1ac66dcb937f736.jpg\" style=\"display:block;margin: 0 auto;\" \/> por cada d\u00edgito <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bbe37fb224a8e6115872a2b2cdefa26e.jpg\" style=\"display:block;margin: 0 auto;\" \/> em ordem e assim por diante, at\u00e9 percorrer todos os d\u00edgitos <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df227a29c1bc24a1c7cbf9269c764b21.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Portanto, a multiplica\u00e7\u00e3o tradicional requer <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f0c5ea2abdccff4a5b92fd1c70706d21.jpg\" style=\"display:block;margin: 0 auto;\" \/> multiplica\u00e7\u00f5es primitivas. Em particular, a multiplica\u00e7\u00e3o de dois n\u00fameros com <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/f609965f49d095d59264e127f6db0e64.jpg\" style=\"display:block;margin: 0 auto;\" \/> d\u00edgitos requer <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/fb16f262bc1b872f6e8c003be2efe2d8.jpg\" style=\"display:block;margin: 0 auto;\" \/> multiplica\u00e7\u00f5es de um d\u00edgito.<\/p>\n<p>Isso \u00e9 ruim, mas o processo pode ser otimizado usando um m\u00e9todo desenvolvido pelo matem\u00e1tico sovi\u00e9tico Anatoly Alexeyevich Karatsuba. Suponha que <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3f42481650d00fe8cf1083be9479958f.jpg\" style=\"display:block;margin: 0 auto;\" \/> e <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/756872cc2c490be54640606bba6cb8c7.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0sejam n\u00fameros decimais de dois d\u00edgitos; ou seja, existem n\u00fameros <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/4f1f27cc95638aab9f6836f809b42cc1.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/0192ac28c89bfd24a20a1fc1b06ce1a6.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bebb062d37ca6e82ce30589b5f790a0f.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/907b83653f451f4a861109f2244b175a.jpg\" style=\"display:block;margin: 0 auto;\" \/> tais que <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/22b668162b9e64b9aba33d5fe475d65b.jpg\" style=\"display:block;margin: 0 auto;\" \/> e <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/3a226e2600b99ec92d37b7acfbd63d20.jpg\" style=\"display:block;margin: 0 auto;\" \/> (a generaliza\u00e7\u00e3o deste algoritmo para d\u00edgitos maiores requer determinadas manipula\u00e7\u00f5es; embora isso n\u00e3o seja muito complicado, para n\u00e3o errar nos detalhes, prefiro manter um exemplo simples). Ent\u00e3o <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/a3a658b41241bf40a1f0e779527b3eb2.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/bf8e1b283d1cfa76314380b74b308b38.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/69c922747089f3affb9d640910047a41.jpg\" style=\"display:block;margin: 0 auto;\" \/>. A multiplica\u00e7\u00e3o de bin\u00f4mios resulta em <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/274f90358c358641db7ccb2bda5896b1.jpg\" style=\"display:block;margin: 0 auto;\" \/>. At\u00e9 agora, ainda temos <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/be0a72ca4a77d7c710b99741619c4492.jpg\" style=\"display:block;margin: 0 auto;\" \/> multiplica\u00e7\u00f5es de um d\u00edgito: <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/10af5b0ea33a7df7bceb34de5757ba5d.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/66919878cca7db5c80eca9e89c2bca13.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c9987bea5bc2a1fb928ef2c60bf880fb.jpg\" style=\"display:block;margin: 0 auto;\" \/>, <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/c6136863142c02a1b6ba260f02544c0c.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Agora vamos somar e subtrair <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/1e9707de3bac2233c9343d2d95d5d1bb.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Ap\u00f3s algumas reorganiza\u00e7\u00f5es, que deixarei como um exerc\u00edcio para o leitor, obtemos <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/9015c02c113b58d67e73013fea4ce9dd.jpg\" style=\"display:block;margin: 0 auto;\" \/>\u00a0\u2014 apenas tr\u00eas multiplica\u00e7\u00f5es de um d\u00edgito! (Existem alguns coeficientes constantes, mas eles podem ser calculados apenas com adi\u00e7\u00e3o e deslocamento de d\u00edgitos).<\/p>\n<p>N\u00e3o pe\u00e7a provas, mas <b>o algoritmo de Karatsuba<\/b> (generalizado recursivamente a partir do exemplo acima) melhora o m\u00e9todo tradicional de multiplica\u00e7\u00e3o com <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/99577e368b573f762034767d5af05032.jpg\" style=\"display:block;margin: 0 auto;\" \/> opera\u00e7\u00f5es at\u00e9 <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/df139625f074f236e50343ecf5f2021a.jpg\" style=\"display:block;margin: 0 auto;\" \/>. Observe que isso \u00e9 uma verdadeira melhoria do algoritmo, e n\u00e3o uma otimiza\u00e7\u00e3o para c\u00e1lculos mentais. De fato, o algoritmo n\u00e3o \u00e9 adequado para c\u00e1lculos mentais, pois requer overhead significativo para opera\u00e7\u00f5es recursivas. Al\u00e9m disso, o efeito n\u00e3o se manifestar\u00e1 plenamente at\u00e9 que os n\u00fameros sejam grandes o suficiente (felizmente, em vez do algoritmo de Karatsuba, surgiram m\u00e9todos ainda mais r\u00e1pidos: em mar\u00e7o de 2019, foi publicado um algoritmo que requer apenas <noindex><a rel=\"nofollow\" href=\"https:\/\/web.maths.unsw.edu.au\/~davidharvey\/papers\/nlogn\/\"><i>n log n<\/i><\/a><\/noindex> multiplica\u00e7\u00f5es; a acelera\u00e7\u00e3o \u00e9 aplic\u00e1vel apenas a n\u00fameros inimaginavelmente grandes).<\/p>\n<p>Este algoritmo est\u00e1 descrito na p\u00e1gina 295 do segundo volume de \"Algoritmos das Artes da Computa\u00e7\u00e3o\". L\u00e1, Knuth escreve: \"Curiosamente, esta ideia foi descoberta apenas em <b>1962<\/b> ano\", quando foi publicado um artigo descrevendo o algoritmo de Karatsuba. Mas! Em 1995, Karatsuba publicou um artigo \"Complexidade dos C\u00e1lculos\", no qual menciona algumas coisas: 1) por volta de 1956, Kolmogorov sup\u00f4s que a multiplica\u00e7\u00e3o n\u00e3o poderia ser realizada em menos de <img decoding=\"async\" alt=\"Eu recebi de Knuth um cheque de 0x$3,00\" src=\"\/wp-content\/uploads\/2019\/05\/87c650ae7cb55d5b5cd1f7d440cadbee.jpg\" style=\"display:block;margin: 0 auto;\" \/> passos; 2) em <b>1960<\/b> ano, Karatsuba participou de um semin\u00e1rio onde Kolmogorov exp\u00f4s sua hip\u00f3tese n\u00b2. 3) \"Exatamente uma semana depois\" Karatsuba desenvolveu o algoritmo de \"dividir e conquistar\"; 4) em 1962, Kolmogorov escreveu e publicou um artigo <i>em nome de Karatsuba<\/i> descrevendo o algoritmo. \"Eu soube deste artigo apenas depois que o republicaram\".<\/p>\n<p>Assim, o erro est\u00e1 no fato de que em vez de <i>1962<\/i> deveria ser indicado <i>1960<\/i> ano. Isso \u00e9 tudo.<\/p>\n<h1>An\u00e1lise<\/h1>\n<p>\n<b>A busca por erros n\u00e3o exigiu grande habilidade.<\/b><\/p>\n<ol>\n<li>O primeiro erro era t\u00e3o banal quanto poss\u00edvel e estava em um lugar relativamente vis\u00edvel (o in\u00edcio do cap\u00edtulo). Qualquer idiota teria encontrado; apenas eu fui o idiota.\n<\/li>\n<li>Encontrar o segundo erro de impress\u00e3o exigia sorte e esfor\u00e7o, mas n\u00e3o habilidade. O \u00edndice para \"Williams\" est\u00e1 na pen\u00faltima p\u00e1gina do volume, uma parte bastante vis\u00edvel do livro. Eu estava folheando o \u00edndice (isso n\u00e3o \u00e9 t\u00e3o doloroso quanto parece, pois nos \u00edndices de Knuth est\u00e3o escondidos ovos de p\u00e1scoa. Por exemplo, h\u00e1 entradas em \u00e1rabe e hebraico, e ambas indicam a p\u00e1gina 66. Mas nessa p\u00e1gina nenhum dos idiomas \u00e9 mencionado; em vez disso, s\u00e3o mencionados \"idiomas que s\u00e3o lidos da direita para a esquerda\"). E minha aten\u00e7\u00e3o foi atra\u00edda pelo segundo nome. Como costumo ler a Wikipedia, verifiquei Robin Williams e notei uma discrep\u00e2ncia.\n<\/li>\n<li>Eu gostaria de dizer que fiz uma pesquisa s\u00e9ria para encontrar o erro hist\u00f3rico, mas na verdade apenas olhei para a <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Karatsuba_algorithm\">p\u00e1gina da Wikipedia sobre o algoritmo de Karatsuba<\/a><\/noindex>. Nas primeiras linhas est\u00e1 escrito: \"O algoritmo de Karatsuba \u00e9 um algoritmo de multiplica\u00e7\u00e3o r\u00e1pida. Descoberto por Anatoly Karatsuba em 1960 e publicado em 1962\". Depois disso restou apenas somar dois mais dois.<\/li>\n<\/ol>\n<p>\nNo futuro, eu gostaria de encontrar um erro mais substantivo, especialmente no c\u00f3digo de Knuth. Eu tamb\u00e9m gostaria de encontrar um bug no primeiro volume de \"Algoritmos Fundamentais\". Talvez eu encontrasse, mas por alguma raz\u00e3o a biblioteca local s\u00f3 possui os volumes 2, 3 e 4A.<\/p>\n<p><b>Fatos financeiros:<\/b><\/p>\n<ul>\n<li>No total, minha contribui\u00e7\u00e3o para TAOCP consite apenas de tr\u00eas s\u00edmbolos: uma adi\u00e7\u00e3o <i>s<\/i>, uma substitui\u00e7\u00e3o <i>m<\/i> para <i>n<\/i> e <i>2<\/i> para <i>0<\/i>. Com um custo de $2,56, esses s\u00e3o s\u00edmbolos bastante lucrativos; se voc\u00ea fosse pago essa quantia, um artigo de 1000 palavras (em m\u00e9dia, com quatro s\u00edmbolos) lhe renderia dez.\n<\/li>\n<li>Com tr\u00eas d\u00f3lares hexadecimais, eu compartilho o 69\u00ba lugar na lista dos investidores mais ricos do Banco San Serif (a partir de 1\u00ba de maio de 2019).<\/li>\n<\/ul>\n<h1>Outras discuss\u00f5es sobre os cheques de Knuth<\/h1>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/kevinlawler.com\/knuth\">Como obter um cheque de Knuth<\/a><\/noindex>\n<p>Diretrizes gerais para encontrar erros nos livros de Knuth. Elas geralmente dizem respeito a erros t\u00e9cnicos, que eu n\u00e3o possuo. H\u00e1 uma frase que eu levei a s\u00e9rio:<\/p>\n<blockquote><p>\u00c9 melhor esperar at\u00e9 que voc\u00ea tenha um conjunto de erros para enviar. Ao combinar alguns erros reais, mas n\u00e3o muito valiosos, voc\u00ea aumentar\u00e1 a probabilidade de que um deles seja realmente considerado um erro ou uma sugest\u00e3o. Se voc\u00ea enviar erros um por um, cada um deles pode ser rejeitado separadamente.<\/p><\/blockquote>\n<p>\nEu n\u00e3o queria enviar apenas erros bobos de digita\u00e7\u00e3o, mas segui o conselho e enviei o e-mail somente quando encontrei um erro hist\u00f3rico que me pareceu s\u00e9rio o suficiente.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/ashutoshmehra.net\/blog\/about\/knuth-reward-checks-and-certificates\/\">Cheques de Ashutosh Mehra<\/a><\/noindex>\n<p>Ashutosh Mehra \u00e9 o terceiro maior investidor em San-Serif, com uma fortuna colossal de 0x$207,f0 no BoSS.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.truetex.com\/knuthchk.htm\">Cheque por alguns erros n\u00e3o funcionais no c\u00f3digo real do TeX<\/a><\/noindex>\n<\/li>\n<li>Diversos: <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>Fonte: <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.3 - 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\/pt\/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.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Recebi um cheque de Knuth no valor de 0x$3,00 | ProHoster","description":"Donald Knuth \u00e9 um cientista da computa\u00e7\u00e3o t\u00e3o preocupado com a precis\u00e3o de seus livros que oferece um d\u00f3lar hexadecimal ($2,56, 0x$1,00) por qualquer \"erro\" encontrado.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/ya-poluchil-ot-knuta-chek-na-0x-3-00","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/34164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=34164"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/34164\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/25780"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=34164"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=34164"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=34164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}