Berapa lama untuk menemukan siklus pendek dalam grafik acak?

9

Biarkan menjadi grafik acak pada tepi. Dengan probabilitas sangat tinggi, memiliki banyak sepeda. Tujuan kami adalah untuk menghasilkan salah satu dari - sepeda ini secepat mungkin.GG(n,n1/2)n3/2G44

Andaikata kita memiliki akses ke dalam bentuk daftar adjacency, kita dapat berhasil dengan probabilitas konstan dalam waktu sebagai berikut: pilih sembarang simpul dan mulailah menghasilkan jalur acak mulai dari ; setelah kami menemukan dua jalur berbeda yang berbagi titik akhir, kami selesai. Ada kemungkinan titik akhir, dan dengan paradoks ulang tahun kita akan berhasil dengan probabilitas konstan setelah menemukan tentang dari mereka.GO(n)v2v2nn

Bisakah kita berbuat lebih baik? Secara khusus, apakah algoritma waktu-konstan yang berhasil dengan probabilitas konstan mungkin?

GMB
sumber
Bagiku grafik ini memiliki terlalu sedikit tepi untuk memiliki properti yang Anda inginkan, jika Anda menggunakan terminologi standar, itu seperti sampel denganG(n,p)p=(n/C(n,2))=O(n3/2)
kodlu
Terima kasih, Anda benar yang saya maksud (diedit). Grafik ini akan memiliki s kapan saja dua node berbagi tetangga, yang terjadi dengan probabilitas konstan per pasangan node. C 42p=n1/2C42
GMB
Saya menggunakan terminologi di sini ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), di mana setiap sisi disertakan secara independen dengan probabilitas - jadi, tepi harapan. pp(n2)
GMB

Jawaban:

6

Tidak, Anda tidak dapat mengalahkan kueri . Saya akan menjelaskan bagaimana memformalkan sketsa bukti exfret tentang ini, dengan cara yang bekerja untuk algoritma adaptif. Ini semua diantisipasi dalam jawaban exfret; Saya hanya mengisi beberapa detail.Θ(n)

Pertimbangkan algoritme apa pun (yang mungkin adaptif) yang mengeluarkan urutan kueri, di mana setiap kueri "mengambil tepi ke- dari daftar kedekatan vertex " atau "menguji apakah simpul terhubung oleh tepi". Kita dapat mengasumsikan bahwa tidak ada kueri yang diulang, karena algoritma apa pun yang mengulangi kueri dapat diubah menjadi kueri yang tidak pernah mengulangi kueri apa pun. Demikian pula, kita dapat mengasumsikan bahwa algoritma tidak pernah melakukan permintaan konektivitas pada setiap pasangan simpul yang sudah dikenal untuk dihubungkan dengan sebuah sisi (yaitu, menguji saat sebelumnya dikembalikan oleh pengambilan query pada , atau adalah sebelumnya dikembalikan oleh kueri pengambilan diivv,wv,wwvvw, atau sebelumnya kami menguji konektivitas ).w,v

Biarkan menunjukkan peristiwa bahwa, selama kueri pertama , tidak ada simpul dikembalikan oleh lebih dari satu permintaan-kuambil, dan tidak ada permintaan-ku mengembalikan sebuah simpul yang sebelumnya queried, dan bahwa tidak ada konektivitas-tes-permintaan kembali "terhubung ". Kami akan membuktikan bahwa jika . Oleh karena itu, tidak ada algoritma yang membuat kueri dapat memiliki probabilitas konstan untuk menemukan 4 siklus.EkkwPr[Eq]=1o(1)q=o(n)o(n)

Bagaimana kita membuktikan ini? Mari menghitung . Ada dua kasus: kueri adalah kueri pengambilan, atau kueri uji konektivitas:Pr[Ek|Ek1]k

  1. Jika kueri th adalah kueri pengambilan pada vertex , ada simpul yang disebutkan di antara kueri pertama , dan jika kueri th mengembalikan salah satu dari itu maka kita akan memiliki , jika tidak kita akan memiliki . Sekarang respons terhadap permintaan didistribusikan secara seragam pada set dari simpul, di mana berisi semua simpul yang belum dikembalikan oleh pengambilan kueri sebelumnya pada , sehingga respons terhadap permintaan ke- didistribusikan secara seragam pada satu set ukuran setidaknyakv2(k1)k1k¬EkEkkSSvknk+1. Peluang untuk memukul setidaknya satu di antaranya adalah , jadi dalam kasus ini, .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Jika kueri adalah kueri uji konektivitas, maka .kPr[Ek|Ek1]11/n

Dalam kedua kasus, jika kita milikiq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

Sekarang,

Pr[Eq]=k=1qPr[Ek|Eq1].

Jika , makakqn

Pr[Ek|Ek1]12qnq,

begitu

Pr[Eq](12qnq)q.

Sisi kanan kira-kira . Ketika , ini adalah .exp{2q2/(nq)}q=o(n)1o(1)

Kesimpulannya: ketika . Oleh karena itu, Anda memerlukan untuk memiliki probabilitas konstan untuk menemukan siklus apa pun (apalagi siklus 4).Pr[Eq]=1o(1)q=o(n)Ω(n)

DW
sumber
"Jika kueri k adalah kueri uji konektivitas, maka ." Saya berpikir ? (Bahkan jika demikian, kesimpulannya tetap berjalan tentu saja.)Pr[Ek|Ek1]11/n11/n
usul
@ Usul, oops, ya, terima kasih! Tetap.
DW
5

Mari kita asumsikan kita hanya bisa query th tepi daftar adjacency simpul tertentu (yang saya mengasumsikan tidak diurutkan) atau apakah dua simpul diberikan berdekatan. Dalam hal ini, ia harus mengambil kueri untuk menemukan siklus. Ini karena ada peluang bahwa semua kueri kami dari tipe pertama mengembalikan simpul yang berbeda dan bahwa semua kueri kami dari tipe kedua mengembalikan bahwa kedua simpul tidak terhubung.in1o(1)

Harap perbaiki saya jika saya salah atau salah paham masalah.

mengeluarkan
sumber
1
Sketsa bukti ini kedengarannya seperti hanya berfungsi untuk algoritme nonadaptif (mis. Kueri yang diperbaiki sebelumnya).
usul
@ Usul Mengapa demikian? Pokoknya kita hanya menggunakan satu cabang pohon keputusan.
exfret
Mungkin saya harus mengklarifikasi. Seharusnya jelas bahwa jika kita menerima jawaban atas pertanyaan kita sebagaimana ditentukan maka kita tidak dapat menghasilkan 4 siklus dengan probabilitas konstan. Namun, untuk setiap pohon keputusan dengan kedalaman ada kemungkinan kami dikirim ke cabang seperti itu. o(n)1o(1)
exfret
Terima kasih! Saya (agak sewenang-wenang) menerima versi yang lebih baik tetapi sepertinya Anda mendapatkannya. Hargai responsnya.
GMB
1
@ GMB Saya pikir Anda membuat keputusan yang benar; yang lain adalah jawaban berkualitas jauh lebih tinggi dan pantas untuk dilihat pertama oleh orang lain.
exfret