2011-03-08 2 views
1

다음 문제에 대한 알고리즘이나 관련 작업이 있습니까?최소한의 움직임으로 교차점을 제거하기 위해 선분을 이동하는 방법은 무엇입니까?

2D에서 선분 세트가 주어지면 선분을 (수평 또는 수직으로) 움직여 교차를 제거하여 전체적인 움직임을 최소화하는 방법은 무엇입니까? 끝점의 교차점을 허용 할 수 있습니다.

+0

최소를 어떻게 정의합니까? 최소 이동 횟수 또는 거리의 거리/제곱합의 최소값? – biziclop

+0

또한 줄 끝점을 개별적으로 이동할 수 있습니까? 아니면 줄 길이와 방향이 const입니까? – LumpN

답변

0

당신은 세그먼트의 움직임의 수를 최소화하려는 경우 각 세그먼트는 그래프의 정점이다 을하고있는 경우 두 꼭지점 사이의 가장자리가 :

당신은 그래프 문제로 선분의 문제를 변환 할 수 있습니다 두 개의 세그먼트가 서로 교차합니다. 모든 모서리 중 적어도 하나의 끝점을 포함하는 최소 정점 수를 찾고 싶습니다 (모든 세그먼트를 이동하면 더 이상 교차가 없기 때문입니다). 이것은 불행하게도 NP 하드이지만, 근사 알고리즘이 존재하는 버텍스 커버 문제입니다.

참조 : http://en.wikipedia.org/wiki/Vertex_cover_problem

관련 문제