《Proofs from THE BOOK》是一本非常出名的书籍, 收录了不少精妙的证明。
        类似地, 在cstheory.stackexchange.com上有人召集大家讨论假如上帝有一本书收集精妙的算法,那么,那本书应该包含一些什么算法呢? "Proof from THE BOOK" 中译本翻译为“来自圣经的证明” 或者 “数学天书中的证明”。 天书,听上去似乎是比较难于看明白的艰难的证明。然而,恰恰相反,收录的证明都是非常巧妙,优美,容易理解的。 因此,我更倾向于翻译为“出自上帝之手的”。
        Algorithm from THE BOOK 讨论中包含的算法,普遍也属于优美有效的,让人称绝的。花了一些时间整理了下,顺序按照大家的投票。上面包含很多已经耳熟能详的大名鼎鼎的算法,也包含一些我还不了解的。稍后,可以学习下其中尚未熟悉的算法,体会其中的巧妙思想和优美设计。
        原讨论帖链接:http://cstheory.stackexchange.com/questions/189/algorithms-from-the-book?page=1&tab=votes#tab-top
Algorithm from THE BOOK 候选:
1. 并查集. 维护等价关系的更新和查询的数据结构
     http://en.wikipedia.org/wiki/Disjoint-set_data_structure
2. KMP字符串匹配算法
     http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm
3. BFPRT算法. 寻找第k大元素的线性算法
     名字来源于发明算法的五位大牛: Blum,Floyd,Pratt,Rivest,Tarjan
     http://en.wikipedia.org/wiki/Selection_algorithm#Linear_general_selection_algorithm_-_Median_of_Medians_algorithm
     http://en.wikipedia.org/wiki/Median_of_medians
4. 二分查找算法
     http://en.wikipedia.org/wiki/Binary_search_algorithm
5. Floyd-Warshall算法. O(N^3) 计算给定加权图任意两点间最短路径长度
     给定加权图的边上权重可正可负, 只要不包含负权圈即可。(如果存在负权圈, 圈内任意两点间最短路的长度为-inf)
     http://en.wikipedia.org/wiki/Floyd%E2%80%93Warshall_algorithm
6. 快速排序算法
     http://en.wikipedia.org/wiki/Quicksort
7. 欧几里德算法. 快速计算最大公约数算法
     http://en.wikipedia.org/wiki/Euclidean_algorithm
8. 霍夫曼编码. 用于数据压缩
     http://en.wikipedia.org/wiki/Huffman_coding
9. 素性判断算法
     Miller-Rabin算法: http://en.wikipedia.org/wiki/Miller%E2%80%93Rabin_primality_test
     AKS算法: http://en.wikipedia.org/wiki/AKS_primality_test (确定性的多项式时间素性判断算法)
10. Fully Homomorphic Encryption Scheme (全同态加密方案)
     同态是一个数学概念,如 H(f(a, b)) = F(H(a), H(b)), H(.)是一个同态映射
     假设加密操作为E(.), 明文为m, 密文为e, 如果针对明文的操作f,可以根据E构造出F,使得 E(f(m)) = F(e). 那么E就是一个针对f的同态加密算法。 如果f可以支持加法和乘法, 那么E就是全同态加密算法
     同态加密有非常明显的使用场景: 允许第三方在密文e的基础上进行F操作。 我们拿到处理完的结果F(e)后进行解密可以得到我们期望的结果f(m), 而第三方在整个过程中都不了解明文m。
     Craig Gentry在2009年提出的全同态加密方案论文: A Fully Homomorphic Encryption Scheme  http://crypto.stanford.edu/craig/craig-thesis.pdf
     2009年底针对计算效率优化后的简化版本 BGV System: Fully Homomorphic Encryption over the integers http://eprint.iacr.org/2009/616.pdf
     http://portal.acm.org/citation.cfm?id=1666420.1666445
     整数上全同态加密方案分析(1)--献给全同态加密的初学者 http://blog.sciencenet.cn/blog-411071-617182.html
     整数上全同态加密方案分析(2)--献给全同态加密的初学者 http://blog.sciencenet.cn/blog-411071-617185.html
     整数上全同态加密方案分析(3)--献给全同态加密的初学者 http://blog.sciencenet.cn/blog-411071-617188.html
     开源 HELib: https://github.com/shaih/HElib
