Bán khối thời gian


27

Cho khe thời gian mà người muốn mua. Người có giá trị cho mỗi khe thời gian . Mỗi người chỉ có thể mua một khối thời gian liên tiếp, có thể trống.k i h (nkijh(i,j)0j

Có một thuật toán đa thức thời gian để tính giá trị tối đa mà người bán có thể đạt được không?

Không có ràng buộc liên tiếp, chúng tôi có thể cung cấp từng khe thời gian cho người coi trọng nó nhất. Ngoài ra, nếu chúng ta sửa chữa thứ tự của các khe thời gian của mọi người, sau đó lập trình năng động có thể được sử dụng để giải quyết cho giá trị lớn nhất của người đầu tiên người mua là người đầu tiên thời gian khe.0 i k 0 j nk0ik0jn

Câu trả lời:


9

Đưa ra 3CNF với các mệnh đề trên các biến . Giả sử cả và xuất hiện trong công thức cho hầu hết các lần tương ứng.x 1 , ... , x n x i ¯ x i k iϕ1,,ϕkx1,,xnxixi¯ki

Chúng tôi thiết kế một DAG màu có các đỉnh gồm ba phần:G

  • "Gán" các đỉnh và , , . Màu với "màu" và với .ˉ v i ( j ) 1 i n 1 j k i v i ( j ) x i ( j ) ˉ v i ( j ) ¯ x i ( j )vi(j)v¯i(j)1in1jkivi(j)xi(j)v¯i(j)xi¯(j)
  • "Mệnh đề" đỉnh , , . Màu với màu (hoặc ) nếu (hoặc , resp.) Là nghĩa đen của mệnh đề và đó là mệnh đề thứ có chứa nghĩa đen này.1 i 'k j ' = 1 , 2 , 3 w i ' ( j ' ) x i ( j ) ¯ x i ( j ) ¯ x i x i j ' φ i ' jwi(j)1ikj=1,2,3wi(j)xi(j)xi¯(j)xi¯xijϕij
  • "Cắt" các đỉnh . Tô màu chúng với màu sắc riêng biệt khác nhau từ trên.s=s0,s1,,sn,sn+1,sn+k=t

Các cạnh bao gồm:

  • si1vi(1) , , ;v i ( k i ) s ivi(j)vi(j+1)vi(ki)si
  • ˉ v i ( j ) ˉ v i ( j + 1 ) ˉ v i ( k i ) s isi1v¯i(1) , , ;v¯i(j)v¯i(j+1)v¯i(ki)si
  • và , .w i ' ( j ' ) s n + i 'sn+i1wi(j)wi(j)sn+i

Chẳng hạn, từ 3CNF đồ thị sau được tạo (Các hướng cạnh là từ trái sang phải). (x1x2x3¯)(x1x2¯x3)nhập mô tả hình ảnh ở đây

Bây giờ nó không phải là khó để thấy rằng 3CNF ban đầu là satisfiable khi và chỉ khi có một - con đường với màu sắc đỉnh khác nhau trong .t GstG

(Bằng cách này, nó là một sản phẩm phụ rằng existsence của - con đường với màu sắc đỉnh khác nhau trong màu DAG là . Tôi không tìm thấy nhiều văn học về vấn đề này trong quan điểm tính toán Nếu. bạn biết đấy, hãy bình luận!)t NP-cứngstNP-hard

Vậy mối quan hệ giữa vấn đề của và OP là gì? Theo trực giác những gì chúng ta sẽ làm là thiết kế một ma trận , sao cho mỗi màu được ánh xạ thành một hàng (là một người) và các cạnh được ánh xạ tới các cột liên tiếp (các khe thời gian). Do đó, một lịch trình tối đa, về cơ bản là đi từ trái sang phải trong ma trận, tương ứng với một đường dẫn - .h s tGhst

