Pertanyaan yang saya tertarik terkait dengan menghasilkan permutasi acak. Diberikan gerbang swap berpasangan probabilistik sebagai blok bangunan dasar, apa cara paling efisien untuk menghasilkan permutasi acak yang seragam dari elemen? Di sini saya mengambil "probabilistic pairwise swap gate" untuk menjadi operasi yang mengimplementasikan swap gate antara elemen terpilih dan dengan beberapa probabilitas yang dapat dipilih secara bebas untuk setiap gerbang, dan identitas sebaliknya.
Saya menyadari ini biasanya bukan cara seseorang menghasilkan permutasi acak, di mana biasanya seseorang mungkin menggunakan sesuatu seperti shuffle Fisher-Yates, namun, ini tidak akan berfungsi untuk aplikasi yang ada dalam pikiran saya karena operasi yang diizinkan berbeda.
Jelas ini bisa dilakukan, pertanyaannya adalah seberapa efisien. Berapa jumlah minimum probabilistic swap yang diperlukan untuk mencapai tujuan ini?
MEMPERBARUI:
Anthony Leverrier menyediakan metode di bawah ini yang memang menghasilkan distribusi yang benar menggunakan gerbang , dengan Tsuyoshi Ito memberikan pendekatan lain dengan penskalaan yang sama dalam komentar. Namun, batas bawah terbaik yang saya lihat sejauh ini adalah , yang berskala sebagai . Jadi, pertanyaannya masih tetap terbuka: Apakah yang terbaik yang bisa dilakukan (yaitu apakah ada batas bawah yang lebih baik)? Atau sebagai alternatif, apakah ada rangkaian keluarga yang lebih efisien?
MEMPERBARUI:
Beberapa jawaban dan komentar telah mengusulkan rangkaian yang seluruhnya terdiri dari swap probabilistik di mana probabilitasnya tetap pada . Sirkuit seperti itu tidak dapat menyelesaikan masalah ini karena alasan berikut (diangkat dari komentar):
Bayangkan sebuah sirkuit yang menggunakan gerbang tersebut. Lalu ada jalur komputasi yang dapat disetel, dan dengan demikian permutasi apa pun harus terjadi dengan probabilitas untuk beberapa bilangan bulat k. Namun, untuk distribusi yang seragam, kami meminta , Yang dapat ditulis ulang sebagai . Jelas ini tidak dapat dipenuhi untuk nilai integer untuk , karena(untuk , tetapi .
UPDATE (dari mjqxxxx yang menawarkan hadiah):
Karunia yang ditawarkan adalah untuk (1) bukti bahwa diperlukan, atau (2) sirkuit kerja, untuk setiap , yang menggunakan kurang dari gerbang.