跳轉到主要內容
FlexiLayout 中的每個元素都有一個名為 MaxHypothesesCount 的重要參數。使用者可以利用此參數限制程式在尋找後續元素時可使用的假設數量。依預設,對於簡單元素,此參數設定為 5,而對於 Group 元素則為 1。也就是說,如果程式為某個元素找到了 15 個假設,它會選出品質最佳的 5 個,其餘 10 條假設鏈則保持未完成狀態。一般而言,Group 元素比簡單元素更容易被可靠地偵測出來。因此,對於 Group 元素來說,其最佳假設通常就是正確的那一個。 在多數情況下,程式會有數條未完成的假設鏈,因而存在數個可能的搜尋方向。程式會使用經典的「廣度搜尋」演算法來尋找最佳假設。這個演算法表示,程式會不考慮鏈的長度,而是始終優先嘗試完成當下品質最高的那一條假設鏈。 假設我們有一個描述了 30 個元素的 FlexiLayout,並且為其產生了兩條假設鏈:一條包含 29 個元素、其預估品質為 0.89 的假設鏈,以及一條包含 2 個元素、其預估品質為 0.92 的假設鏈。程式會嘗試先完成較短但品質較佳的那一條假設鏈,直到其所有延伸之後的品質都變得比第一條假設鏈還差為止。 對於 Group 元素,程式會使用所謂的品質最佳化。當程式為某個 Group 元素找到一條理想的完整假設鏈(亦即該鏈的品質為 1)時,它會忽略所有其他方案。每個元素的假設總數上限為 10,000。 為某個元素所建立的假設數量可能會超過 MaxHypothesesCount 中設定的數值。在此情況下,只有其中品質最佳且數量不超過使用者所設定上限的那些假設會被保留在假設樹中。