모든 점의 볼록 껍질을 구하고, 그 넓이를 라고 하자.
볼록 껍질이 선분이면 점들을 의 사전순으로 정렬하여 출력한다. 이제 볼록 껍질의 넓이가 양수인 경우를 생각하자.
띠의 간격을 으로 정하고, 라고 하자. 다음 두 수평선 격자를 사용한다: 와 . 여기서 는 정수이다.
각 격자에 대해 다음과 같이 후보 순회를 만든다.
두 후보의 순회 길이를 계산하고 더 짧은 후보를 출력한다. 볼록 껍질과 넓이는 에 구할 수 있으므로 전체 시간복잡도는 이다.
증명
볼록 껍질의 가로 폭을 , 둘레를 , 지름을 라고 하자. 이다.
하나의 격자를 고정하자. 각 점을 자신이 배정된 수평선으로 수직 투영한다. 볼록 껍질을 위아래로 만큼 확장한 볼록도형을 생각하면 모든 투영점이 이 도형 안에 들어간다. 확장된 도형의 넓이는 , 둘레는 , 지름은 이하이다.
Solution written by GPT5.6
각 격자선과 확장된 도형의 교집합인 수평 선분 전체를 방문한다고 생각하자. 아래에서 위로 올라가며 한 선분은 왼쪽에서 오른쪽으로, 다음 선분은 오른쪽에서 왼쪽으로 지난다. 연속한 두 선분의 끝점을 같은 쪽에서 직선으로 연결하면 그 길이는 두 끝점을 잇는 볼록도형의 경계 호보다 길지 않다. 따라서 선분 사이를 연결하는 길이의 합은 이하이고, 마지막 위치에서 처음 위치로 돌아가는 길이는 이하이다.
투영점에 도착할 때마다 원래 점까지 갔다가 돌아오는 보조 순회를 생각한다. 보조점을 삼각부등식으로 제거하면 알고리즘이 만든 순회의 길이는 이 보조 순회보다 길지 않다.
두 격자는 만큼 어긋나 있다. 임의의 점에서 첫 번째 격자의 가장 가까운 선까지의 거리와 두 번째 격자의 가장 가까운 선까지의 거리의 합은 이다. 따라서 두 후보에서 원래 점까지 왕복하는 비용의 평균은 이다.
높이 에서 확장된 볼록도형의 수평 단면 길이를 라고 하자. 두 격자를 합치면 간격이 인 하나의 격자가 된다. 볼록성 때문에 는 증가한 뒤 감소하며 전체 변동량은 이하이다. 이 격자의 리만 합과 적분의 차이를 전체 변동량으로 상계하면 두 후보의 수평 이동량의 평균은 이하이다.
따라서 두 후보 중 하나의 길이 은 다음을 만족한다.
이므로 처음 두 항의 합은 이다. 지름이 인 평면 볼록도형에 대해 , , 가 성립한다. 또한 이므로 이다. 따라서
볼록 껍질이 선분인 경우에는 위 정렬로 얻는 순회의 길이가 이하이므로 같은 상계를 만족한다.