Persyaratan penyimpanan untuk pemilihan median (algoritma dua lintasan)

18

Dalam sebuah makalah klasik Munro dan Paterson mempelajari masalah berapa banyak penyimpanan yang diperlukan untuk suatu algoritma untuk menemukan median dalam array yang diurutkan secara acak. Secara khusus mereka fokus pada model berikut:

input dibaca dari kiri ke kanan untuk sejumlah P kali.

Terlihat bahwa sel-sel memori cukup, tetapi batas bawah yang sesuai hanya diketahui untuk P = 1. Saya belum melihat hasil apa pun untuk P> 1. Adakah yang tahu tentang batas bawah seperti itu? HAI(n12P)

Perhatikan bahwa kesulitan utama di sini adalah bahwa pada pass kedua input tidak dipesan secara acak lagi.

MassimoLauria
sumber

Jawaban:

18

Makalah pertama yang membuktikan batasan untuk lebih dari 1 pass adalah makalah saya dengan Jayram dan Amit dari SODA'08. Lalu ada makalah yang disebutkan Warren, yang meningkatkan batas dengan bukti yang lebih bersih.

Singkatnya, kami memahami ketergantungan jika Anda mengizinkan konstanta di depan jumlah lintasan. Tentu saja, konstanta ini berada dalam eksponen, sehingga Anda dapat meminta pemahaman yang tepat. Keluhan utama saya adalah bahwa model multi-aliran tidak termotivasi dengan baik.

Pertanyaan yang lebih menarik adalah apakah kita bisa membuktikan program percabangan batas bawah. Mungkinkah bahkan untuk algoritma ruang terbatas yang dapat mengakses memori sesuka hati, strategi terbaik adalah dengan hanya melakukan multipass streaming?

Jawabannya tampaknya afirmatif, dan kami memiliki beberapa kemajuan untuk membuktikannya.

Mihai
sumber
5
Saya pikir multipass streaming adalah model alami dalam jenis percobaan berikut: Anda menggunakan sampling acak untuk melakukan pengujian statistik (misalnya, pengujian permutasi). Anda menjalankan miliaran eksperimen; setiap percobaan mendapatkan angka acak dari PRNG dan menghasilkan beberapa nilai output. Maka Anda ingin menghitung median, histogram, dll, dari nilai-nilai ini. Anda tidak memiliki akses acak yang efisien ke aliran output Anda dan Anda tidak memiliki memori untuk menyimpan semuanya. Namun, Anda dapat memutar ulang streaming; atur ulang PRNG Anda dengan seed yang sama dan jalankan kembali algoritme Anda.
Jukka Suomela
2
Kita semua bisa sepakat bahwa yang terbaik adalah memiliki batas atas dalam model streaming multi-jalur dan mencocokkan batas bawah dalam untuk beberapa keluarga yang relevan dari program percabangan.
MassimoLauria