最小路徑可重複點覆蓋

最爱丁珰發表於2024-08-24

對任意一個路徑可重複點覆蓋(不一定最小),如果存在一個點\(p\)被重複覆蓋了,那麼就任取經過其的兩條路徑\(···\rightarrow u\rightarrow p\rightarrow v\rightarrow···\)\(···\rightarrow x\rightarrow p\rightarrow y\rightarrow···\)。如果此時圖中已經存在了\((u,v)\)或者\((x,y)\),假設存在\((u,v)\),那麼我們可以將\(···\rightarrow u\rightarrow p\rightarrow v\rightarrow···\)變成\(···\rightarrow u\rightarrow v\rightarrow···\),從而\(p\)的覆蓋次數減少一,並且仍然是當前圖的路徑可重複點覆蓋(也就是說任何一條路徑的邊都屬於當前圖);如果此時圖中既不存在\((u,v)\)也不存在\((x,y)\),那麼我們隨便新增一條邊,不妨新增\((u,v)\),從而我們可以將\(···\rightarrow u\rightarrow p\rightarrow v\rightarrow···\)變成\(···\rightarrow u\rightarrow v\rightarrow···\)\(p\)的覆蓋次數減少一,並且是當前圖的路徑可重複點覆蓋;一直重複上述過程,最後會得到一個新圖,並且得到這個新圖的路徑點覆蓋,而這個新圖顯然是傳遞閉包的子圖,所以這個新圖的路徑點覆蓋也就是傳遞閉包的一個路徑點覆蓋。也就是說原圖的任意一個路徑可重複點覆蓋都可以轉化成傳遞閉包的路徑點覆蓋;傳遞閉包的任意一個路徑點覆蓋,也可以轉化成原圖的路徑可重複點覆蓋,只需要將路徑點覆蓋中不屬於原圖的邊\((x,y)\)替換成原圖中\(x\)\(y\)的路徑即可

相關文章