특정 요소를 덮는 사각형의 최소값을 찾아 내기 위해, I는 다음의 문제를 해결해야한다. 모든 사각형을 포함하는 최소 수의 사각형을 찾습니다. 사각형은 겹쳐서는 안됩니다. 이미 "충분히 좋은"하지만 항상 사각형의 최소 수를 찾을 수없는 해결책을 가지고 List<Rectangle> FindCoveringRectangles(bool[,] array)
알고리즘은 2D 어레이 단순화
: 같은
함수 서명이 보일 수 있습니다. 이 문제를 해결하기 위해 적용 할 수있는 잘 알려진 효율적인 알고리즘이 있는지 알고 싶습니다.
예 :
의 입력 배열 다음 사각형 초래할 수
(가독성 도트로 대체 0)
..........
.1.....11.
.......11.
...111....
...111....
...111....
....1111..
....1111..
......11..
..........
:
(2,2,2,2),
(2,8,3,9),
(4,4,6,6),
(7,5,8,8),
(9,7,9,8)
(상단 , 왼쪽, 아래, 오른쪽), 1- 기반
하나 이상의 솔루션이있을 수 있지만 하나이면 충분합니다.
근사 알고리즘을 알려 주시면 최악의 경우 알고리즘을 개선하는 데 도움이 될 수 있습니다. –
무엇을 최적화하려고합니까? 최소 수의 사각형은 항상 1입니다. – ThomasMcLeod
이 문제는 [Karnaugh maps] (http://en.wikipedia.org/wiki/Karnaugh_map)의 맥락에서 잘 해결되었습니다. – thiton