搜索

图文解析图论BFS(广度优先搜索)

图文解析图论BFS(广度优先搜索)BFS全称是BreadthFirstSearch,中文名是宽度优先搜索,也叫广度优先搜索。是图上最基础、最重要的搜索算法之一。所谓宽度优先。就是每次都尝试访问同一层的节点。如果同一层都访问完了,再访问……

结合实例解析双向搜索

结合实例解析双向搜索本篇将会结合实例解析双向搜索。一、双向搜索当给出了起点状态与终点状态时,使用普通的搜索从起点向下搜索,则效率会很低,搜索树会非常庞大;所以,可以使用双向搜索,及从起点与终点同时向中间搜索,搜索到同一个……

Alpha-Beta剪枝搜索图文讲解

Alpha-Beta剪枝搜索图文讲解本篇将简要介绍α-β剪枝,这是一种基于剪枝(α-βcut-off)的深度优先搜索(depth-firstsearch)。一、什么是α剪枝?(1)……

C++ STL序列查找算法std::search_n()函数入门

上一节我们学习了序列查找算法search()函数,本节我们将继续学习序列查找算法——search_n()函数。我们知道,search()函数的功能是找寻主序列里第一次出现子序列的位置,那么这个search_n()函数到底有什么功能呢?“n”有“几个的意思”,search_n()函数的功能是在一个主序列中找寻第一次出现的n个连续且相等元素,类比search()函数的话就相当于是子序列变成了常量序列(

什么是启发式搜索?

什么是启发式搜索?本篇将会结合实例解析启发式搜索,帮助大家更好理解。启发式搜索(英文:heuristicsearch)是一种改进的搜索算法。它在普通搜索算法的基础上引入了启发式函数,该函数的作用是基于已有的信息对搜索的……

C++ STL序列查找算法std::search()函数入门

本节我们将继续进行序列查找的学习——search()函数。读者还记得我们之前学过的find_end()函数吗?如果忘记了可前往《C++ STL序列查找算法find_end()函数入门》自行学习。find_end()函数的功能是找寻主序列里最后一次出现子序列的位置,search()函数恰恰相反,search()函数的功能是找寻主序列里第一次出现子序列的位置。search(first1,last1,f

Minimax算法(极小化极大算法)及实例讲解

Minimax算法(极小化极大算法)及实例讲解计算机科学中最有趣的事情之一就是编写一个人机博弈的程序。有大量的例子,最出名的是编写一个国际象棋的博弈机器。但不管是什么游戏,程序趋向于遵循一个被称为Minimax算法,伴随着各种各样的子算法在一块。……

C++ STL二分查找std::lower_bound()函数入门

前面几章,我们已经深入学习了很多查找算法,比如find()函数、find_if()函数、find_first_of()函数等,它们都是线性查找。本节我们开始其他查找方式的学习,比如lower_bound()函数、upper_bound()函数、equal_range()函数和binary_search()函数,它们都能够查找元素,只不过底层采用二分查找的方式,效率比线性查找高。本节我们进行lowe

C++ STL查找算法std::find()函数入门

本节我们进入查找算法find()函数的学习。find(beg , end , val)函数的功能是在指定区间[beg , end)查找是否有与val值相等的元素,是则返回指向该元素的迭代器,否则返回end()。对于自定义数据来说,使用find()函数需要类内重载”==“运算符。下面我们通过find()函数来分别对基本数据类型和自定义数据类型进行指定元素查找:#include<iostream

图文解析A*搜索算法

图文解析A*搜索算法A*算法是启发式搜索算法,是根据Dijkstra算法改进而来。一、定义:是一种在图形平面上,对于有多个节点的路径求出最低通过成本的算法。它属于图遍历和最佳优先搜索算法,亦是BFS的改进。二、如何更好的……