직육면체의 결합에 포함 된 가장 큰 큐브 찾기


18

3D 공간에 입방체가 많고 각각 (x, y, z)에 시작점이 있고 크기는 (Lx, Ly, Lz)입니다. 입방체의 결합에 포함 된이 3D 공간에서 가장 큰 큐브를 찾는 방법이 궁금합니다. 이를위한 효율적인 알고리즘이 있습니까?

예를 들어 다음과 같은 직육면체가있는 경우 :

  • 크기가 (10,10,10) 인 (0,0,0)에서 시작하는 직육면체
  • 크기가 (12,13,15) 인 (10,0,0)의 직육면체
  • 크기가 (10,10,10) 인 (0,10,0)의 직육면체
  • 크기가 (10,10,10) 인 (0,0,10)의 직육면체
  • 크기가 (9,9,9) 인 (10,10,10)의 직육면체.

그런 다음이 입방체의 합집합에 포함 된 가장 큰 큐브는 크기가 (19,19,19) 인 (0,0,0)에서 시작하는 큐브입니다.

이 질문의 더 일반적인 버전 :

R d 에서 상자 모음이 주어지면 상자 의 합집합 내에 포함 된 가장 큰 하이퍼 큐브를 찾으십시오.nRd


8
내부에 더 나은 질문이 숨겨져 있다고 생각합니다. 즉, 의 상자 조합이 주어지면 유니온 내에 포함 된 가장 큰 하이퍼 큐브를 계산합니다. Rd
Suresh Venkat

1
이 입방체가 겹칠 수 있습니까?
피터 부스

@Suresh, 질문을 명확히하고 일반화 해 주셔서 감사합니다 :) @Peter, 내 경우에는 ... 중복되지 않습니다 :)
pantoffski

2
당신이 이것을 phesed하는 방식으로, 큐브의 측면이 x, y 및 z 축과 정렬되는 것처럼 들립니다. 이 경우입니까, 아니면 큐브가 임의의 방향을 가질 수 있습니까? 이것은 분명히 알고리즘의 효율성에 큰 차이를 만듭니다.
Joe Fitzsimons

필자의 경우 각 입방체의 얼굴은 축에만 직교합니다.
pantoffski

답변:


15

자, 첫 번째 시도는 어리석은 대답입니다 ... 직사각형 상자의 각면을 통해 비행기를 가져 가십시오. 이것은 크기 의 격자를 형성합니다 . 이러한 그리드 셀이 통합 내부인지 외부인지 계산하는 것은 어렵지 않습니다. 이제 각 그리드 정점에서 가능한 한 크게 만들기 위해 큐브를 정점으로 만듭니다 (이 정점을 정점으로 함). 가장 순진한 방식으로 수행하려면 정점 당 O ( n 3 log n ) 시간 이 걸리지 만 직교 범위 검색 마법을 사용하면 정점 당 log O ( 1 ) n 으로 수행 할 수 있어야합니다 . 그래서 O ( n 3O(n3)O(n3logn)logO(1)n 이 가능해야합니다 ...영형(로그영형(1))

두 번째 시도 : 조합을 계산하십시오. 이 경우 시간 내에 (스윕 평면에 의해 ) 수행 할 수 있습니다 . 이제 합집합의 경계에 대한 L 보로 노이 다이어그램 만 계산하면 됩니다. http://vw.stanford.edu/~vladlen/publications/vor-polyhedral.pdf 결과를 사용하면 임의의 작은 상수 ε > 0에 대해 O ( n 2 + ε ) 시간 내에 수행 할 수 있습니다 .영형(로그)영형(2+ε)ε>0

영형(2)


감사합니다. 또한 L∞이이 문제에 대한 최상의 솔루션이라고 생각합니다. 이전에 2D 사례에 대해 L∞을 수행 한 이후 (이 백서 inf.usi.ch/faculty/papadopoulou/publications/ijcga01.pdf에 제공된 방법으로 구현 ). 상자 만있는 3D 케이스는 그리 어렵지 않습니다.
pantoffski

8

아르 자형<0>01×1×1×××...× 초 입방체.

2×2×...×21×1×...×1


위의 인수를 역순으로 실행하고 모든 직육면체가 다항식 시간으로 확인할 수있는 제약 조건을 구성 함을 보여줌으로써 FNP (적어도 축 정렬 된 직육면체의 경우)에 있음을 증명할 수 있다고 생각합니다.
Joe Fitzsimons
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.