Bantuan untuk masalah kombinatorial berikut?

8

Saya memiliki vektor bit, yang masing-masing terdiri oleh bit. Masing menunjukkan Mari dengan yang bit -th dari th vektor, . Setiap bit vektor tunduk pada batasan 2 berikut:m v i [ j ] j i i , j [ 1 , m ] v immvi[j]jsayasaya,j[1,m]vsaya

  1. vsaya[j]=0 jsaya .
  2. vsaya[j]=1 j<saya-mlHaig(m) .
  3. Bit yang tidak termasuk dalam batasan di atas dapat berupa atau , tetapi dalam kasus demikian jumlah paling banyak . 1 0 1201012

Sekarang saya memiliki vektor bit lain , dari bit: awalnya semua bit ditetapkan untuk . Dengan "menerapkan ke " Maksud saya melakukan bitwise AND antara dan , dan kemudian menyimpan hasilnya dalam . Saya tertarik pada evolusi setelah aplikasi berulang vektor diberikan dalam input. m m s 1 v i s s v i s s v 1 , . . . , v msmms1vsayassvsayassv1,...,vm

Mari kita sebut "aplikasi berulang" sebagai lintasan , dan mari kita tentukan lintasan seperti itu secara lebih formal. Lintasan adalah urutan yang disusun oleh paling banyak vektor (dipilih dari diberikan dalam input) sehingga jika ada dalam urutan, maka semua setelah itu harus memiliki . Jadi, misalnya, adalah lintasan, sedangkan tidak (karena ). v 1 , . . . , v m v i v j j < i < v 8 , v 3 > < v 3 , v 8 , v 7 > 8 3mv1,...,vmvsayavjj<saya<v8,v3><v3,v8,v7>83

Jelas, ada lintasan yang berbeda. Biarkan . Misalkan untuk mengambil dan untuk membiarkannya menjalani lintasan : untuk setiap langkah dari lintasan , menempatkan nilai baru yang diambil oleh di . Kemudian ulangi proses yang sama untuk lintasan (selalu dimulai dari , dan selalu menempatkan setiap nilai baru dari di ). Kemudian lagi, sampai Anda mencoba semua lintasan . Pada akhirnya, himpunan akan berisi semua nilai yang mungkin2mS=s=1mT1 s S T 2 s = 1 m s S 2 m S sT1sST2s=1msS2mSs mungkin pernah menganggap diberi vektor dalam input.

Pertanyaan

  1. Saya memiliki dalam input. Saya ingin tahu | S | , Yaitu berapa banyak nilai yang berbeda mungkin s pernah berasumsi. Tentu saja, saya ingin menghitung | S | efisien, yaitu tanpa mencoba semua lintasan yang mungkin satu per satu.vsaya,...,vm|S|s|S|
  2. Misalkan untuk menghapus 2 nd pembatasan vektor input. Bagaimana hal itu memengaruhi ? |S|
  3. Lebih penting lagi, yang paling saya pedulikan adalah bagaimana tumbuh bersama m . Apakah | S | paling polinomial dalam m ? Apakah | S | paling sub-eksponensial dalam m ? Atau apakah ada contoh buruk di mana | S | harus eksponensial dalam m ?|S|m|S|m|S|m|S|m

Gambar berikut adalah contoh dengan : m=17Contoh

Saya mengumpulkan data eksperimental untuk mencoba mencari tahu hubungan antara dan | S | . Sejauh ini, percobaan tampaknya menunjukkan bahwa | S | tumbuh lebih cepat dari m 3 dan lebih lambat dari m 4 . Namun, untuk saat ini data tersebut tidak memiliki banyak signifikansi: Saya hanya dapat melakukan tes hingga m = 90 , jadi mungkin ada konstanta tersembunyi yang besar atau beberapa faktor lain yang memungkinkan hukum eksponensial terlihat seperti hukum polinomial untuk m kecil. . Saya perlu bantuan dalam mencari tahu perilaku asimptotik | S | dengan hormatm|S||S|m3m4m=90m|S| . m

