j_random_hacker의 힌트 덕분에 정점 커버를 그리드 문제로 줄이는 솔루션을 찾았습니다.
우리는 으로 | V | 3x3 블록의 그리드, 즉 3 | 전자 | 별로 3 | V | 정점은 열 { v 1 , … , v N 1 }로 정렬되고 모서리는 행 { e 1 , … , e N 2 } 로 정렬됩니다 . 이 그리드에 사각형을 만들 것입니다 (아래 그림은 사용 된 다른 사각형을 많이 이해하는 데 도움이됩니다)| 이자형|| V|3 | 이자형|3 | V|{ v1, … , v엔1}{ 전자1, … , e엔2}
우리가 각각의 정점을 위해, 우리는 그 정점에 해당하는 블록의 열의 중앙 열을 포함 1 형의 사각형을 만들 유형 1의 사각형| V|
각 블록은 고유 한 쌍 해당하며 각 블록에 대해 e i = ( v a , v b ) 와 함께 2 유형의 사각형을 추가합니다.( 전자나는, v제이)이자형나는= ( Vㅏ, v비)
- 만약 또는 B < J , 이것은 전체 블록을 덮는 -3- 의해 -3- 직사각형이다.j < ab < j
- 만약 (RESP. J = B에 )이 왼쪽으로 피복하여 3-1 직사각형 (RESP는. 오른쪽) 블록의 칼럼.j = aj = b
- 만약 < J < B ,이 블록의 상부 행을 덮는 1 바이 3 직사각형이다.a < j < b
그래서 우리는 유형이 2 인 사각형의 경우 사각형은 해당 블록의 왼쪽 위 (또는 오른쪽 위) 모서리에 대한 유일한 표지이므로 선택해야합니다.| 이자형| | V|
우리가 말했듯이, 각 모서리는 행에 해당하며 정점 및 ( e i , v b ) 의 끝점에 해당하는 두 개의 블록 (끝 블록이라고 함 ) 이 이제 사각형입니다. 삼:( 전자나는, vㅏ)( 전자나는, v비)
- endblock (resp. ( e i , v b ) )의 경우, endblock의 오른쪽 상단 (왼쪽 상단) 모서리를 덮는 1x2 직사각형이 있습니다.( 전자나는, vㅏ)( 전자나는, v비)
우리는 유형 3의 직사각형은 다시 오른쪽 상단 모서리 (첫 번째 끝 블록 인 경우) 또는 왼쪽 위 모서리 (두 번째 끝 블록 인 경우)에 대한 유일한 표지이므로 각각 필수입니다.2 | 이자형|
이제 각 모서리에 대해 끝 블록 사이에 유형 4의 사각형을 구성하고 두 번째 행에 두 개의 사각형이 있습니다.
- 첫 번째 블록의 중앙 사각형에서 두 번째 블록의 왼쪽 중앙 사각형으로 이동합니다.
- 하나는 첫 번째 블록의 중앙 오른쪽 사각형에서 두 번째 블록의 중앙 사각형으로 이동합니다.
- 그리고 세 번째 행에 대해 동일한 두 직사각형.
우리는 유형 4의 직사각형은 필수는 아닙니다.4 | 이자형|
이제 그리드를 덮으십시오.
- | 이자형| ( | V| +2)| V| +4 | 이자형|
주어진 가장자리에 대해 아직 덮지 않은 가장자리 끝 블록 사이의 부분 (블록 행의 두 번째 및 세 번째 행)을 덮기 위해 다음 중 하나를 사용할 수 있습니다.
- 타입 4의 사각형
- 유형 1의 직사각형 하나와 유형 4의 직사각형 두 개
어쨌든 유형 4의 직사각형이 두 개 이상 필요합니다.
| 이자형| ( | V| +4)+k
| 이자형| ( | V| +6)+ | V|9 | V| | 이자형|
추신 : 나는이 답변을 쓴 후에 많은 사각형이 실제로 쓸모가 없으며 별로 3 | V | 그리드 | V | + 4 || 이자형|3 | V|| V| +4 | 이자형|3 | 이자형| +k