(2)函数组成
①in()
输入函数。
②dfs(int u,int k,int l)
利用贪心法每次取最近距离的函数,u 表示当前在顶点 u,k 表示已经走
过了 k 个点,l 表示所经过的路径和。将贪心法的解作为上界的初始值。
③get_lb( node p)
求对应节点 p 的目标函数。
④main()
主函数。
⑤get_up()
求分支限界法的上界。
⑥get_low()
求分支界限法的下界。
⑦solve()
利用分支限界法求解函数
(3)输入/输出设计
本程序可以通过键盘进行输入、屏幕进行输出。(根据实际程序情况,
还可以选择随机产生输入数据、将输出数据输出到文件等其它方式)
这里采用随机产生输入数据,将数据输出在屏幕上的方式。
(4)符号名说明
① n 表示顶点个数。
② mp[i][j] 表示顶点i和顶点j之间的距离。
③ inq[i] 表示顶点i已经走过了。
(5)算法描述
首先通过贪心法求解的值作为上界,把每个点最近的两条边之和的1/2
作为下界。
分支限界法通过设定目标函数,每次从优先级队列中取目标函数的值最
小的节点。先判断是否已经经过了n-1个点,如果已经经过了n-1个点,那
么可直接求出最短路径和,并与在队列里的其他节点的目标函数值比较,