Lưới bao phủ bởi hình chữ nhật


15

Chúng tôi có lưới . Chúng tôi có một bộ sưu tập các hình chữ nhật trên lưới này, mỗi hình chữ nhật có thể được biểu diễn như một -by- nhị phân ma trận . Chúng tôi muốn phủ lưới với những hình chữ nhật đó.N 1 N 2 RN1×N2N1N2R

Là phiên bản quyết định của vấn đề này bao gồm NP-hoàn thành?

  • Đầu vào: Bộ sưu tập của hình chữ nhật trên lưới (kích thước đầu vào: ) vàN 1 N 2 L K N +C= ={R1,R2,Giáo dục,RL}N1N2LKN+
  • Đầu ra: Subset với và chứa cho mỗi ô ít nhất một hình chữ nhật bao phủ nó.| S | K SSC|S|KS

Ví dụ trực quan của vấn đề

Tôi thấy rằng trường hợp 1D ( ) có thể được giải quyết trong thời gian đa thức bằng lập trình động: mọi vỏ bọc tối ưu sẽ là sự kết hợp củaN2= =1

  • một vỏ bọc tối ưu cho một số dự án con bao gồm các ô đầu tiên .N1-n1
  • hình chữ nhật 1D, tức là một khoảng, bao gồm các ô còn lại .n1

Tôi không nghĩ tuy nhiên DP có thể hoạt động cho vấn đề 2D: đối với vấn đề 1D, bạn có một bài toán con để giải quyết, nhưng đối với 2D, bạn có \ binom {N_1 + N_2} {N_2} (số lượng mạng tinh thể Đông Bắc đường dẫn trên lưới).( N 1 + N 2N1(N1+N2N2)

Tôi nghĩ vấn đề có thể là NP, nhưng tôi không chắc (mặc dù có vẻ khó hơn P) và tôi đã không thành công trong việc tìm kiếm sự giảm đa thức từ một vấn đề hoàn chỉnh NP (3-SAT, Vertex Cover, ...)

Bất kỳ trợ giúp hoặc gợi ý đều được chào đón.


3
Gợi ý: Tìm kiếm mức giảm từ Vertex Cover, trong đó chúng tôi tạo mộtbởilưới các khối, mỗi khối là 3 khối 3 phần tử ma trận. Mỗi hàng khối tương ứng với một cạnh và sẽ chứa 2 khối được thiết kế đặc biệt tương ứng với các đỉnh điểm cuối của nó. Đối với mỗi đỉnh sẽ có chiều cao-, hình chữ nhật chiều rộng-1 đi qua cột trung tâm của cột 3 khối 3 tương ứng với đỉnh đó. Làm thế nào bạn có thể buộc tổng số của bất kỳ bìa -vertex hợp lệ nào có giá chính xác ? (Bạn sẽ cần các hình chữ nhật khác.)| V | 3 | E | k | E | ( | V | + 3 ) + k|E||V|3|E|k|E|(|V|+3)+k
j_random_hacker

Tôi nghĩ rằng đây có lẽ là một bài tập về nhà, vì vậy tôi hơi miễn cưỡng khi nói nhiều hơn bây giờ. Công thức chi phí tôi đưa ra có một số manh mối trong đó. Hãy nhớ rằng bạn có thể buộc ít nhất 1 trong số nhiều hình chữ nhật bằng cách biến chúng thành hình chữ nhật duy nhất bao gồm một số phần tử ma trận (trường hợp đặc biệt của 1 hình chữ nhật cũng hữu ích). FWIW, tôi cũng đã thử sử dụng một-Bạn-trước tiên, trong đó việc chọn một đỉnh sẽ tương ứng với "gạch bỏ" một hàng và cột tương ứng, nhưng không thể tìm ra cách buộc cột thứ được chọn khi hàng thứ được chọn hoặc ngược lại. | V | tôi tôi|V||V|TôiTôi
j_random_hacker

Tôi có cùng một vấn đề với-Bạn-lưới điện. Tôi nghĩ rằng tôi thấy loại giải pháp nào bạn có trong đầu (tôi không có chính xác cùng một công thức chi phí), hãy xem bản chỉnh sửa của tôi. Nhân tiện, đây không phải là bài tập về nhà. Đó là một vấn đề kết hợp xuất hiện trong một vấn đề kỹ thuật thực tế. Chúng tôi giải quyết nó bằng MIP, nhưng tôi muốn chắc chắn vấn đề là NP (và không có giải pháp đa thức). Trong mọi trường hợp, nếu bạn xác nhận giải pháp là hợp lệ, bạn có thể đặt gợi ý của mình làm câu trả lời và tôi sẽ xác thực nó (vì tôi đã tìm thấy giải pháp với sự giúp đỡ của bạn). | V ||V||V|
Yann

1
Vâng, đó gần như chính xác là sự giảm bớt mà tôi có trong tâm trí! :) Tôi đã tạo hình chữ nhật "loại 4" của bạn dài hơn một chút ở một đầu: trong đó khối của bạn chiếm 2 ô trong một khối, của tôi chiếm tất cả 3. Thay vì hình chữ nhật "loại 3" đặc biệt cho các khóa cuối, tôi sử dụng toàn bộ hàng trên cùng, chỉ như hình chữ nhật "loại 2" cho . Cuối cùng, tôi có một hình chữ nhật chiếm các ô ở giữa bên trái và dưới cùng bên trái trong mỗi endblock bên trái (lật theo chiều ngang cho mỗi endblock bên phải). Vì vậy, bạn có thể bao gồm 2 hàng dưới cùng của tất cả các khối bao gồm và giữa các endblocks bằng cách sử dụng một hoặc mẫu. a<j<b|==|
j_random_hacker