11. Schwartz-Zippel lemma - 多项式快速等价判定
     http://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma
12. Depth First Search (深度优先搜索)
     http://en.wikipedia.org/wiki/Depth-first_search
13. 快速傅立叶变换
     http://en.wikipedia.org/wiki/Cooley%E2%80%93Tukey_FFT_algorithm
     http://en.wikipedia.org/wiki/Butterfly_diagram
14. Eratosthenes筛法
     http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
15. Horner's Algorithm/秦九韶算法
     http://en.wikipedia.org/wiki/Horner_scheme
16. Strassen algorithm 矩阵乘法算法
     http://en.wikipedia.org/wiki/Strassen_algorithm
17. 后缀数组的线性构造算法
     http://www.cs.helsinki.fi/u/tpkarkka/publications/icalp03.pdf
18. 2-approximation for MAX-CUT
     对于最大化问题,2-approximation max-cut算法是一个简单的随机算法,能得到超过最优解1/2的近似解。
     http://en.wikipedia.org/wiki/Maximum_cut
     回复中,提到一篇提出最大化次模函数的常数近似比算法的论文
     http://theory.stanford.edu/~jvondrak/data/submod-max-SICOMP.pdf
19. 高斯消元法
     http://en.wikipedia.org/wiki/Gaussian_elimination
20. Reservoir sampling (蓄水池采样)
     http://en.wikipedia.org/wiki/Reservoir_sampling#cite_note-1
21. Dijkstra's algorithm - 单源最短路问题
      http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
22. 稳定婚姻问题算法
     http://en.wikipedia.org/wiki/Stable_marriage_problem
23. grover量子搜索算法
     一个需要O(log N)空间和O(sqrt(N))时间对N个无序元素进行排序的概率算法。
     http://en.wikipedia.org/wiki/Grover%27s_algorithm
24. Tortoise and hard algorithm - 圈检测
     http://en.wikipedia.org/wiki/Cycle_detection
25. 线性规划算法:单纯形法,  椭球法, 内点算法
     http://en.wikipedia.org/wiki/Linear_programming#Algorithms
26. Robin Moser algorithm - 解决特定类型SAT问题
     http://en.wikipedia.org/wiki/Algorithmic_Lov%C3%A1sz_local_lemma
     http://arxiv.org/abs/0903.0544
27. Christofides's algorithm - 3/2 approximation for metric TSP
     http://en.wikipedia.org/wiki/Christofides_algorithm
     http://en.wikipedia.org/wiki/Traveling_salesman_problem#Metric_TSP
28. Schieber-Vishkin算法 - 最小公共祖先
     http://en.wikipedia.org/wiki/Lowest_common_ancestor
     
29. Knuth's Algorithm X
     http://en.wikipedia.org/wiki/Knuth's_Algorithm_X
     Dancing Links: http://arxiv.org/abs/cs/0011047
30. Marcus Hutter's "The Fastest and Shortest Algorithm for All Well-Defined Problems"
     http://www.hutter1.net/ai/pfastprg.pdf
     http://arxiv.org/ps/cs/0102018
31. Expander codes (膨胀码)
     Tanner (1981) http://www.ldpc-codes.com/papers/rlcc.pdf
     Sipser and Spielman(1994) http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=365734
     "Linear-time encodable and decodable error-correcting codes" Spielman (1995) http://dl.acm.org/citation.cfm?doid=225058.225165
     "Randomness conductors and constant-degree lossless expanders" (2002) http://dl.acm.org/citation.cfm?doid=509907.510003
32. 归并排序
     http://en.wikipedia.org/wiki/Merge_sort
33. Berlekamp-Massey's algorithm - 构造最短线性反馈移动寄存器
      http://en.wikipedia.org/wiki/Berlekamp%E2%80%93Massey_algorithm
