區間排程 貪心演算法

2021-07-25 18:57:30 字數 584 閱讀 2447

一、  找到數目盡可能多的相容任務

假設每個任務j從sj開始到fj結束。若要找到盡可能多的相容任務,只需要將所有任務按照結束時間排序,每次都選擇最早結束的那個任務。

因為每次選最早結束的,則留給之後的時間就越多。在餘下的時間中與被選的那個任務衝突的任務最多也只能有乙個被選(代替現在被選的這個任務),但是留下的時間卻更少了,所以一定沒有現在這個選法優。

二、 區間劃分問題

假設有好多個演講在不同的時間進行,可能會導致衝突,請你選擇用最少的教室來避免衝突。

我們定義「深度」這個概念:通過時間線上任何一點的最大區間數。   就是說重合區間的最大個數。由於重合的區間必然不能安排在乙個教室,所以安排的教室數必然不小於區間集合的深度。

那麼,安排的演算法如下:

假設區間集合的深度為d,有1,2...d個標籤。

先將所有區間按照開始時間排序,為  i1 i2 i3 ... in  。由深度的定義可以知道每個區間最終一定會被分配乙個標籤,否則說明這個區間至少和d個區間衝突了,那麼這個深度也就不是d了。分配的策略為:

按照順序1到n,對每乙個區間ii 為它分配的標籤號不與和它衝突的區間的標籤號想同即可。(所以分配的方法也就不唯一)。

區間排程問題 貪心演算法

問題 有 n 項工作,每項工作分別在 s i 時間開始,在 t i 時間結束 對於每項 工作,你都有可以選擇參與與否。如果選擇了參與,那麼自始自終都必須全程參與。此外,參與工作的時間段不能重疊 即使是開始的瞬間和結束的瞬間的重疊也 是不允許的 include include include usin...

區間排程問題 貪心演算法

一 題目 區間排程問題 有n項工作,每項工作分別在si時間開始,在ti時間結束。對於每項工作,你都可以選擇參與與否。如果選擇了參與,那麼自始至終都必須全程參與。此外,參與工作的時間段不能重複 即使是開始的瞬間和結束的瞬間的重疊也是不允許的 你的目標是參與盡可能多的工作,那麼最多能參與多少項工作呢?1...

貪心演算法 區間排程問題總結

問題定義 存在單一資源,有一組以時間區間形式表示的資源請求reqs 第i個請求希望占用資源一段時間來完成某些任務,這段時間開始於begin i 終止於end i 如果兩個請求req i和req j在時間區間上沒有重疊,則說這兩個請求是相容的,求出這組請求的最大相容子集 最優子集 舉個例子 有一間多 ...