給定一些由左右符號組成的輸入,鏈接輸入的輸出鏈。多米諾骨牌匹配算法
想象一下,輸入是多米諾骨牌,您不能水平翻轉並需要將它們鏈接在一起。創建大型循環鏈(忽略如果你不能用真正的多米諾骨牌物理做到這一點)優於小型循環鏈,這比起始和結束不匹配的鏈優先。
我們正在尋找更多循環鏈(無論多少或鏈長)的輸出。例如,3個循環鏈的輸出優於1個大鏈和剩餘的單個多米諾骨牌。
有人能指出我正確的方向嗎?這屬於哪一組問題,並且有解決這個問題的現有算法嗎?
例子(輸出可能是不正確的!):
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,A)
out[0]=(0,1,2)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,C)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(E,F)
out[0]=(0,1)
out[1]=(2)
out[2]=(3)
in[0]=(A,B)
in[1]=(B,A)
in[2]=(C,D)
in[3]=(D,E)
out[0]=(0,1)
out[1]=(2,3)
in[0]=(A,B)
in[1]=(B,C)
in[2]=(C,D)
out[0]=(0,1,2)
@Lieven感謝您的糾正。 – zaf 2011-03-28 11:28:33
不提,但我寧可知道答案。我自己在思考圖表,但這是一個我的技能嚴重缺乏的領域。通過閱讀http://www.amazon.co.uk/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/ref=sr_1_1?s=books&ie=UTF8&qid=1301312087&sr=1-1試圖讓自己更好。如果你像我一樣,沒有足夠強的數學背景,我可以強烈推薦它。 – 2011-03-28 11:36:30
@Lieven嘿!我確實有一個強大的數學背景。我只是沒有玩多米諾骨牌:) – zaf 2011-03-28 11:41:53