1
Tôi thích-Bạn-giảm ý tưởng. Với điều này, không giống với-Bạn-giảm, có thể có các giải pháp chi phí tối thiểu không tương ứng với bìa đỉnh - nhưng tất cả các giải pháp đó có thể được chuyển thành bằng nhau (ly tối thiểu) -các giải pháp sử dụng cùng một đối số như trong dấu đầu dòng cuối cùng của bạn, vì vậy đây không phải là một vấn đề cho việc giảm :)3 | V | 3 | E | 3 | V ||E|3|V|3|E|3|V|
j_random_hacker

Câu trả lời:


4

Nhờ gợi ý của j_random_hacker, tôi đã tìm ra giải pháp để giảm Vỏ bọc Vertex cho Sự cố Lưới:

Chúng tôi thực hiện một-Bạn-lưới gồm các khối 3 nhân 3, tức là-Bạn-lưới, với các đỉnh được sắp xếp dưới dạng cột và các cạnh được sắp xếp dưới dạng hàng . Chúng tôi sẽ xây dựng các hình chữ nhật trên lưới này (bản vẽ dưới đây sẽ giúp hiểu rất nhiều về các hình chữ nhật khác nhau được sử dụng)| V | 3 | E | 3 | V | { V 1 , ... , v N 1 } { e 1 , ... , e N 2 }|E||V|3|E|3|V|{v1,Giáo dục,vN1}{e1,Giáo dục,eN2}

nhập mô tả hình ảnh ở đây

Đối với mỗi đỉnh, chúng ta tạo một hình chữ nhật loại 1, bao gồm cột trung tâm của cột khối tương ứng với đỉnh đó, vì vậy chúng ta cóhình chữ nhật loại 1.|V|

Mỗi khối tương ứng với một cặp duy nhất , với cho mỗi khối, chúng tôi thêm một hình chữ nhật loại 2:e i = ( v a , v b )(eTôi,vj)eTôi= =(vmột,vb)

  • nếu hoặc , đây là hình chữ nhật 3 x 3 bao trùm toàn bộ khối.b < jj<mộtb<j
  • if (resp. ), đây là hình chữ nhật 3 nhân 1 của cột bên trái (tương ứng bên phải) của khối.j = bj= =mộtj= =b
  • nếu , đây là hình chữ nhật 1 x 3 bao phủ hàng trên cùng của khối.một<j<b

Vậy ta cóhình chữ nhật loại 2, những hình chữ nhật đó sẽ bắt buộc phải chọn, vì mỗi hình sẽ là bìa duy nhất cho góc trên cùng bên trái (hoặc trên cùng bên phải) của khối.|E||V|

