채우기 문제

**채우기 문제**()는 물체를 용기에 채우는 수학의 최적화 문제이다. 목표는 하나의 용기에 물체를 가능한 한 빽빽하게 채우거나 모든 물체를 가능한 한 적은 용기에 채우는 것이다. 이 문제의 대부분은 실생활에 포장, 저장 그리고 수송 문제와 관계지을 수 있다. 각 채우기 문제는 이중 덮기 문제가 있다. 이것은 겹치는 것을 허용하여 용기의 모든 영역을 동일한 물체로 완전히 덮는데 몇 개가 들어가는지를 구하는 문제이다.

상자 채우기 문제는 다음이 주어진다:
* '용기' (보통 단일 2 또는 3차원 볼록한 영역이나 무한한 공간이다)
* 일부 또는 모두가 하나 이상의 용기에 들어가야 하는 '물체'의 집합. 집합은 크기가 정해진 다른 물체 또는 반복해서 사용할 수 있는 유일한 고정된 차원의 물체를 포함한다.
보통 채우기는 물건과 다른 물건 사이나 용기 벽 사이에 겹치는 일이 없어야 한다. 일부 변형에서 초점은 용기에 최대 밀도로 채우는 구성을 찾는 것이다. 더 일반적으로 목표는 가능한 적은 용기에 모든 물체를 담는 것이다. 어떤 변형에서 (물체와 물체간 그리고/또는 용기의 경계에서) 겹치는 것은 허락되지만 최소화되어야 한다.

## 무한 공간 채우기
이 문제의 대부분에서 용기의 크기가 모든 방향으로 커질 때 무한 유클리드 공간을 최대한 빽빽하게 채우는 문제와 같아진다. 이 문제는 많은 과학 분야와 관련이 있으며 중대한 관심을 받고 있다. 케플러의 추측은 구 채우기의 최적해를 몇백년 전에 제시되었고, 토머스 캘리스터 헤일즈(Thomas Callister Hales)가 증명했다. 타원체, 사면체를 포함한 플라톤과 아르키메데스 다면체와 불평등 구형 이합체와 같은 많은 모양들도 관심을 받았다.

### 육각형 원 채우기
오른쪽|섬네일|2차원 유클리드 평면에서 육각형 원 채우기이다.
이 문제는 수학적으로 원 채우기 정리의 아이디어와는 다르다. 관련된 원 채우기 문제는 평면이나 구의 표면에서 원의 크기가 다를 수 있는 원을 채우는 것을 다룬다.

다른 차원의 구는 일차원 보다 큰 차원에서 완벽히 효율적으로 채울 수 없다(일차원 우주에서, 원과 비슷한 것은 단지 두 점 뿐이다). 다시 말해, 원으로만 채울 때는 항상 사용하지 않은 공간이 있다. 원을 가장 효율적으로 채우는 방법인 육각형 채우기는 대략적으로 91%의 효율을 얻을 수 있다.

### 높은 차원에서 구 채우기
3차원에서 면심입방구조는 가장 좋은 격자 채우기이기 때문에 최적의 채우기라고 여겨진다. 3차원에서 '단순'한 구 채우기('단순' 은 조심스럽게 정의해야 한다)는 정의 가능한 9가지가 있다. 8차원 E8 격자와 24차원 리치 격자는 각각 실 차원 공간에서 최적으로 증명되었다.

### 3차원에서 정다면체 채우기
정육면체는 3차원 공간을 완전히 채우도록 배열할 수 있다, 가장 자연스러운 채우기는 정육면체 벌집이다. 다른 정다면체는 공간을 스스로 채울 수 없지만 몇 가지 예비 결과가 알려져 있다. 정사면체는 적어도 85%의 채우기를 할 수 있다. 정십이면체의 최대 채우기는 앞에서 말한 면심 입방 격자(FCC)를 기반으로 한다.

정사면체와 정팔면체는 정사면체-정팔면체 벌집으로 알려진 배열로 공간을 채울 수 있다.

국소 발전 방법과 무작위 채우기를 결합한 시뮬레이션은 정이십면체, 정십이면체, 정팔면체에 대한 격자 채우기가 모든 채우기에서 최적이라는 것을 나타낸다.

## 3차원 용기에 채우기

### 입방체에 입방체
주어진 입방체(3차원 직사각형)의 집합으로 채울 수 있는 최소 입방체 용기의 개수를 결정한다. 채우려는 육면체는 각 축을 기준으로 90도 회전시킬 수 있다.