34. Universal Hash/Pairwise indepent hash functions
     http://en.wikipedia.org/wiki/Universal_hashing
     "Universal Classes of Hash Functions" http://www.cs.princeton.edu/courses/archive/fall09/cos521/Handouts/universalclasses.pdf
     "Introduction to pairwise independent hashing" http://www.wisdom.weizmann.ac.il/~oded/CC/X/hash.pdf
35. 平面图最近点问题线性算法
     “Geometric Approximation Algorithms” http://sarielhp.org/teach/notes/aprx/lec/01_min_disk.pdf
36. Timothy Chan's O(N*logN)平面凸包算法
     http://www.cs.uwaterloo.ca/~tmchan/conv23d.ps.gz
37.  Goemans-williamson algorithm - 最大割近似算法
     http://en.wikipedia.org/wiki/Semidefinite_programming#Example_3_.28Goemans-Williamson_MAX_CUT_approximation_algorithm.29     
38. Binary Decision Diagrams
     http://en.wikipedia.org/wiki/Binary_decision_diagram
     http://www.cs.unb.ca/~gdueck/courses/cs4835/bdd97.pdf
     Knuth TAOCP Vol4, Fas 1, Page 202-280
39. Edge-flipping Algorithm - 构造2D Delaunay Triangulation
     http://en.wikipedia.org/wiki/Delaunay_triangulation#Flip_algorithms
40. Ford-Fulkerson Algirithm - 最大流算法
     http://en.wikipedia.org/wiki/Ford%E2%80%93Fulkerson_algorithm
41. Euclidean TSP近似算法
     "Polynomial-time Approximation Schemes for Euclidean TSP and other Geometric Problems" Sanjeev Arora 
42. Steepest descent 最速下降法
     http://en.wikipedia.org/wiki/Method_of_steepest_descent
     http://mathworld.wolfram.com/MethodofSteepestDescent.html
     http://sces.phys.utk.edu/~moreo/mm08/XuWangP571.pdf
43. Kosaraju's Algorithm - 寻找有向图强连通分支
     http://en.wikipedia.org/wiki/Kosaraju%27s_algorithm
44. Persistant data structure (持久化数据结构)
     这里的持久化,表示数据结构的更新历史被保存下来;而不同于一般软件开发中的持久化。
     http://en.wikipedia.org/wiki/Persistent_data_structure
     Persistant Array: “Fully Persistent Arrays for Efficient Incremental Updates and Voluminous Reads (1992)"
45. Hash Consing
     http://en.wikipedia.org/wiki/Hash_consing
46. 全组合/全排列生成算法
     http://en.wikipedia.org/wiki/Combination
     http://en.wikipedia.org/wiki/Permutation
47. Random Projection - 降维
     “Random projection in Dim reduction: applications to image and text data”: http://users.ics.aalto.fi/ella/publications/randproj_kdd.pdf
     http://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma
48. Schöning's random-walk algorithm for 3-SAT
     http://theory.stanford.edu/~trevisan/cs174/notes/note9.ps
49. LLL Algorithm (Lenstra-Lenstra-Lovász) Lattice Basis Reduction
     http://en.wikipedia.org/wiki/Lenstra%E2%80%93Lenstra%E2%80%93Lov%C3%A1sz_lattice_basis_reduction_algorithm
50. Linear Majority Voting Algorithm
     MJRTY - A Fast Majority Vote Algorithm, with R.S. Boyer. In R.S. Boyer (ed.)

更多算法候选:出自上帝之手的精妙算法 - Algorithm from THE BOOK (2)

