O ( log 2 m )
Satu-satunya hal yang bisa saya pikirkan adalah sebagai berikut. Ini adalah konsekuensi langsung dari lemma Johnson-Lindenstrauss bahwa untuk setiap dan distribusi pada ada pemetaan linear (yang dapat dievaluasi dalam waktu ) sehingga . Jadi, dalam waktu O ((n + m) \ log m) kita dapat menghitungD R n f : R n → R O ( log m )sesuatu yang dalam arti dekat dengan untuk sebagian besar '(setidaknya jika norma-norma dan kecil).
UPD Batas yang disebutkan di atas dapat agak dipertajam ke waktu kueri jika kita menggunakan hashing yang sensitif terhadap lokalitas. Lebih tepatnya, kita memilih vektor Gaussian independen . Kemudian kami memetakan ke sebagai berikut: . Kemudian kita dapat memperkirakan sudut antara dua vektor dalam kesalahan aditif dengan menghitung jarak dalam gambar pemetaan ini. Dengan demikian, kami dapat memperkirakan produk titik dalam kesalahan aditifdalam waktu .
Jawaban:
Pertimbangkan kasus khusus di mana Anda hanya ingin menentukan apakah vektor kueri Anda ortogonal terhadap beberapa vektor dalam koleksi praproses Anda. (Yaitu, Anda ingin menentukan apakah , di mana vektor yang didiskusikan memiliki koefisien non-negatif.) Kasus ini sudah sangat menarik.mini⟨x,vi⟩=0
Misalkan Anda dapat menjawab pertanyaan dalam waktu untuk beberapa , dengan preprocessing (the derajat polinomial seharusnya tidak bergantung pada atau atau ).nO(1)m1−δ δ>0 mO(1)nO(1) m n δ
Dalam makalah "Sebuah algoritma baru untuk kepuasan 2-kendala yang optimal dan implikasinya", saya mengamati bahwa struktur data seperti itu akan benar-benar memungkinkan Anda untuk menyelesaikan CNF-SAT dalam waktu untuk beberapa , di mana adalah jumlah variabel. Ini akan membantah "Hipotesis Waktu Eksponensial Kuat" yang k-SAT pada dasarnya membutuhkan kali waktu untuk terikat .2αv α<1 v 2n k
Untuk melihat alasannya, anggaplah waktu preprocessing dibatasi oleh . Pertimbangkan rumus CNF dengan variabel dan klausa. Kami membagi set variabel menjadi dua bagian dan ukuran dan , masing-masing. Daftar semua tugas yang mungkin untuk variabel di bagian (mendapatkan dan tugas, masing-masing). Kaitkan masing-masing penugasan parsial ini dengan vektor bit mana iff the(nm)c F v n P1 P2 v(1−1/(2c)) v/(2c) 2v(1−1/(2c)) 2v/(2c) Ai n wi wi[j]=1 j klausa tidak dipenuhi oleh . Jadi kami memiliki dua daftar vektor bit yang banyak secara eksponensial.F Ai
Perhatikan bahwa memuaskan jika ada vektor dari penugasan pada dan vektor dari penugasan pada sehingga .F w1 P1 w2 P2 ⟨w1,w2⟩=0
Sekarang mari , dan preprocess struktur data yang diasumsikan dengan semua vektor dari bagian . Ini membutuhkan waktu , dengan asumsi. Jalankan algoritme kueri pada semua vektor dari penugasan pada bagian . Dengan asumsi ini membutuhkan . Biarkan .m=2v/(2c) P2 n2v/2 P1 2v(1−1/(2c))⋅nO(1)m1−δ=nO(1)2v−δv/(2c) α=1−δ/(2c)
Mungkin dimungkinkan untuk mendapatkan preprocessing yang efisien dan waktu permintaan dengan teknik yang ada. Algoritme CNF-SAT paling terkenal tidak mengesampingkannya. (Mereka mendapatkan sesuatu seperti .) Tetapi untuk menghitung sedikit lebih kuat - dalam pengaturan ini, itu seperti memecahkan MAX CNF-SAT.nO(1)m1−1/(loglogm) 2n−n/logn mini⟨x,vi⟩
sumber
Inilah satu ide untuk jawaban yang tepat, yang saya curigai Chao Xu mungkin singgung. Pertama-tama amati bahwa kita bisa menormalkan , seperti yang ditunjukkan oleh Chao. Sekarang perhatikan hyperplane normal ke arah . Tujuannya adalah untuk menemukan titik terdekat dengan hyperplane ini. Secara dualitas, ini sesuai dengan permintaan pemotretan ray dalam pengaturan hyperplanes untuk menemukan pesawat terdekat "di atas" titik kueri. Karena ini dapat diproses sebelumnya, kompleksitas utama adalah lokasi titik, dan masalah Anda sekarang telah berkurang menjadi kompleksitas melakukan lokasi titik dalam pengaturan hyperplanes. Menggunakan stek, ini dapat dilakukan dalam waktu dalam ruang .x h x O(logn) nd
sumber