Algorithm-Left Edge算法

算法输入:

  • 多个段,每个段由两个值表示,例如(1,3)

算法原理:

  1. 将多个段按照左边的值排序放到列表中
  2. 遍历列表,不断选择没有重叠的段,直到列表遍历结束,将选择的这些段放在同一行
  3. 增加行计数,重复第二步
    Algorithm-Left Edge算法_第1张图片

执行LE算法如下:

  1. 排序列表(这里一开始已按照左边的值排序) {1,6,4,7,2,3,5}
  2. 第一轮,取互不冲突的段1,2,3,放行1
  3. 第二轮,取互不冲突的段6,7,5,放行2
  4. 第三轮,取互不冲突的段4,放行3

结果如下:
Algorithm-Left Edge算法_第2张图片
表示最少需要三行使得段之间两两不冲突。

对于所给的段,可以画出冲突图如下:
Algorithm-Left Edge算法_第3张图片

所谓冲突图(Conflict Graph)是一种用来表示资源分配冲突的图结构。它由两个部分组成:

  • 节点: 节点代表需要分配的资源。
  • 边: 边代表两个资源之间存在冲突,即它们不能同时分配给同一个请求。

每一行取一个颜色画到冲突图上:
Algorithm-Left Edge算法_第4张图片
表示冲突图最少需要3种颜色使得相邻颜色不相同

你可能感兴趣的:(Algorithm,算法,Left,Edge,C++)