出自上帝之手的精妙算法 - Algorithm from THE BOOK (1)相关推荐

  1. 算法(algorithm) 技能树测评

    算法algorithm 技能树测评 1.使用体验 1.1 算法(algorithm)技能树介绍: 1.2 算法(algorithm)技能树使用: 1.3 优缺点分析 2.改进建议: 3.结论 1.使用 ...

  2. 算法 - algorithm

    算法 - algorithm 1.基础算法 1.1 使用蛇形给二维数组赋值 - 矩形 效果: 分析: 首先从数组的最后一列开始给二维数组赋值,即列不变,行增加.再从最后一列向右边依次给元素赋值,等到给 ...

  3. STL算法algorithm,

    2019独角兽企业重金招聘Python工程师标准>>> STL算法部分主要由头文件<algorithm>,<numeric>,<functional&g ...

  4. (实用简单版)latex如何书写算法algorithm

    文章目录 前言 一个例子 前言 看过很多使用latex写算法的,都感觉好复杂,导入的包就20,30个.这次我们使用algoritim2e包,感觉这个好用. \usepackage[lined,boxe ...

  5. 【算法Algorithm】计数(Count)排序

    算法思想 计数排序是非比较排序,即没有像arr[i] < arr[i + 1]这样的比较. 该算法适用于数量大且值的范围小的待排序数组,例如:待排序数组长度是1w(或10w,100w),但数组中 ...

  6. 【算法Algorithm】快速(Quick)排序

    算法思想 从待排序数组中找一个索引位置(例如,中间位置.开始位置.结束位置)的数作为轴,以这个轴为基准,把大于这个轴的数放到它的后面,把小于这个轴的数放到它的前面,至于相等的可以放在前面也可以放在后面 ...

  7. Algorithm:【Algorithm算法进阶之路】之十大经典排序算法

    Algorithm:[Algorithm算法进阶之路]之十大经典排序算法 相关文章 Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 Algorithm:[Algori ...

  8. Algorithm:【Algorithm算法进阶之路】之数据结构基础知识

    Algorithm:[Algorithm算法进阶之路]之数据结构基础知识 相关文章 Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 Algorithm:[Algori ...

  9. Algorithm:【Algorithm算法进阶之路】之数据结构二十多种算法演示

    Algorithm:[Algorithm算法进阶之路]之数据结构二十多种算法演示 目录 一.数据结构算法 1.顺序表 2.链表 3.栈和队列 4.串的模式匹配 5.稀疏矩阵 6.广义表 7.二叉树 8 ...

最新文章

  1. 深度学习入门课程推荐
  2. word转pdf图片模糊怎么办_迅捷PDF转换器如何将word转为长图?word转图片方法
  3. [转]FPGA的GTP信号PCB布线要点
  4. 解决idea导入项目后依赖报错问题
  5. 北京热风文化传媒有限公司 公司介绍
  6. arrayfun用法
  7. 10.一文了解JAVA反射超详尽知乎
  8. Spring整合MyBatis为什么导致MyBatis一级缓存失效
  9. 游戏音效常见格式以及优缺点
  10. 基于PHP+MySQL企业工资管理系统的设计与实现(含论文
  11. vl53l1x+stm32激光测距分析(待修改)
  12. 高光谱遥感数据光谱特征的提取与应用---高光谱基础知识科普论文
  13. 【Kaggle竞赛树叶分类Baseline】上万片树叶分为一百七十六类
  14. 线程编程——经典案例
  15. 软件测试类工具大全2009版
  16. 服务器网站环境包,使用wips网站环境包的案例
  17. [2018 CS:GO Client]2018 Old CSGO 客户端,回忆逝去的青春!
  18. C# Winform基于socket编程的五子棋游戏(带聊天和发送文件功能)
  19. select 触发click点击事件
  20. linux 查看端口 程序,Linux查看程序端口占用情况

热门文章

  1. jstl标签库jar包下载
  2. Sanic框架登录验证——Sanic-Auth的使用方法
  3. 超低功耗LoRa无线通信应用实践
  4. ajax拒绝访问,jQuery ajax请求 - IE11访问被拒绝
  5. Elastic Job学习笔记
  6. 【7】实战:爬取网易云音乐歌曲对应id并剔除无版权歌曲
  7. SEO链接为什么要用nofollow,nofollow属性的作用是什么,nofollow的用法
  8. 果蔬超市管理系统的设计与实现
  9. wifi模块有哪些关键指标?如何选择wifi模块?ESP32-S3Wi-Fi模组
  10. CSS 布局 问题 及 解答