Компьютерлік бағдарламалау өнері - The Art of Computer Programming

Компьютерлік бағдарламалау өнері
ArtOfComputerProgramming.jpg
Компьютерлік бағдарламалау өнері, 1 том: Іргелі алгоритмдер
АвторДональд Кнут
ЕлАҚШ
ТілАғылшын
ЖанрКөркем әдебиет
Монография
БаспагерАддисон-Уэсли
Жарияланған күні
1968– (кітап әлі толық емес)
Медиа түріБасып шығару (Қатты мұқабалы )
ISBN0-201-03801-3
519
LC сыныбыQA76.75

Компьютерлік бағдарламалау өнері (TAOCP) жан-жақты монография жазылған информатик Дональд Кнут көптеген түрлерін қамтиды бағдарламалау алгоритмдер және оларды талдау.

Кнут алғашында он екі тараудан тұратын жеке кітап ретінде ойлап тапқан жобаны 1962 жылы бастады. Сол кезде жеті томдық болады деп күтілген алғашқы үш том 1968, 1969 және 1973 жылдары жарық көрді. Жұмыс томмен басталды. 4 1973 жылы, бірақ 1977 жылы теру жұмыстары үшін уақытша тоқтатылды. 4А томының соңғы көшірмесін жазу 2001 жылы ұзақ уақыттан басталды, ал алғашқы интерактивтік алдын-ала 2А, кейінірек 2001 жылы пайда болды.[1] 4-томның алғашқы жарияланған бөлігі қағаз бетінде солай пайда болды Fascicle 2005 жылы 2. 4-том, 0-4-ші фасадтарды біріктіретін, қатты дискінің 4А томы 2011 жылы жарық көрді. 4-том, 6-фасадль («Қанықтылық») 2015 жылдың желтоқсанында шыққан; 4-том, Fascicle 5 («Mathematical Preliminaries Redux; Backtracking; Dancing Links») 2019 жылдың қараша айында шыққан.

5 және 6 фасадтар 4В томының алғашқы үштен екісін құрайды деп күтілуде. Кнут 4В томын шығарудың болжамды күнін жарияламады, дегенмен оның 4А томында қолданылатын әдісі қатты қағаздың көлемін онда бар қағаздан жасалған фасондар шыққаннан кейін шығару болды. Жақын мерзімді баспагердің бағалауы бойынша, шығарылым күні 2019 жылдың мамырында немесе маусымында болды, бұл дұрыс емес болып шықты.[2][3]

Тарих

Дональд Кнут 2005 ж

Westinghouse Talent Search стипендиясын жеңіп алғаннан кейін, Кнут Кейс Технологиялық Институтына оқуға түсті (қазір Кейс Батыс резервтік университеті ), егер оның өнімділігі соншалықты керемет болса, факультет оны бакалавриат бітіргеннен кейін ғылым магистрі дәрежесіне беруге дауыс берді. Жазғы демалысында Кнут жалданды Берроуз корпорациясы жазу құрастырушылар, оның жаз айларында толық профессорлар бір жыл бойы жұмыс істегеннен көп ақша тапты.[4] Осындай ерліктер Кнутты математика кафедрасының талқылау тақырыбына айналдырды Ричард С.Варга.

