기바와 스톨 피의“대수 대수학”형식주의는 약간 불필요하다.
실제로 필요한 것은 기본 그래프와 이중 그래프의 차이점을 기억하는 것입니다. 각면 시원 그래프는 대응하는 듀얼 정점 갖는다 ; 원시 그래프의 각 에지 는 대응하는 이중 에지 가지며 ; 원시 그래프의 각 정점 는 대응하는 이중면 . 원시 모서리는 원시 정점과 별도의 원시면을 연결합니다. 이중 모서리는 이중 정점과 별도의 이중면을 연결합니다. 이중의 이중은 원래 것입니다. Guibas 및 Stolfi의 논문에서 그림 4를 참조하십시오.f ∗ e e ∗ v v ∗에프에프※이자형이자형※VV※
Guibas와 Stolfi는 각 가장자리 (원초 또는 이중)를 4 개의 방향 지향 가장자리 의 모음으로 생각할 것을 제안 합니다. 간단히하기 위해이 다트를 호출합니다 . 각각의 다트 하나의 엔드 포인트에서 포인트 다른 끝점 및 양면 로컬 분리 와 . 를 호출 할 끝점을 선택하는 것이 다트의 방향 이며 를 호출 하는 방향이 꼬리( → e )머리( → e )왼쪽( → e )오른쪽( → e )꼬리( → e )왼쪽( → e )이자형⃗ 꼬리 ( e⃗ )헤드 ( e⃗ )왼쪽 ( e⃗ )오른쪽 ( e⃗ )꼬리 ( e⃗ )왼쪽 ( e⃗ ). (Guibas와 Stolfi는 "꼬리"와 "머리"대신 "Org"와 "Dest"를 사용하지만 불필요한 약어가 악의적이므로 더 짧은 레이블을 선호합니다.)
다트 에 대해 Guibas와 Stolfi는 다음 세 가지 관련 다트를 연결합니다.이자형⃗
- 꼬리 ( → e ) → etailNext ( 전자⃗ ) : 떠나는 다트 다음 후 반 시계 방향으로 순서 .꼬리 ( e⃗ )이자형⃗
- → e 왼쪽 ( → e ) 오른쪽 ( → e )flip(e⃗ ) :“같은”다트는 이지만 및 교체되었습니다.e⃗ left(e⃗ )right(e⃗ )
- → erotate(e⃗ ) : 의 중간 지점을 시계 반대 방향으로 1/4 바퀴 돌려 얻은 이중 다트 .e⃗
이 세 가지 기능은 다음과 같은 모든 종류의 훌륭한 정체성을 충족시킵니다.
- right(tailNext(e⃗ ))=left(e⃗ )
- right(flip(e⃗ ))=left(e⃗ )
- right(rotate(e⃗ ))=head(e⃗ )∗
- flip(flip(e⃗ ))=e⃗
- rotate(rotate(rotate(rotate(e⃗ ))))=e⃗
- tailNext(rotate(tailNext(rotate(e⃗ ))))=e⃗
전체 목록은 논문의 83 페이지를 참조하십시오 (그러나 저자는 아마도 선언적 코드에 더 가깝기 때문에 접미사 표기법 사용해야 합니다 ). Guibas와 Stolfi는 이러한 모든 아이덴티티를 만족시키는 모든 트리플 함수를 에지 대수 라고 부릅니다 .e Flipe.Flip
또한 이러한 세 가지 기능을 고려할 때 다음과 같은 다른 유용한 기능을 정의 할 수 있습니다
- reverse(e⃗ )=rotate(flip(rotate(e⃗ ))) — 머리와 꼬리 정점 교체
- → e 왼쪽 ( → e )leftNext(e⃗ )=rotate(tailNext(rotate(rotate(rotate(e⃗ ))))) — 주위의 시계 방향으로 뒤에 다음 다트e⃗ left(e⃗ )
마지막으로,이 함수들을 아는 것은 세분화의 토폴로지에 관한 모든 것을 절대적으로 알려주고,이 세 함수를 사용하여 표면의 모든 세분화 (오리엔테이션 가능 여부)를 인코딩 할 수 있습니다.
쿼드 에지 데이터 구조는 에지 삽입, 삭제, 축소, 확장 및 뒤집기와 같은 다른 일정 시간 작업과 함께 이러한 모든 기능에 대한 액세스를 제공하는 표면 그래프의 특히 편리한 표현입니다. 정점 또는면의 분할 또는 병합; 핸들 또는 크로스 캡 추가 또는 삭제.
즐기세요!