> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Hipótesis y optimización de la búsqueda

> El emparejamiento de un FlexiLayout crea un árbol de hipótesis ramificado; aprenda cómo la búsqueda amplia y la configuración Número de hipótesis supervivientes mantienen la velocidad del emparejamiento.

Cuando el programa empareja un FlexiLayout con una imagen, intenta encontrar los objetos de la imagen que correspondan a los elementos del FlexiLayout. A continuación, el programa estima en qué medida un objeto concreto coincide con su elemento.

La estimación es un valor entre 0 y 1. Un valor de calidad de 1 significa que el objeto detectado coincide al 100 %. Si la calidad no es 0, el emparejamiento del FlexiLayout crea regiones para los bloques.

<div id="how-the-tree-of-hypotheses-is-built">
  ## Cómo se construye el árbol de hipótesis
</div>

El programa busca los elementos consecutivamente, en el orden en que aparecen en el árbol de FlexiLayout, de arriba abajo. Para cada elemento, el programa puede encontrar varios objetos coincidentes (o conjuntos de objetos) en el área de búsqueda.

El programa formula una hipótesis para cada objeto del área de búsqueda y estima su calidad: cuanto mejor sea la coincidencia, mayor será la calidad de la hipótesis.

La ubicación del objeto detectado determina la ubicación de los objetos que se encuentran más abajo en el árbol de FlexiLayout. El programa utiliza cada una de las hipótesis del elemento actual como punto de partida para buscar los elementos siguientes situados debajo del elemento actual.

Así, las hipótesis de los elementos se ramifican, lo que da lugar a un árbol de hipótesis que contiene muchas más ramas que el árbol de elementos.

Si varios elementos se agrupan en un elemento de grupo, todo el grupo se considera un único elemento para el que se formulan varias hipótesis. La calidad de un elemento de grupo se calcula multiplicando las hipótesis de los elementos que lo componen.

Todo el FlexiLayout puede considerarse un elemento **de grupo**, cuya calidad puede calcularse multiplicando las calidades de las hipótesis de todos sus elementos.

<div id="the-best-complete-branch-of-hypotheses">
  ## La mejor rama completa de hipótesis
</div>

Al realizar el emparejamiento de un FlexiLayout con imágenes, el programa necesita encontrar la mejor rama completa de hipótesis. Una rama es completa si incluye todos los elementos, del elemento superior al inferior.

Una solución general sería considerar todas las combinaciones posibles de hipótesis para todos los elementos, generar el conjunto completo de posibles ramas completas y seleccionar la rama de mayor calidad. Esto no es práctico, ya que llevaría demasiado tiempo.

Además, si el número de elementos es bastante grande y sus áreas de búsqueda son solo aproximadas, puede producirse una explosión combinatoria, lo que da lugar a un crecimiento incontrolable del número de hipótesis.

El programa utiliza varios métodos para optimizar la búsqueda y mantener al mínimo el número de hipótesis.

<div id="search-optimization">
  ## Optimización de la búsqueda
</div>

Cada elemento de FlexiLayout tiene un parámetro importante llamado Número de hipótesis supervivientes. Use este parámetro para limitar el número de hipótesis que el programa puede utilizar al buscar el siguiente elemento.

De forma predeterminada, este parámetro se establece en 5 para los elementos simples y en 1 para los elementos de grupo. Esto significa que, si el programa encuentra 15 hipótesis para un elemento determinado, seleccionará las cinco mejores y dejará incompletas las otras 10 cadenas de hipótesis.

Los elementos de grupo suelen detectarse con más fiabilidad que los elementos simples. Por lo tanto, la mejor hipótesis para un elemento de grupo normalmente resulta ser la correcta.

En la mayoría de los casos, el programa tiene varias cadenas incompletas de hipótesis y, en consecuencia, varias direcciones de búsqueda posibles. El programa busca la mejor hipótesis mediante el clásico algoritmo de "búsqueda amplia". Con este algoritmo, el programa siempre intenta completar la cadena que en ese momento tiene la mejor calidad, independientemente de su longitud.

Supongamos que un FlexiLayout describe 30 elementos para los que se han creado dos cadenas de hipótesis: una cadena de 29 elementos con una calidad estimada de 0,89 y una cadena de 2 elementos con una calidad estimada de 0,92.

El programa intentará completar la cadena más corta, que es mejor en términos de calidad, hasta que la calidad de todas sus extensiones sea peor que la calidad de la primera cadena.

En el caso de un elemento de grupo, el programa usa optimización de calidad. Cuando el programa encuentra una cadena completa ideal de hipótesis para un elemento de grupo determinado (es decir, la calidad de esta cadena es 1), ignora todas las demás variantes.

El número total de hipótesis para cada elemento está limitado a 10.000.

<div id="related-topics">
  ## Temas relacionados
</div>

* [Cómo se generan y evalúan las hipótesis](/es/flexi-capture/fls/hypotheses/quality)