### 유클리드 공에 구
\scriptstyle k개의 분리된 열린 단위 공으로 채울 수 있는 가장 작은 공을 찾는 문제는 \scriptstyle k\leq n+1이고 제한 없는 무한 차원의 힐베르트 공간에 있을 때, \scriptstyle n차원 유클리드 공간에서 간단하고 완벽한 답이 있다. 일반적인 문제의 취지를 밝히기 위해 자세히 설명할 필요가 있다. 이 경우에 \scriptstyle k쌍의 접하는 단위 공의 조합이 가능하다. 중심을 모서리가 2개인 \scriptstyle(k-1)차원 단체의 꼭짓점 \scriptstyle a_1,..,a_k에 두자; 이것은 쉽게 정규직교 기반에서 시작하는 것을 알 수 있다. 조금 계산해 보면, 무게중심에서 꼭짓점 까지의 거리는 \scriptstyle\sqrt{2\big(1-\frac{1}{k} \big)}이라는 것을 알 수 있다. 게다가, 공간의 다른 모든 점은 필연적으로 \scriptstyle k개의 정점 중 *적어도* 하나로부터 더 큰 거리를 갖는다. 공의 포함관계를 생각하면, \scriptstyle a_1,..,a_k를 중심으로 하는 \scriptstyle k개의 열린 단위 공은 이 조합에서 최소의 반경 \scriptstyle r_k:=1+\sqrt{2\big(1-\frac{1}{k}\big)}을 갖는 원에 들어있다.

이 조합이 최적임을 보이기 위해서, 중심이 \scriptstyle x_{0}이고 반지름이 \scriptstyle r인 원 안에 있는 \scriptstyle k개의 분리된 열린 단위 공의 중심을 \scriptstyle x_1,...,x_k이라고 하자. 유한집합 \scriptstyle\{x_1,..x_k\}에서 \scriptstyle\{a_1,..a_k\}로 대응시키자. 모든 \scriptstyle 1\leq j\leq k에 대해서 \scriptstyle x_j를 \scriptstyle a_j로 대응시키자. 모든 \scriptstyle 1\leq i에 대해서 \scriptstyle \|a_i-a_j\|=2\leq\|x_i-x_j\|일 때 이 대응은 1-Lipschitz 이고, Kirszbraun 정리에 의해서 이는 전역적으로 정의된 1-Lipschitz 매핑으로 확장된다; 특히, 모든 \scriptstyle1\leq j\leq k에 대해서 \scriptstyle\|a_0-a_j\|\leq\|x_0-x_j\|이기 때문에 또한 \scriptstyle r_k\leq1+\|a_0-a_j\|\leq 1+\|x_0-x_j\|\leq r인 점\scriptstyle a_{0}이 존재한다. 이것은 오직 \scriptstyle r\geq r_{k}일 때 만 \scriptstyle k개의 분리된 열린 단위 공들이 반지름이 \scriptstyle r인 공 안에 있을 수 있다는 것을 보여준다. 무한차원 힐베르트 공간에서 이것은 \scriptstyle r\geq 1+\sqrt{2}. 예를 들어, \scriptstyle\sqrt{2}e_j를 중심으로 가지고 \scriptstyle\{e_j\}_j은 정규 직교 기반인 단위 공은 원점을 중심으로 하고 반지름이 \scriptstyle 1+\sqrt{2}인 원에 분리되어서 포함되어있다. 게다가 \scriptstyle r일 때는 반지름이 r인 공 안에 들어갈 수 있는 분리된 열린 단위 공의 최대 개수는 \scriptstyle\big\lfloor \frac{2}{2-(r-1)^2}\big\rfloor.

### 입방체에 구
.의 크기를 가지는 <span style="color:#0645ad;">직육면체</span>에 지름 *d*인 구체가 몇 개가 들어갈 지를 결정한다.

