Hamliton回路求解回溯pre数组也需要像visited数组一样回溯

来源:9-4 哈密尔顿回路算法的一个优化

甲骨文_0001

2021-10-17

图片描述

老师,我自己理解下来写的dfs过程最后63行,我也对pre数组作了回溯, pre[v]=-1, 参考源码里这一行没有,我个人认为也需要加上去,
老师之所以没加这一行,我大概有点懂,但说不上来原因,想请老师点拨一下哈:)

写回答

1回答

liuyubobobo

2021-10-18

不加没有问题,因为 dfs 本身会返回 true 或者 false,来标识是否有解,如果返回的是 false,pre 中存储的值才没有意义,但此时我们已经靠 dfs 的返回值(以及 end 的值)判断了除了 pre 的值没有意义,就不会使用了。


加上这一句的结果,是在图没有解的时候,所有的 pre 恢复成了 -1。如果你认为这样做更严谨,没有问题:)

但实际上如果没有解,我们也不会访问 pre 了,所以不加是 ok 的。为什么没有解不会访问 pre?如 46 行所示:

//img.mukewang.com/szimg/616c5f83094ae16904560307.jpg


继续加油!:)

1
1
甲骨文_0001
非常感谢!
2021-10-18
共1条回复

玩转算法系列--图论精讲(Java版)

30+小时系统学习,bobo带你克服被图论支配的恐惧

1591 学习 · 324 问题

查看课程