Ech krut e Scheck vum Knuth fir 0x $ 3,00

Donald Knuth ass e ComputerwĂ«ssenschaftler, dee sech sou vill Ă«m d'Genauegkeet vu senge Bicher kĂ«mmert, dĂ©i hie proposĂ©iert engem Hex Dollar ($2,56, 0x$1,00) fir all "Feeler" fonnt, wou e Feeler definĂ©iert ass als alles wat "technesch, historesch, typographesch oder politesch inkorrekt ass." Ech wollt wierklech e Scheck vum Knuth krĂ©ien, also hunn ech decidĂ©iert fir Feeler a sengem Magnum Opus ze sichen "The Art of Programming" (TAOCP). Mir hunn et fĂ€erdeg bruecht drĂ€i ze fannen. Richteg zu sengem Wuert, Knut geschĂ©ckt engem Scheck fir 0x$3,00.

Ech krut e Scheck vum Knuth fir 0x $ 3,00

Wéi Dir gesitt, ass dëst kee richtege Scheck. Knuth benotzt richteg Schecken ze schécken, mee opgehalen an 2008 wéinst rampant Bedruch. Hien schéckt elo "perséinlech Certificaten vun Depot" un Bank vu San Serriff (BoSS). Hie seet, datt hien bereet wier real Suen ze schécken wann néideg, awer et schéngt wéi wann et ze vill ass.

Ech hunn zwee Tippfehler an een historesche Feeler fonnt. Ech wÀert se an der Reiefolleg vun der Ofsenkung vun der Trivialitéit opzielen.

Tippfeeler #1

Den éischten Tippfeeler steet op der SÀit 392 vum drëtte Band vun "Sortéieren a Sichen", aachte Linn vun ënnen: "No enger net erfollegrÀicher Sich, heiansdo (heiansdo) ass et wënschenswÀert en neie Rekord an d'Tabell anzeginn. K; d'Method déi dëst mécht nennt een d'Sich an d'Insert Algorithmus. De Feeler ass, datt amplaz eng Kéier sollt sinn heiansdo.

Natierlech ass esou e Feeler net iwwerraschend. Et gi gebonnen e puer Tippfeeler an dësem Artikel eleng ze sinn (keng Belounungen fir se ze fannen). Wat wierklech iwwerraschend ass, ass datt et sou laang onopgemerkt ass. SÀit 392 ass net déif an der Mathematik Sektioun begruewen, et ass déi éischt SÀit Kapitel 6 "Sich"! VlÀicht ee vun de meescht geliesten Sektiounen vum Buch. Theoretesch sollen et déi mannste Schreiffehler ginn, awer nee.

Iwwregens, wann Dir jeemools dru geduecht hutt TAOCP ze liesen, probéiert et. Vill wÀert soen datt dëst ass directory, net geduecht fir direkt Liesen, awer dëst ass net wouer. Den Auteur huet e kloere Standpunkt an e markant Stil. Dat eenzegt wat d'Liesbarkeet behënnert ass d'Komplexitéit vun der Mathematik. Wéi och ëmmer, et gëtt eng einfach Léisung: liest bis Dir mat der Mathematik kommt, déi Dir net versteet, spréngt se a gitt op déi nÀchst Sektioun déi Dir verstinn. Wann ech esou liesen, vermëssen ech op d'mannst 80% vum Buch, awer déi aner 20% si super!

Et gëtt och gesot datt TAOCP irrelevant, ass al oder soss net applicabel fir "richteg Programméierung". Dëst ass och net wouer. Zum Beispill, déi éischt Sektioun no der Aféierung kuckt no engem Element an engem ongesortéierte Array ze fannen. Den einfachsten Algorithmus ass fir all Programméierer vertraut. FÀnkt de Pointer am Ufank vum Array un, maacht dann déi folgend an enger Loop:

  1. Kuckt ob dat aktuellt Element de gewënschte ass. Wann jo, mir zréck; soss
  2. Kontrolléiert ob de Pointer ausserhalb vun der Arraygrenz ass. Wann jo, gitt e Feeler zréck; soss
  3. Zoom an a fuert weider.

Elo betruecht: wéivill Grenzkontrollen erfuerdert dësen Algorithmus am Duerchschnëtt? Am schlëmmste Fall, wou d'Array keen Element enthÀlt, brauch all Element an der Lëscht eng Scheck, an am Duerchschnëtt wÀert et eppes sinn wéi Ech krut e Scheck vum Knuth fir 0x $ 3,00. E méi schlau Sichalgorithmus kéint mat just enger Grenzkontrolle fortkommen. Befestegt de gewënschte Element um Enn vun der Array, fÀnkt dann de Pointer am Ufank vun der Array un a maacht déi folgend an enger Loop:

  1. Kuckt ob dat aktuellt Element de gewĂ«nschte ass. Wa jo, gi mir eng Äntwert zrĂ©ck wann de Pointer an der Array ass, oder e Feeler wann et net ass. Soss
  2. Zoom an a fuert weider.

