Minimalkan komponen maksimum dari sejumlah vektor

11

Saya ingin belajar sesuatu tentang masalah optimasi ini: Untuk diberikan bilangan non-negatif , menemukan fungsi f meminimalkan ekspresiai,j,kf

maxkiai,f(i),k

Contoh menggunakan formulasi yang berbeda mungkin membuatnya lebih jelas: Anda diberi seperangkat vektor seperti

{
    {(3, 0, 0, 0, 0), (1, 0, 2, 0, 0)},
    {(0, 1, 0, 0, 0), (0, 0, 0, 1, 0)},
    {(0, 0, 0, 2, 0), (0, 1, 0, 1, 0)}
}

Pilih satu vektor dari setiap set, sehingga komponen maksimum dari jumlah mereka minimal. Misalnya, Anda dapat memilih

(1, 0, 2, 0, 0) + (0, 1, 0, 0, 0) + (0, 1, 0, 1, 0) = (1, 1, 2, 1, 0)

dengan komponen maksimum sama dengan 2, yang jelas optimal di sini.

Saya ingin tahu apakah ini merupakan masalah yang sudah diketahui dan metode pemecahan masalah khusus apa yang tersedia. Itu harus cepat dan mudah diprogram (tidak ada solver ILP , dll.). Tidak ada solusi pasti yang dibutuhkan karena ini hanya perkiraan dari masalah sebenarnya.


Saya melihat bahwa saya seharusnya menambahkan beberapa detail tentang contoh masalah yang saya minati:

  • , yaitu selalu ada 64 baris (ketika ditulis seperti pada contoh di atas).i{0,1,,63}
  • , yaitu, hanya ada 2 vektor per baris.j{0,1}
  • mana N (panjang vektor) adalah antara 10 dan 1000.k{0,1,,N1}N

Selain itu, pada setiap baris jumlah elemen dari semua vektor adalah sama, yaitu,

i,j,j:kai,j,k=kai,j,k

dan jumlah elemen-elemen dari vektor penjumlahan kurang dari panjangnya, yaitu,

kiai,f(i),k<N
maaartinus
sumber
4
Tidak sulit untuk mengurangi masalah 3-partisi menjadi masalah Anda. Ini berarti bahwa masalah Anda adalah NP-lengkap bahkan jika angka diberikan secara unary, dan ini mengesampingkan salah satu pendekatan umum untuk algoritma aproksimasi.
Tsuyoshi Ito
Terima kasih atas koreksi dan terima kasih kepada @Tsuyoshi Ito untuk wawasannya. Jika saya memahaminya dengan benar, pembatasan dua vektor per baris (yang saya lupa nyatakan) membatalkan reduksi dan mungkin membuat masalah lebih mudah.
maaartinus
Anda benar, pengurangan dari masalah 3-partisi yang saya pikirkan tidak berfungsi jika hanya ada dua vektor per baris.
Tsuyoshi Ito
ji
JI=264J=2jI=64i

Jawaban:

7

ij{0,1}kai,j,kij=0j=1k3

rfk64

hai mod
sumber
1
Ini adalah pengurangan yang indah. Saya tidak yakin mengapa itu tidak memiliki suara. Bagaimanapun, ini +1 saya.
Tsuyoshi Ito
1
f
7

Kita tidak dapat membahas kompleksitas masalah ketika ukuran masalah ditetapkan pada konstanta, karena (sebagian besar) teori kompleksitas berkaitan dengan perilaku asimptotik dari kompleksitas masalah karena ukuran masalah cenderung tak hingga. Di sini, saya menganggap jumlah baris dan dimensi vektor sebagai variabel.

Maka masalahnya adalah NP-lengkap bahkan jika angka-angka dalam input diberikan secara unary. Ini bukan jawaban untuk pertanyaan Anda karena Anda bertanya tentang perkiraan, tetapi itu adalah sesuatu.

Definisikan masalah dengan seksama:

Instance : n pasang vektor a i , b i ∈ ℕ m ( i ∈ {1,…, n }), dan K ∈ ℕ, semuanya dalam unary.
Pertanyaan : Bisakah kita memilih salah satu i atau b i untuk setiap i sehingga jumlah ini n vektor memiliki paling K di setiap koordinat?

Berikut ini adalah masalah NP-complete yang dikenal yang disebut 3-partisi :


Contoh 3-partisi : B ∈ ℕ, dan bilangan bulat 3 k c 1 ,…, c 3 k antara B / 4 dan B / 2, eksklusif, sedemikian sehingga β i = 1 3 k c i = kB , semuanya dalam unary.
Pertanyaan : Dapatkah multiset yang { c 1 , ..., c 3 k } dipartisi menjadi k multisets S 1 , ..., S k sedemikian rupa sehingga jumlah masing-masing S j adalah sama denganB ?

Diberikan instance ( B ; c 1 , ..., c 3 k ) dari masalah 3-partisi, buat instance dari masalah di atas sebagai berikut. Untuk setiap i = 1,…, 3 k dan j = 1,…, k , kami akan membuat sepasang vektor dimensi 4 k , mewakili pilihan apakah c i milik S j atau tidak:

  • Vektor yang mewakili pilihan " c iS j " hanya memiliki satu entri bukan nol, yaitu ( k −1) c i pada koordinat j .
  • Vektor yang mewakili pilihan " c iS j " juga hanya memiliki satu entri bukan nol, yaitu B pada koordinat ( k + i ) -th.

Tidak sulit untuk melihat bahwa instance ( B ; c 1 ,…, c 3 k ) dari masalah 3-partisi memiliki solusi jika dan hanya jika ada cara untuk memilih vektor dari masing-masing dari 3 k 2 yang dibangun pasang sehingga semua koordinat dari jumlah vektor ini paling ( k -1) B . (Faktanya, ketika ini terjadi, semua koordinat jumlah sama dengan ( k −1) B. ) Jadi ini adalah pengurangan dari masalah 3-partisi ke masalah di atas.

Sejauh ini, saya mengabaikan dua kendala tambahan yang disebutkan di akhir pertanyaan, tetapi keduanya mudah ditegakkan dengan memodifikasi sedikit pengurangan ini. Kondisi bahwa jumlah unsur-unsur dari setiap vektor sama dapat ditegakkan dengan menambahkan koordinat dummy yang hanya mengandung 0 atau 1. Kondisi bahwa jumlah ini kurang dari dimensi dapat ditegakkan dengan menambahkan koordinat dummy yang hanya mengandung 0.

Tsuyoshi Ito
sumber
N