Фрактальный алгоритм построения двумерных вложенных сеток

Библиографические ссылки

1. Information search module based on multilinguistic thesauruses / P. V. Zelenkov, M. V. Karaseva, E. P. Bachurina, V. V. Brezitskaya // Вестник СибГАУ. Вып. 1(27). 2010. С. 89-91.

2. Модуль обработки информационных запросов пользователей в сеть Интернет для корпоративных

информационно-управляющих систем / П. В. Зелен-ков, М. А. Селиванова, В. В. Брезицкая, А. П. Хохлов // Вестник СибГАУ. Вып. 3(24). 2009. С. 69-74.

3. System for processing highly specialized information in distributed networks / P. V. Zelenkov, V. V. Brezitskaya, E. P. Bachurina et al. // Вестник СибГАУ. Вып. 5(26). 2009. С. 40-42.

P. V. Zelenkov, G. A. Sidorova

MODIFICATED HITS ALGORITHM

In this paper the problem of modern search systems connected with documents ranking is shown. To solve this problem it is proposed to use the modified algorithm HITS in the process of searching and processing information. This approach helps to solve the problems of search, relevance determination of the information and also to rank system response.

Keywords: HITS, ranking, information processing, information search.

© Зеленков П. В., Сидорова Г. А., 2011

УДК 519.688

А. В. Ищенко, И. В. Киреев ФРАКТАЛЬНЫЙ АЛГОРИТМ ПОСТРОЕНИЯ ДВУМЕРНЫХ ВЛОЖЕННЫХ СЕТОК*

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

Ключевые слова: триангуляция, фрактал, многосеточные методы.

Построению двумерных сеток посвящено множество публикаций, обзор которых можно найти в [1-3].

Тем не менее, появление любого нового алгоритма вызывает большой интерес, поскольку триангуляция является одним из основных этапов численного моделирования в механике сплошных сред. В данной статье предложен алгоритм разбиения двумерных многосвязных областей на треугольники, идея которого подсказана алгоритмом построения салфетки Серпин-ского, представляющей собой один из классических примеров фрактальной геометрии [4].

В основе рассматриваемого алгоритма триангуляции, результатом работы которого будет последовательность неравномерных вложенных друг в друга сеток, лежит единственность представления прямоугольного равнобедренного треугольника в виде объединения двух прямоугольных равнобедренных треугольников, полученных из исходного бисекцией (рис. 1).

Как и в методе граничной коррекции [2], исходную многосвязную двумерную область О помещаем в прямоугольник R, на котором определена характеристическая функция x(M) области Ос R:

Х

*Работа выполнена при финансовой поддержке РФФИ «Вычислительные технологии для расчета течений несжимаемой жидкости» (проект № 08-01-00621-а).

Рис. 1. Шаблон для прямоугольного треугольника

Аналогично методу шаблонов [3], в котором в качестве базового элемента взят равнобедренный прямоугольный треугольник и шаблоном для которого является указанное выше представление в виде объединения двух равных треугольников, триангулируем объемлющий прямоугольник R, после чего при помощи граничной коррекции [3] получим сетку для области О.

Для описания алгоритма триангуляции объемлющего прямоугольника R, который изначально разбит на небольшое количество равнобедренных прямо -угольных треугольников, удобно ввести понятие уровня вложенности треугольника [5]. Треугольникам начального разбиения прямоугольника R приписываем нулевой уровень вложенности.

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

у/2 раз, а уровень вложенности увеличивается на 1.

Триангуляция области О состоит из трех структур: узлов, сторон и треугольников. Каждый узел треугольной сетки характеризуется двумя декартовыми координатами, своим порядковым номером и обязан быть только вершиной одного или нескольких треугольников, число которых в рассматриваемом алгоритме - не более восьми. Любой треугольник имеет свой номер и полностью определяется тремя вершинами, одна из которых, соответствующая вершине прямого угла, выделяется особо. Всякое ребро сетки задается ограничивающими его узлами. Ребра, соответствующие гипотенузам, выделяются особо, поскольку бисекция в предлагаемом алгоритме делит пополам именно гипотенузу. Все треугольники до проведения граничной коррекции являются прямоугольными и равнобедренными.

