我有一些文本說明該序列遵循特定順序。一些文本因遍歷線索而改變。我的目標是爲每個頁面生成靜態頁面,並通過鏈接進行互連。在兩個節點之間創建專用路徑的算法
問題是解決一個工具的問題,該工具將爲印刷書籍(顯然是靜態的)生成文本。所以想象一下,你正在閱讀例1中所示的一本書(在下圖中)。最初,您在節點A中,並且此頁面的文本是「轉到頁面B或頁面C」。選擇節點C,接着F→B→E→H,你會看到節點H中的一個內容,它應該與你看到的是否被A→B→D遍歷的內容不同 - > H,例如。因爲它是一本印刷書籍,所以我需要複製一些路徑,以便根據所遍歷的路徑更改某些節點的內容。
實施例:
在本例中,我有橫動兩種可能性:
A -> B -> D
A -> C -> D
預期結果:
Page 1: A (link to page 2 and 3)
Page 2: B (link to page 4)
Page 3: C (link to page 5)
Page 4: D
Page 5: DD'
這個簡單的例子,生成5頁,一旦頁面4有一部分文本應該是d只顯示讀數是否通過第3頁。
爲了模擬這個問題,我選擇了使用圖論。爲了更好地理解,我在下面的圖中畫了一個問題的兩個例子,我試圖解決:
注意,紅色虛線邊實際上不是邊緣。當訪問節點Y後,給定節點X的內容發生變化(讀取「如果到達X的路徑經過Y,則節點X的內容發生變化」),這些都是我用來表示的方式。
我讀了很多關於圖,遍歷策略(BFS和DFS)以及其他一些主題。我的目標是開發一種算法,以某種方式重新排列給定的圖形,以便生成前面提到的頁面。我沒有發現解決這個問題的任何已知問題,但我相信它應該已經存在。我的研究沒有發現任何有用的東西,所以我試圖自己解決。
我成功的方法是遍歷圖找到一個包含依賴於其他節點的內容的節點。找到該節點後,查找從依賴節點到當前節點的所有路徑。遍歷這些路徑,複製包含多個傳入邊的所有節點,刪除先前的連接並將當前節點與複製的節點連接,依此類推,直到消耗路徑的所有節點。這種算法效果很好,但這種方法效率不高,並且對於長文本可能會很慢。
我的問題是:你知道任何其他更好的方法來解決這個問題嗎?有沒有可以解決這類問題的理論或已知算法?
在此先感謝。
在示例1中有從A到I經過H的5條路徑,但爲什麼只有H1〜H4?路徑ABDHI和ACGHI是否支持節點H上的相同內容? – vvy
是的,因爲H的內容僅僅因E和F而變化,所以我們有這些可能的組合: - 不通過E F(A-> B-> D-> H) - 通過E(A - > BE-> H> - 經過F(A-> C-> F-> B-> D-> H) - 經過E和F(A-> C-> F-> B-> E> H> –