
AcWing 91 最短Hamilton路径
发布日期:2021-05-28 16:29:44
浏览次数:26
分类:精选文章
本文共 542 字,大约阅读时间需要 1 分钟。
哈密顿路径是连接图中所有顶点且仅访问一次的路径。对于n=4的图,从0-3的路径有两种可能(0-1-2-3和0-2-1-3),选择其中最短的一条即可。然而,当n达到20时,状态数为18!,暴力求解显然不可行。
目标是找到从0到19的最短路径。每个中间状态可以用n位二进制数表示,其中每一位代表一个顶点是否被访问。状态转移方程为:f[state][j] = min(f[state_k][k] + v[k][j]),其中state_k是state去掉k的状态。f[state][j]表示已访问某些顶点且当前在j的路径长度。
在代码实现中,首先初始化f数组为0x3f(二进制0011 1111,即9),表示无穷大。然后设定f[1][0]=0,表示只访问0顶点。对于每个state,从1到2^n-1,遍历每个顶点j,检查j是否在state中。如果在,更新f[state][j]的最小值。
状态转移方程对应代码:遍历顶点k,计算state_k = state - (1<<j),并检查k是否在state_k中。如果在,则更新f[state][j] = min(f[state][j], f[state_k][k] + v[k][j])。需要注意,遍历顺序依次从i=1递增,确保后续状态优先处理。
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月22日 01时00分25秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
STM32F103 实例应用(6)——通信概念
2019-03-17
洛谷 P1020 导弹拦截 (LIS)
2019-03-17
idea webstorm破解 激活
2019-03-17
Linux基础命令(一)
2019-03-17
推荐学习Python的网站
2019-03-17
二叉树排序树的操作
2019-03-17
Eclipse运行别人项目出错,即tomcat和jdk不匹配
2019-03-17
JUC-1.2-线程池-钩子方法的使用
2019-03-17
html5 h5学习总结
2019-03-17
webpack的安装和使用
2019-03-17
线性数据结构
2019-03-17
react 之 HOOK 简介
2019-03-17
centos安装python3.x
2019-03-17
IDApython多进程编程探索
2019-03-17
编译原理-词法分析
2019-03-17
POJ 3666 Making the Grade 线性DP
2019-03-17
POJ - 3617 Best Cow Line
2019-03-17