최소한의 사각형으로 오목 다각형을 덮으십시오


11

최소 사각형으로 간단한 오목 다각형을 덮으려고합니다. 내 직사각형은 길이가 가능하지만 최대 너비를 가지며 다각형은 예각을 갖지 않습니다.

오목 다각형을 삼각형으로 분해하여 각 삼각형을 최소한으로 묶은 최소 겹치는 사각형 세트를 생성 한 다음 해당 사각형을 더 큰 사각형으로 병합하려고합니다. 그러나 이것이 다각형 가장자리의 작은 노치에는 효과가 없다고 생각합니다. 해당 노치의 반사 정점에 의해 생성 된 삼각형은 잘못된 사각형을 생성합니다. 노치에 걸쳐 있거나 무시할 사각형을 찾고 있습니다.

나는 계산 기하학에 대해 전혀 모른다. 그래서 질문을 시작하는 방법을 정말로 확신하지 못한다.

비슷한 다른 게시물을 찾았지만 필요한 것은 아닙니다.

일부 예 : 검은 색이 입력입니다. 허용되는 출력은 빨간색입니다.

여기에 이미지 설명을 입력하십시오

또 다른 예 : 두 번째 출력이 선호됩니다. 그러나 출력을 생성하고 선호도를 결정하기 위해 다른 요소를 사용하는 것이 아마도이 알고리즘의 책임이 아닌 필요합니다.

여기에 이미지 설명을 입력하십시오

여기에 이미지 설명을 입력하십시오

커브를 모방 한 다각형은 매우 드 rare니다. 이 시나리오에서는 사각형의 많은 영역이 낭비됩니다. 그러나 각 직사각형이 최대 너비 제한 조건을 따르기 때문에 이는 허용됩니다.

여기에 이미지 설명을 입력하십시오

또한이 기사가 필요한 것에 가깝다는 것을 알았습니다.

아마도 더 좋은 질문은 "오목 다각형의 직사각형과 같은 부분을 어떻게 식별 할 수 있습니까?" 여기에 이미지 설명을 입력하십시오

다음은 원하는 구현을 보여주는 이미지입니다. 여기에 이미지 설명을 입력하십시오

녹색은 실제 재료 사용량입니다. 빨간색 사각형은 레이아웃입니다. 파란색은 전체 다각형의 MBR입니다. 작은 MBR을 가져 와서 채워야한다고 생각하고 있습니다. 다각형의 중앙으로 끝나는 왼쪽 상단 모서리의 2-3 녹색 사각형은 비쌉니다. 그것이 내가 최소화하고 싶은 것입니다. 녹색 사각형에는 최소 및 최대 너비와 높이가 있지만 영역을 덮는 데 필요한 수의 행과 열을 사용할 수 있습니다. 다시 입력에 걸쳐 있지 않은 사각형의 수를 최소화해야합니다. 또한 매우 비싼 작은 장소에 맞게 녹색 사각형의 모양을 수정할 수도 있습니다. 다시 말해, 가능한 한 많은 사각형을 가능한 많이 확장하는 것이 이상적입니다.


3
제목에 볼록 다각형이 있지만 질문에 오목 다각형이 있습니다. 아마도 몇 가지 수정을해야합니까?
Ankur

1
@JukkaSuomela, 첫 번째 두 그림에서 다각형의 크기는 거의 같으며 첫 번째 그림에서 두 번째 사각형에서와 같이 세 개의 사각형을 세로로 실행할 수 있습니다. 그러나 이것은 바람직하지 않습니다. 트릭은 사각형의 둘레와 관련이 있다고 생각합니다. 어쩌면 내가하려고하는 것은 다각형 안에있는 사각형의 경계의 양을 최소화하고 다각형의 가장자리와 공선 인 경계의 양을 최대화하는 것입니다. 그러나 때로는 사각형을 다각형에서 쏟아서 완전히 덮을 수 있습니다.
Josh C.

1
@ JohnMoeller, 이해합니다. 이것은 사람이 솔루션을 쉽게 식별 할 수 있지만 문제를 올바르게 표시하는 것은 매우 어려운 문제입니다. 문제는 카펫이나 벽지를 깔는 것과 유사하며 실제 문제는 구조적 / 건축 적 문제입니다. 나중에 다른 형태의 테셀레이션으로 채워질 직사각형 레이아웃 영역을 식별하려고합니다. 사각형을 찾아 직사각형이 아닌 영역을 처리하는 것이 문제입니다. 더 설명 할 수 있으면 알려주십시오.
Josh C.

2
먼저 모델링 질문으로 접근해야한다고 생각합니다. 목표는 잘 정의 된 최적화 문제를 해결하는 알고리즘을 만드는 것이 아니라 목표는 최적화 문제를 정의하는 것입니다.
Jukka Suomela

3
@JoshC .: 아마도 실제 응용 프로그램에 대해 더 많이 알려 주면 도움이 될 것입니다. 예를 들어, 절단은 상당히 비싸다는 것이 이상적입니다. 직사각형 조각은 가능한 한 적은 절단이 필요합니다. 이 올바른지?
Jukka Suomela

답변:


3

이것은 기하 세트 표지의 변형입니다. 정확한 설정에 따라 근사치를 구할 수 있습니다. 문제는 물론 NP-Hard입니다. 자연적인 huersitics는 욕심 많은 알고리즘을 사용하는 것입니다 (항상 아직 다루지 않은 대부분의 영역을 덮는 사각형 / 스트립을 선택하십시오. 다른 기술은 재 칭량을 사용하는 것입니다. 흥미로운 이론적 결과가 있지만 솔직히 실제로는 너무 유용한 것은 없습니다 시도해 볼만한 흥미로운 기능 중 하나는 먼저 다각형을 최소 수의 볼록한 모양으로 분해 한 다음 (Keil 동적 프로그래밍 알고리즘 사용) 각 볼록 다각형을 개별적으로 덮는 것입니다.


Keil Dynamic Programming 알고리즘에 익숙하지 않습니다. 그러나 휴리스틱을 기반으로 한 가장 변형이 많은 사각형과 최소 경계 사각형 알고리즘을 일부 변형과 함께 사용하여 작동하는 방법을 찾았습니다.
Josh C.

2

이 백서 가 도움이 될 것 같습니다 . 분명히 그것은 같은 문제가 아닙니다. 사실로 다각형으로 사각형을 덮는 반대 문제입니다. 그러나 일부 아이디어는 출발점이 될 수 있습니다. 특히,이 역 문제는 NP가 어렵 기 때문에 귀하의 문제가있을 것으로 생각됩니다 (내가 알 수있는 한 감소의 명백한 연장은 없지만).

E. Arkin, A. Efrat, G. Hart, I. Kostitsyna, A. Kroller, J. Mitchell 및 V. Polishchuk. 스칸디나비아는 케이크 위에 얇게 썬다 : 가장 작은 1-Fit-All Box. 알고리즘과 재미 . 페이지 16-27. 2012 년


1
제안 해 주셔서 감사합니다. 저는이 문제를보다 명확하게하기 위해 회사의 엔지니어링 및 제조 부서와 협력하고 있습니다. 나는 여전히 확인을 기다리고 있지만 지금은 가장 큰 내접 직사각형 세트를 반환하는 알고리즘이 작동한다고 생각하고 있습니다. 모양을 완전히 덮지는 않지만 직교 영역을 선호하는 반면 비 직교 영역은 휴리스틱으로 남겨 둡니다. 유일한 트릭은 이러한 직교 영역을 최대화하는 것입니다. 9 개의 람다 같은 인물이있는 마지막 이미지를보십시오.
Josh C.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.