关于算法:以最小步数销毁图表

Destroy the graph in minimum number of steps

有一个有向无环图,有N个顶点和M个边。其目的是通过以最少的步数删除图的所有顶点来破坏图。

一步删除规则:

  • 最多可以删除2个顶点。
  • 只有当顶点与任何未删除顶点之间没有边时,才能删除顶点。
  • 如果在一个步骤中删除了两个顶点,则它们之间不能有边。
  • 约束条件:n,m<=10^6,图形没有自循环和循环。


    哈罗德·N·加布的"双处理器调度的近似线性算法"给出了一种算法。此处为PDF。

    其基本思想是将顶点排序为最小级别数(如果忽略约束1,则每个级别都是可以同时删除的所有顶点),然后首先从最高级别删除顶点。

    本文给出了更详细的信息和最优性的证明。

    编辑

    要了解调度与给定问题的关系,请考虑调度一组作业。每个作业对应一个顶点。作业的依赖项对应于定向边。

    约束2/3对应于这样的说法:一个作业只能在所有依赖项都已计划好之后才能计划。

    约束1表示一次只能调度两个作业(即双处理器调度系统)。