1962 жылы қаңтарда, ол Калтехтегі математика факультетінің аспиранты кезінде Кнутқа келді Аддисон-Уэсли компилятор дизайны туралы кітап жазу және ол үлкен көлемді ұсынды. Сол күні ол 12 тараудың тізімін ойлап тапты. 1962 жылдың жазында ол UNIVAC үшін FORTRAN компиляторында жұмыс істеді. Осы уақыт ішінде ол математикалық анализ ойлап тапты сызықтық зондтау, оны материалды сандық тәсілмен ұсынуға сендірді. 1963 жылдың маусымында PhD докторын алғаннан кейін ол өзінің қолжазбасымен жұмыс істей бастады, оның алғашқы жобасын 1965 жылы маусымда аяқтады, сағ. 3000 қолмен жазылған парақтар.[5] Ол бес қолмен жазылған беттер бір баспа бетіне айналады деп ойлаған, бірақ оның баспагері оның орнына1 12 бір баспа бетіне аударылған қолмен жазылған парақтар. Бұл оның шамамен болғандығын білдірді 2000 алғашқы үш томның көлеміне сәйкес келетін материалдардың басылған беттері. Баспа аспиранттан мұндай жобаны қабылдауға қобалжыды. Осы кезде Кнут баспаның ғылыми кеңесшісі болған Ричард С.Варгадан қолдау тапты. Варга қонаққа келді Ольга Таусский-Тодд және Джон Тодд кезінде Калтех. Варганың қолдауымен баспагер Кнуттың кеңейтілген жоспарларын қабылдады. Кітап кеңейтілген нұсқасында әрқайсысы бір-екі тараудан тұратын жеті том болып басылып шығады.[6] Материалдың өсуіне байланысты 4-томның жоспары содан кейін кеңейіп, 4А, 4В, 4С, 4D және одан да көп томдарды қамтыды.

1976 жылы Кнут 2 томның екінші басылымын дайындады теру қайтадан, бірақ бірінші басылымда қолданылатын тип стилі (деп аталады) ыстық түрі ) бұдан былай қол жетімді болмады. 1977 жылы ол біраз уақытты неғұрлым қолайлы нәрсе жасауға жұмсауға шешім қабылдады. Сегіз жылдан кейін ол бірге оралды ТEX, ол қазіргі уақытта барлық томдарда қолданылады.

Деп аталатын ұсыныс Knuth марапатын тексеру «бір он алтылық долларға» тең (100HEX 16-негіз цент, жылы ондық, табылған қателер үшін $ 2,56 құрайды) және келесі қателердегі бұл қателерді түзету жұмыстың алғашқы жарияланғаннан кейін ұзақ жылтыратылған және әлі де беделді сипатта болуына ықпал етті. Көлемдердің тағы бір сипаты - жаттығулардың қиындығының өзгеруі. Кнуттың 0-ден 50-ге дейінгі жаттығуларды бағалауға арналған сандық қиындық шкаласы бар, мұнда 0 - тривиальды, ал 50 - қазіргі заманғы зерттеулерде ашық сұрақ. [7]

Кнуттың арнауында:

Бұл кітаптар сериясы мейірімділікпен арналған
дейін 650 типті компьютер орнатылғаннан кейін
Кейс-технологиялар институты,
Мен онымен көптеген жағымды кештерді өткіздім.[a]

Кітаптағы ассемблер тілі

Кітаптардағы барлық мысалдар «деп аталатын тілді қолданадыMIX құрастыру тілі », ол гипотетикалық MIX компьютерінде жұмыс істейді. Қазіргі уақытта MIX компьютері MMIX компьютер, бұл а RISC нұсқасы. Сияқты бағдарламалық жасақтама GNU MDK MIX архитектурасының эмуляциясын қамтамасыз ету үшін бар. Кнут қолдануды қарастырады құрастыру тілі алгоритмдердің жылдамдығы мен жадын бағалауға қажет.

Сыни жауап

Кнут 1974 жылы марапатталды Тюринг сыйлығы «-ге қосқан үлкен үлесі үшін алгоритмдерді талдау […], Атап айтқанда өзінің танымал кітаптары арқылы «компьютерлік бағдарламалау өнеріне» қосқан үлесі үшін осы атаумен ».[8] Американдық ғалым ХХ ғасырға сілтеме жасай отырып, бұл жұмысты «Ғылымның ғасырын қалыптастырған 100-ге жуық кітаптың» қатарына қосты,[9] және информатика қоғамдастығы шеңберінде ол өз пәнін алғашқы және ең жақсы кешенді емдеу ретінде қарастырылады. 1 томның үшінші басылымының дәйексөзінің мұқабалары Билл Гейтс «Егер сіз өзіңізді өте жақсы бағдарламашы деп ойласаңыз ... оқыңыз (Кнуттың) Компьютерлік бағдарламалау өнері... Егер сіз бәрін оқи алатын болсаңыз, маған міндетті түрде резюме жіберіңіз. «[10] The New York Times оны «мамандықты анықтайтын трактат» деп атады.[11]

