(CLRS) 알고리즘의 역할

(CLRS) 알고리즘의 역할

2020, Apr 10    



  • 이 글은 CLRS(Introduction to algorithm) 책을 요약한 것이므로 자세한 내용은 CLRS 책을 참조하시기 바랍니다.
  • CLRS 내용 외에 따로 정리한 선분의 성질 관련 블로그 글은 아래 링크를 참조하시기 바랍니다.
    • CCW : https://gaussian37.github.io/math-algorithm-ccw/
    • 선분의 교차 : https://gaussian37.github.io/math-algorithm-line_intersection/


목차


  • 선분의 정의

  • 선분 관련 문제

  • 벡터 곱


선분의 정의


  • p1=(x1,y1),p2=(x2,y2)이 있을 때, 선분(line segment) ¯p1p2는 양 끝점을 p1,p2로 합니다.
  • 이 때, 선분 위의 점들을 (x3,y3) 라고 하면, (x1,y1),(x2,y2)와 다음 관계를 가집니다.
    • x3=αx1+(1α)x2
    • y3=αy1+(1α)y2
    • $$ \text{where, } 0 \ge \alpha \le 1
  • 만약 선분이 아니라 방향 성분이 필요한 방향 선분(directed segment)라면 p1p2라고 정의해야 합니다.
  • 만약 p1이 원점이라면 방향 선분 p1p2 를 벡터 p2로 나타낼 수 있습니다.


선분 관련 문제


  • 이 책에서 다루는 선분과 관련된 대표적인 문제는 아래 3가지 입니다.
  • p1p2,p0p2에 대해 p0p2p0p1의 시계 방향에 있는가? (두 선분의 방향성)
    • 이 문제의 경우 두 선분의 시작점이 둘 다 p0 인 것에 유의하시면 됩니다.
  • p1p2,p0p2에 대해 p0p1을 순회한 다음 p1p2를 순회할 때, 점 p1에서 좌회전 하는가?
    • 이 문제는 ①과 유사하지만 첫번째 방향 선분의 끝점이 두번쨰 방향 선분의 시작점이 된다는 차이점이 있습니다.
  • ¯p1p2¯p3p4가 서로 교차하는가?


  • 위 3가지 문제를 어떻게 해결하는 지 이 글에서 자세하게 다루어 보도록 하겠습니다.