Shalmoli Gupta sudah menjelaskan bahwa masalah umum adalah NP-Hard, jadi saya memutuskan untuk menyelidiki apakah ada kasus khusus yang dapat diselesaikan secara polinomial. Akhirnya, saya menemukan solusi untuk kasus khusus set yang mewakili pohon, atau lebih umum, urutan paralel seri dengan penyertaan subset dengan semua set yang tak tertandingi.
Salah satu properti yang membuat segalanya lebih mudah adalah jika daftar set ditutup di bawah persimpangan. Jika , maka, ada urutan optimal di mana s 1 datang sebelum s 2s1⊆s2s1s2 . Kita dapat mengasumsikan WLOG bahwa pemesanan optimal adalah perpanjangan linear dari urutan parsial yang diberikan oleh subset inklusi.
Karena semua himpunan bagian dari himpunan muncul sebelum dalam urutan, ini berarti bahwa jumlah yang ditambahkan ke jumlah berjalan oleh himpunan yang diberikan adalah tetap, terlepas dari di mana ia muncul. Jika adalah daftar set, maka penambahan biaya set adalah jumlah elemen dalam s yang tidak subset s yang muncul di S . Jika set yang sama muncul beberapa kali dalam SSSS , kita dapat secara sewenang-wenang memilih satu untuk duluan dan membiarkan yang lain dikenakan biaya 0.
Ini berarti bahwa masalahnya setara dengan masalah waktu penyelesaian berbobot minimum dalam penjadwalan mesin tunggal dengan kendala yang diutamakan. Dalam masalah ini, diberi satu set pekerjaan dengan bobot dan waktu t j , dan urutan parsial pada pekerjaan P , kita ingin menemukan urutan pekerjaan yang meminimalkan tertimbang total waktu penyelesaian, yaituwjtjP
∑ni=1wji(∑ik=1tjk)
tunduk pada kendala didahulukan . Masalah set kumulatif minimal dengan set persimpangan tertutup dapat diubah menjadi ini dengan menciptakan pekerjaan untuk setiap set, di mana setiap pekerjaan memiliki bobot 1, waktu sama dengan biaya tambahan yang ditentukan di atas, dan PPP adalah urutan yang diberikan oleh subset inklusi.
Ternyata, masalah ini adalah NP-Hard untuk umum juga. Namun, bentuk khusus P tertentu dapat diselesaikan dalam waktu polinomial.PP
Makalah ini memberikan algoritma untuk kasus seri paralel perintah PO(nlogn)P (yang meliputi kasus penting dari pohon juga). Sayangnya, saya tidak dapat mengakses kertas itu, jadi saya memutuskan untuk mencoba untuk menemukannya kembali secara mandiri. Inilah yang saya pikirkan.
Untuk mengatasi masalah ini, diperlukan beberapa pengamatan.
Pertama, dengan tidak adanya kendala diutamakan, solusi optimal adalah dengan hanya mengurutkan pekerjaan dalam rangka meningkatkan . Untuk kesederhanaan, saya akan merujuk ini sebagai nilai pekerjaan, disingkatv(j). Perhatikan bahwa karena pemilahan adalahO(nlogn), tidak mungkin melakukan lebih baik dari kompleksitas ini.tjwjv(j)O(nlogn)
Aturan 1 Biarkan dan b menjadi pekerjaan sedemikian rupa sehingga a < b ∈ P dan b mencakup a. Jika v ( a ) < v ( b ) , maka kita dapat menghilangkan batasan a < b tanpa mempengaruhi urutan optimal atau nilai objektif.aba<b∈Pv(a)<v(b)a<b
Misalkan muncul sebelum aba dalam urutan optimal dari masalah santai. Karena b membahas awalnya, itu berarti bahwa semua pekerjaan antara b dan a dalam pemesanan baru tidak dapat dibandingkan dengan a dan b. Tetapi karena b memiliki nilai lebih tinggi dari a, kita dapat menurunkan nilai obyektif dengan menukar b dan a, suatu kontradiksi.
Demikian juga, kita dapat menghilangkan batasan dalam kasus bahwa v(a)=v(b) selama kami memastikan bahwa setelah mengurutkan berdasarkan nilai, kami memutuskan hubungan dengan berkonsultasi dengan hubungan yang diutamakan dari masalah asli (yang disederhanakan). Ini memastikan bahwa solusi optimal yang ditemukan untuk masalah santai juga merupakan solusi optimal untuk masalah asli.
Oleh karena itu, setiap kali b mencakup a dan , kita dapat menyederhanakan masalah dengan menjatuhkan batasan a < b .v(a)≤v(b)a<b
Aturan 2 Misalkan kita tahu bahwa b mengikuti segera setelah solusi optimal. Kita dapat menggabungkan a dan b menjadi simpul baru c dengan dan t c = t a + t b , sambil mengontrak poset Pwc=wa+wbtc=ta+tbP tepat.
Nilai obyektif optimal dari masalah baru berbeda dengan konstanta dari nilai obyektif asli (khususnya ), namun konstanta ini tidak tergantung pada pemesanan dan karenanya pemesanan optimal tidak terpengaruh. Kami dapat memulihkan solusi optimal untuk masalah lama dengan mengambil solusi optimal untuk masalah baru dan mengganti c dengan a b .watbcab
Aturan 3 Misalkan dalam solusi optimal untuk instance masalah, muncul segera sebelum b dan v ( a ) > v ( b ) . Sekarang anggaplah kita membuat contoh masalah yang lebih besar dengan menambahkan pekerjaan baru dengan poset baru yang dibentuk dari seri atau komposisi paralel dengan aslinya. Akan selalu ada solusi optimal untuk masalah yang lebih besar di mana a datang segera sebelum babv(a)>v(b)ab .
Misalkan sebaliknya. Biarkan solusi optimal mengandung . Sejak P dibentuk oleh komposisi seri paralel, kita tahu bahwa semua x i s yang tak tertandingi untuk sebuah dan b . Menggabungkan semua x i node ke node baru x ' menggunakan aturan 2. Sekarang perhatikan v ( x ' ) . Jika v ( x ′ ) ≤ v ( a ) maka kita dapat bertukara,x1,x2,…,bPxiabxix′v(x′)v(x′)≤v(a) dan sebuah tanpa meningkatkan nilai obyektif. Demikian juga, jika v ( x ′ ) ≥ v ( b ) , kita dapat menukar x ′ dan b . Karenanya, v ( a ) < v ( x ′ ) < v ( b ) . Tapi v ( a ) > v ( b ) , sebuah kontradiksi.x′av(x′)≥v(b)x′bv(a)<v(x′)<v(b)v(a)>v(b)
Dengan menggunakan aturan 2 dan aturan 3, kita sudah bisa mendapatkan algoritma sederhana namun suboptimal . Karena P adalah urutan paralel seri, anggap input berisi representasi pohon P di mana setiap node mewakili komposisi seri atau komposisi paralel, dan daun adalah pekerjaan individu. Kita dapat menemukan solusi optimal dengan preorder traversal dari pohon dengan mempertahankan invarian bahwa solusi optimal untuk setiap sub-masalah adalah rantai dalam urutan nilai yang meningkat.O(n2)PP
Misalkan adalah seri komposisi sub-masalah dengan poset P 1 dan P 2 . Biarkan solusi optimal memesan C 1 dan C 2 . Solusi optimal untuk P jelas merupakan gabungan dari rantai-rantai ini. Namun, ada kemungkinan bahwa pekerjaan pertama di C 2 memiliki nilai lebih rendah dari pekerjaan terakhir di C 1 . Untuk menjaga invarian bahwa solusi adalah rantai yang diurutkan, kami menggunakan aturan 3 + aturan 2 untuk menggabungkan titik akhir selama mereka tidak dalam urutan.PP1P2C1C2PC2C1
Jika bukan komposisi paralel, kita cukup mengambil rantai yang diurutkan S 1 dan S 2 dan menggabungkannya ke dalam rantai yang diurutkan baru. Berkat invarian, ini valid.PS1S2
Sayangnya, algoritma ini adalah . Dalam rangka untuk mendapatkan O ( n l o g n ) algoritma, kita perlu menghitung rantai malas menggunakan aturan 1.O(n2)O(nlogn)
Secara khusus, jika subproblem hanya berisi node di mana batasan presedensi sama dengan urutan nilai, maka kita bisa melupakan batasan presedensi sepenuhnya dan hanya melihat nilai. Ini dipastikan oleh invarian yang sama yang memastikan solusi diurutkan rantai dalam algoritma sebelumnya.
Alih-alih menghitung rantai yang diurutkan untuk setiap subproblem, kami menghadirkan solusi optimal untuk subproblem sebagai sepasang Fibonacci heaps, satu heap min, dan satu max heap, keduanya berisi semua pekerjaan di subproblem. Ini berarti bahwa kita dapat menghilangkan elemen minimum atau maksimum dari solusi dalam waktu logaritmik.
PP
Untuk komposisi paralel, kami cukup menggabungkan pasangan tumpukan. Min heap baru adalah gabungan dari min heap dari masing-masing subproblem dan juga dengan heap max. Perhatikan bahwa tumpukan Fibonacci dapat digabung dalam waktu yang konstan.
Setelah kami memiliki pasangan tumpukan yang mewakili solusi untuk seluruh masalah, kami dapat menemukan solusi pemesanan yang sebenarnya dengan membuka tumpukan min sampai kosong. Setelah itu kami membatalkan semua penggantian aturan 2 untuk mendapatkan solusi dari masalah aslinya.
O(nlogn)