Көлемдер

Аяқталды

  • 1 том - Іргелі алгоритмдер
  • 2 том - жартылай алгоритмдер
  • 7 тарау - Комбинаторлық іздеу (1 бөлім)

Жоспарланған

  • 4В том ... - Комбинаторлық алгоритмдер (бірнеше томдықта шыққан 7 & 8 тараулар)
  • 7 тарау - Комбинаторлық іздеу (жалғасы)
  • 8 тарау Рекурсия
  • 5 том - Синтаксистік алгоритмдер (2017 жылғы жағдай бойынша), шығарылымы 2025 жылға есептелген)

Тараудың қысқаша сипаттамалары

Аяқталды

1 том - Іргелі алгоритмдер

  • 1 тарау - Негізгі ұғымдар
  • 2 тарау - Ақпараттық құрылымдар
    • 2.1. Кіріспе
    • 2.2. Сызықтық тізімдер
      • 2.2.1. Стек, кезек және дек
      • 2.2.2. Реттік бөлу
      • 2.2.3. Байланыстырылған бөлу
      • 2.2.4. Дөңгелек тізімдер
      • 2.2.5. Екі еселенген тізімдер
      • 2.2.6. Массивтер мен ортогоналды тізімдер
    • 2.3. Ағаштар
      • 2.3.1. Екілік ағаштарды айналып өту
      • 2.3.2. Ағаштардың екілік ағаштары
      • 2.3.3. Ағаштардың басқа өкілдіктері
      • 2.3.4. Ағаштардың негізгі математикалық қасиеттері
        • 2.3.4.1. Ақысыз ағаштар
        • 2.3.4.2. Бағдарланған ағаштар
        • 2.3.4.3. «Шексіздік леммасы»
        • 2.3.4.4. Ағаштарды санау
        • 2.3.4.5. Жол ұзындығы
        • 2.3.4.6. Тарих және библиография
      • 2.3.5. Тізімдер және қоқыстарды жинау
    • 2.4. Көп қабатты құрылымдар
    • 2.5. Динамикалық сақтауды бөлу
    • 2.6. Тарих және библиография

2 том - жартылай алгоритмдер

  • 3 тарау - кездейсоқ сандар
    • 3.1. Кіріспе
    • 3.2. Біркелкі кездейсоқ сандарды құру
      • 3.2.1. Сызықтық келісу әдісі
        • 3.2.1.1. Модульді таңдау
        • 3.2.1.2. Мультипликаторды таңдау
        • 3.2.1.3. Потенциал
      • 3.2.2. Басқа әдістер
    • 3.3. Статистикалық тесттер
      • 3.3.1. Кездейсоқ деректерді зерттеудің жалпы сынақ процедуралары
      • 3.3.2. Эмпирикалық тесттер
      • 3.3.3. Теориялық тесттер
      • 3.3.4. Спектралды тест
    • 3.4. Кездейсоқ шамалардың басқа түрлері
      • 3.4.1. Сандық үлестірулер
      • 3.4.2. Кездейсоқ іріктеу және араластыру
    • 3.5. Бұл не Кездейсоқ реттілік ?
    • 3.6. Қысқаша мазмұны
  • 4 тарау - Арифметика

