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.
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.
Bisakah kita berbuat lebih baik? Secara khusus, apakah algoritma waktu-konstan yang berhasil dengan probabilitas konstan mungkin?
Jawaban:
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 dii v v,w v,w w v v w , 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.Ek k w Pr[Eq]=1−o(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|Ek−1] k
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 setidaknyak v 2(k−1) k−1 k ¬Ek Ek k S S v k n−k+1 . Peluang untuk memukul setidaknya satu di antaranya adalah , jadi dalam kasus ini, .≤2(k−1)/(n−k+1) Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Jika kueri adalah kueri uji konektivitas, maka .k Pr[Ek|Ek−1]≥1−1/n−−√
Dalam kedua kasus, jika kita milikiq=o(n−−√)
Sekarang,
Jika , makak≤q≤n−−√
begitu
Sisi kanan kira-kira . Ketika , ini adalah .exp{−2q2/(n−q)} q=o(n−−√) 1−o(1)
Kesimpulannya: ketika . Oleh karena itu, Anda memerlukan untuk memiliki probabilitas konstan untuk menemukan siklus apa pun (apalagi siklus 4).Pr[Eq]=1−o(1) q=o(n−−√) Ω(n−−√)
sumber
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.i n−−√ 1−o(1)
Harap perbaiki saya jika saya salah atau salah paham masalah.
sumber