2016-02-10 25 views
-1

Example tree樹的每種可能的邏輯組合 - 算法?

  • 字母代表真/假值
  • True,則允許較低級別的遍歷;錯誤意味着低位字母也都是錯誤的。
  • 例如,如果a爲false,則下面的所有字母也將爲false。
  • 鑑於任何形成的樹,總是有3個級別,我如何計算所有字母的真/假值的所有有效組合?
  • 我正在尋找算法名稱,資源鏈接。不是你將如何實現它。

謝謝,任何幫助表示讚賞。

+0

深度第一和/或廣度優先看起來好這裏的候選人 –

+0

「計算所有有效的真/假值組合」是什麼意思?你只是想找出哪些是真的,哪些是假的?還是你想確定別的東西? –

+0

@KevinWells我試圖找出所有可能的有效組合真假。例如,如果j的父項爲假,則它是無效的。所以一個例子可能是(a = false。b = false,c = false,... rest是錯誤的)。 – zino

回答

1

有一個簡單的遞歸算法。以下結果列舉了分配給T的一組字母;由於信件被分配或者TF,很明顯如何推導出完整的映射:

# I use ++ for the operation of concatenating lists/sets 
# and [X] to produce a list/set consisting of the single element X 
enumerate(Q, Accum): 
    if Q is empty: 
    return [Accum] 
    else: 
    remove the head of Q and put it in Head 
    return enumerate(Q, Accum) ++ 
      enumerate(children(Head) ++ Q, Accum ++ [Head]) 

枚舉林的組合,叫

enumerate(Roots(Forest), [])