시에르피 ń스키 곡선

Sierpiński curve

시에르피 ń스키 곡선은 와츠와프 시에르피 ń스키에 의해 발견된 연속적인 닫힌 평면 프랙탈 곡선의 재귀적으로 정의된 일련의 곡선으로, {\displaystyle n\ to \infty}에서 단위 제곱을 완전히 채웁니다. 따라서 시에르피 ń 곡선이라고도 불리는 이들의 한계 곡선은 공간-filling 곡선의 예입니다.

시에르피 ń 곡선은 공간 filling이므로 하우스도르프 차원( n → ∞ {\displaystylen \infty})은2 {\displaystyle 2}입니다.
반복th 곡선 유클리드 길이는

즉, N {\displaystyle n이(가) 어떤 한계를 넘어 n}과 함께 기하급수적으로 증가하는 반면, {n로 둘러싸인 의 n → ∞ to \infty }의 한계는 (유클리드 메트릭으로) 정사각형의 55/12\}입니다.

1차 시에르피 ń스키 곡선("Sierpinski's square snowledge")
순서 1과 2의 시에르피 ń스키 곡선
1~3차 시에르피 ń스키 곡선
순서 2-4의 시에르핀스키 "제곱 곡선"[2]

곡선의 용도

시에르피 ń스키 곡선은 일반적으로 연구되는 다른 공간 채우기 곡선보다 더 대칭적이기 때문에 여러 실제 응용 분야에서 유용합니다. 예를 들어, 여행 판매원 문제에 대한 대략적인 해결책을 신속하게 구축하기 위한 근거로 사용되었습니다(특정 지점 집합의 가장 짧은 순서를 묻는 것). 휴리스틱은 단순히 시에르피 ń스키 곡선에 나타나는 것과 같은 순서로 점들을 방문하는 것입니다. 이를 수행하려면 두 단계가 필요합니다. 먼저 방문할 각 점의 역 이미지를 계산한 다음 값을 정렬합니다. 이 아이디어는 롤로덱스 카드 파일만을 기반으로 상용 차량용 라우팅 시스템을 구축하는 데 사용되었습니다.[4]

공간 채우기 곡선은 단위 제곱에 대한 단위 구간의 연속형 지도이며, 따라서 (의사) 역은 단위 제곱을 단위 구간에 매핑합니다. 의사역을 구성하는 한 가지 방법은 다음과 같습니다. 단위 사각형의 왼쪽 아래 모서리(0, 0)가 0.0(및 1.0)에 해당하도록 합니다. 그러면 왼쪽 위 모서리(0, 1)는 0.25, 오른쪽 위 모서리(1, 1)는 0.50, 오른쪽 아래 모서리(1, 0)는 0.75에 해당해야 합니다. 내부 점들의 역맵은 곡선의 재귀적 구조를 이용하여 계산됩니다.

여기에 자바로 코딩된 함수가 있는데, 이 함수는 시에르피 ń스키 곡선 상의 임의의 점의 상대적 위치(즉, 의사 역값)를 계산합니다. 뒤집을 점 (x,y)와 오른쪽 이등변 삼각형의 모서리 (ax, ay), (bx, by), (cx, cy)의 좌표를 입력합니다. (단위 제곱은 이러한 삼각형 두 개의 합입니다.) 나머지 파라미터는 역수를 계산해야 하는 정확도 수준을 지정합니다.

    정적인  sierp_pt2code( 두 배의 도끼질을 하다, 두 배의 에이, 두 배의 bx, 두 배의 타고, 두 배의 cx, 두 배의 사이,         인트의 현재 수준, 인트의 maxLevel,  암호를 매기다, 두 배의 x, 두 배의 y )      {         한다면 (현재 수준 <= maxLevel) {             현재 수준++;             한다면 ((sqr(x-도끼질을 하다) + sqr(y-에이)) < (sqr(x-cx) + sqr(y-사이))) {                 암호를 매기다 = sierp_pt2code( 도끼질을 하다, 에이, (도끼질을 하다+cx)/2.0, (에이+사이)/2.0, bx, 타고,                     현재 수준, maxLevel, 2 * 암호를 매기다 + 0, x, y );             }             또 다른 {                 암호를 매기다 = sierp_pt2code( bx, 타고, (도끼질을 하다+cx)/2.0, (에이+사이)/2.0, cx, 사이,                     현재 수준, maxLevel, 2 * 암호를 매기다 + 1, x, y );             }         }         돌아가다 암호를 매기다;         } 

Lindenmayer 시스템으로 표현