Ma trận của chúng ta có các cột , với các chỉ số bắt đầu từ . Trong constrcution sau một là hai giá trị đáp ứng . Các tỷ lệ có thể là các lũy thừa lớn của và . Đặt .2 n + 1 + i 2 k i + k 0 X Y 1 X Y X / 1 , Y / X k n K i = 2 i + 2 i j = 1 k ih2n+1+i2ki+k0XY1XYX/1,Y/XknKi=2i+2j=1iki

  • Với mỗi , , hãy để (nếu tọa độ tồn tại, giống nhau dưới đây). 0 i n h ( s i , K i ) = h ( s i , K i - k i - 1 ) = h ( s i , K i + k i + 1 + 1 ) = Ysi0inh(si,Ki)=h(si,Kiki1)=h(si,Ki+ki+1+1)=Y
  • Với mỗi , hãy để ; Đối với mỗi , chúng ta hãy .h ( x i ( j ) , K i - 1 + j ) = X ¯ x i ( j ) h ( ¯ x i ( j ) , K i - 1 + k i + 1 + j ) = Xxi(j)h(xi(j),Ki1+j)=Xxi¯(j)h(xi¯(j),Ki1+ki+1+j)=X
  • Với mỗi , và một chữ trong mệnh đề , hãy để . 1 i 'k x φ i ' h ( x , K n + i ' ) = 1ϕi1ikxϕih(x,Kn+i)=1
  • Tất cả các mục khác là 0.

Ví dụ, đối với biểu đồ ví dụ trên, ma trận tương ứng là nhập mô tả hình ảnh ở đây

Bây giờ chúng tôi khẳng định: 3CNF ban đầu là thỏa đáng khi và chỉ khi giá trị tối đa là .(2n+1)Y+ikiX+k

Xem xét việc lập kế hoạch đạt được giá trị tối đa. Vì có chính xác cột trong chứa , nên tất cả chúng phải được che lại. Đối với cột có hai lựa chọn là , giả sử việc lập lịch biểu gán nó cho . Vì cột phải được gán cho , do liên tiếp, chúng ta phải mất các cột thành . Điều tương tự cũng xảy ra nếu việc lập lịch biểu gán cột cho .h Y K i + k i + 1 Y s i K i s i K i + 1 K i + k i K i + k i + 1 s i + 1(2n+1)hYKi+ki+1YsiKisiKi+1Ki+kiKi+ki+1si+1

Do đó, để có giá trị , chúng ta phải chọn tất cả các còn lại có sẵn trong ma trận, tương ứng với một phép gán trên các biến. Vì vậy, giá trị còn lại của là có thể đạt được khi và chỉ khi phép gán thỏa mãn mọi mệnh đề.X kikiXXk

Để kết luận, việc quyết định giá trị tối đa của lập lịch pháp lý là trong . Có lẽ đó là lý do tại sao tất cả các nỗ lực tìm kiếm thuật toán trước đây của chúng tôi đều thất bại.NP-hard


Nhưng, trong ma trận ví dụ, nếu tôi chọn và tôi vẫn có thể đến mục tiêu. Tôi đang làm gì sai? Ngoài ra, trong phải là một cột ở bên phải và trong phải là một cột ở bên trái ¯ x 2 x3X ¯ x 1 (1)X ¯ x 1 (2)x1¯ x2¯x3Xx1¯(1)Xx1¯(2)
rotia

@rotia Có, và điều đó có nghĩa là ở bên trái, bạn phải chọn để có . Vì vậy, tương ứng với một nhiệm vụ thỏa mãn . 4 X x 1 = x 2 = 1 , x 3 = 0x1,x2,x3¯4Xx1=x2=1,x3=0
Willard Zhan

Bạn có thể làm rõ những gì "Giả sử lớn hơn một trong hai số lần xuất hiện của chữ và ." có nghĩa? Số lượng xuất hiện của một nghĩa đen là gì? Đó có phải là một cái gì đó về nơi nó xuất hiện trong các mệnh đề / công thức, hoặc nó xuất hiện bao nhiêu lần trong công thức? Là một nghĩa đen hay một số? x i ¯ x i k ikixixi¯ki
DW

@DW là một số. Biểu hiện của tôi thực sự không rõ ràng lắm; Tôi đã chỉnh sửa nó. ki
Willard Zhan

@WillardZhan Vâng. Nhưng nếu tôi chọn các biến đó, tôi có thể nhận được một giá trị lớn hơn giá trị trong công thức. Chẳng hạn, tôi đặt và , theo công thức tôi chỉ nhận được tới 450 điểm (giả sử là số mệnh đề). Nhưng, bằng cách chọn tôi có thể đạt được 452 điểm bằng cách chọn bốn điểm ở bên phảiX = 7 k x 1 , x 2 , ¯ x 3Y=60X=7kx1,x2,x3¯
rotia

3

Giải pháp này có vấn đề và sẽ bị xóa sớm; xem bình luận của templatetypedef.

Bạn có thể giải quyết điều này trong thời gian đa thức bằng cách sử dụng luồng chi phí tối thiểu . Sau đây, tất cả các cạnh có công suất đơn vị.

  • Tạo một đỉnh nguồn và một đỉnh đích . Chúng tôi sẽ gửi đơn vị dòng chảy từ đến .t k s tstkst
  • Tạo đỉnh để biểu thị các điểm thời gian giữa các vị trí và cạnh có hướng cho mỗi với chi phí 0.v 0 , ... , v n v j v j + 1 0 j < nn+1v0,,vnvjvj+10j<n
  • Đối với mỗi người , tạo như sau: i
    • Một đỉnh nguồn phụ và một đỉnh chìm phụ .t isiti
    • Với mỗi , một cạnh từ đến có chi phí (mà chúng ta lấy là 0 nếu ).s i v j Σ j k = 1 h ( i , k ) j = 00j<nsivjΣk=1jh(i,k)j=0
    • Với mỗi , một cạnh từ đến có chi phí .v j t i - Σ j k = 1 h ( i , k )1jnvjtiΣk=1jh(i,k)
    • Một cạnh với giá 0.ssi
    • Một cạnh với chi phí 0.tit

Luồng chi phí tối thiểu trong mạng này sẽ có tổng chi phí bằng với âm của lợi nhuận tốt nhất có thể. (Chi phí này sẽ âm, nhưng đó không phải là vấn đề.) Có một giải pháp tích hợp tối ưu trong đó mỗi người có một cạnh duy nhất để lại với lưu lượng 1 và một cạnh duy nhất đến với lưu lượng 1 và tất cả các sự cố cạnh khác trên hoặc đều có 0 luồng. Đặt các cạnh luồng 1 này cho người là và : sau đó là , vì các đường dẫn duy nhất trong số các -vertice là những đường dẫn tăng chỉ số. Nếus i t i s i t i i s i v j v k t i k j v k = j i i j + 1 , ... , kisitisitiisivjvktikjvk=j, sau đó người được phân bổ không có khe thời gian; mặt khác, người được phân bổ khối các khe thời gian .iij+1,,k

Theo trực giác, mỗi người "được" 1 đơn vị luồng từ và chọn thời gian bắt đầu (cạnh) và thời gian kết thúc (cạnh); các cạnh bắt đầu và kết thúc này là các cạnh duy nhất có chi phí khác không trong mạng và chúng ta có thể biểu thị giá trị của một khối là sự khác biệt của hai tổng tiền tố. Các công suất đơn vị ở các cạnh giữa các -vertice hoạt động để ngăn 2 người sử dụng cùng một khe thời gian.j + 1 , ... , k vsj+1,,kv

Thật thú vị, công thức này sẽ hoạt động ngay cả khi các giá trị có thể âm.h(i,j)


3
Điều này có thể thất bại nếu một người nào đó đi tuyến đường từ nguồn của họ đến người khác bị chìm và ngược lại? i
templatetypedef

@templatetypedef: Tôi tin rằng bạn đúng; Tôi sẽ xóa câu trả lời này ngay. Thay vào đó, về cấu trúc này: Chúng ta có các đỉnh và cạnh như trước đây, nhưng bây giờ chúng ta cố gắng "luồng" một đơn vị dòng chảy thông qua một "đường ống" của mọi người (được sắp xếp bằng cách tăng giá trị ) bằng cách xóa tất cả các cạnh ngoại trừ và tất cả các cạnh ngoại trừ và thêm cạnh với chi phí âm lớn cho mỗi . Các sẽ buộc một đơn vị dòng chảy truy cập vào tất cả của các cạnh "đường ống" này trong bất kỳ giải pháp tối ưu nào. s s i s s 1 t i t t k t t i s i + 1 - M 1 i < k - M k - 1ississ1tittkttisi+1M1i<kMk1
j_random_hacker

@j_random_hacker thì bạn đang buộc phải đặt hàng của người. k
Chao Xu

@ChaoXu: Tôi không nghĩ vậy: trong bất kỳ sự phân công khối nào cho mọi người, việc chuyển nhượng có thể được liệt kê theo thứ tự tăng dần theo từng người. (Lưu ý rằng không có gì cấm một người được chỉ định một khối kết thúc tại , trong đó là khối đầu tiên được gán cho người .) Nhưng tôi có cảm giác rằng một người thân của vấn đề đã ảnh hưởng đến tôi Nỗ lực cũng ảnh hưởng đến điều này ...j ' < j j ii>ij<jji
j_random_hacker

@j_random_hacker Chi phí của sẽ yêu cầu phải là người thứ trong giải pháp tối ưu. s i isivjsii
Chao Xu
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.