{
  "title": "算法的故事",
  "projectNumber": 5,
  "recovered": 29,
  "supplemented": [
    29
  ],
  "missing": [],
  "chapters": [
    {
      "number": 1,
      "title": "第一章：数组与链表——一场关于秩序与自由的战争",
      "messageId": "30bc23fd-4adf-48b4-8b2b-8ce930a4d612",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "04fc569e966045bddc9a9cbe849b652cff5168bc5b2bab12c9c0d9071baf19a9",
      "note": ""
    },
    {
      "number": 2,
      "title": "第二章：栈与递归——为什么计算机必须记住自己从哪里来？",
      "messageId": "b2337543-18be-4d6d-b914-12f7d25fd046",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "90d36ff83169888d10646c6e67e4dc9d90c6142341992d5f0faa84c8d55503a6",
      "note": ""
    },
    {
      "number": 3,
      "title": "第三章：队列——一台价值350万美元的计算机，为什么还要排队？",
      "messageId": "84dcbb58-41aa-4415-9363-f286a87207f6",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "f1c9919270ee95b51790d674806bce866dd98af047c9ab8862c5ba562e682d5e",
      "note": ""
    },
    {
      "number": 4,
      "title": "第四章：哈希表——一个裁缝如何改变计算机寻找信息的方式",
      "messageId": "73502c56-c193-4618-9935-df1b2b6b14d4",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "5c39962aa070619fe94fc58214fa34ed2e034e26d119e1bb938594738dd52d24",
      "note": ""
    },
    {
      "number": 5,
      "title": "第五章：树的革命——两个苏联数学家，如何让计算机学会保持平衡？",
      "messageId": "612b853a-3cba-4679-bafd-c4bb650ca618",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "fd8cc408d8d86ad1c1d69a288c3de9390a6909850aca757b5837fef78fdc1c31",
      "note": ""
    },
    {
      "number": 6,
      "title": "第六章：七座桥与一杯咖啡——人类如何发明寻找最短路径的算法？",
      "messageId": "c635d49f-d08c-4c10-839f-5a66f0507490",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "ba660b275c488adeaca4a75f30f135d478542ecb0ec4d9780282d0e227afd365",
      "note": ""
    },
    {
      "number": 7,
      "title": "第七章：排序算法的战争——一个年轻人躺在莫斯科的沙发上，改变了计算机世界",
      "messageId": "3b2ee900-94da-47c8-9018-de5275ea7bda",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "d63bb098338122d999e1ac6eb44f461bb0532707371f9eb85ae70a233d029afa",
      "note": ""
    },
    {
      "number": 8,
      "title": "第八章：动态规划——一位数学家为什么给自己的伟大发明起了个奇怪的名字？",
      "messageId": "a7690682-aacd-4ae5-9f5d-4cf141cb140e",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "28252a5d3ab3e9f5423fb05f470c71a8836219b2d93eb3ba056d8efa4c3e6e6a",
      "note": ""
    },
    {
      "number": 9,
      "title": "第九章：贪心算法——1926年，一位数学家如何用最便宜的电线连接整片地区？",
      "messageId": "195416ad-ad07-4812-8c1e-cec91793ec4a",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "0957f23a2131c8beb662556af3e0102232a4585c6eb09ef818407b223736623a",
      "note": ""
    },
    {
      "number": 10,
      "title": "第十章：回溯算法——1848年，一位棋手提出了连高斯都没能完全解开的谜题",
      "messageId": "30eafafc-3d1a-49bc-b4a2-575a9c46c0a6",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "667f5ec089aa3d32b0e2ef7a6e222f0910bebc42f90716718d5ba636aeb5290e",
      "note": ""
    },
    {
      "number": 11,
      "title": "第十一章：字符串匹配——1969年，一位程序员发现计算机竟然不会利用自己的记忆",
      "messageId": "1699e89e-dcdb-4ad8-bf0f-9eb5af7c82eb",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "13ec5d9a58a205d7eab8ddc8b419ea683633a67d26c2c951d946db61d330bff3",
      "note": ""
    },
    {
      "number": 12,
      "title": "第十二章：压缩算法——1948年，信息究竟能被压缩到多小？",
      "messageId": "1fa2e024-731d-486f-93c4-ef587f356d28",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "dbabe45aeab118bbb850a806f12999b4c8720a06b81d7c4911693aad408a77a7",
      "note": "原文从第一幕开始；章标题依据第十一章预告恢复，未补写导语。"
    },
    {
      "number": 13,
      "title": "第十三章：LZ77 与 ZIP——1977年，两位科学家决定让计算机不再重复保存同一句话",
      "messageId": "c0547317-8758-4468-abb1-af86064bc1c1",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "1e31a6629f3bf3ceb31acaa1bb91de04d51e562b10a4f48c214417ae2444c36c",
      "note": ""
    },
    {
      "number": 14,
      "title": "第十四章：密码学的革命——1976年，为什么公开一把钥匙，反而能保护秘密？",
      "messageId": "1a861b88-256c-4708-a63a-2289991ba4b9",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "a6415348f3da2755c712411a29eb7ceaa2878e9ee4077e529232206ef1ecc7a2",
      "note": ""
    },
    {
      "number": 15,
      "title": "第十五章：一致性哈希——1997年，六位研究者如何让服务器扩容不再引发数据大迁徙？",
      "messageId": "c9830a1d-f89c-471c-a6f9-5df4744db140",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "bb12855b9cee8459ddf295b4daefba29f647e5c299d067d3f1e48cc312b7216e",
      "note": ""
    },
    {
      "number": 16,
      "title": "第十六章：拜占庭将军——1982年，为什么三个人竟然无法保证做出同一个决定？",
      "messageId": "c78edc3f-47aa-4fa1-882d-73738c489e7e",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "cd249b4fb73117da7cd56e600b3d762dd0c401818314e0393c5927450141b167",
      "note": ""
    },
    {
      "number": 17,
      "title": "第十七章：布隆过滤器——1970年，一位科学家为什么故意发明一种会判断错误的数据结构？",
      "messageId": "f1656830-57bc-4ed4-9cd1-1fc06eff94bf",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "17a314c674688d0fd9d9cca93f878b07dfc296c6b10f58541acd4b906d6574e0",
      "note": ""
    },
    {
      "number": 18,
      "title": "第十八章：跳表——1989年，一位计算机科学家为什么决定用抛硬币代替平衡树的旋转？",
      "messageId": "1f3a018c-b1c6-48ff-9532-c66fb326f6dc",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "6f1fa9fd0a7c6ecb202cf25fef031edd61d148f07a2c42be8ec1020af0ff5cc6",
      "note": ""
    },
    {
      "number": 19,
      "title": "第十九章：缓存算法的战争——1969年，为什么给计算机增加内存，反而可能让它变慢？",
      "messageId": "d26a3672-3255-434f-aed9-1df056653cdc",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "fbbe689253e7796c282733ed2d847a271a032cab4abf1fe89f08881159871a8f",
      "note": ""
    },
    {
      "number": 20,
      "title": "第二十章：数据库事务——1970年代，为什么一笔转账绝不能只成功一半？",
      "messageId": "3c77d4d4-9c17-49ac-9b41-b6213935f6d9",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "4c61fcc5080b180e1e8ba21c6582aa385ddbac6c7f665959f96a049293e3ccea",
      "note": ""
    },
    {
      "number": 21,
      "title": "第二十一章：死锁——1960年代，为什么两个程序都没有出错，整个计算机却停止了工作？",
      "messageId": "ecda72e6-54d3-4027-a0f3-f85fbe8b13b5",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "cf2c420a29f746c886fb8e56c8daa5ca445164e640415e523d61f93a50b74102",
      "note": ""
    },
    {
      "number": 22,
      "title": "第二十二章：垃圾回收——1960年，为什么让计算机自动释放内存，反而创造了更复杂的算法？",
      "messageId": "990c85e9-38db-4b92-8b7a-8b6e05363d5a",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "6f5d44fa54549e78b86e793ff21937e469e9e6f10e131297a70ac48552f55f9c",
      "note": ""
    },
    {
      "number": 23,
      "title": "第二十三章：一致性模型——1979年，为什么写入已经成功，另一台计算机却仍然读到了旧数据？",
      "messageId": "c0e43b37-642a-4b40-a75b-7da30aa0ba0f",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "53ed0bff800552180f9dd17d7d821cef31b8dbfc10d9d2371ad17f8b3fb9f244",
      "note": ""
    },
    {
      "number": 24,
      "title": "第二十四章：CRDT——2011年，为什么两台断网的计算机，最后竟然可以自动合并各自的修改？",
      "messageId": "cd99b764-235a-4187-b82a-f0af12ed20aa",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "0aab0cf4427cda1fa800c0d40b6ac5f6bd4a57d23391cc857987f1f6168c8bf0",
      "note": ""
    },
    {
      "number": 25,
      "title": "第二十五章：向量时钟——1988年，为什么两台计算机的时间戳不同，却不能证明谁先谁后？",
      "messageId": "2eb1e6ae-e439-4cab-a9db-ef4933f74774",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "ee94e22092a265e92b8c4d0e1f8d57e8012cc6620857047b7d936951ed9ec280",
      "note": ""
    },
    {
      "number": 26,
      "title": "第二十六章：分布式快照——1985年，为什么不暂停整个网络，也能拍下一张全局一致的照片？",
      "messageId": "6443a8ae-5b72-4257-82a4-6813a5e13323",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "f2dd7608ca588b192f5b25e38af6f2dfad13ce3e6ba68ad0757bc092ed469970",
      "note": ""
    },
    {
      "number": 27,
      "title": "第二十七章：MapReduce——2004年，Google 如何让上千台普通计算机共同处理海量数据？",
      "messageId": "42af1562-87db-4389-88ae-20d31e179774",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "c8d2d97728ca4f2858827347aac53e10bbdc6367c1760345449287cf95b0354a",
      "note": ""
    },
    {
      "number": 28,
      "title": "第二十八章：PageRank——1998年，为什么一个网页的重要性，取决于哪些网页指向了它？",
      "messageId": "8cef2b7f-c476-4715-90b6-6cd6597ebcf8",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "991b13bbf6701e72c9aa445acb842e0b64c3306deb62adf89518ffb18996c0b8",
      "note": ""
    },
    {
      "number": 29,
      "title": "第二十九章：搜索的秩序——1972年，为什么一个罕见的词，比一千次重复更值得注意？",
      "messageId": null,
      "sourceUrl": "https://www.cl.cam.ac.uk/archive/ksj21/ksjdigipapers/jdoc72.pdf",
      "sha256": "9b5e6879a1f3ba5b58cb94eba4aa031b6348e72a6c2493f7d2f96b2f2e6eb05c",
      "note": "",
      "origin": "supplement"
    },
    {
      "number": 30,
      "title": "第三十章：算法的极限——1936年，图灵为什么证明，有些问题永远不可能被程序彻底解决？",
      "messageId": "b0ab1220-3bfa-4e28-b620-cd4524e9af7e",
      "sourceUrl": "https://chatgpt.com/share/6ae09098-1bc4-83e8-b74e-b3706c0531a3",
      "sha256": "4cd8b4b8ecd12266462057aea814d3d21a41f299942b1c09e7684840d12a809a",
      "note": ""
    }
  ]
}