首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏ACM算法日常

    Knuth高效洗牌算法

    算法就是大名鼎鼎的 Knuth-Shuffle,即 Knuth 洗牌算法。 看似简单的问题,竟然又扯出Knuth,大意了。 能把一件小事情做到极致的人,可以称之为艺术家。Knuth名副其实。 最后以Knuth的一句话共勉: A programmer who subconsciously views himself as an artist will enjoy what he does and Knuth 1978

    90420发布于 2021-02-26
  • 来自专栏ccf19881030的博客

    KMP(Knuth Morris Pratt)算法的Go语言实现

    KMP(Knuth Morris Pratt)算法 实现:关键部分next数组,失效函数。next数据就是匹配串字符串最长匹配前缀和最长匹配后缀的关系。

    1.1K40发布于 2020-10-28
  • 来自专栏五分钟学算法

    这或许是讲解 Knuth 洗牌算法最好的文章

    这个算法就是大名鼎鼎的 Knuth-Shuffle,即 Knuth 洗牌算法。 这个算法的原理,我们稍后再讲。先来看看 Knuth 何许人也? 中文名:高纳德。算法理论的创始人。 Knuth 1978 所以,我从来都不认为自己只是一名工程师而已。我是艺术家:) 4. 然后,我们运行一遍 Knuth 洗牌算法,就搞定啦: ? 是不是很酷? 这就是我喜欢算法的原因。在我眼里,算法从来不是枯燥的逻辑堆砌,而是神一样的逻辑创造。

    6.1K92发布于 2019-07-15
  • 来自专栏AI科技评论

    纽约时报长文:硅谷的尤达—算法大师Donald Knuth

    Knuth 是一位受人尊敬的算法专家;他的名字与该领域一些最重要的方法关联在一起,例如 Knuth-Morris-Pratt 字符串搜索算法。 Knuth 博士在他的书的第一卷中阐述了欧拉的经典问题(他曾经将欧拉方法用于控制缝纫机的计算机编码)。 遵循 Knuth 博士的教义有助于避免代码的堆砌。 Knuth 回忆道,“他们说得到 Knuth 博士的奖金就像获得计算机科学界的诺贝尔奖。” Knuth 博士具有对自己要求严格、博学等诸多特质,这些特质也解释了为什么他这本书的完成遥遥无期。 拜访Knuth的星期天 Knuth 住在斯坦福,允许周日来访。 1999 年,Knuth 博士在家办公 ? 一些笔记 “如果你是一个精通 Knuth 所述知识的算法,那未来将更加光明。”

    62720发布于 2018-12-29
  • 来自专栏AI研习社

    博客 | 纽约时报长文:硅谷的尤达—算法大师Donald Knuth

    Knuth 是一位受人尊敬的算法专家;他的名字与该领域一些最重要的方法关联在一起,例如 Knuth-Morris-Pratt 字符串搜索算法。 Knuth 博士在他的书的第一卷中阐述了欧拉的经典问题(他曾经将欧拉方法用于控制缝纫机的计算机编码)。 遵循 Knuth 博士的教义有助于避免代码的堆砌。 Knuth 回忆道,“他们说得到 Knuth 博士的奖金就像获得计算机科学界的诺贝尔奖。” Knuth 博士具有对自己要求严格、博学等诸多特质,这些特质也解释了为什么他这本书的完成遥遥无期。 拜访Knuth的星期天 Knuth 住在斯坦福,允许周日来访。 1999 年,Knuth 博士在家办公 ? 一些笔记 “如果你是一个精通 Knuth 所述知识的算法,那未来将更加光明。”

    69940发布于 2018-12-29
  • 深入解析 Knuth-Morris-Pratt 算法:字符串匹配的高效解决方案

    该算法由 Donald Knuth、Vaughan Pratt、James H. Morris 三人于 1977 年联合发表,算法也是由这三人姓氏进行命名。

    45720编辑于 2024-07-29
  • 来自专栏五分钟学算法

    08.一道美团算法题,Don E.Knuth 花了 24 小时才解出来!

    我的答案里面必然会有 Don E.Knuth。 KMP 算法、洗牌算法这些耳熟能详的的牛逼算法就是老爷子的创造,他的经典著作《计算机程序设计艺术》更是被誉为算法中“真正”的圣经。 left = mid + 1; } } return left; } } 由此,这道题目也就解决了,Don E.Knuth

    74320编辑于 2022-04-08
  • 来自专栏深度学习

    【数据结构】数组和字符串(十五):字符串匹配2:KMP算法(Knuth-Morris-Pratt)

    字符串匹配可以采用多种算法,包括朴素模式匹配算法、KMP(Knuth-Morris-Pratt)算法、Boyer-Moore算法等。

    22610编辑于 2024-07-30
  • 来自专栏科学Sciences

    近乎偏执的完美主义者:高德纳36岁获图灵奖80岁仍在写《计算机程序设计艺术》附简历

    Knuth是一位受人尊敬的算法专家,他的名字与该领域一些最重要的发展息息相关,例如Knuth-Morris-Pratt字符串搜索算法。 Knuth博士在加州理工学院他于1963年获得了该校的博士学位,图片来源:Jill Knuth AndreiBroder是Google杰出的科学家,也曾是Knuth博士的研究生,他在会议期间表示:“我们希望为我们正在做的事情提供一些理论基础依据 图片来源:Jill Knuth Knuth博士利用暑假期间编写编译器赚的钱比当教授一年挣的还多。 那么 Knuth 就是让这一设想成真的人。” ? Knuth 与字体设计师Hermann Zapf 讨论字体。 可能所有内容都出自 Knuth 作品的某一页或某一章节,因为这是完成某些任务的最佳方式。” 幸运的是,Knuth博士仍在坚持不懈地努力。

    1.5K20发布于 2019-07-15
  • 来自专栏AI科技大本营的专栏

    黄皓之后,计算机科学上帝Don Knuth仅用一页纸证明布尔函数敏感度猜想

    不久之后,在这篇论文的启发下,计算机科学的上帝 Don Knuth 再次突破极限,仅用一页纸就证明了这个困扰理论计算机领域数十年的布尔函数敏感度猜想(其中半页证明还是笔记)。 7 月 28 日,Don Knuth 在讨论黄皓证明布尔函数的帖子下发声,表示自己仅用一页纸就做到了这件事,并附上了证明过程的文档:https://www.cs.stanford.edu/~knuth/ Don Knuth——计算机科学的上帝 ? (图源:斯坦福大学官网) 这次,用一页纸证明了布尔函数敏感度猜想的大师,正是被誉为计算机科学上帝的 Don Knuth 教授,现为斯坦福大学计算机系荣誉退休教授。 Knuth 是算法和程序设计技术的先驱者,创造了算法分析的领域,在数个理论计算机科学的分支做出基石一般的贡献,发表了多部具广泛影响的论文和著作。

    1.2K10发布于 2019-08-09
  • 来自专栏窗户

    自然数到底可以表示到多大?

    高德纳箭头   提起高德纳Knuth,应该计算机界的人都知道吧,我也不用多介绍了。   他以连加、连乘、连乘方为思路基础,提出了高德纳箭头这样的运算符。    (define (knuth n m cnt_arrow) (define (knuth-list lst cnt_arrow) (cond ((null? )) (else (knuth-list (cons (knuth-list (make-list (car lst) (cadr lst)) (- cnt_arrow 1)) (cddr lst (knuth 2 5 2)计算结果就不贴了,是一个 19729 位的数,其实等于Ackermann(4,3)+3。   而之前葛立恒数虽然根本算不出来,但用Scheme表示还是很容易的。 n) 4 (knuth 3 3 (g (- n 1))) ) ) (g 64) ) 康威链式箭头   Conway,著名的生命游戏的提出者,英国数学家。   

    2.1K20发布于 2018-10-11
  • 来自专栏Android开发经验分享

    [洗牌算法] - 从长度为m的int数组中随机取出n个元素,每次取的元素都是之前未取过的

    题目:从长度为m的int数组中随机取出n个元素,每次取的元素都是之前未取过的 Fisher-Yates洗牌算法是由 Ronald A.Fisher和Frank Yates于1938年发明的,后来被Knuth 在书中介绍,很多人直接称Knuth洗牌算法, Knuth大家应该比较熟悉,《The Art of Computer Programming》作者,算法理论的创始人。 int t = (int) (list.size() * Math.random()); System.out.println(list.remove(t)); } } ---- Knuth 洗牌算法 在上面的介绍的发牌过程中, Knuth 和 Durstenfeld 在Fisher 等人的基础上对算法进行了改进,在原始数组上对数字进行交互,省去了额外O(n)的空间。 时间复杂度为O(n), 空间复杂度为O(n) //O(N)time //O(N)space void knuth(int n, int m) { int[] arr = new int[n];

    2.8K10编辑于 2022-12-19
  • 来自专栏程序人生 阅读快乐

    《具体数学 计算机科学基础 第2版》

    Knuth(高德纳)著名计算机科学家,算法与程序设计技术的先驱者、斯坦福大学计算机系荣休教授、计算机排版系统TEX和METAFONT字体系统的发明人,因诸多成就以及大量富于创造力和具有深远影响的著作(19 Knuth教授获得过许多奖项和荣誉,包括美国计算机协会图灵奖、美国国家科学奖章、美国数学学会的斯蒂尔奖,以及因发明先进技术于1996年荣获的京都奖。1996年,设立了以其名字命名的Donald E. Knuth奖,授予那些为计算机科学基础做出杰出贡献的人。 Oren Patashnik 著名计算机科学家,BibTeX的创始人之一,是位于拉荷亚的通信研究中心的研究员。 他1976年毕业于耶鲁大学,后来在斯坦福大学师从Knuth,1980年就职于贝尔实验室。

    87720发布于 2018-10-10
  • 来自专栏五分钟学算法

    动画:七分钟理解什么是KMP算法

    以下的文字描述请结合视频动画来阅读~ 定义 Knuth-Morris-Pratt 字符串查找算法,简称为 KMP算法,常用于在一个文本串 S 内查找一个模式串 P 的出现位置。 这个算法由 Donald Knuth、Vaughan Pratt、James H. Morris 三人于 1977 年联合发表,故取这 3 人的姓氏命名此算法。 是不是感觉 Donald Knuth 这个名字很眼熟?没错,在前面 这或许是讲解 Knuth 洗牌算法最好的文章 一文中也出现了他!

    1.2K20发布于 2019-07-25
  • 来自专栏c语言与cpp编程

    洗牌算法

    个数字里随机取出第二个数,这样随机50次取出的书就不会重复,这就是今天的主题:洗牌算法 洗牌算法 Fisher-Yates洗牌算法是由 Ronald A.Fisher和Frank Yates于1938年发明的,后来被Knuth 在书中介绍,很多人直接称Knuth洗牌算法, Knuth大家应该比较熟悉,《The Art of Computer Programming》作者,算法理论的创始人。 第五次随机抽取到3这个元素 3被抽中的概率是1*1/2*1/3*3/4*4/5=1/5 时间复杂度为O(n*n),空间复杂度为O(n) 算法思路: 在上面的介绍的发牌过程中, Knuth 和 Durstenfeld 代码: void Knuth_Durstenfeld_Shuffle(vector<int>&arr) { for (int i=arr.size()-1;i>=1;--i) { srand((

    1.3K10发布于 2020-12-02
  • 来自专栏C语言入门到精通

    C语言实现洗牌算法

    个数字里随机取出第二个数,这样随机50次取出的书就不会重复,这就是今天的主题:洗牌算法 洗牌算法 Fisher-Yates洗牌算法是由 Ronald A.Fisher和Frank Yates于1938年发明的,后来被Knuth 在书中介绍,很多人直接称Knuth洗牌算法, Knuth大家应该比较熟悉,《The Art of Computer Programming》作者,算法理论的创始人。 1&wx_co=1] 第五次随机抽取到3这个元素 3被抽中的概率是1*1/2*_1/3*3/4_*4/5=1/5 时间复杂度为O(n*n),空间复杂度为O(n) 算法思路: 在上面的介绍的发牌过程中, Knuth 代码: void Knuth_Durstenfeld_Shuffle(vector<int>&arr) {  for (int i=arr.size()-1;i>=1;--i)  {   srand((

    3.7K2219发布于 2020-12-16
  • 来自专栏漫漫深度学习路

    10 Books that could Make you a Better C++ Programmer

    Knuth invented his own machine language for the series and demonstrates classic algorithms in it, an The Knuth books are very scientific but at their core is the foundation for solving complex problems Knuth invented his own machine language for the series and demonstrates classic algorithms in it, an The Knuth books are very scientific but at their core is the foundation for solving complex problems Knuth invented his own machine language for the series and demonstrates classic algorithms in it, an

    76210发布于 2019-05-29
  • 来自专栏用户9199536的专栏

    TAOCP|基本算法|垃圾回收

    但是Knuth并没有使用多叉的数据结构,而是让每个节点都含有lhs,rhs两个指针。(主要问题是因为Knuth居然在写GC之后才引入多链结构!!! 节点的lhs分为三种情况: 节点是表(like sturct) -> 指向子表的表头 节点是值 (like int)-> 指向原子节点(Knuth修改前,直接数据+rhs) 节点是指针 (like struct *)-> 指向其他节点 原子节点中只有数据(Knuth修改前,直接数据+rhs) 这样一来,原本是图的GC变为了生成树+回边+前向边+横跨边这样的方式。 注意,knuth在后面做了修改,原子节点中不具有rhs,我吐了!!!!!!!!!! 第一个阶段是Knuth的重点。 很明显,第一阶段就是个DFS算法。

    43530发布于 2021-11-22
  • 来自专栏米扑专栏

    KMP字符串匹配算法

    KMP算法,Knuth-Morris-Pratt Algorithm,一种由Knuth(D.E.Knuth)、Morris(J.H.Morris)和Pratt(V.R.Pratt)三人提出的一种快速模式匹配算法 时间复杂度为O(m+n) 其中,O(m)是pattern子串预处理的时间复杂度,O(n)是target目标串查找的时间复杂度,总时间复杂度为O(m+n) KMP代码下载 参考推荐: KMP(百度百科) Knuth-Morris-Pratt algorithm(Wikipedia) Knuth-Morris-Pratt algorithm(String Matching) Knuth-Morris-Pratt string matching

    1.8K10发布于 2019-02-19
  • 来自专栏一个会写诗的程序员的博客

    【算法图文动画详解系列】KMP 字串匹配搜索算法

    返回模式串p在文本串s中的位置,否则返回-1 if (j == pLen) return i - j; else return -1; } KMP 算法 Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. The algorithm of Knuth, Morris and Pratt [KMP 77] makes use of the information gained by previous symbol As a result, the complexity of the searching phase of the Knuth-Morris-Pratt algorithm is in O(n). Since mless or equaln, the overall complexity of the Knuth-Morris-Pratt algorithm is in O(n).

    1.3K40发布于 2021-04-28
领券