3 том - Сұрыптау және іздеу

  • 5 тарау - Сұрыптау
    • 5.1. Комбинаторлық қасиеттері Рұқсаттар
      • 5.1.1. Инверсиялар
      • 5.1.2. Multiset-тің рұқсаттары
      • 5.1.3. Жүгіреді
      • 5.1.4. Кесте және қатысу
    • 5.2. Ішкі сұрыптау
      • 5.2.1. Кірістіру бойынша сұрыптау
      • 5.2.2. Ауыстыру арқылы сұрыптау
      • 5.2.3. Таңдау бойынша сұрыптау
      • 5.2.4. Біріктіру арқылы сұрыптау
      • 5.2.5. Тарату бойынша сұрыптау
    • 5.3. Оңтайлы сұрыптау
      • 5.3.1. Минималды-салыстыру бойынша сұрыптау
      • 5.3.2. Минималды-салыстыру біріктіру
      • 5.3.3. Минималды-салыстырмалы таңдау
      • 5.3.4. Сұрыптауға арналған желілер
    • 5.4. Сыртқы сұрыптау
      • 5.4.1. Multiway біріктіру және ауыстыруды таңдау
      • 5.4.2. Полифазаның бірігуі
      • 5.4.3. Каскадты біріктіру
      • 5.4.4. Таспаны артқа қарай оқу
      • 5.4.5. Тербелмелі сұрыптау
      • 5.4.6. Таспаны біріктіру үшін практикалық мәселелер
      • 5.4.7. Сыртқы радикалды сұрыптау
      • 5.4.8. Екі таспалы сұрыптау
      • 5.4.9. Дискілер мен барабандар
    • 5.5. Қысқаша мазмұны, тарихы және библиографиясы
  • 6 тарау Іздеу
    • 6.1. Тізбектелген іздеу
    • 6.2. Салыстыру арқылы іздеу Кілттер
      • 6.2.1. Тапсырыс берілген кестені іздеу
      • 6.2.2. Ағаштарды екілік іздеу
      • 6.2.3. Теңдестірілген ағаштар
      • 6.2.4. Multiway Trees
    • 6.3. Сандық іздеу
    • 6.4. Хэштеу
    • 6.5. Екінші кілттерді іздеу

4А том - Комбинаторлық алгоритмдер, 1 бөлім

Жоспарланған

Көлемі 4B, 4C, 4D - Комбинаторлық алгоритмдер

5 том - Синтаксистік алгоритмдер

2017 жылғы жағдай бойынша, 2025 жылы шығаруға арналған

6 том - Контекстсіз тілдер теориясы[12]

7 том - Құрастырушы техникасы

Ағылшын басылымдары

Ағымдағы басылымдар

Көлемі бойынша кезектегі басылымдар:

  • Компьютерлік бағдарламалау өнері, 1-4А томдары. Үшінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 2011), 3168б. ISBN  978-0-321-75104-1, 0-321-75104-3
    • 1 том: Іргелі алгоритмдер. Үшінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 1997), xx + 650pp. ISBN  978-0-201-89683-1, 0-201-89683-4. Қате: [1] (2011-01-08), [2] (2020-03-26, 27 басып шығару ). Адденда: [3] (2011).
    • 2 том: Жартылай алгоритмдер. Үшінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 1997), xiv + 762pp. ISBN  978-0-201-89684-8, 0-201-89684-2. Қате: [4] (2011-01-08), [5] (2020-03-26, 26-шы баспа). Адденда: [6] (2011).
    • 3 том: Сұрыптау және іздеу. Екінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 1998), xiv + 780pp. + Бүктеме. ISBN  978-0-201-89685-5, 0-201-89685-0. Қате: [7] (2011-01-08), [8] (2020-03-26, 27-ші баспа). Адденда: [9] (2011).
    • 4А том: Комбинаторлық алгоритмдер, 1 бөлім. Бірінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 2011), xv + 883pp. ISBN  978-0-201-03804-0, 0-201-03804-8. Қате: [10] (2020-03-26,? Басып шығару).
  • 1 том, 1 фасад: MMIX - Жаңа мыңжылдыққа арналған RISC компьютері. (Аддисон-Уэсли, 2005-02-14) ISBN  0-201-85392-2. Қате: [11] (2020-03-16) (1 томның төртінші басылымында болады)
  • 4 том, 5 фасад: Redux математикалық алғышарттары; Шегіну; Би сілтемелері. (Аддисон-Уэсли, 2019-11-22) xiii + 382pp, ISBN  978-0-13-467179-6. Қате: [12] (2020-03-27) (4В томының бөлігі болады)
  • 4 том, 6 фасад: қанықтылық. (Аддисон-Уэсли, 2015-12-08) xiii + 310pp, ISBN  978-0-13-439760-3. Қате: [13] (2020-03-26) (4В томының бөлігі болады)

