人員安排問題 搜尋演算法的剪支方法應用

2022-02-01 10:41:19 字數 1121 閱讀 5153

問題定義

輸入:

輸出:

分析以及生成解空間

定義1:j的拓撲序列k1,jk2,...jkn>。滿足,如果 ji≤jj,那麼ji 排在jj。

命題1:如果p1→jk1,p2→jk2,..,pn→jkn是乙個可能 解, 當且僅當jk1,jk2,...,jkn必是乙個j的拓樸排序的序列。

證明1:顯然,依據問題的定義可以直接證明得到。

拓撲排序樹問題

輸入:偏序集合j

輸出:j的拓撲序列樹,即用樹表示所有的拓撲排序序列k1,jk2,...jkn>。滿足,如果 ji≤jj,那麼ji 排在jj。

輸入: 偏序集合s, 樹根root.

輸出: 由s的所有拓樸排序序列構成的樹.

生成樹根root;

選擇偏序集中沒有前序元素的所有元素, 作為root的子節點;

for root的每個字節點v do

s=s-;

把v作為根, 遞迴地處理s

拓撲序列樹的例子

分支界限搜尋方法

該問題變為對拓撲序列樹的最大權值序列的搜尋問題。

命題2,把代價矩陣某行(列)的各元素減去同乙個 數, 不影響優化解的求解,同時,所有被減去元素的和 + 某一串行對於當前權值矩陣計算的和 =  該序列對於原權值矩陣計算的和,且將所有被減去元素的和定義為解的代價下界。

證明2,該序列僅僅在權值矩陣的每一行(列)選取乙個元素,也必會選取乙個元素,那麼,把代價矩陣某行(列)的各元素減去同乙個數,並不會影響對於該行(列)元素的選取。

技巧1,代價矩陣的每行(列)減去同乙個數(該行或列的最小數), 使得每行和每列至少有乙個零, 其餘各元素非負。

技巧1的意義,可以降低權值的分布範圍以及提高了序列權值的下界,便於搜尋演算法裡權值計算以及剪支。

搜尋演算法可以定義為:

搜尋演算法(迷宮問題)

盼來盼去終於又要開始學習演算法了!筆者自學演算法,所以學習順序以個人舒服的形式!用例子來看 問題 有乙個迷宮,以1 2形式來表示 1表示是空地,即可以行走,2表示是障礙物,即無法通行。該迷宮由乙個矩陣形式表示。即1 1 2 1 1 1 1 1 1 1 2 1 1 2 1 1 1 1 1 2 有終點和...

搜尋演算法之迷宮問題

給定乙個n m方格的迷宮,迷宮裡有t處障礙,障礙處不可通過。給定起點座標和終點座標,問每個方格最多經過1次,在迷宮中移動有上下左右四種方式,保證起點上沒有障礙。問 有多少種從起點座標到終點座標的方案?從起點到終點的最短路徑長度是多少?輸出一條長度最短的路徑經過的點的座標,若不 存在起點到終點的路徑,...

AI中的幾種搜尋演算法 SA搜尋演算法

sa simulated annealing 搜尋演算法,就如它的名字,是模仿了退火的處理過程。在提到tsp問題的時候,經常會使用該演算法進行解決。該演算法的流程如下 1.首先便是初始化工作,設定初始溫度 temperature 獲得乙個隨機的解決方案,並將其設定為當前解決方案 cur sol 2....