如何证明2-SET算法的正确性
  • 板块学术版
  • 楼主Meteor_f
  • 当前回复11
  • 已保存回复11
  • 发布时间2021/6/20 15:32
  • 上次更新2023/11/4 21:41:09
查看原帖
如何证明2-SET算法的正确性
417283
Meteor_f楼主2021/6/20 15:32

n对夫妇出席典礼,每队夫妇仅能出席1人,并且有m对人之间有矛盾(夫妇之间不会有矛盾),问是否可以找到一种方法能保证每对夫妇中都派出一个人参加典礼。

利用2-SET算法的解决过程为,将n对夫妇看作2n个节点,如果A与B有矛盾,则加一条A到~B的有向边,代表如果A出席,则~B必须出席;同理,也会加一条B到~A的有向边。

通过对该有向图求强连通分量,如果存在某SCC中包含一对夫妇则无解,否则有解。输出一个有解的答案是按照逆拓扑序逐个处理SCC即可。

我只能理解如果某SCC中存在一对夫妇节点则无解,但是“反之有解”却无法理解其正确性,并且也很难找到证明,是否有牛人能来证明一下,哪怕是口头证明(非严格数学证明)也行。

顺便再问一下,从竞赛角度,解题过程总是更加注重“产生想法”而不是“证明正确性”,典型地,在理解很多算法正确性之前便可以拿来直接使用。竞赛场景中弱化严格证明直接盲猜想法过题的例子多吗?

2021/6/20 15:32
加载中...