Алдыңғы басылымдар

Толық томдар

Бұл томдардың орнын жаңа басылымдар алмастырды және күн тәртібіне сәйкес келеді.

  • 1 том: Іргелі алгоритмдер. Бірінші басылым, 1968 ж., Xxi + 634pp, ISBN  0-201-03801-3.[13]
  • 2 том: Жартылай алгоритмдер. Бірінші басылым, 1969 ж., Xi + 624pp, ISBN  0-201-03802-1.[13]
  • 3 том: Сұрыптау және іздеу. Бірінші басылым, 1973 ж., Xi + 723pp + бүктеме, ISBN  0-201-03803-X. Қате: [14].
  • 1 том: Іргелі алгоритмдер. Екінші басылым, 1973 ж., Xxi + 634pp, ISBN  0-201-03809-9. Қате: [15].
  • 2 том: Жартылай алгоритмдер. Екінші басылым, 1981 ж., Xiii + 688pp, ISBN  0-201-03822-6. Қате: [16].
  • Компьютерлік бағдарламалау өнері, 1-3 томдықтар. Екінші басылым (Рединг, Массачусетс: Аддисон-Уэсли, 1998), бб. ISBN  978-0-201-48541-7, 0-201-48541-9

Фасикулдар

4 томКеліңіздер керемет 0–4 қайта қаралып, 4А том болып басылды:

  • 4 том, Фаслик 0: Комбинаторлық алгоритмдер мен логикалық функцияларға кіріспе. (Addison-Wesley Professional, 2008-04-28) vi + 240pp, ISBN  0-321-53496-4. Қате: [17] (2011-01-01).
  • 4 том, 1 фасад: биттік тәсілдер мен тәсілдер; Шешімдердің екілік диаграммалары. (Addison-Wesley Professional, 2009-03-27) viii + 260pp, ISBN  0-321-58050-8. Қате: [18] (2011-01-01).
  • 4 том, Фаслика 2: Барлық туплер мен пермутацияларды құру. (Аддисон-Уэсли, 2005-02-14) v + 127pp, ISBN  0-201-85393-0. Қате: [19] (2011-01-01).
  • 4 том, 3 фасад: Барлық тіркесімдер мен бөлімдерді құру. (Аддисон-Уэсли, 2005-07-26) vi + 150pp, ISBN  0-201-85394-9. Қате: [20] (2011-01-01).
  • 4 том, 4 фасад: Барлық ағаштарды құру; Комбинаторлық буын тарихы. (Аддисон-Уэсли, 2006-02-06) vi + 120pp, ISBN  0-321-33570-8. Қате: [21] (2011-01-01).

4 томКеліңіздер 5-6 фасциклдер 4В томының бөлігі болады:

  • 4 том, 5 фасад: Redux математикалық алғышарттары; Шегіну; Би сілтемелері. (Аддисон-Уэсли, 2019-11-22) xiii + 382pp, ISBN  978-0-13-467179-6. Қате: [22] (2020-03-27)
  • 4 том, 6 фасад: қанықтылық. (Аддисон-Уэсли, 2015-12-08) xiii + 310pp, ISBN  978-0-13-439760-3. Қате: [23] (2020-03-26)

Фасикулалар алдындағы

4 томКеліңіздер алдыңғы фазалар 5A, 5B және 5C қайта қаралып, 5 фасонды ретінде жарияланды.

4 томКеліңіздер алдын-ала 6-фаслика қайта қаралып, 6-фасция ретінде жарияланды.

