优先级搜索
优先级搜索:在对图进行搜索的时候,每访问一个新结点,就更新和这个结点邻接的结点的优先级,按照优先级的顺序访问结点。
void priority_first_search(int s)//s为优先级搜索生成树的根节点 { status(s)=VISITED;//标记s已经访问过 while(1) { for (w=s.adj();w!=-1;w=s.nextadj())//对s的每一个邻接点,进行更改优先级; w.priority_update(s); //下面对图中所有顶点进行访问,找出未访问的优先级最大的结点,作为下一个访问的结点 for (int t_priority=MIN,w=0;w<n;w++) { if(status(w)==UNVISITED) if (priority(w)>t_priprity) { s=w; t_priority=priority(w); } } if(status(s)=VISITED) status(s)=VISITED; } }
1.对于树的BFS DFS 搜索,本质上都是在搜索的过程中不断调整优先级,每一步的迭代选取优先级最高的顶点。
2.最小生成树prime算法:
优先级定义为子树外结点到已有的子树的距离,每次添加一个新结点,更新这个结点的邻接点的优先级。
3.单源点最短路径dijkstra算法:
优先级定义为子树外结点到源点的距离,每次添加一个新结点,更新这个结点的邻接点的优先级。

浙公网安备 33010602011771号