시에르피 ń스키 곡선은 재작성 시스템(L-system)으로 표현할 수 있습니다.

알파벳: F,G,X
상수: F, G, +, -
Axiom: F−−XF−−F−−XF
생산 규칙:
X → XF+G+XF-−F−−XF+G+X
각도 : 45

여기서 FG는 모두 "앞으로 나아가다", +는 "왼쪽으로 45° 돌다", -는 "오른쪽으로 45° 돌다"를 의미합니다(거북 그래픽 참조). 곡선은 일반적으로 F와 G의 길이가 다릅니다.

시에르피 ń스키 제곱 곡선도 이와 유사하게 표현할 수 있습니다.

알파벳: F, X
상수: F, +, -
Axiom: F+XF+F+XF
생산 규칙:
X → XF−F+F−XF+F+XF−F+F−X
각도 : 90

화살촉 곡선

시에르피 ń스키 화살촉 곡선은 시에르피 ń스키 삼각형과 외관이 유사하고 한계가 동일한 프랙탈 곡선입니다.

시에르피 ń스키 화살촉 곡선의 진화

시에르피 ń스키 화살촉 곡선은 삼각형 구멍이 있는 정삼각형을 등간격으로 그립니다. (A → B-A-B) 및 (B → A+B+A)의 두 가지 대체 생산 규칙으로 설명할 수 있습니다. A와 B가 반복되고 하단에도 같은 작업을 수행합니다. 선을 그으세요. 더하기 및 빼기(+ 및 -)는 왼쪽 또는 오른쪽으로 60도 돌림을 의미합니다. 짝수번 반복하고 재귀할 때마다 선의 길이를 절반으로 줄이면 시에르피 ń스키 화살촉 곡선의 끝점은 항상 동일합니다. 만약 당신이 홀수 깊이(순서는 홀수)로 반복한다면, 결국 삼각형의 다른 지점에서 60도가 됩니다.

곡선에 대한 기사는 다른 제약을 제공합니다. 하나는 드 람 곡선과 동일한 기법을 사용하지만, 이진법(base-2) 확장 대신 삼원법(base-3) 확장을 사용합니다.

코드

도면 기능이 주어진 경우 void draw_line(double distance); 그리고. void turn(int angle_in_degrees);, (대략적인) 시에르피 ń스키 화살촉 곡선을 그리는 코드는 다음과 같습니다.

공허한 시에르핀스키_ arrow헤드_(서명이 없는 주문, 두 배의 길이) {     // 순서가 균등하다면 우리는 곡선을 그릴 수 있습니다.     한다면 ( 0 == (주문 & 1) ) {         곡선을 그리다(주문, 길이, +60);     }     또 다른 /* 순서가 홀수입니다 */ {         돌다( +60);         곡선을 그리다(주문, 길이, -60);     } } 
공허한 곡선을 그리다(서명이 없는 주문, 두 배의 길이, 인트의 ) {     한다면 ( 0 == 주문 ) {         draw_line(길이);     } 또 다른 {         곡선을 그리다(주문 - 1, 길이 / 2, -);         돌다();         곡선을 그리다(주문 - 1, 길이 / 2, );         돌다();         곡선을 그리다(주문 - 1, 길이 / 2, -);     } } 

Lindenmayer 시스템으로 표현

많은 2차원 프랙탈 곡선과 마찬가지로 시에르피 ń스키 화살촉 곡선도 3차원으로 확장할 수 있습니다.

시에르피 ń스키 화살촉 곡선은 재작성 시스템(L-system)으로 표현할 수 있습니다.

알파벳: X, Y
상수: F, +, -
공리: XF
생산 규칙:
X → YF + XF + Y
Y → XF − YF − X

여기서 F는 "앞으로 당김", +는 "왼쪽으로 60° 돌림", -는 "오른쪽으로 60° 돌림"을 의미합니다(거북 그래픽 참조).

참고 항목

참고문헌

  1. ^ Weisstein, Eric W. "Sierpiński Curve". MathWorld. Retrieved 21 January 2019.
  2. ^ Dickau, Robert M. (1996/7) "2차원 L-계", Robert's Math Figures. MathForum.org . 2019년 1월 21일 회수.
  3. ^ Platzman, Loren K.; Bartholdi, John J. III (1989). "Spacefilling curves and the planar traveling salesman problem". Journal of the Association for Computing Machinery. 36 (4): 719–737. doi:10.1145/76359.76361.
  4. ^ Bartholdi, John J. III. "Some combinatorial applications of spacefilling curves". Georgia Institute of Technology. Archived from the original on 2012-08-03.

더보기