Сондай-ақ қараңыз

Әдебиеттер тізімі

Ескертулер

  1. ^ Арналу бірінші басылымда сәл басқаша жазылған.

Дәйексөздер

  1. ^ 3-қораптың 1-папкасына арналған ескерту
  2. ^ Аддисон-Уэсли Пирсон веб-парағы
  3. ^ Pearson білім беру
  4. ^ Франа, Филипп Л. (2001-11-08). «Дональд Э. Кнутпен сұхбат». hdl:11299/107413.
  5. ^ Дональд Кнут, Осы аптадағы Citation Classic, Қазіргі мазмұны, 34-нөмір (1993 ж. 23 тамыз), 8 бет.
  6. ^ Альберс, Дональд Дж. (2008). «Дональд Кнут». Альберсте Дональд Дж .; Александрсон, Джеральд Л. (ред.). Математикалық адамдар: профильдер және сұхбаттар (2 басылым). A K Peters. ISBN  1-56881-340-6.
  7. ^ «Кнутты оқу жылы туралы ойлар». infinitepartitions.com. Алынған 2020-07-25. Бірінші томдағы барлық проблемаларды мен жұмыс істедім немесе жұмыс істеуге тырыстым. Кейбір жағдайларда мен сұрақтың не сұрағысы келетінін түсінуге тырыстым. Кейбір жағдайларда мен оны орындай алмадым (өзіңіз сынап көрмейінше мені айыптамаңыз). Әрбір есепке 0-50-ге дейінгі қиындық рейтингі беріледі, егер 0 шамалы, ал 50 «шешілмеген зерттеу проблемасы» болса (бірінші басылымда Ферманың соңғы теоремасы 50-ге теңестірілген, бірақ Эндрю Уайлс дәлелдегендіктен, ол 45 қолданыстағы редакцияда). Менің ойымша, мен <20 деп бағаланған мәселелердің көпшілігін шеше алдым - ол соққыға жетті және одан тысқары қалды Мәселелердің көпшілігі 20-30 қиындық диапазонына түсті, бірақ Кнуттың «қиын» идеясы субъективті, ал ол орташа қиындық деп санайтын мәселелер менің миымды аздап созып жіберді. Мен ешқашан Эверест шыңына шыққан емеспін, бірақ мен барлық ауыр сынақты сезінемін деп ойлаймын: оны бастан өткергенде ауыр, бірақ шыңға жеткенде жеңіске жетеді.
  8. ^ «Дональд Э. Кнут - А. М. Тюринг сыйлығының иегері». AM Turing. Алынған 2017-01-25.
  9. ^ Моррисон, Филипп; Моррисон, Филис (қараша-желтоқсан 1999). «Ғылым ғасырын қалыптастырған 100-ге жуық кітап». Американдық ғалым. Сигма Си, ғылыми зерттеулер қоғамы. 87 (6). Архивтелген түпнұсқа 2008-08-20. Алынған 2008-01-11.
  10. ^ Уайнбергер, Матт. «Билл Гейтс бір кездері» егер сіз осы өте қиын кітапты бітірсеңіз, маған міндетті түрде түйіндеме жіберіңіз «деді». Business Insider. Алынған 2016-06-13.
  11. ^ Лор, Стив (2001-12-17). «Фрэнсис Э. Холбертон, 84 жаста, алғашқы компьютерлік бағдарламашы». The New York Times. Алынған 2010-05-17.
  12. ^ «TAOCP - болашақ жоспарлары».
  13. ^ а б Уэллс, Марк Б. (1973). «Шолу: Компьютерлік бағдарламалау өнері, 1 том. Іргелі алгоритмдер және 2 том. Семинорлық алгоритмдер авторы Дональд Э. Кнут » (PDF). Американдық математикалық қоғамның хабаршысы. 79 (3): 501–509. дои:10.1090 / s0002-9904-1973-13173-8.

Дереккөздер

Сыртқы сілтемелер