我有向無環圖,其中的一個例子可能看起來像:合併兩個圖結構的部分的算法或理論?
|
(1)
/| \
/| \
(3) (2) (4)
// | \ \
// | \ \
// | \ \
(6)(7) (5) (8)(9)
| | | | |
(10)(11) (12)(13)(14)
\ \ | //
\ \ (15)_//
\ \ | /
\___(16)__/
|
|
- 每個節點的執行發生向下。
- 如果一個節點有多個傳出分支,則會創建一個圖的副本,並且所選分支在不同的進程中執行。
- 其中節點具有一個以上的傳入分支的曲線的副本被路由回到主過程,以便它們可以被合併,因此主副本具有所有的分支製成(在單獨的進程)的變化。
- 流程是長時間運行的和短暫的,所以我不能/不會已經執行後要路由每個節點回主 - 我只是想在主合併時,一大塊的工作(一分支)已經遠程完成。
因此,例如,在節點(1)
有三個分支必須在節點(16)
同步。就其本身而言,這是比較簡單 - 爲節點(1)
馬克節點(16)
和節點(1)
合併(16)
下來分支時執行命中(16)
被同步。
然而,節點(2)
有還必須在節點(16)
同步兩個分支(它也有兩個必須在節點(15)
同步)。
問題在於,在此示例中,當執行命中節點(16)
時,它不知道備份樹開始同步的距離(即節點(1)
或(2)
)。
我需要類似於圖着色方案的東西,由此不同的執行路徑提供它們自己的指向它們起源的節點的指針,所以當路徑(11) -> (16)
被激活時,執行知道要合併的圖的部分開始在節點(2)
。
有一些理論或算法可以幫助嗎?或者我以錯誤的方式處理問題?
任何時候你分割多個,每個副本還維護你分裂的節點。當你不得不合並回去時,回到你最後分割的那個節點。爲什麼不行?另外,也許你可以給更多的上下文來使你的問題更容易理解。 – 2010-07-14 18:40:31
這種情況發生在我身上,我可能會這樣做,但真正的問題會變得更加複雜,因爲主副本實際上可以四處移動,分支可以分支,然後再次分支。我試圖忽略上下文,因爲這會讓問題更難理解! – MalcomTucker 2010-07-15 08:31:48