Oke, ini mungkin tampak seperti pertanyaan pekerjaan rumah dan, dalam arti tertentu, itu benar. Sebagai tugas rumah di kelas algoritma sarjana, saya memberikan klasik berikut:
Diberikan grafik tak berarah , berikan algoritma yang menemukan potongan sedemikian rupa sehingga , di mana adalah jumlah sisi yang memotong potongan. Kompleksitas waktu harus .( S , ˉ S ) δ ( S , ˉ S ) ≥ | E | / 2 δ ( S , ˉ S ) O ( V + E )
Untuk beberapa alasan, saya mendapat banyak solusi berikut. Sekarang, ini memang menggunakan terlalu banyak waktu, jadi ini bukan masalah penilaian, tapi saya ingin tahu. "Kelihatannya" tidak benar, tetapi semua upaya saya pada contoh tandingan gagal. Ini dia:
- Setel
- Biarkan menjadi simpul derajat maks dalam grafik
- Tambahkan keS
- Hapus semua tepi yang berdekatan dengan
- Jika kembali ke 2
Perhatikan bahwa dalam langkah 5 mengacu pada grafik asli. Perhatikan juga bahwa jika kita melewatkan langkah 4, ini jelas akan salah (misalnya penyatuan segitiga dengan dua sisi yang terisolasi).
Sekarang, setiap bukti sederhana memiliki masalah berikut - mungkin ketika kita menambahkan titik kita benar-benar menghapustepi dari potongan sambil menambahkan tepi baru (di mana mengacu pada grafik dengan tepi dihapus. Masalahnya adalah, bahwa jika ini merugikan tujuan kita, itu berarti bahwa "dulu" memiliki tingkat yang lebih tinggi, jadi "seharusnya" dipilih sebelumnya.
Apakah ini algoritma yang terkenal? Apakah ada contoh tandingan sederhana untuk itu?
Jawaban:
Klaim saya sebelumnya dari tidak memperhitungkan potongan ukuran sudah ada dalam grafik. Konstruksi berikut ini muncul sebagai hasil (secara empiris - Saya telah membuat pertanyaan di math.stackexchange.com untuk bukti yang kuat) dalam fraksi . n2/4O(12c+6 n2/4 O(1logc)
Algoritme berkinerja buruk di serikat beberapa grafik lengkap, ukuran terputus berbeda. Kami menunjukkan grafik lengkap pada simpul sebagai . Pertimbangkan perilaku algoritma pada : itu berulang kali menambahkan titik sembarang belum dalam ke - semua simpul tersebut adalah identik dan jadi urutannya tidak masalah. Mengatur jumlah simpul yang belum ditambahkan ke oleh algoritma , ukuran potongan pada saat itu adalah .K n K n S S S | ˉ S | = k k ( n - k )n Kn Kn S S S |S¯|=k k(n−k)
Pertimbangkan apa yang terjadi jika kita menjalankan algoritma pada beberapa grafik terputus dengan konstanta antara 0 dan 1. Jika adalah jumlah elemen yang belum dalam dalam grafik lengkap ke- , maka algoritma tersebut akan berulang kali menambahkan sebuah simpul ke dari grafik lengkap dengan tertinggi , memutus ikatan secara sewenang-wenang. Ini akan menginduksi penambahan simpul berbasis `bulat 'ke : algoritme menambahkan simpul dari semua grafik lengkap dengan tertinggi , kemudian dari semua grafik lengkap dengan (dengan x i k i S i S k i S k = k i k i = k - 1 k i SKxin xi ki S i S ki S k=ki ki=k−1 ki diperbarui setelah ronde sebelumnya), dan seterusnya. Setelah grafik lengkap memiliki simpul yang ditambahkan ke dalam satu putaran, itu akan melakukannya untuk setiap putaran sejak saat itu.S
Biarkan menjadi jumlah grafik lengkap. Biarkan dengan menjadi pengubah ukuran untuk grafik lengkap ke- . Kami memesan pengubah ukuran ini dari besar ke kecil dan mengatur . Kita sekarang memiliki bahwa jika ada grafik dengan elemen persis belum ditambahkan ke , maka ukuran pemotongan pada waktu itu adalah . Jumlah total tepi adalah .0 < x i ≤ 1 0 ≤ i ≤ c - 1 i x 0 = 1 c ′ k S ¢ c ′ - 1 i = 0 k ( x i n - k ) = k n ≤ c ′ - 1 i = 0 ( x i ) - c ′ k 2 | Ec 0<xi≤1 0≤i≤c−1 i x0=1 c′ k S ∑c′−1i=0k(xin−k)=kn∑c′−1i=0(xi)−c′k2 |E|=∑c−1i=0xin(xin−1)2≈n22∑c−1i=0x2i
Perhatikan bahwa adalah fungsi kuadratik dalam dan karenanya memiliki maksimum. Karena itu kami akan memiliki beberapa pemotongan maksimal secara lokal. Misalnya, jika potongan maksimal kami adalah pada dengan ukuran . Kita akan memilih sehingga , yang berarti grafik lengkap kedua tidak akan mengubah ukuran pemotongan maksimal lokal ini di . Kami kemudian mendapatkan potongan maksimal lokal baru di dan jadi kami memilih (dengan k c = 1 k = nkn∑c′−1i=0xi−c′k2 k c=1 n2k=n2 x1x1=1/2-εk=nn24 x1 x1=1/2−ε k=3/8n-ε'x2=3/8n-ε"ε,ε',ε"εx1=1/2x1n=nk=n2 k=3/8n−ε′ x2=3/8n−ε′′ ε,ε′,ε′′ konstanta kecil). Kami akan mengabaikan s untuk saat ini dan anggap saja kami dapat memilih - kami harus memastikan , tetapi ini tidak akan mempengaruhi hasil akhir jika adalah cukup besar.ε x1=1/2 nx1n=n2−1 n
Kami ingin menemukan maksimum lokal dari pemotongan kami. Kami membedakan hingga , menghasilkan . Menyamakan dengan menghasilkan , yang memberikan potongan ukuran . k n ∑ c ′ - 1 i = 0 ( x i ) - 2 c ′ k 0 k = nkn∑c′−1i=0(xi)−c′k2 k n∑c′−1i=0(xi)−2c′k 0 n2k=n2c′∑c′−1i=0xi n24c′(∑c′−1i=0xi)2
Biarkan menjadi ditentukan dalam paragraf sebelumnya jika . Kami akan memastikan bahwa formula berlaku dengan menuntut bahwa - semua grafik lengkap dengan kemudian lebih kecil daripada dari potongan maksimum lokal ini dan karenanya tidak menambah ukuran potongan. Ini berarti kami memiliki potongan pada ini yang lebih besar dari semua potongan lain yang ditemukan oleh algoritma. k c ′ = i x i n < k i i ′ i ′ > i k i c k iki k c′=i xin<ki i′ i′>i ki c ki
Mengisi , kita mendapatkan perulangan (ditambah beberapa kecil ) dengan . Memecahkan hasil ini : lihat pertanyaan saya di math.stackexchange.com untuk derivasi oleh @Daniel Fisher. Memasukkan ini ke dan menggunakan wawasan kita tentang perulangan memberi kita potongan ukuran . Menggunakan properti dari koefisien binomial pusat ini , kami milikix i = 1xin<ki εx0=1xi= ( 2 ixi=12c′∑c′−1i=0xi ε x0=1 n2xi=(2ii)4i n2n24c′(∑c′−1i=0xi)2 limc′→∞c′( ( 2 c ′n24c′(2c′(2c′c′)4c′)2=n2c′((2c′c′)4c′)2 limc′→∞c′((2c′c′)4c′)2=1π (juga lihat pertanyaan saya di math.stackexchange.com ).
Jumlah tepi kira-kira . Berdasarkan properti yang dikenal, kita memiliki . Pengarsipan memberikan setidaknya yang asimptotik ketika pergi ke tak terbatas.n22∑c−1i=0x2i=n22∑c−1i=0((2ii)4i)2 n214i√≤(2ii)4i n2n22∑c−1i=0(14i√)2=n28∑c−1i=01i cn28logc c
Karenanya, kami memiliki secara asimptotik sama dengan saat berjalan hingga tak terbatas, menunjukkan bahwa algoritme dapat potongan kembali yang merupakan fraksi rendah sewenang-wenang dari.8δ(S,S¯)|E| c| E|8πlogc c |E|
sumber
Setelah beberapa saat berpikir dan bertanya-tanya, inilah contoh tandingan, dari Ami Paz :
Biarkan menjadi genap dan menjadi grafik yang merupakan gabungan dari dengan pencocokan simpul (yaitu pencocokan dengan tepi ).G K n n + 2 n / 2 + 1n G Kn n+2 n/2+1
Bagaimana algoritme berjalan pada grafik ini? Hanya perlu simpul dari bagian klik dalam urutan acak. Setelah mengambil dari clique, potongannya berukuran . Ini maksimal untuk , yang memberikan potongan ukuran , sedangkan jumlah tepi dalam grafik adalah .k ⋅ ( n - k ) k = n / 2 n 2k k⋅(n−k) k=n/2 n2n24 n22+1
Algoritme seperti yang ditentukan akan terus menambahkan simpul dari klik, mengurangi jumlah tepi melintasi memotong, sampai apa yang tersisa dari klik hanya satu sisi. Pada titik ini ia tidak dapat memperoleh yang lebih baik dari .n2+2
sumber