Algorithm 结果表明,顶点覆盖的启发式解最多是最优解的两倍
我得到的启发式解决方案是:Algorithm 结果表明,顶点覆盖的启发式解最多是最优解的两倍,algorithm,graph,graph-algorithm,heuristics,vertex-cover,Algorithm,Graph,Graph Algorithm,Heuristics,Vertex Cover,我得到的启发式解决方案是: 在图形上执行深度优先搜索 删除所有的叶子 剩下的图形成一个顶点覆盖 我被问到一个问题:“证明这个启发式算法最多是顶点覆盖最优解的两倍”。我怎样才能证明这一点呢?坏消息:启发式不起作用。 严格地说,1个孤立顶点是这个问题的反例。 尽管如此,启发式根本不提供顶点覆盖解决方案,即使您对孤立顶点和两点系进行了纠正。 看看顶点数为1到3的完全连通图: 1-严格地说,孤立顶点不是叶(它的阶数为0,而叶是阶数为1的顶点),因此启发式将保留它,而顶点覆盖将不保留它 2-启发式将丢
- 在图形上执行深度优先搜索
- 删除所有的叶子
- 剩下的图形成一个顶点覆盖
我被问到一个问题:“证明这个启发式算法最多是顶点覆盖最优解的两倍”。我怎样才能证明这一点呢?坏消息:启发式不起作用。 严格地说,1个孤立顶点是这个问题的反例。 尽管如此,启发式根本不提供顶点覆盖解决方案,即使您对孤立顶点和两点系进行了纠正。 看看顶点数为1到3的完全连通图: 1-严格地说,孤立顶点不是叶(它的阶数为0,而叶是阶数为1的顶点),因此启发式将保留它,而顶点覆盖将不保留它 2-启发式将丢弃两片叶子,而顶点覆盖将保留至少一片叶子
3-启发式将保留1个顶点,而顶点覆盖必须保留此组的至少2个顶点坏消息:启发式不起作用。 严格地说,1个孤立顶点是这个问题的反例。 尽管如此,启发式根本不提供顶点覆盖解决方案,即使您对孤立顶点和两点系进行了纠正。 看看顶点数为1到3的完全连通图: 1-严格地说,孤立顶点不是叶(它的阶数为0,而叶是阶数为1的顶点),因此启发式将保留它,而顶点覆盖将不保留它 2-启发式将丢弃两片叶子,而顶点覆盖将保留至少一片叶子
3-启发式将保留1个顶点,而顶点覆盖必须保留该团的至少2个顶点我假设图是连通的(如果不是这种情况,我们可以分别为每个组件解决此问题) 我还假设dfs树是根目录树,而叶子是根目录树中没有子节点的顶点(这很重要。如果我们定义不同,算法可能无法工作) 我们需要向大家展示:
v->u
(其中u
是v
的后续项)。边缘v->u
被S
覆盖。因此,u
位于S
中。让我们从不在s
中的启发式返回的顶点定义一个映射f
,作为f(v)=u
(其中v
和u
的含义与上一句相同)。请注意,v
是dfs树中u
的父级。但树中的任何顶点只能有一个父节点!因此,f
是一种注入。这意味着启发式返回的集合中但不是最优答案中的顶点数不大于最优答案的大小。这正是我们需要展示的
我假设图是连通的(如果不是这样,我们可以分别为每个组件解决这个问题) 我还假设dfs树是根目录树,而叶子是根目录树中没有子节点的顶点(这很重要。如果我们定义不同,算法可能无法工作) 我们需要向大家展示:
v->u
(其中u
是v
的后续项)。边缘v->u
被S
覆盖。因此,u
位于S
中。让我们从不在s
中的启发式返回的顶点定义一个映射f
,作为f(v)=u
(其中v
和u
的含义与上一句相同)。请注意,v
是dfs树中u
的父级。但树中的任何顶点只能有一个父节点!因此,f
是一种注入。这意味着启发式返回的集合中但不是最优答案中的顶点数不大于最优答案的大小。这正是我们需要展示的
是问题的启发性部分,还是你自己的建议作为问题的启发性“显示有