Зависимость линейной меры треугольника от его положения удобно задавать функцией шагов h(M) [6]. Для любой точки М е R значение h(M) всегда больше нуля и уменьшение линейного размера треугольников сетки будем продолжать до тех пор, пока для каждого треугольника Ак сетки не будет выполнено отношение

1к < тах h(M), k = 1,2,..., NА,

где 4 - линейная мера треугольника Ак, NА - число всех треугольников сетки объемлющего прямоугольника R.

На практике вместо этого условия обычно выполняется проверка неравенства 1к < h(M) лишь в нескольких точках M треугольника Аk, и если хотя бы в одной из них последнее неравенство выполнено, то Ак больше не разбивается, если только его бисекция не вызвана делением смежного с Ак треугольника с большим, чем у А к, уровнем вложенности.

Проиллюстрируем на конкретном примере процесс дробления сетки прямоугольника R (рис. 2). Пусть в объемлющем прямоугольнике задана триангуляция (рис. 2, а) и для одного из ее треугольников условие (1) не выполнено.

а б

Рис. 2. Трансформация сетки при бисекции одного из треугольников: исходное (а) и конечное (б) состояния триангуляции

Рассмотрим преобразования, порожденные бисекцией такого треугольника (рис. 3). Сначала в разбиваемом треугольнике проведем высоту и получим точку на гипотенузе, которую пока еще нельзя интерпретировать как узел триангуляции, поскольку такой узел должен находиться только в вершинах треугольника.

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

Если же построенная середина гипотенузы является точкой катета смежного треугольника, а не его гипотенузы (что возможно только в том случае, когда смежный треугольник имеет меньший уровень вложенности), то этот смежный прямоугольный треугольник разбиваем сначала высотой на два, а затем описанную выше процедуру повторяем со вновь полученным треугольником того же уровня вложенности, что и исходный. Но теперь возникает точка - середина гипотенузы смежного треугольника, и процесс повторяется с момента распознавания точки катета/гипотенузы. Эти преобразования трансформируют сетку, показанную на рис. 2, а, в триангуляцию, изображенную на рис. 2, б.

Представленный выше процесс является рекурсивным и конечным, поскольку в нем мы либо выходим на границу прямоугольника R, либо сталкиваемся с гипотенузой двух смежных треугольников одного и того же уровня вложенности (рис. 4).

Рис. 3. Процесс дробления сетки объемлющего прямоугольника Я

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

Рис. 4. Структуры, образуемые треугольниками наибольшего уровня вложенности

Зная максимальное hmax и минимальное hmin значения функции h( M) на всей области Q, можно оценить и максимальную разность уровней вложенности треугольников сетки, которая по порядку совпадает с

числом 21°g2(hm,x / hmin )‘

Структурированность построенной триангуляции позволяет по заданной функции шагов h(M) получить априорную верхнюю оценку числа возникающих в процессе разбиения треугольников, которую можно использовать для прогнозирования вычислительных затрат. Если стратегия триангуляции объемлющего прямоугольника R такова, что для каждого треугольника Ak в (2) выполнено равенство

lk = max h( M),

M eA k

то число возникающих треугольников Na удовлетворяет соотношению

4 dxdy

h 2

Это неравенство является тривиальным следствием теоремы о среднем значении интеграла.

Опишем теперь простейший алгоритм граничной коррекции (рис. 5). Пусть область О с границей дО содержится в объемлющем прямоугольнике Я и описывается характеристической функцией х(М) (1), определенной на Я. После построения по заданной функции шагов Н(М) триангуляции Я все треугольники по отношению к О разбиваются на три типа: внутренние, внешние и граничные.

Предполагается, что функция к(М) такова, что линейный размер полученных в результате триангуляции граничных треугольников достаточно мал, так что любое из ребер граничного треугольника имеет не более одной точки пересечения с дО. Вершины Мк граничных треугольников будем называть приграничными, и в каждом из них при помощи характеристической функции определим все стороны, пересекающие

криволинейную границу дО области О (рис. 5, а). Для каждого такого ребра МкоМк_ (у = 1,...,тк < 8) необходимо вычислить координаты точки пересечения Ыкоку с дО, например методом деления отрезка пополам.

