closest pair 알고리즘 문제 관련 질문입니다.
글쓴이: canuyes / 작성시간: 화, 2013/06/11 - 9:41오후
분할정복을 이용한 closest pair를 공부중인 학생입니다.
고민 끝에 분할 정복을 이용하여 구현을 하기는 했습니다만,
원하는 실행시간을 얻지 못해 질문 올립니다.
100000(일십만)개의 인풋에 대해 1초 이내의 실행시간을 얻고 싶은데, 잘구현이 되질 않습니다.
아마도 제가 지금 비효율적으로 하고 있는 부분이
"분할된 왼쪽 평면과 오른쪽 평면을 가로지르는 직선의 값을 구하는 과정"
인것 같습니다.
discrete mathematics 6E, introduction to algorithm 3E , 구글링 등 여러가지를 참고해봤지만,
10시간째 실패해오고 있습니다.
제가 어려워하고 있는 부분에 대해 참고할 만한 문헌이나,
명쾌한 답변을 기다립니다..
감사합니다.
p.s.
CLOSEST PAIR
좌표 평면에 N개의 점이 주어질 때,이 점들중 가장 가까운 점들간의 거리를 구하는 것.
ex)
input : (0,0) (10,10) (0,10) (10,0) 4개의 점.
output : 10
Forums:
10만개밖에 안되는데 n^2 + n / 2
10만개밖에 안되는데 n^2 + n / 2 알고리즘으로 1초에 안 나오나요?
보통..
아주 나이브한 추정이긴 하지만,
연산횟수가 100000000(일억) 회를 넘어가면 실행시간이 1초를 넘어가지 않나요?
일단 시도해본 알고리즘을 올려주세요
일단 시도해본 알고리즘을 올려주세요
피할 수 있을때 즐겨라! http://melotopia.net/b
조금 난잡합니다..
최대한 주석은 달아보았지만..제가 봐도 너무 난잡합니다 ㅠㅠ 죄송합니다.
함수 mkSQUARE부분을 중점적으로 알려주신다면 감사 하겠습니다.
(실제로 문제를 가지고 있다고 생각하는 부분입니다.)
gilgil.net
"분할된 왼쪽 평면과 오른쪽 평면을 가로지르는 직선의 값을 구하는 과정" 이라고 하셨으니 divide and conquer 방식을 사용하신 거 같은데, recursive 방식을 사용했으면 O(N log N)이겠네요.
10만개라면 시간이 많이 걸리지는 않을 거 같은데요. 코드를 보여 주셔야 할 듯...
www.gilgil.net
답글감사합니다.
snowall님에게 단 댓글을 참고해주시면 감사하겠습니다 ㅠㅠ
댓글 달기