Chaque élément de FlexiLayout possède un paramètre important appelé MaxHypothesesCount. L’utilisateur peut s’en servir pour limiter le nombre d’hypothèses que le programme peut exploiter lors de la recherche de l’élément suivant. Par défaut, ce paramètre est défini sur 5 pour les éléments simples et sur 1 pour les éléments Group. Autrement dit, si le programme trouve 15 hypothèses pour un élément donné, il sélectionnera les cinq meilleures et laissera les 10 autres chaînes d’hypothèses incomplètes. Les éléments Group, en règle générale, sont détectés plus fiablement que les éléments simples. Par conséquent, la meilleure hypothèse pour un élément Group s’avère généralement être la bonne.
Dans la plupart des cas, le programme dispose de plusieurs chaînes d’hypothèses incomplètes et, par conséquent, de plusieurs directions de recherche possibles. Le programme recherche la meilleure hypothèse à l’aide de l’algorithme classique de « recherche en largeur ». Cela signifie qu’il essaie toujours de compléter la chaîne qui présente la meilleure qualité à cet instant, indépendamment de sa longueur.
Supposons que nous ayons un FlexiLayout décrivant 30 éléments pour lesquels deux chaînes d’hypothèses ont été créées : une chaîne de 29 éléments avec une qualité estimée à 0,89 et une chaîne de 2 éléments avec une qualité estimée à 0,92. Le programme tentera de compléter la plus petite chaîne, meilleure en termes de qualité, jusqu’au moment où les qualités de toutes ses extensions deviendront inférieures à celle de la première chaîne.
Dans le cas d’un élément Group, le programme utilise une optimisation dite « basée sur la qualité ». Lorsque le programme trouve une chaîne d’hypothèses complète idéale pour un élément Group donné (c’est‑à‑dire que la qualité de cette chaîne est égale à 1), il ignore toutes les autres variantes. Le nombre total d’hypothèses pour chaque élément est limité à 10 000.
Le nombre d’hypothèses créées pour un élément peut dépasser la valeur définie dans MaxHypothesesCount. Dans ce cas, seul le nombre des meilleures hypothèses défini par l’utilisateur sera intégré à l’arbre des hypothèses.