Russian (Русский) - Change language

Нечеткий прямоугольник

Нечеткий прямоугольник – это структура, описывающая класс прямоугольников с границами, лежащими в допустимых диапазонах значений. Нечеткий прямоугольник состоит из двух прямоугольников: внешнего и внутреннего.

В языке гибких описаний нечеткий прямоугольник представляется типом FuzzyRect.

Как можно видеть на рисунке ниже, в общем случае, когда заданы ограничения на все границы, в области поиска существует участок, который должен попасть внутрь любой гипотезы элемента. Этот участок и называется внутренним прямоугольником. Максимальный описывающий прямоугольник возможной гипотезы называется внешним прямоугольником.

Показать иллюстрацию

Пусть границы элемента заданы следующими интервалами:

LeftBound: [L1, L2], where L1 <= L2
TopBound: [T1, T2], where T1 <= T2
RightBound: [R1, R2], where R1 <= R2
BottomBound: [B1, B2], where B1 <= B2
    

Нечеткий прямоугольник, содержащий информацию о заданных границах, строится следующим образом: InternalRect: [L2, T2, R1, B1], ExternalRect: [L1, T1, R2, B2].

В случае, если пользователь не накладывает ограничений на границы области поиска, внутренний прямоугольник является вырожденным и не имеет геометрического смысла. При этом L1=R1, L2=R2, T1=B1, T2=B2.

Предположим теперь, что на область поиска не наложено вообще никаких условий. Тогда в случае, если допустимое минимальное и максимальное число страниц документа равно 1, нечеткий прямоугольник области поиска формируется следующим образом:

LeftBound: [PageRect.Left, PageRect.Right]
TopBound: [PageRect.Top, PageRect.Bottom]
RightBound: [PageRect.Left, PageRect.Right]
BottomBound: [PageRect.Top, PageRect.Bottom]
InternalRect: [PageRect.Right, PageRect.Bottom, PageRect.Left, PageRect.Top]
ExternalRect: [PageRect.Left, PageRect.Top, PageRect.Right, PageRect.Bottom]
and in the case of a multi-page document:
LeftBound: [-INF, INF]
TopBound: [-INF, INF]
RightBound: [-INF, INF]
BottomBound: [-INF, INF]
InternalRect: [INF, INF, -INF, -INF]
ExternalRect: [-INF, -INF, INF, INF]
    

Как видно из приведенных выражений, внешний прямоугольник при этом совпадает с прямоугольником всей страницы, а внутренний прямоугольник является вырожденным и имеет отрицательные высоту и ширину.

Нечеткие прямоугольники можно объединять и пересекать. При пересечении двух нечетких прямоугольников пересекаются соответствующие границы прямоугольников: правая с правой, верхняя с верхней и т.п. Таким образом формируются новые интервалы границ:

LeftBound: [L1’, L2’]
TopBound: [T1’, T2’]
RightBound: [R1’, R2’]
BottomBound: [B1’, B2’]
    

Результирующий нечеткий прямоугольник пересечения формируется, как и прежде, на основе полученных интервалов: InternalRect: [L2’, T2’, R1’, B1’], ExternalRect: [L1’, T1’, R2’, B2’].

Если в результате пересечения не выполняется хотя бы одно из условий формирования нечеткого прямоугольника: L1 <= L2, T1 <= T2, R1 <= R2, B1 <= B2, то результирующий нечеткий прямоугольник обнуляется: InternalRect: [0, 0, 0, 0], ExternalRect: [0, 0, 0, 0]. Обычно создание пустого нечеткого прямоугольника является следствием противоречиво заданных условий, например, при попытке пересечь два нечетких прямоугольника, внешние границы которых не пересекаются.

Объединение нечетких прямоугольников происходит аналогично: для каждой границы сначала выполняется объединение интервалов. Результатом объединения двух интервалов является минимальный интервал, содержащий оба заданных интервала. После объединения на основе полученных новых границ строится новый нечеткий прямоугольник.

На практике наиболее часто встречаются нечеткие прямоугольники с вырожденным внутренним прямоугольником. Необходимость задать ограничение на определенную границу бывает лишь в редких случаях. Однако область поиска элемента всегда представляется нечетким прямоугольником и массивом исключенных прямоугольников, как того требует строгая типизация системы.

12/1/2020 7:04:05 AM


Please leave your feedback about this article