【算法定义】
广度优先算法又称宽度优先搜索,是一种简便的图的搜索算法之一。
【算法图示】
搜索方式如下图,直到搜不到点为止。
【实际运用】
实际运用在最小路径的求法上,主要应用在走迷宫上面。
【引入问题】
求下图的最小路径
【程序设计】
/*********************************************************************************
*Function: borad_priority
*Parameter1: 参数1:查找的数组
*Parameter2: 参数2:数组长度
*Parameter3: 参数3:目标变量
*Description: 广度优先搜索法,传入的数组进行队列的方式进行存储,当查找到参数3目标变量
的时候,就当前存储的结点返回出来。
*Output: 无
**********************************************************************************/
uint8_t borad_priority(uint8_t **way,uint8_t length,uint8_t targer_num)
{
uint8_t que[101];
uint8_t head=0;
uint8_t tail=1;
uint8_t i;
uint8_t step[6];
memset(step,0,sizeof(step)); /* 初始化步数数组*/
que[1]=0; /* 初始化队首 */
step[0]=1; /* 结点A的步数为1*/
do
{
for( i = 0; i <= 5; i++ )
{
if( way[que[head+1]][i] == 1 ) /* 判断A节点是否等于1,然后加入队列*/
{
tail++;
que[tail]=i;
step[i]=step[que[head+1]]+1;
if( que[tail] == targer_num ) /* 找到目标节点*/
{
return step[1];
}
}
}
head++;
}while( head < tail ); /* 当队列不为空*/
return FALSE;
}