> ## 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.

# 仮説と検索の最適化

> FlexiLayout のマッチングでは分岐する仮説ツリーが構築されます。幅優先探索と Number of surviving hypotheses の設定によって、マッチングを高速に保つ方法を学びます。

画像に対して FlexiLayout をマッチングする際、FlexiLayout Studio は、画像上で FlexiLayout 内の要素に対応するオブジェクトを探します。次に、特定のオブジェクトがその要素にどの程度一致しているかを評価します。

この評価値は 0 から 1 までの数値です。品質が 1 の場合、検出されたオブジェクトが 100% 一致していることを意味します。品質が 0 でなければ、FlexiLayout のマッチングによりブロックの領域が作成されます。

<div id="how-the-tree-of-hypotheses-is-built">
  ## 仮説ツリーがどのように構築されるか
</div>

FlexiLayout Studio は、FlexiLayout tree で上から下に並んでいる順に、要素を順番に探します。各要素について、search area 内で複数の一致するオブジェクト (またはオブジェクトのセット) が見つかることがあります。

FlexiLayout Studio は、search area 内の各オブジェクトに対して仮説を立て、その 品質 を評価します。マッチングの精度が高いほど、仮説の 品質 も高くなります。

検出されたオブジェクトの位置によって、FlexiLayout tree でその下にあるオブジェクトの位置が決まります。FlexiLayout Studio は、現在の要素の各仮説を起点として、ツリー内でその後に続く要素を探します。

このようにして要素の仮説は枝分かれしていき、その結果、要素の tree よりもはるかに多くの分岐を含む仮説ツリーが作成されます。

複数の要素が 1 つの **Group** 要素にまとめられている場合、グループ全体が 1 つの要素として扱われ、その要素に対して複数の仮説が立てられます。**Group** 要素の 品質 は、構成要素の仮説の 品質 を掛け合わせて計算されます。

FlexiLayout 全体も **Group** 要素とみなすことができ、その 品質 は、含まれるすべての要素の仮説の 品質 を掛け合わせて計算できます。

<div id="the-best-complete-branch-of-hypotheses">
  ## 最適な完全仮説分岐
</div>

画像に対して FlexiLayout のマッチングを行う場合、FlexiLayout Studio は最適な完全仮説分岐を見つける必要があります。分岐が完全であるとは、最上位の要素から最下位の要素まで、すべての要素を含んでいることを意味します。

一般的な方法としては、すべての要素について考えられる仮説の組み合わせをすべて検討し、可能な完全仮説分岐をすべて作成したうえで、品質が最も高い分岐を選択することになります。しかし、この方法では時間がかかりすぎるため、実用的ではありません。

さらに、要素数がかなり多く、検索領域が大まかにしか指定されていない場合は、組み合わせ爆発が発生し、仮説の数が制御不能なほど増大するおそれがあります。

そのため、FlexiLayout Studio では仮説の数を最小限に抑えるために、検索を最適化するいくつかのメソッドを使用します。

<div id="search-optimization">
  ## 検索の最適化
</div>

FlexiLayout の各要素には、**Number of surviving hypotheses** という重要なパラメーターがあります。このパラメーターを使用すると、後続の要素を探す際に FlexiLayout Studio が使用できる仮説の数を制限できます。

デフォルトでは、このパラメーターは単純な要素で 5、**Group** 要素で 1 に設定されています。つまり、FlexiLayout Studio がある要素について 15 個の仮説を見つけた場合、最も良い 5 つを選択し、残り 10 個の仮説チェーンは未完成のままになります。

通常、**Group** 要素は単純な要素よりも高い精度で検出されます。そのため、**Group** 要素では最良の仮説が正しい結果になることがほとんどです。

多くの場合、FlexiLayout Studio には未完成の仮説チェーンが複数あり、そのため検索方向の候補も複数存在します。最良の仮説を見つけるために、従来の「幅優先探索」アルゴリズムを使用します。このアルゴリズムでは、FlexiLayout Studio はチェーンの長さに関係なく、その時点で品質が最も高いチェーンを常に完成させようとします。

30 個の要素を記述する FlexiLayout があり、それに対して 2 つの仮説チェーンが作成されているとします。1 つは 29 要素からなり推定品質が 0.89 のチェーン、もう 1 つは 2 要素からなり推定品質が 0.92 のチェーンです。

FlexiLayout Studio は、短い方のチェーンの拡張すべての品質が最初のチェーンの品質を下回るまで、品質の面でより優れているその短いチェーンを完成させようとします。

**Group** 要素の場合、FlexiLayout Studio は品質による最適化を使用します。特定の **Group** 要素について理想的な完全な仮説チェーン (つまり、そのチェーンの品質が 1) を見つけると、他のすべての候補は無視されます。

各要素の仮説の総数は 10,000 に制限されています。

<div id="related-topics">
  ## 関連トピック
</div>

* [仮説の生成と評価の仕組み](/ja/flexi-capture/fls/hypotheses/quality)