Như chúng ta đã nói, mỗi cạnh tương ứng với một hàng, với hai khối (hãy gọi chúng là endblocks) tương ứng với các điểm cuối của các đỉnh và , bây giờ chúng ta có hình chữ nhật loại 3:(eTôi,vmột)(eTôi,vb)

  • đối với endblock (resp. ), chúng ta có một hình chữ nhật 1-by-2 bao phủ góc trên bên phải (phía trên bên trái) của endblock.(eTôi,vmột)(eTôi,vb)

Ta cóhình chữ nhật loại 3, và một lần nữa, chúng bắt buộc vì mỗi hình sẽ là bìa duy nhất cho góc trên bên phải (nếu đó là endblock đầu tiên) hoặc góc trên cùng bên trái (nếu là endblock thứ hai).2|E|

Bây giờ, với mỗi cạnh chúng ta xây dựng các hình chữ nhật loại 4, giữa các endblocks, chúng ta có hai hình chữ nhật cho hàng thứ hai:

  • Một người đi từ quảng trường trung tâm của khối thứ nhất đến quảng trường trung tâm bên trái của khối thứ hai.
  • Một người đi từ quảng trường trung tâm bên phải của khối thứ nhất đến quảng trường trung tâm của khối thứ hai.
  • Và hai hình chữ nhật giống nhau cho hàng thứ ba.

Ta cóhình chữ nhật loại 4, tuy nhiên không phải tất cả đều bắt buộc.4|E|

Vì vậy, bây giờ, để che lưới:

  • |E|(|V|+2)Hình chữ nhật (loại 2 và 3) là bắt buộc và(loại 1 và 4) là tùy chọn.|V|+4|E|

Để che, đối với một cạnh nhất định, phần giữa các endblocks cạnh chưa được bao phủ (hàng thứ hai và thứ ba của hàng khối), chúng ta có thể sử dụng:

  • Bốn hình chữ nhật loại 4.
  • một hình chữ nhật loại 1 và hai hình chữ nhật loại 4.

Lưu ý rằng trong mọi trường hợp, chúng ta cần ít nhất hai hình chữ nhật loại 4.

Vì vậy, ở đây hàm chi phí sẽ là:|E|(|V|+4)+k

  • Nếu chúng là bìa đỉnh hợp lệ có ít hơn k đỉnh: chúng ta sử dụng các hình chữ nhật bắt buộc , thì đối với các hình chữ nhật tùy chọn, chúng ta có thể sử dụng các hình chữ nhật loại 1 tương ứng của bìa đỉnh và đối với mỗi hàng, chúng ta chỉ cần 2 hình chữ nhật loại 4 (chúng ta đã có một hình chữ nhật loại 1). Vì vậy, nếu đồ thị có nắp đỉnh hợp lệ, lưới có nắp đặt hợp lệ.|E|(|V|+2)

  • Nếu chúng ta có nắp đặt hợp lệ cho lưới (có ít hơn hình chữ nhật ), thì với mỗi cạnh, chúng ta đã có hình chữ nhật loại 1 (và cạnh được "che ") Hoặc bốn hình chữ nhật loại 4, trong trường hợp đó, chúng ta có thể thay thế hai trong số chúng bằng một hình chữ nhật loại 1 và chúng ta vẫn có bìa hợp lệ với hình chữ nhật . Bằng cách lặp lại quá trình này, chúng tôi đạt được một giải pháp hợp lệ không có hàng sử dụng bốn hình chữ nhật loại 4, từ đó chúng tôi có thể có được một nắp đỉnh hợp lệ.|E|(|V|+4)+k|E|(|V|+4)+k

Vì vậy, nắp đỉnh có thể được giảm xuống nắp lưới. Và trường hợp vấn đề lưới có thể được mã hóa bởiche trên lưới cócác phần tử, vì vậy phần giảm là đa thức và bài toán lưới là NPC.|E|(|V|+6)+|V|9|V||E|

PS: Tôi nhận thấy sau khi viết câu trả lời này rằng rất nhiều hình chữ nhật thực sự vô dụng và việc giảm đơn giản hơn nhiều có thể được thực hiện bằng cách sử dụng một-Bạn-lưới vớibao gồm, sử dụng hàm chi phí|E|3|V||V|+4|E|3|E|+k

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.