图文解析图论BFS(广度优先搜索) BFS全称是BreadthFirstSearch,中文名是宽度优先搜索,也叫广度优先搜索。是图上最基础、最重要的搜索算法之一。所谓宽度优先。就是每次都尝试访问同一层的节点。如果同一层都访问完了,再访问下一层。这样做的结果是,BFS算法找到的路径是从起点开始的最短合法路径。 图论 2022年04月11日 112 点赞 0 评论 100070 浏览
舞蹈链算法(Dancing Links)运用及执行过程 舞蹈链(Dancinglinks)实际上是一种数据结构,可以用来实现X算法,以解决精确覆盖问题。什么是精确覆盖(ExactCover)问题呢?维基百科上对精确覆盖的定义如下:在一个全集X中若干子集的集合为S。S*是S的一个子集,当且仅当X中的每一个元素在S*中恰好出现一次时,S*称之为一个精确覆盖。 搜索算法 2022年03月01日 119 点赞 0 评论 83620 浏览
搜索算法简介 说到搜索算法,它是利用计算机的高性能来有目的的穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。搜索过程实际上是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的节点的过程。搜索算法在路径规划、行为决策、语句识别、语义分析等多个领域都发挥着非常重要的作用, 搜索算法 2022年01月06日 67 点赞 0 评论 83441 浏览
最优化算法实例讲解 DFS(深度优先搜索)是一种常见的算法,我们平时遇到的大部分题目都可以用DFS解决,但是一般情况下,这都是骗分算法,很少会有爆搜为正解的题目。因为DFS的时间复杂度特别高。一、定义DFS(深度优先搜索)定义上的深度优先搜索的思路与树的先序遍历非常相似, 搜索算法 2022年01月22日 173 点赞 0 评论 82420 浏览
结合实例解析双向搜索 本篇将会结合实例解析双向搜索。一、双向搜索当给出了起点状态与终点状态时,使用普通的搜索从起点向下搜索,则效率会很低,搜索树会非常庞大;所以,可以使用双向搜索,及从起点与终点同时向中间搜索,搜索到同一个状态时,将从起点与终点搜索的值相加得到最终值的搜索;一般给出“始态”与“终态”时, 搜索算法 2022年05月07日 161 点赞 0 评论 77844 浏览
C++代码浅谈IDA*算法 本篇简述一下IDA*算法,并列出代码帮助大家理解。(1)算法简介IDA*(IDA*)算法是一种启发式搜索算法,他是采取了迭代加深的A*算法,使用了深度优先搜索的方式。相对于A*算法,IDA*算法主要解决了:1.A*算法需要判重,对优先级排序的问题。 搜索算法 2022年05月15日 144 点赞 0 评论 68736 浏览
C++ STL查找算法std::find()函数入门 本节我们进入查找算法find()函数的学习。find(beg,end,val)函数的功能是在指定区间[beg,end)查找是否有与val值相等的元素,是则返回指向该元素的迭代器,否则返回end()。对于自定义数据来说,使用find()函数需要类内重载”==“运算符。 C++常用算法(一) 2025年10月22日 0 点赞 0 评论 1318 浏览
C++ STL二分查找std::lower_bound()函数入门 前面几章,我们已经深入学习了很多查找算法,比如find()函数、find_if()函数、find_first_of()函数等,它们都是线性查找。本节我们开始其他查找方式的学习,比如lower_bound()函数、upper_bound()函数、equal_range()函数和binary_search()函数,它们都能够查找元素,只不过底层采用二分查找的方式,效率比线性查找高。本节我们进行lowe C++常用算法(一) 2025年10月24日 2 点赞 0 评论 1241 浏览
C++ STL序列查找算法std::search()函数入门 本节我们将继续进行序列查找的学习——search()函数。读者还记得我们之前学过的find_end()函数吗?如果忘记了可前往《C++STL序列查找算法find_end()函数入门》自行学习。find_end()函数的功能是找寻主序列里最后一次出现子序列的位置, C++常用算法(一) 2025年10月24日 0 点赞 0 评论 1209 浏览
C++ STL二分查找std::upper_bound()函数入门 前面我们学习了lower_bound()函数的学习,读者是否还记得lower_bound()函数的功能呢?对的,lower_bound()函数的功能是在指定有序范围内查找第一个不低于目标元素的元素。而本节我们会学习一个与lower_bound()函数“相反”的函数, C++常用算法(一) 2025年10月24日 0 点赞 0 评论 1196 浏览