算法

什么是数据结构?

一、什么是数据结构?数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。结构包括逻辑结构和物理结构。数据的逻辑结构包括4种(1)集合:数据元素之间除了有相同的数据类型再没有其他的关系。(2)线性结构:数据元素之间是一对一的关系——线性表、栈、队列。

什么是动态规划?

谈到动态规划,很多人会疑惑动态规划难吗?说实话很难,特别是对于初学者来说,入门动态规划的时候,举个例子,看0-1背包问题,很容易就被题目弄懵了。就算看的懂答案,但就是自己不会做,不知道怎么下手。就像做递归的题,看的懂答案,但下不了手。对于动态规划,

什么是字符串(str)?

其实说到字符串,这个概念没有具体的说法,但是我们根据平时的归纳总结,也能一段,便于大家理解,字符串就是把字符连在一直,串成一串又一串;字符串内可以包含数字、字母、特殊符号等所有内容;在Python中只要对一些内容加上对双引号或一对单引号,就默认为是字符串;(三对单引号或三对双引号可以写多行字符串)。

回溯法经典例题分析

回溯法在我们解题步骤中经常被提到,这也是一种常用的方法,回溯法是一种经常被用在深度优先搜索(DFS)和广度优先搜索(BFS)的技巧。其本质是:走不通就回头。本篇将结合经典例题帮助大家对回溯法的理解。一、工作原理:(1)构造空间树;(2)进行遍历;(3)如遇到边界条件,

回溯法入门级讲解

说到回溯法,其实就是暴力搜索,并不是什么高效的算法,最多再剪枝一下。回溯算法能解决如下问题:(1)组合问题:N个数里面按一定规则找出k个数的集合(2)排列问题:N个数按一定规则全排列,有几种排列方式(3)切割问题:一个字符串按一定规则有几种切割方式(4)子集问题:一个N个数的集合里有多少符合条件的子集

C++代码浅谈IDA*算法

本篇简述一下IDA*算法,并列出代码帮助大家理解。(1)算法简介IDA*(IDA*)算法是一种启发式搜索算法,他是采取了迭代加深的A*算法,使用了深度优先搜索的方式。相对于A*算法,IDA*算法主要解决了:1.A*算法需要判重,对优先级排序的问题。

C++代码浅谈迭代加深搜索

本篇简述一下迭代加深搜索,并列出了伪代码帮助大家理解。迭代加深是一种每次限制搜索深度的深度优先搜索。(1)本质:它的本质还是深度优先搜索,只不过在搜索的同时带上了一个深度d,当d达到设定的深度时就返回,一般用于找最优解。如果一次搜索没有找到合法的解,就让设定的深度+1,重新从根开始。

图文解析A*搜索算法

A*算法是启发式搜索算法,是根据Dijkstra算法改进而来。一、定义:是一种在图形平面上,对于有多个节点的路径求出最低通过成本的算法。它属于图遍历和最佳优先搜索算法,亦是BFS的改进。二、如何更好的理解A*算法?如下图所示,S为起始(start)节点,G为目标(goal)节点。

什么是启发式搜索?

本篇将会结合实例解析启发式搜索,帮助大家更好理解。启发式搜索(英文:heuristicsearch)是一种改进的搜索算法。它在普通搜索算法的基础上引入了启发式函数,该函数的作用是基于已有的信息对搜索的每一个分支选择都做估价,进而选择分支。简单来说,

结合实例解析双向搜索

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