跳转到主要内容
FlexiLayout 中的每个元素都有一个重要参数 MaxHypothesesCount。用户可以使用此参数限制程序在查找后续元素时可使用的假设数量。默认情况下,对于简单元素,此参数设置为 5,对于 Group 元素设置为 1。这意味着,如果程序为某个给定元素找到了 15 个假设,它会选择质量最好的 5 个,其余 10 条假设链将保持不完整。通常,Group 元素比简单元素更容易被可靠地检测到。因此,Group 元素的最佳假设通常就是正确的假设。 在大多数情况下,程序会有数条不完整的假设链,因此也就有多个可能的搜索方向。程序使用经典的“广度搜索(wide search)”算法来寻找最佳假设。该算法意味着程序始终尝试优先完成当前质量最高的那条假设链,而不考虑其长度。 假设我们有一个描述了 30 个元素的 FlexiLayout,其中已创建了两条假设链:一条包含 29 个元素、估计质量为 0.89 的假设链,以及一条包含 2 个元素、估计质量为 0.92 的假设链。程序将尝试优先完成较短但质量更高的那条假设链,直到其所有延伸的质量都劣于第一条假设链为止。 对于 Group 元素,程序会使用所谓的质量优化。当程序为某个 Group 元素找到一条理想的完整假设链时(即该链的质量为 1),它会忽略所有其他备选方案。每个元素的假设总数限制为 10,000 个。 为某个元素创建的假设数量可能会超过 MaxHypothesesCount 中设置的数值。在这种情况下,只有用户指定数量的最佳假设才会被保留在假设树中。