Op eng oder aner Manéier ass d'Element garantéiert ze fannen, an d'Grenzekontroll gëtt nëmmen eemol gemaach wann dëst geschitt. Dëst ass eng déif Iddi, awer et ass einfach genuch och fir en UfÀnger Programméierer. Ech ka wahrscheinlech net iwwer d'Relevanz vun der Aarbecht fir anerer schwÀtzen, awer ech konnt dës WÀisheet direkt op perséinlechen a beruffleche Code applizéieren. D'TAOCP Buch ass voller sou PÀrelen (fir fair ze sinn, et sinn och vill komesch Saachen dran, wéi z.B. Bubble Zort).

"Sich, Sich
Sou laang
Sichen, sichen
Ech wollt just danzen"

- Luther Vandross, "The Search" (1980)

Tippfeeler #2

Déi zweet Tippfeeler ass am Volume 4A, Combinatorial Algorithms, Part 1. SÀit 60 beschreift e Problem mat engem ZÀitplang Komiker fir eng Leeschtung op verschiddene Casinoen. Verschidde richtege Komiker ginn als Beispiller zitéiert, dorënner d'Lily Tomlin, Weird Al Yankovic a Robin Williams, deen nach gelieft huet wéi d'Buch publizéiert gouf. Knuth listet ëmmer voll Nimm am Index, sou datt Williams op der SÀit 882 als "Williams, Robin McLorim" opgezielt ass. Awer sÀi Mëttelnumm endet mat "n" an net "m", dat heescht McLaurin.

McLaurin war seng Mamm d'Meedchen Numm. Si war den Urenkel vum Anselm Joseph McLaurin, 34. Gouverneur vu Mississippi. Seng Herrschaft, anscheinend, gouf fir nÀischt gutt erënnert. Aus Buch "Mississippi: Geschicht":

"Déi wichtegst Evenement wÀhrend der McLaurin Administratioun war d'USA hir KrichserklÀrung iwwer Spuenien am Fréijoer 1898 ... Leider kann de Krich e puer Regierungsbeamten d'Méiglechkeet ginn fir Bestiechung ze maachen. De McLaurin gouf vu verschiddene zweifelhafte Praktiken virgeworf, dorënner Vetternwirtschaft an exzessiv Notzung vu Verzeiungsmuecht. WÀrend der Temperamentbewegung hunn d'Kritiker de Gouverneur virgeworf en Drénken ze sinn, wat hien ëffentlech zouginn huet.

Historesche Feeler

Bedenkt traditionell Multiplikatioun Algorithmus aus dem Schoulprogramm. WĂ©i vill Eenziffer Multiplikatioune brauch et? Ugeholl datt Dir multiplizĂ©iert Ech krut e Scheck vum Knuth fir 0x $ 3,00- Zifferen Zuel Ech krut e Scheck vum Knuth fir 0x $ 3,00 op Ech krut e Scheck vum Knuth fir 0x $ 3,00-bĂ«ssen Ech krut e Scheck vum Knuth fir 0x $ 3,00. Éischt multiplizĂ©ieren dĂ©i Ă©ischt Ziffer Ech krut e Scheck vum Knuth fir 0x $ 3,00 fir all Ziffer Ech krut e Scheck vum Knuth fir 0x $ 3,00 een nom aneren. Dann multiplizĂ©iert dĂ©i zweet Ziffer Ech krut e Scheck vum Knuth fir 0x $ 3,00 fir all Ziffer Ech krut e Scheck vum Knuth fir 0x $ 3,00 een nom aneren an esou weider bis Dir duerch all d'Zuelen gitt Ech krut e Scheck vum Knuth fir 0x $ 3,00. Also erfuerdert traditionell Multiplikatioun Ech krut e Scheck vum Knuth fir 0x $ 3,00 primitiv Multiplikatioune. Besonnesch, multiplizĂ©ieren zwou Zuelen mat Ech krut e Scheck vum Knuth fir 0x $ 3,00 rangĂ©iert nĂ©ideg Ech krut e Scheck vum Knuth fir 0x $ 3,00 Eenziffer Multiplikatioune.

