2013-07-21 4 views
-5

세부 사항 (선, 직사각형, 원)이있는지도가 있습니다.지도에서 가장 큰 연결선 찾기

라인을 처리하고 어떤 라인이 연결되어 있는지 찾고 싶습니다.

예 :

{ 
    Line1 : start = x = 1 y = 2 , end = x = 1 y = 10 
    Line2 : start = x = 5 y = 5 , end = x = 5 y = 15 
    Line3 : start = x = 2 y = 4 , end = x = 2 y = 8 
    Line4 : start = x = 2 y = 8 , end = x = 1 y = 2 
    ... 
    ... 
    ... 
} 

일부 라인이 수직이 정확히 연결되지!

나는 이것에 대한 재귀 알고리즘을 작성했지만 모든 (수직선)을 찾을 수는 없다. 어떻게 할 수 있을까?

+0

어떻게? 대수학. 그것을 이용하십시오 ... –

+0

질문이 없습니다. –

+0

줄/노드를 재사용하지 않고 주어진 줄을 사용하여 가능한 가장 긴 경로를 찾는 것이 작업이라고 가정합니다. – Mario

답변

2

테스트되지 않은,하지만 난 당신이 이런 걸 원하는 것 같아요 : 모든

먼저 특정 지점에 대한 모든 연결을 식별 일부 목록 또는 사전을 할 것입니다. 방금해야합니다,

function add_point_function(point) { 
    if point is in used_points { 
     return 
    } 

    add point to current_object 
    add point to used_points 
    for each next_point in connections[point] { 
     add_point_function(next_point) 
    } 
} 

for each point being an index in connections { 
    current_object = empty list of points 
    call add_point_function 
    if current_object has points { 
     // you've got an object here so you might want to save it 
    } 
} 

을이 작업이 완료되면 : 실제 알고리즘은 다음 꽤 쉽게해야

connections = dictionary of coordinate lists indexed by coordinates 

for each line in lines { 
    add the end of line to connections[start of line] 
    add the start of line to connections[end of line] 
} 

used_points = empty list of points 

: 또한 당신은 당신이 알아서 한 점을 수집 목록을 할 것입니다 발견 된 객체를 반복하고 가장 큰 객체를 결정합니다.