Jump to content

Кривая Серпинского

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

Поскольку кривая Серпинского заполняет пространство, ее размерность Хаусдорфа (в пределе ) является .
длина Евклидова й итерационная кривая является

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

Кривая Серпинского («квадратная снежинка Серпинского»). [1] ) первого порядка
Кривые Серпинского 1 и 2 порядков
Кривые Серпинского 1-3 порядков
Серпинский «квадратная кривая». [2] заказов 2–4

Использование кривой

[ редактировать ]

Кривая Серпинского полезна в нескольких практических приложениях, поскольку она более симметрична, чем другие обычно изучаемые кривые, заполняющие пространство. Например, он использовался в качестве основы для быстрого построения приближенного решения задачи коммивояжера (которая требует кратчайшей последовательности заданного набора точек): Эвристика заключается в простом посещении точек в одной и той же последовательности. так, как они выглядят на кривой Серпинского. [3] Для этого необходимо сделать два шага: сначала вычислить прообраз каждой точки, которую необходимо посетить; затем отсортируйте значения. Эта идея была использована для создания систем маршрутизации для коммерческих автомобилей, основанных только на картотеках Rolodex. [4]

Кривая, заполняющая пространство, представляет собой непрерывное отображение единичного интервала на единичный квадрат, поэтому (псевдо) инверсия отображает единичный квадрат на единичный интервал. Один из способов построения псевдообратного состоит в следующем. Пусть нижний левый угол (0, 0) единичного квадрата соответствует 0,0 (и 1,0). Тогда левый верхний угол (0, 1) должен соответствовать 0,25, правый верхний угол (1, 1) — 0,50, а правый нижний угол (1, 0) — 0,75. Обратная карта внутренних точек вычисляется с использованием рекурсивной структуры кривой.

Вот функция, закодированная на Java, которая вычисляет относительное положение любой точки на кривой Серпинского (то есть псевдообратное значение). В качестве входных данных он принимает координаты инвертируемой точки (x,y) и углы охватывающего прямоугольного равнобедренного треугольника (ax, ay), (bx, by) и (cx, cy). (Единичный квадрат представляет собой объединение двух таких треугольников.) Остальные параметры определяют уровень точности, с которой должно вычисляться обратное.

    static long sierp_pt2code( double ax, double ay, double bx, double by, double cx, double cy,
        int currentLevel, int maxLevel, long code, double x, double y ) 
    {
        if (currentLevel <= maxLevel) {
            currentLevel++;
            if ((sqr(x-ax) + sqr(y-ay)) < (sqr(x-cx) + sqr(y-cy))) {
                code = sierp_pt2code( ax, ay, (ax+cx)/2.0, (ay+cy)/2.0, bx, by,
                    currentLevel, maxLevel, 2 * code + 0, x, y );
            }
            else {
                code = sierp_pt2code( bx, by, (ax+cx)/2.0, (ay+cy)/2.0, cx, cy,
                    currentLevel, maxLevel, 2 * code + 1, x, y );
            }
        }
        return code;    
    }

Представление в виде системы Линденмайера

[ редактировать ]

Кривую Серпинского можно выразить с помощью системы перезаписи ( L-системы ).

Алфавит : F, G, X
Константы : F, G, +, −
Аксиома : F--XF--F--XF
Правила производства :
X → XF+G+XF−−F−−XF+G+X
Угол : 45

Здесь и F , и G означают «движение вперед», + означает «поворот налево на 45°», а означает «поворот направо на 45°» (см. рисунок черепахи ). Кривая обычно рисуется с разной длиной для F и G.

Квадрат Серпинского можно выразить аналогичным образом:

Алфавит : F, X
Константы : F, +, −
Аксиома : F+XF+F+XF
Правила производства :
X → XF−F+F−XF+F+XF−F+F−X
Угол : 90

Кривая стрелки

[ редактировать ]

Кривая стрелки Серпинского представляет собой фрактальную кривую, похожую по внешнему виду и идентичную по пределу треугольнику Серпинского .

Эволюция кривой наконечника стрелки Серпинского

Кривая стрелки Серпинского рисует равносторонний треугольник с треугольными отверстиями через равные интервалы. Его можно описать двумя замещающими продукционными правилами: (A → BAB) и (B → A+B+A). A и B повторяются, а внизу делают то же самое — рисуют линию. Плюс и минус (+ и -) означают поворот на 60 градусов влево или вправо. Конечная точка кривой со стрелкой Серпинского всегда одна и та же, если вы повторяете ее четное количество раз и уменьшаете вдвое длину линии при каждой рекурсии. Если вы вернетесь на нечетную глубину (порядок нечетный), то в конечном итоге вы повернетесь на 60 градусов в другой точке треугольника.

Альтернативное сужение приведено в статье о кривой де Рама : используется тот же метод, что и кривые де Рама, но вместо использования двоичного разложения (по основанию 2) используется троичное разложение (по основанию 3).

Учитывая функции рисования void draw_line(double distance); и void turn(int angle_in_degrees);, код для рисования (приблизительной) кривой со стрелкой Серпинского выглядит следующим образом:

void sierpinski_arrowhead_curve(unsigned order, double length)
{
    // If order is even we can just draw the curve.
    if ( 0 == (order & 1) ) {
        curve(order, length, +60);
    }
    else /* order is odd */ {
        turn( +60);
        curve(order, length, -60);
    }
}
void curve(unsigned order, double length, int angle)
{
    if ( 0 == order ) {
        draw_line(length);
    } else {
        curve(order - 1, length / 2, -angle);
        turn(angle);
        curve(order - 1, length / 2, angle);
        turn(angle);
        curve(order - 1, length / 2, -angle);
    }
}

Представление в виде системы Линденмайера

[ редактировать ]
Как и многие двумерные фрактальные кривые, кривую со стрелкой Серпинского можно расширить до трех измерений.

Кривая стрелки Серпинского может быть выражена с помощью системы перезаписи ( L-системы ).

Алфавит : X, Y
Константы : F, +, −
Аксиома : XF
Правила производства :
Х → YF + XF + Y
Y → XF − YF − X

Здесь F означает «натянуть вперед», + означает «повернуть налево на 60°», а означает «повернуть направо на 60°» (см. рисунок черепахи ).

См. также

[ редактировать ]
  1. ^ Вайсштейн, Эрик В. «Кривая Серпинского» . Математический мир . Проверено 21 января 2019 г.
  2. ^ Диккау, Роберт М. (1996/7) « Двумерные L-системы », Математические фигуры Роберта . MathForum.org. Проверено 21 января 2019 г.
  3. ^ Платцман, Лорен К.; Бартольди, Джон Дж. III (1989). «Кривые заполнения пространства и плоская задача коммивояжера» . Журнал Ассоциации вычислительной техники . 36 (4): 719–737. дои : 10.1145/76359.76361 .
  4. ^ Бартольди, Джон Дж. III. «Некоторые комбинаторные применения кривых заполнения пространства» . Технологический институт Джорджии . Архивировано из оригинала 3 августа 2012 г.

Дальнейшее чтение

[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: ed88c28f144ad17846a6e51d3d19fc39__1720334580
URL1:https://arc.ask3.ru/arc/aa/ed/39/ed88c28f144ad17846a6e51d3d19fc39.html
Заголовок, (Title) документа по адресу, URL1:
Sierpiński curve - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)