а б

Рис. 5. Процесс граничной коррекции: а - приграничные ребра и вершины; б - результат граничной коррекции

Для каждого приграничного узла Мк определим

расстояние от него до дО как минимальное из длин отрезков МкЫкк . В результате возникает упорядочение приграничных узлов. Затем, начиная с наименее удаленного от границы приграничного узла, последовательно переместим приграничные узлы Мк

в ближайшую точку Мк из множества точек пересечения N1.^} ребер с границей дО (см.

рис. 5, б).

Графическое представление работы простейшего алгоритма граничной коррекции (рис. 6) показывает, что качество полученной сетки весьма низкое, так как в некоторых случаях схлопывающийся треугольник приходится переразбивать более двух раз. Из-за этого в отдельных областях вблизи границы области сетка значительно измельчается, так как необходимость разбиения одного элемента триангуляции может привести к разбиению целой цепочки треугольников, как на рис. 6, б. В действительности это означает, что от описанного выше упорядочения приграничных узлов приходится отказаться.

а б в

Рис. 6. Простейший алгоритм граничной коррекции: а - сетка перед граничной коррекцией; б - результат граничной коррекции; в - результат оптимизации

R

С целью улучшения качества сетки была предложена модифицированная процедура граничной коррекции (рис. 7).

тк

X

гда при выполнении неравенства

п() а л»

1 тк 1

.

к ~ 2-й к, > У к ~ 2-й У к, >

тк у=1 у тк у

пк у=1

хк0) = хк, ук0) = Ук,

Рис. 7. Процедура модифицированной граничной коррекции:

а - сетка перед граничной коррекцией; б - результат модифицированной граничной коррекции; в - результат оптимизации

В качестве критерия бисекции граничного треугольника примем следующий. При построении каждой из точек Ык»к (см. рис. 5, а) вычисляется величина п(Мк»ку), равная отношению длины ребра от точки пересечения Ык»ку до ближайшей из вершин Мк» или Мк треугольника к длине всего ребра Мк Мк . То-

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

Если это ребро является гипотенузой, то при бисекции оно будет разбито на две части, одна из которых не будет пересекаться с границей, а вторая автоматически не будет удовлетворять условию проведения бисекции (3).

Если же этим ребром является катет, то бисекция данного треугольника будет проводиться дважды.

В случае, изображенном на рис. 7, значение П0 = 0,425 5 приводит к сетке достаточно хорошего качества (рис. 7, б). Такое значение п0, полученное экспериментальным путем, обеспечивает лучшее качество триангуляции области по сравнению с простейшим алгоритмом граничной коррекции (см. рис. 6, б) и позволяет избежать эффекта схлопывания.

Одним из отрицательных последствий граничной коррекции является искажение некоторых треугольников сетки, подчас весьма значительное. Поэтому целесообразно оптимизировать узлы сетки, например перемещая каждый внутренний относительно области О узел в центр тяжести соответствующего ему тк- угольника, образованного всеми треугольниками сетки, содержащими эту вершину. Иными словами, для каждого внутреннего узла сетки Мк(хк,ук) еО

его новое положение Мкп)(хкп), у(кп)) вычисляется следующим образом:

где тк - количество узлов Мк _ (хк_, ук_) сетки,

связанных с узлом Мк (хк, ук) каким-либо ребром; п - номер итерации. В нашем случае 4 < тк < 8.

Заметим, что все элементы матрицы перехода итерационного процесса (4) неотрицательны, а поскольку область О является связной, то матрица перехода будет неразложимой. Кроме того, в процессе (4) изменяются координаты только внутренних узлов сетки и, следовательно, сумма элементов строки матрицы перехода, содержащей ссылки на граничные узлы, будет меньше 1. Из спектральных свойств неразложимой матрицы с неотрицательными элементами [7] следует, что итерационный процесс оптимизации внутренних узлов сетки сходится, поскольку отображения {хкп-1)} ^ {хкп)} и {укп--1)} ^ {у{к )} из (4) являются сжимающими. Результаты процесса оптимизации сеток, представленные на рис. 6, а и 7, а, показывают быструю сходимость процесса (3) (рис. 6, в и 7, в).

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

