n4------------------n3--------------------n2--n1 | | | | | | | P1 | | | | | | | n6--n5 | | | | n11--n10 | n17 P4 | | P2 | | | P3 | n7 | n12---n9 | | | n8 | | | n16------------n15---------n14------------n13
위의 ASCII 아트에는 정확하게 겹치는 선분이있는 4 개의 다각형 (P1, P2, P3, P4)이 있습니다. 예를 들어, 다각형 P2 (노드 n3, 10, 9, 12, 15, 14, 13, 8, 7, 6 및 2 사이의 선분과 P1 (n1, 2, 5 및 6) n2와 n6 사이의 선분.겹치는 선 세그먼트를 찾는 알고리즘
정확히 겹치는 선분을 찾는 가장 빠른 방법은 무엇입니까?
initialize map<edge, list of shapes> map
for each Shape s
for each Edge e in s
list l = map.get(e)
if(l == null)
l = new list()
l.add(s)
map.put(e, l)
for each <edge, list> in map.entries
if(list.size > 1)
do something with this common edge
의 O (가장자리), 그리고 그것보다 더 잘하지 않을 각 형태는 다음 가장자리의 목록 인 경우
예 설명이 잘못되었습니다. P1에는 노드 1,2,5,6가 있고 P2에는 노드 2,3,10,9,12,15,14,13,8,7,6이 있습니다. – perimosocordiae
@perimosocordiae 감사합니다. 나는 그 설명을 고쳤다 고 생각한다. – magneticMonster
대답하기 전에 도형이 어떻게 저장되는지 언급해야합니다. 그런 종류의 대답은 해답에 영향을줍니다. – twolfe18