### 원기둥에 구
반지름이 *R* 이고 반지름이 *r* (*n*를 찾는 문제와 매우 유사한 문제이다.

*n*&nbsp;≤&nbsp;13일 때와&nbsp;*n*&nbsp;=&nbsp;19일 때 최적해가 증명되었다.

#### 정사각형에 원

오른쪽|섬네일|120x120픽셀|정사각형에 원 15개를 채우는 최적해이다
단위원 *n*개로 가장 작은 정사각형을 채운다. 이것은 단위원에 점을 퍼뜨려 가장 큰 점들간 최소거리 *d**n*를 찾는 문제와 매우 유사한 문제이다. 이 두 문제를 변환하려면 단위 원이 있는 정사각형의 한 변의 길이는 *L*&nbsp;=&nbsp;2&nbsp;+&nbsp;2/*d**n*이다.

*n*&nbsp;≤&nbsp;30일 때 최적해가 증명되었다.

#### 직각이등변삼각형에 원

오른쪽|섬네일|120x120픽셀|직각이등변삼각형에 원 6개를 채우는 최적해이다
단위원 *n*개로* *가장 작은 직각이등변삼각형에 채운다. *n*7/11)이다.

#### 원에 정사각형 채우기
정사각형 *n*개를 가능한 작은 원에 넣는다.

최소해:

### 직사각형 채우기

#### 직사각형에 크기가 동일한 직사각형
크기가 (*l*,*w*)인 직사각형 여러개를 90° 회전을 허용하여 크기가 (*L*,*W*)인 큰 직사각형 안에 채우는 문제는 파렛트에 상자를 싣거나 특히 나무 펄프 보관 등의 적용이 있다.

예를 들어, 크기가 (137,95)인 직사각형 147개는 크기가 (1600,1230)인 직사각형을 채울 수 있다.

#### 직사각형에 크기가 다른 직사각형
다양한 너비와 높이를 가지는 직사각형들을 최소 면적의 (하지만 둘러싸는 직사각형의 너비와 높이에는 경계가 없는) 직사각형에 채우는 문제는 이미지들을 하나의 큰 이미지로 결합할 때 중요한 문제이다. 각각의 이미지를 웹 서버에 요청하기 때문에, 하나의 큰 이미지를 로딩하는 웹 페이지는 같은 페이지에서 여러 작은 이미지를 로딩하는 브라우저보다 빠르다.

다양한 너비와 높이를 가지는 직사각형들을 최소넓이의 직사각형에 채우는 빠른 알고리즘의 예는 여기 있다.

## 관련 분야
타일링이나 테셀레이션 문제에서 틈이나 겹치는 것이 없어야한다. 이런 종류의 퍼즐의 대부분은 직사각형이나 폴리오미노를 큰 직사각형이나 사각형같은 모양에 채우는 문제와 관련되어있다.

직사각형(과 직육면체)를 직사각형 (직육면체)에 틈이나 겹침없는 타일링에 대해서는 상당히 많은 정리들이 있다:
: 오직* a*가 *n*으로 나눠지거나 *b*가 *n*으로 나눠질 때만 *a* &#xD7; *b* 의 직사각형은 1 &#xD7; *n*의 띠로 채워진다.
: 드 브루인의 정리: 상자가 어떤 자연수 *p*, *q*, *r*에 대해 *a p* × *a b q* × *a b c r* 일 때(즉, 상자가 벽돌의 배 일 때) *a* &#xD7; *a b* &#xD7; *a b c* 의 조화 벽돌로 상자를 채울 수 있다.
폴리오미노 타일링 연구는 크게 두 종류의 문제로 나뉜다: 합동인 타일로 직사각형을 타일링 하고, 각 폴리오미노를 직사각형에 채운다.

두번째 종류의 고전 퍼즐은 펜토미노 12개 전부를 크기가 3×20, 4×15, 5×12 또는 6×10인 직사각형에 배열하는 것이다.

## 불규칙한 물체 채우기
불규칙한 물체 채우기는 폐쇄적인 해결법에는 적합하지 않다; 하지만 실용 환경 과학에 적용은 매우 중요하다. 예를 들어, 불규칙한 모양의 흙 입자를 크기와 모양을 다양하게 채우기는 식물종의 뿌리 형성과 토양에서 물의 움직임에 중요하다.

## 같이 보기
* 집합 채우기
* 상자 채우기 문제
* Slothouber–Graatsma 퍼즐
* 콘웨이 퍼즐
* 테트리스
* 덮기 문제
* 배낭 문제
* 정사면체 채우기
* 원료 절단 문제
* 입맞춤 수 문제
* 구 채우기
* 무작위 채우기

## 각주

## 외부 링크
* Optimizing Three-Dimensional Bin Packing 
* API for 3D bin packing
* 3D Boxes and Cylinders packing with telescoping
수학 잡지같이 많은 퍼즐 책은 채우기 문제를 포함하고 있다.
* Links to various MathWorld articles on packing
* MathWorld notes on packing squares.
* Erich's Packing Center 
* www.packomania.com 표, 그래프, 계산기, 참조 등이 있는 사이트이다.
* "Box Packing" by Ed Pegg, Jr., the Wolfram Demonstrations Project, 2007.
* Best known packings of equal circles in a circle, up to 1100
* Circle packing challenge problem in Python

분류:채우기 문제