DĂ«st ass schlecht, awer et ass mĂ©iglech de Prozess ze optimisĂ©ieren mat enger Method, dĂ©i vum sowjetesche Mathematiker Anatoly Alekseevich Karatsuba entwĂ©ckelt gouf. Loosst eis dat maachen Ech krut e Scheck vum Knuth fir 0x $ 3,00 Đž Ech krut e Scheck vum Knuth fir 0x $ 3,00 - zwee-Zifferen Dezimalzuelen; dat ass, et ginn Zuelen Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00 esou datt Ech krut e Scheck vum Knuth fir 0x $ 3,00 Đž Ech krut e Scheck vum Knuth fir 0x $ 3,00 (DĂ«sen Algorithmus fir mĂ©i grouss Zuelen ze generalisĂ©ieren erfuerdert e puer Manipulatioun; obwuel et net ze schwĂ©ier ass, fir keng Feeler an den Detailer ze maachen, wĂ€ert ech besser un en einfacht Beispill halen). Dann Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00. MultiplizĂ©iert binomials gĂ«tt Ech krut e Scheck vum Knuth fir 0x $ 3,00. Am Moment hu mer nach Ech krut e Scheck vum Knuth fir 0x $ 3,00 Eenziffer Multiplikatioun: Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00, Ech krut e Scheck vum Knuth fir 0x $ 3,00. Loosst eis elo addĂ©ieren an subtrahĂ©ieren Ech krut e Scheck vum Knuth fir 0x $ 3,00. No e puer ËmĂ€nnerungen, dĂ©i ech als Übung fir de Lieser loossen, stellt sech eraus Ech krut e Scheck vum Knuth fir 0x $ 3,00 - nĂ«mmen drĂ€i Eenziffer Multiplikatioune! (Et ginn e puer konstante Koeffizienten, awer si kĂ«nnen nĂ«mme berechent ginn andeems d'Zifferen addĂ©ieren a verschwannen).

Frot net fir Beweis, awer Karatsuba Algorithmus (rekursiv generaliséiert aus dem Beispill uewen) verbessert op der traditionell multiplikasjonsmetod mat Ech krut e Scheck vum Knuth fir 0x $ 3,00 Operatiounen virun Ech krut e Scheck vum Knuth fir 0x $ 3,00. Notéiert w.e.g. datt dëst eng real Verbesserung vum Algorithmus ass, net eng Optimiséierung fir mental Berechnungen. TatsÀchlech ass den Algorithmus net gëeegent fir mental Arithmetik, well et grouss OverheadkÀschte fir rekursive Operatiounen erfuerdert. ZousÀtzlech wÀert den Effekt net ganz manifestéieren bis d'Zuelen grouss genuch ginn (glécklecherweis ass de Karatsuba Algorithmus duerch nach méi séier Methoden ersat ginn: am MÀerz 2019 gouf en Algorithmus publizéiert deen nëmmen erfuerdert n log n Multiplikatioune; Beschleunegung gëllt nëmme fir onvirstellbar grouss Zuelen).

DĂ«sen Algorithmus gĂ«tt op SĂ€it beschriwwen 295 vum Volume XNUMX, Semi-Numerical Algorithms. Do schreift de Knuth: "Et ass virwĂ«tzeg datt dĂ«s Iddi nĂ«mmen am Joer entdeckt gouf 1962 Joer", wĂ©i en Artikel deen dem Karatsuba sĂ€in Algorithmus beschreift publizĂ©iert gouf. Awer! 1995 huet de Karatsuba e Pabeier "Computational Complexity" publizĂ©iert, deen e puer Saache seet: 1) Ă«m 1956 huet de Kolmogorov virgeschloen datt d'Multiplikatioun net a manner wĂ©i Ech krut e Scheck vum Knuth fir 0x $ 3,00 SchrĂ«tt; 2) an 1960 Joer Karatsuba op de Seminar deelgeholl wou Kolmogorov seng Hypothes nÂČ presentĂ©iert. 3) "A genee enger Woch" entwĂ©ckelt Karatsuba den "deelen an eroberen" Algorithmus; 4) an 1962 Kolmogorov geschriwwen a publizĂ©iert en Artikel am Numm vun Karatsuba mat enger Beschreiwung vum Algorithmus. "Ech hunn nĂ«mmen iwwer dĂ«sen Artikel erausfonnt nodeems en nei publizĂ©iert gouf."

Also de Feeler ass, datt amplaz 1962 muss spezifizéiert ginn 1960 Joer. Dat ass alles.

Analyse

