<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[计算机、人工智能、算法和数学]]></title><description><![CDATA[(1)约伴刷题: Leetcode, Hackerrank, ProjectRuler (2)算法工程师八股文: C++, Python, 机器学习, 领域算法, 算法工程, 数学]]></description><link>https://blog.youkuaiyun.com/u011472272</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; u011472272]]></copyright><item><title><![CDATA[历史名人集锦 | 计算机 | 数学 | 物理学 | 工程学]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/145412516</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/145412516</guid><author>u011472272</author><pubDate>Sat, 01 Feb 2025 14:40:04 +0800</pubDate><description><![CDATA[各位好，本文给大家盘点了一些数学、物理学、计算机科学、工程学领域的历史名人，按出生时间顺序罗列。]]></description><category></category></item><item><title><![CDATA[最少硬币组合问题2：贪心算法【附算法导论习题答案下载】]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/145078148</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/145078148</guid><author>u011472272</author><pubDate>Sat, 11 Jan 2025 15:35:26 +0800</pubDate><description><![CDATA[等比数列只是其中一种可贪心的面额集，能不能找到更多的可贪心面额集，或者更激进一点，有没有贪心算法成立的充分必要条件。退而求其次，有没有比较通用的算法，任意给定一个面额集后可以通过该算法来判断该面额集能不能贪心。事实上这两个问题非常复杂，在学术论文中可以找到一些结果，以后有机会在跟大家分享。]]></description><category></category></item><item><title><![CDATA[滑动窗口字符计数的优化：增加维护聚合信息应对高频查询]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/145077799</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/145077799</guid><author>u011472272</author><pubDate>Sat, 11 Jan 2025 15:16:45 +0800</pubDate><description><![CDATA[在维护滑动窗口时，一个最常见的查询操作是判断窗口是否合法，这是一个高频查询，为了优化这个查询的效率，需要灵活使用各种数据结构来维护窗口内的信息，本文的题目比较简单，通过增加一个聚合信息即可解决，在更复杂的场景需要一些数据结构，比如之前我们提到过，数据压缩的 LZ77 方法，在优化过程中使用了后缀树来提高查询效率。]]></description><category></category></item><item><title><![CDATA[滑动窗口 | 满足条件的子串数目]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/145064540</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/145064540</guid><author>u011472272</author><pubDate>Fri, 10 Jan 2025 19:57:59 +0800</pubDate><description><![CDATA[摘要: 以滑动窗口的方式统计满足条件的子串数目【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】各位好，今天我们来看一个在字符串上通过滑动窗口进行子串统计的问题。在滑动窗口推进的过程中，维护字符计数进行一些统计是一大类问题，参考此前的汇总文章。最早提出滑动窗口这个概念是在数据压缩的论文中，Jacob Ziv 和 Abraham Lempel 在 1977 和 1978 年发表了两篇基于自适应词典进行数据压缩的里程碑式论文，两篇论文构建词典的路线不一样。]]></description><category></category></item><item><title><![CDATA[最少硬币组合问题1：动态规划、完全背包]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144957600</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144957600</guid><author>u011472272</author><pubDate>Mon, 06 Jan 2025 10:24:10 +0800</pubDate><description><![CDATA[摘要: 最少硬币组合问题，对任意面额集的动态规划算法【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】我们此前详细讲解过背包问题，题目的分类汇总参考。其中硬币组合是完全背包的一个经典问题。在完全背包中，每个物品都是不限个数的，我们要做的是在背包容量范围内，拿走的总价值尽可能多。而硬币组合问题中，每种面值的硬币也是不限个数，我们要做的是拿走的面值总和刚好是给定值，使得硬币的个数最少。]]></description><category></category></item><item><title><![CDATA[最少硬币组合问题1：完全背包]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144937734</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144937734</guid><author>u011472272</author><pubDate>Sun, 05 Jan 2025 00:28:17 +0800</pubDate><description><![CDATA[摘要: 最少硬币组合问题，对任意面额集的动态规划算法【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】我们此前详细讲解过背包问题，题目的分类汇总参考。其中硬币组合是完全背包的一个经典问题。在完全背包中，每个物品都是不限个数的，我们要做的是在背包容量范围内，拿走的总价值尽可能多。而硬币组合问题中，每种面值的硬币也是不限个数，我们要做的是拿走的面值总和刚好是给定值，使得硬币的个数最少。]]></description><category></category></item><item><title><![CDATA[Weierstrass不等式 | 概率方法]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144892774</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144892774</guid><author>u011472272</author><pubDate>Thu, 02 Jan 2025 18:54:18 +0800</pubDate><description><![CDATA[本文我们通过概率方法解决了魏尔斯特拉斯不等式的一部分，而要完整解决该不等式，还是需要借助 Schur 凸函数相关的概念。通过本例我们可以看到，一些很难的不等式，通过概率方法可以轻易解决。因此当看到不等式中累加、累乘的各项有01(0, 1)01的范围限制时，可以考虑概率方法。]]></description><category></category></item><item><title><![CDATA[2025年的内容与栏目建设]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144867466</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144867466</guid><author>u011472272</author><pubDate>Wed, 01 Jan 2025 14:32:34 +0800</pubDate><description><![CDATA[各位好，今天是 2024 年最后一天，祝各位新年快乐。今天没有题目，主要跟各位聊聊天，交流一下 2025 年内容与栏目的设想。我的账号早期是写 leetcode 题解起盘的，当时的刷题量很大，所以题解中的很多内容的总结性还不错，可以举一反三。写的多了，经常能把相同思路的题目聚合到一起，让刚开始刷题的人迅速了解一个大的算法点都有哪些小点，哪些题目是属于同一个小点下的，基本上解了一个题就等于所有题都解了，所以早期我还出了很多 2000 题以内的各个算法点的题目清单，很多人看过。]]></description><category></category></item><item><title><![CDATA[字符串精确匹配的主流算法总结（含书籍推荐）]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144469420</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144469420</guid><author>u011472272</author><pubDate>Sat, 14 Dec 2024 12:45:42 +0800</pubDate><description><![CDATA[摘要: 字符串精确匹配方法汇总【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】各位好，此前我们讨论了字符串精确匹配的很多主流算法。实际上字符串匹配算法是一个单独的大课题，这里推荐一本书 《Algorithms on Strings, Trees, and Sequences: Computer Science and Computational Biology》 作者 Dan Gusfield。]]></description><category></category></item><item><title><![CDATA[字符串匹配暴力算法比KMP算法更实用]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/144418177</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/144418177</guid><author>u011472272</author><pubDate>Thu, 12 Dec 2024 10:03:51 +0800</pubDate><description><![CDATA[摘要: 字符串匹配的暴力算法平均情况时间复杂度【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】在文章中，我们介绍了字符串精确匹配的 KMP 算法，这应该也是名声最大的算法，它是一种预处理+相应查询的思想，通过巧妙设计的预处理信息，避免扫描指针的回退，使得在最坏情况下也有线性的时间复杂度。事实上，在实用场景中，字符串的精确匹配的暴力算法就很有效，原因在于如果输入数据分布是均匀的，暴力算法在平均情况下的时间复杂度依然是线性的。本文我们来推导一下这个事情。]]></description><category></category></item><item><title><![CDATA[在加边过程中随时查询最短路径]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/137224135</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/137224135</guid><author>u011472272</author><pubDate>Mon, 01 Apr 2024 10:46:08 +0800</pubDate><description><![CDATA[摘要: 加边松弛操作【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】在文章中我们了解到了求最短路径的 Floyd 算法。理解这个算法需要一些动态规划的概念，其中阶段的定义与推导比较特殊，涉及到松弛操作的概念，也就是每推导一个阶段就相当于进行了一次松弛操作。当我们推完了所有的阶段，dp 数组中就有了所有点对之间的最短路径。因此当需要多次查询不同点对之间的最短路径时，用 Floyd 算法是比较合适的，先ON3地预处理出 dp 数组，然后就可以O1。]]></description><category></category></item><item><title><![CDATA[沃利斯积分的分段渐近估阶：拉普拉斯方法的思想启蒙]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136162217</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136162217</guid><author>u011472272</author><pubDate>Mon, 19 Feb 2024 08:52:13 +0800</pubDate><description><![CDATA[本文我们解决了沃利斯积分In∫−π2π2cos⁡xndxn→∞In​∫−2π​2π​​cosxndxn→∞的渐近估阶问题。解决过程可以推广到被积函数在幂上有一个大参数 n 这一大类情形，解决这一大类情形的方法称其为拉普拉斯方法，步骤如下：(1) 忽略尾部：估计原积分的尾部并忽略(2) 中心逼近：在中心区域进行逼近并得到误差界(3) 完成尾部：将尾部的积分范围加到中心区域的逼近中。]]></description><category></category></item><item><title><![CDATA[插入多少次发生哈希冲突：拉马努金Q分布与二元渐近分析]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136126156</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136126156</guid><author>u011472272</author><pubDate>Fri, 16 Feb 2024 09:46:59 +0800</pubDate><description><![CDATA[本文我们解决了第一次发生哈希冲突时，平均插入了多少数据的问题。其结果正是我们拉马努金 Q 函数QNQ(N)QN。QNQ(N)QN是一个和式，具体为QN∑k1∞fkNQNk1∑∞​fkN，本文我们详细推导了fkNf(k, N)fkN的渐近估阶，其推导过程是处理二元渐进性非常有代表性的操作，有了这个例子，以后再遇到二元渐近分析的问题，思路可以仿照本例。在此前解决冒泡排序平均扫描趟数的问题中，我们接触过拉马努金 Q 函数QNQ(N)QN。]]></description><category></category></item><item><title><![CDATA[冒泡排序平均需要跑多少趟：拉马努金Q函数初探]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136119218</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136119218</guid><author>u011472272</author><pubDate>Thu, 15 Feb 2024 11:33:39 +0800</pubDate><description><![CDATA[本文我们讨论了排序算法的分析中的一个问题：冒泡排序平均需要跑多少趟。首先引入了排列中的一些概念定义，包括逆序、逆序表，然后基于冒泡排序的算法流程，发现冒泡排序扫描的趟数就是逆序表中的最大值。再结合排列的逆序表自身的性质，以及通过累积分布函数求数学期望的性质，最终我们将问题归结到了∑k0Nk!kN−kN!k^{N-k}}{N!k0∑N​N!k!kN−k​的渐近估阶。]]></description><category></category></item><item><title><![CDATA[n节点的无序标号树有多少种：拉格朗日反演的应用]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136105969</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136105969</guid><author>u011472272</author><pubDate>Tue, 13 Feb 2024 11:33:44 +0800</pubDate><description><![CDATA[本文我们讨论了图论中的算法分析的常见问题：n 节点的无序标号树共有多少个。其结果称为凯莱公式。本文的推导基于拉格朗日反演，首先介绍了拉格朗日反演定理的描述，然后用该定理重新解决了二叉树计数的问题，可以发现拉格朗日反演在简化生成函数计数问题的价值。凯莱公式是图论中的经典结论，主流的推导方式有矩阵树定理和 Prufer 编码等，前置的知识都比较冗长。而本文使用拉格朗日反演，非常轻易地就得到了结果。当然为了突出重点，一些结论本文跳过了推导步骤，比如 n 节点无序标号树的指数生成函数满足的函数方程Czz。]]></description><category></category></item><item><title><![CDATA[在归并排序中对小数组采用插入排序]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136090688</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136090688</guid><author>u011472272</author><pubDate>Sat, 10 Feb 2024 13:54:50 +0800</pubDate><description><![CDATA[摘要: 使递归的叶子变粗【对算法，数学，计算机感兴趣的同学，欢迎关注我哈，阅读更多原创文章】在文章中，我们了解了分治算法的设计和分析方法，并且得出了归并排序算法的最坏情况运行时间为Θnlogn。在文章中，我们了解了算法分析的方法论，并且以插入排序为例，得到了插入排序最坏情况运行时间为Θn2。虽然开起来好像归并排序比插入排序的运行时间要好，但插入排序中的常量因子可能使得它在 n 较小时，在许多机器上实际运行得更快。因此归并排序中，当子问题规模足够小时，采用插入排序。]]></description><category></category></item><item><title><![CDATA[二叉树的计数：直接方法与间接方法]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136090661</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136090661</guid><author>u011472272</author><pubDate>Sat, 10 Feb 2024 13:49:27 +0800</pubDate><description><![CDATA[本文我们讨论了有N1N+1N1个虚拟节点的二叉树的个数，类似的树上的计数是分析树上算法的基础问题。基于生成函数的解决过程可以分为三步，第一步是找到生成函数满足的方程，第二步是求解方程得到生成函数，第三步是将生成函数展开取zNz^{N}zN项的系数。其中最关键的是第一步，只要得到了生成函数满足的方程，不管是微分方程还是函数方程，后续的过程就比较好解决了。]]></description><category></category></item><item><title><![CDATA[生成函数性质速查表]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136074970</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136074970</guid><author>u011472272</author><pubDate>Wed, 07 Feb 2024 23:03:54 +0800</pubDate><description><![CDATA[摘要: 生成函数的性质【对数据分析、人工智能、金融科技、风控服务感兴趣的同学，欢迎关注我哈，阅读更多原创文章】生成函数即母函数，有时也叫形式幂级数。是组合数学中的一个重要理论和工具。生成函数的一个重要线索来自于 18 世纪欧拉对整数分拆问题的研究，其中有了一些生成函数思想的雏形（该项研究同样也是卷积和的思想来源的线索）。最早提出母函数的是法国数学家拉普拉斯，他在其 1812 年出版的《概率的分析理论》中明确提出“概率生成函数的计算”，书中对欧拉的整数分拆的研究做了延伸。]]></description><category></category></item><item><title><![CDATA[算法分析中的欧拉方程：基于三数中值法的快速排序]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/136021570</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/136021570</guid><author>u011472272</author><pubDate>Sun, 04 Feb 2024 10:34:19 +0800</pubDate><description><![CDATA[本文我们分析了快排中的一个常见的优化思路：三数中值法。其动机主要是为了解决分割元取字数最小值时会造成过多无效比较的问题。写出优化后算法的递归式，利用生成函数性质转化为微分方程，然后我们发现这竟然是我们之前考试刷过的欧拉方程，可以用换元和微分算子法解出显式解得到生成函数。然后将生成函数展开，取其znz^{n}zn的系数就得到了平均情况的比较次数，将调和数的渐近估阶代入，得到比较次数的渐近估阶。上述步骤中，求解方程得显式解，以及将显式解展开取znz^{n}zn。]]></description><category></category></item><item><title><![CDATA[拒绝采用的原理]]></title><link>https://blog.youkuaiyun.com/u011472272/article/details/128911810</link><guid>https://blog.youkuaiyun.com/u011472272/article/details/128911810</guid><author>u011472272</author><pubDate>Tue, 07 Feb 2023 09:16:47 +0800</pubDate><description><![CDATA[拒绝采样的算法原理和两道例题]]></description><category></category></item></channel></rss>