何建軍
摘要:具有長度約束的簡單路徑問題具有較高的應用價值。在一般圖中,它是一個NP完全問題,除非NP=P,否則沒有多項式時間算法。而對于一些特殊的圖,如有向無環(huán)圖,可以找到多項式時間算法。因此對有向無環(huán)圖中具有長度約束的簡單路徑問題進行研究。首先根據(jù)有向無環(huán)圖的特點,建立遞歸方程,然后根據(jù)遞歸方程給出一個在有向無環(huán)圖中求解具有長度約束的簡單路徑問題算法,同時給出一個有向無環(huán)圖中具有長度約束的簡單路徑構造算法。為證明算法正確性,進行相應實例驗證,把求解該問題的時間復雜度由O(NxTxL)改進為O((N+|E|)L),空間復雜度改進為O([EI+N)。
關鍵詞:有向無環(huán)圖;簡單路徑;長度約束
DOI:10.11907/rjdk.182897開放科學(資源服務)標識碼(OSID):中圖分類號:TP312文獻標識碼:A 文章編號:1672-7800(2019)010-0082-04
0引言
在圖論中,k-path問題指在給定的圖中找出一條長度為k的簡單路徑,是最長路徑問題和最短路徑問題的一種特殊情況。k-path問題在生物信息學、交通運輸、數(shù)據(jù)挖掘和模式匹配等領域有重要的應用價值。具有長度約束的簡單路徑(Simple Paths with Length Constraint,SPLC)問題是k-path問題的推廣,在一般圖中求解SPLC問題是一個NP完全問題,求解難度很大,除非NP=P,否則沒有多項式時間算法。但對一些特殊圖,比如有向無環(huán)圖、樹,則存在多項時間算法。
有向無環(huán)圖具有長度約束的簡單路徑問題(SPLCin DAGs),在序列模式挖掘、模式匹配、圖的可達查詢、多星成像等方面應用廣泛。文獻[16]把有向無環(huán)圖中具有長度約束的簡單路徑問題應用于圖的k步可達查詢中。文獻[18]把有向無環(huán)圖中具有長度約束的簡單路徑問題應用于多星成像的圈調度中。Zhang提出了具有周期間隙約束的序列模式挖掘問題,并將該模式挖掘方法應用在DNA序列挖掘中;Tanbeer等將具有周期間隙約束的序列模式挖掘方法應用于購買模式的挖掘。盡管Zhang等采用空間變換的方法進行序列模式挖掘,但是該方法的基礎是具有間隙約束的模式匹配問題。文獻[21]研究了具有間隙約束和一次性條件模式匹配問題的求解方法,給出了將具有間隙約束的模式匹配問題轉換為有向無環(huán)圖的算法,使具有間隙約束的模式匹配問題與SPLC in DAGs問題建立了實質性聯(lián)系。文獻[22]把有向無環(huán)圖中具有長度約束的簡單路徑問題應用于產品族零部件關系網(wǎng)絡,并提出時間復雜度為O(N4)的算法。
有向無環(huán)圖有很多特殊的性質,使一些在其它圖上沒有多項式時間算法的問題(除非NP=P),出現(xiàn)在有向無環(huán)圖上。比如最長路徑問題,在有向無環(huán)圖中,可以用拓撲排序的方式求解。文獻[8]利用網(wǎng)樹這種特殊的數(shù)據(jù)結構給出在有向無環(huán)圖上求解有長度約束的簡單路徑問題的一個多項式時間算法。本文利用有向無環(huán)圖的有向、無環(huán)特性建立遞歸方程,設置邊界條件,提出一種更簡潔的動態(tài)規(guī)劃算法。
1問題定義
定義1:圖G=(V,E),其中V稱為頂點集,E稱為邊集。從頂點u到v的路徑是有序定點序列s={u=v0,v1,……,vm=V},其中定點序列應滿足
定義2:具有長度約束的簡單路徑SPLC問題指給定圖G=(V,E)中任意兩點u,v∈V和正整數(shù)m,求解從u到v路徑長度為m的簡單路徑數(shù)目。SPLC in DAGs指在給定的有向無環(huán)圖中求解SPLC問題。
記有向無環(huán)圖G的節(jié)點數(shù)為N,邊數(shù)為|E|,長度約束為L,從vi到vj的長度為m的所有有向路徑構成的集合S[i,j,m],從vi到vj的長度為m且vj的前驅為vk的所有有向路徑構成的集合S[i,k,j,m]。
SPLC in DAGs問題的求解難度在于定點u和v之間的路徑數(shù)有可能呈現(xiàn)指數(shù)形式,如圖1所示,因此不能采用窮舉法列出所有可能的路徑并判定路徑長度是否滿足約束條件進行求解。本文采動態(tài)規(guī)劃法進行求解。
2 動態(tài)規(guī)劃算法
2.1遞推方程建立
有向無環(huán)圖性質包括:①若存在從vi到vj的有向邊,則從任意一個頂點到vi的有向路上,一定不會出現(xiàn)vj,否則會形成一個圈;②若有向無環(huán)圖任意一條有向路中均無重復的頂點,則為有向路徑;③在集合S[i,k,m-1]和集合S[i,k,j,m]之間存在一一對應關系,即在有向五環(huán)圖G中從vi到vk的長度為m-1的所有有向路構成的集合,和在有向無環(huán)圖G中從vi到vj的長度為m且vj的直接前驅為vk的所有有向路構成的集合之間存在一一對應關系,這是因為從S[i,k,m-1]任取一條從vi到vk且長度為m-1的有向路p,添加上有向邊
2.2求解算法QNSPCINDGA
變量說明:A[N][L]是一個二維數(shù)組,S[j][h]存儲的是從結點vi到結點vj且長度為h的路徑數(shù)目。N是圖G的結點數(shù),L是設定的路徑長度。A[N]是一個數(shù)組的,A[k]是一個集合形變量,其中春初的是以vk為弧頭的所有弧的弧尾結點。Level記錄當前正在計算的路徑長度。
2.3從原點到其他結點的長路徑構造
3算法QNSPCINDGA實例
4算法復雜性分析與比較
算法QNSPCINDGA初始化時取結點集的時間為O(N),讀取弧集并初始化數(shù)組A的時間為。O(|E|),初始化M數(shù)組的時間為O(NL)??偣矆?zhí)行L次循環(huán),而每次循環(huán)訪問每個結點一次,訪問每個結點時,訪問其每條人弧1次,執(zhí)行循環(huán)時間為O((N+|E|)L)。所以算法時間復雜度均為O((N+|E|)L)。算法QNSPCINDGA空間消耗主要在對圖G的存儲和S數(shù)組上。對圖G的存儲由A數(shù)組完成,而A數(shù)組中的每個元素是一個逆領接鏈表,每條人弧僅存儲一次,且每個結點僅存儲一次,所以對圖G的存儲空間為O(N+0E0)。數(shù)組S存儲空間為O(NL),算法空間復雜度為O(|E|+NL)。
算法PA7HSPCINDAG的時間復雜度和空間復雜度估計:設從源點到其它節(jié)點結點且長度為L的路徑地數(shù)目為W,輸出每條長度為L的路徑耗時最多為O(L),所以總時間復雜度為O(WL)。算法PATHSPCINDAG僅需要NL的二維數(shù)組S存儲路徑數(shù)目和進行L次遞歸調用,其遞歸調用棧深度為L,所以其空間復雜度為O(NL+L)。
5結語
本文對有向無環(huán)圖具有長度約束的簡單路徑SPLC問題進行研究,針對有向無環(huán)圖的特點提出了一個動態(tài)規(guī)劃算法,并證明了算法正確性和有效性。該算法簡潔明了,時間復雜度和空間復雜度均相對較低,避免了文獻[8]的組合爆炸問題。邊帶權有向無環(huán)圖中具有長度約束的簡單路徑問題是下一步研究對象。