Feeler ze fannen erfuerdert keng speziell FĂ€egkeeten.

  1. Den éischte Feeler war sou trivial wéi méiglech a war op enger relativ sichtbarer Plaz (Ufank vum Kapitel). All Idiot hÀtt et fonnt; Ech hu just erausgestallt datt ech deen Idiot sinn.
  2. Den zweeten Tippfeeler ze fannen erfuerdert Gléck a FlÀch, awer net FÀegkeet. Den Index fir "Williams" steet op der virlÀschter SÀit vum Volume, e relativ prominenten Deel vum Buch. Ech war just duerch den Index gebliedert (et ass net esou pathetesch wéi et kléngt, well et am Knuth sengen Indexer verstoppt sinn Ouschtereeër. Zum Beispill ginn et Entréen op arabesch an op HebrÀesch, déi allebéid op d'SÀit 66 weisen. Mee déi SÀit schwÀtzt net vun entweder Sprooche bezitt sech amplaz op "Sproochen déi vu riets op lénks gelies ginn"). An den zweeten Numm huet meng Opmierksamkeet gefaang. Well ech normalerweis Wikipedia liesen, hunn ech de Robin Williams gekuckt an eng Diskrepanz gemierkt.
  3. Ech wënschen ech kéint soen datt ech sérieux Fuerschung gemaach hunn fir en historesche Feeler ze fannen, awer wierklech hunn ech just gekuckt Wikipedia SÀit iwwer Karatsuba's Algorithmus. Déi éischt Zeilen soen: "De Karatsuba Algorithmus ass e schnelle Multiplikatiouns Algorithmus. Entdeckt vum Anatoly Karatsuba am Joer 1960 a publizéiert am Joer 1962." Duerno war et just nach zwee an zwee dobÀi.

An Zukunft géif ech gÀren e méi bedeitende KÀfer fannen, besonnesch am Knuth sengem Code. Ech wéilt och e Feeler am éischte Volume vu Fundamental Algorithms fannen. VlÀicht hÀtt ech et fonnt, mee fir e puer Grond huet d'lokal Bibliothéik nëmmen BÀnn 2, 3 an 4A.

Finanziell Fakten:

  • Am Ganzen besteet mĂ€i BĂ€itrag zu TAOCP aus nĂ«mmen drĂ€i Personnagen: eng Zousatz s, Ersatz m op n Đž 2 op 0. pa $ 2,56, dĂ«s sinn e puer flott lukrativ Symboler; Wann Dir esou Sue bezuelt kritt, gĂ©if en Artikel vun 1000 Wierder (an der Moyenne vu vĂ©ier Zeechen) Iech zĂ©ng Grand verdĂ©ngen.
  • Mat drĂ€i hexadezimal Dollar sinn ech, zesumme mat 29 anere Bierger, op der 69. Plaz op der LĂ«scht vun de rĂ€ichste Depoter vun der San Serriff Bank gebonnen (vum 1. Mee 2019).

Aner Diskussiounen iwwer Schecken aus Knuth

  • WĂ©i kritt een e Scheck vum Knuth

    Allgemeng Empfehlungen fir Feeler am Knuth seng Bicher ze fannen. Meeschtens betreffen se technesch Feeler, déi ech net hunn. Et gëtt e Virschlag do, deen ech eescht geholl hunn:

    Et ass am beschten ze waarden bis Dir eng Rei vu Feeler gesammelt hutt fir ofzeginn. Andeems Dir e puer richteg awer net ganz wÀertvoll Feeler kombinéiert, erhéicht Dir d'Wahrscheinlechkeet datt ee vun hinnen tatsÀchlech als Feeler oder Berodung ugesi gëtt. Wann Dir Fehler ee fir eng Kéier ofgitt, kann all eenzel individuell verworf ginn.

    Ech wollt net nëmmen Blödsinn Schreiffehler schécken, awer hunn de Rot geholl an de Bréif eréischt geschéckt, wann ech en historesche Feeler fonnt hunn, dee seriös genuch ausgesinn huet.

  • Ashutosh Mehra Schecken

    Ashutosh Mehra ass den drëtt rÀichsten Investisseur zu San Serriff mat engem enorme NettowÀert vun 0x $ 207.f0 am BoSS.

  • Check fir e puer net-funktionell KĂ€fere am real TeX Code
  • Verschiddenes: #1 #2 #3 #4 #5 #6

Source: will.com

Kaaft zouverlĂ€sseg Hosting fir Site mat DDoS Schutz, VPS VDS Server đŸ”„ Kaaft zouverlĂ©issegt WebsĂ€ithosting mat DDoS-Schutz, VPS VDS Server | ProHoster