Giorgio Camerani
sumber
4
@Downvoter: Mengapa downvoting? Tolong motivasi.
Giorgio Camerani
Bukankah lintasannya terlalu rumit? Anda bisa berbicara tentang himpunan bagian {1m}
Peter Taylor
@ Peter: Ya lintasan tidak lebih dari subset dari . Saya baru saja berpikir bahwa berbicara tentang lintasan akan memberikan gambaran yang lebih intuitif, "visual" dari masalahnya. Saya ingin menempatkan aksen pada evolusi vektor s , untuk menekankan fakta bahwa aku tertarik berapa banyak nilai yang berbeda dapat s berasumsi selama semua evolusi yang mungkin. {1,...,m}ss
Giorgio Camerani
3
@Walter: Salah satu alasan yang memungkinkan untuk downvotes adalah judul pertanyaan, yang tidak membantu. Anda mungkin ingin mengulanginya sehingga tidak mengandung "bantuan" dan mungkin mengisyaratkan objek yang ingin Anda hitung. Bersulang!
Michaël Cadilhac
@ MichaëlCadilhac: Ya, memang judulnya sangat generik. Mungkin saya akan mengubahnya menjadi sesuatu yang lebih "menarik" . Terima kasih atas petunjuk Anda, tepuk tangan!
Giorgio Camerani

Jawaban:

8

Saya telah memikirkan kembali ini dan ikatan awal saya benar. Dalam kasus terburuk, |S|=Θ(m2mlgm)

Bukti ada dalam dua bagian. Pertama, . Pertimbangkan kemungkinan nilaisdari lintasan yang berakhir padavx. Setiap bits[j]untukjxadalah 0, dan setiap bits[j]untukj<x-m|S|=HAI(m2mlgm)svxs[j]jxs[j] adalah 1. Oleh karena itu hanya ada2mj<x-mlgm nilai-nilai yangsdapat mengambil. Kalikan dengan jumlahvxdan kita memiliki batas atas.2mlgmsvx

Kedua, pertimbangkan

    0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 
    0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 
    0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 
    0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 
    0 0 0 0 0  1 1 0 0 1 1 1 1 1 1 1 
    0 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1
    ...
    0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 
    0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
     0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

Saya tegaskan bahwa skema ini memberi Anda . Untuk setiap kolomvxpertimbangkan juga(m|S|=Ω(m2mlgm)vxkolom di sebelah kanannya. Masing-masing2 m(mlgm-2)kombinasi dari mereka memberikan yang berbedas, dan di masing-masingstop set bit adalah bit atas setvx, sehingga tidak ada penghitungan ganda antara yang berbedavx.2mlgm-2ssvxvx

Peter Taylor
sumber
Terima kasih atas jawaban anda. Apakah Anda memiliki petunjuk apakah kendala ketiga (yaitu tidak lebih dari nol) membuat perbedaan? Dengan kata lain, apakah Anda percaya bahwa membatasi nol paling banyak 12 menyiratkan bahwa jumlah nilai yang berbeda yang diperkenalkan oleh lintasan yang berakhir pada v x jauh lebih kecil dari 2 m / l o g m (dengan "jauh lebih sedikit" Maksud saya tidak eksponensial dalam m / l o g m )? Sensasi saya adalah bahwa itu tidak membuat perbedaan: bahkan jika kita membiarkan paling banyak 1 nol tampaknya kita dapat menghasilkan 2 m1212vx2m/logmm/logm1 nilai yang berbeda untuk setidaknya satuvx. 2m/logmvx
Giorgio Camerani
@WalterBishop, contoh saya menggunakan tidak lebih dari 1 nol.
Peter Taylor
Maaf saya sudah menguraikan jawaban dan contohnya terlalu cepat.
Giorgio Camerani
@WalterBishop, walaupun jika Anda membatasi jumlah 1s sebagai gantinya (tidak lebih dari dari nilai-nilai gratis dalam vektor dapat 1) Anda mendapatkan | S | = O ( m k + 1 )k|S|=O(mk+1)
Peter Taylor
Bagaimana Anda mendapatkan dalam kasus seperti itu? Bagi saya, sepertinya dalam hal demikian kita akan memiliki | S | = O ( m 2 k ) = O ( m ) (karena k adalah konstan). Karena AND-ing 2 vektor, 1 dapat menjadi 0 tetapi 0 tidak bisa menjadi 1 : dengan demikian, terlepas dari kenyataan bahwa "jendela geser" kami memiliki m / l|S|=O(mk+1)|S|=O(m2k)=O(m)k1001 vektor, kita dapat menghasilkan paling 2 k vektor yang berbeda untuk masing-masing m posisi"jendela geser". Apakah saya melewatkan sesuatu? m/logm2km
Giorgio Camerani