Эта процедура осуществляется посредством укрупнения треугольников самого высокого на данном этапе уровня вложенности: в каждом квадрате, образуемым четверкой треугольников самого высокого уровня вложенности, выбрасывается та его диагональ, которая была построена последней (рис. 8). Если перед началом процесса объединения все треугольники были прямоугольными, то линейные размеры треугольников на каждом этапе увеличиваются в >/2 раз.

а

б

в

Рис. 8. Процесс объединения: а - наивысший уровень вложенности треугольников; б - сетка после одного шага алгоритма; в - сетка после двух шагов алгоритма

Процесс объединения, т. е. переход на сетки с меньшими уровнями вложенности треугольников

вплоть до нулевого, может играть существенную роль в уменьшении временных затрат на решение систем линейных алгебраических уравнений (СЛАУ) методом конечных элементов, построенных на базе предложенной триангуляции. Так, например, в решении СЛАУ методом Гаусса в качестве ведущих элементов глобальной матрицы жесткости можно брать ее диагональные элементы в порядке, обратном порядку появления узлов сетки в процессе ее построения. По точности это решение будет незначительно отличаться от решения систем линейных алгебраических уравнений методом Гаусса с выбором максимального по столбцу, однако полученная в ходе процесса исключения матрица является более разреженной, чем аналогичная матрица из метода Гаусса. Кроме этого, вложенность сеток позволяет реализовать для решения СЛАУ метод Холецкого [7] без предварительного формирования глобальной матрицы, проводя исключения искомых узловых значений из локальных матриц жесткости.

Предложенный алгоритм триангуляции легко программируется, поскольку процессы изменения размера сетки носят рекурсивный характер, а триангуляция прямоугольника Я порождена треугольниками, подобными друг другу. Поэтому употребление прилагательного «фрактальный» в названии данной статьи является вполне естественным (напомним, что слово «фрактал» не является математическим термином и не имеет общепринятого строгого математического определения, но употребляется, в частности, тогда, когда рассматриваемая фигура является самоподобной или может быть построена при помощи рекурсивной

процедуры [4]). Этот алгоритм также открывает новые возможности для применения многосеточных технологий [8] при моделировании сплошных сред методом конечных элементов.

Библиографические ссылки

1. Frey P. J., Geotge P. L. Mesh generation. application to finite elements. Oxford ; Paris : Hermes Sci. Publ., 2000.

2. Галанин М. П., Щеглов И. А. Разработка и реализация алгоритмов трехмерной триангуляции сложных пространственных областей: итерационные методы : препр. № 9 / Ин-т прикл. математики им. М. В. Келдыша Рос. акад. наук. М., 2006.

3. Галанин М. П., Щеглов И. А. Разработка и реализация алгоритмов трехмерной триангуляции сложных пространственных областей: прямые методы : препр. № 10 / Ин-т прикл. математики им. М. В. Келдыша Рос. акад. наук. М., 2006.

4. Мандельброт Б. Фрактальная геометрия природы / Ин-т компьютер. исслед. М., 2002.

5. Киреев И. В., Пятаев С. Ф. Пиксельная технология дискретизации акватории мирового океана // Вы-числ. технологии. 2009. Т. 14, № 5. С. 30-39.

6. Пятаев С. Ф., Немировский Ю. В. Автоматизированная триангуляция многосвязных областей со сгущением и разрежением узлов // Вычисл. технологии. 2000. Т. 5, № 2. С. 82-91.

7. Воеводин В. В., Кузнецов Ю. А. Матрицы и вычисления. М. : Наука, 1984.

8. Шайдуров В. В. Многосеточные методы конечных элементов. М. : Наука, 1989.

A. V. Ischenko, I. V. Kireev

FRACTAL ALGORITHM FOR GENERATION OF TWO-DIMENSIONAL NESTED GRIDS

In the work the others offer fractal algorithm for construction of a sequence of nested grids for two-dimensional multiply-connected domains.

Keywords: triangulation, fractal, multigrid methods.

© Ищенко А. В., Киреев И. В., 2011