Saya mencari algoritma satu-pass yang menghitung paritas permutasi. Saya berasumsi bahwa permutasi input diberikan oleh stream . Outputnya harus paritas permutasi. Pertanyaan saya tertarik pada berapa banyak memori yang harus digunakan oleh algoritma deterministik. Apakah ada algoritma acak untuk masalah ini?
Saya tahu bahwa menghitung jumlah inversi dalam satu pass menggunakan memori. Batas atas dapat dengan mudah diperoleh dengan BST apa pun. Batas bawah disajikan di sini: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622
Sayangnya, bukti batas bawah di koran tidak dapat diperluas ke kasus paritas (atau tidak begitu jelas bagi saya).
Saya juga tahu bahwa menghitung paritas dalam ruang kecil dengan akses acak ke permutasi dapat dilakukan dalam waktu dan O ( log 2 n ) memori dengan algoritma deterministik atau dalam O ( n log n ) waktu dan O ( log n ) memori secara acak. Lihat http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256
Gagasan utamanya adalah bahwa paritas permutasi dapat dihitung dengan rumus , di mana c adalah jumlah siklus dan n adalah ukuran. Penulis membuat siklus dekomposisi permutasi. Jadi seseorang dapat dengan mudah menghitung jumlah siklus.
Adakah yang tahu algoritma efektif atau batas bawah pada memori untuk menghitung paritas dalam model streaming? Algoritma acak lebih baik daripada koin acak juga menarik bagi saya.