Bir permütasyonun eşlik akışını akış-moda bir şekilde hesaplama


16

Bir permütasyonun paritesini hesaplayan tek geçişli bir algoritma arıyorum. Bir giriş permütasyonunun tarafından verildiğini varsayıyorum . Çıktı, permütasyonun paritesi olmalıdır. Bir deterministik algoritmanın ne kadar bellek kullanması gerektiğiyle ilgili soru. Sorun için rastgele bir algoritma var mı?π[1],π[2],,π[n]

Biliyorum, tek geçişteki bilgi işlem evirimi sayısı Θ(n) bellek kullanıyor. Üst sınır herhangi bir BST ile kolayca elde edilebilir. Alt sınır burada sunulmuştur: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622

Ne yazık ki, gazetedeki alt sınırın kanıtı parite davasına genişletilemez (veya benim için çok açık değil).

Ayrıca bir permütasyona rasgele erişimli küçük bir alandaki bilgi işlem paritesinin deterministik algoritma ile O(nlogn) zamanı ve O(log2n) hafızasında veya O(nlogn) zamanı ve O(logn) rastgele bir bellek. Bkz. Http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256

Ana fikir, bir permütasyonun paritesinin formülü ile hesaplanabilmesidir sgn(π)=(1)nc, burada c , döngü sayısıdır ve n , boyuttur. Yazarlar, bir permütasyonun döngü ayrışmasını yaparlar. Böylece döngü sayısını kolayca hesaplayabilirsiniz.

Akış modelinde pariteyi hesaplamak için etkili bir algoritma veya bellekte alt sınır bilen var mı? Rastgele bozuk paradan daha iyi rastgele algoritmalar da benim için ilginç.


İlginç. Eşliğe indirdiğiniz bir kanıtı çizebilir veya sorunu adlandırabilir misiniz?
Vsevolod Oparin

4
@ András: O (n) uzay algoritması, daha önce hangi öğelerin görüldüğünü (bitvector'da söyleyin) takip ederek ve ardından her yeni eleman için x henüz henüz tamamlanmamış # x'den küçük görünen elemanlar?
László Kozma

1
@laszlo üst sınırınız şimdi bana daha büyük bir alt sınır argümanımdan daha ikna edici görünüyor. O(n)
András Salamon

Alt sınır için bir negatif sonuç. İlk makalenin yazarları, iki A ve B kümesine dayanan permütasyonu sağlar . A ve B'nin kesişip kesişmediğini hesaplamak için kullanırlar . Permütasyonun hesaplama paritesi, tek yönlü iletişimin sadece 3 bitini alır. Karşılık gelen matrisin sıralaması hesaplanarak kolayca elde edilebilir. π=A0¯B1A0B1¯ABAB
Vsevolod Oparin

Yanıtlar:


2

Bu sorunun bir cevap değil, ancak bu sorunun neden herhangi bir cevap almadığını tartışmak istediğim genişletilmiş bir yorum olduğu için herkesten bunu oylamamasını istemek istiyorum. Ana nokta, alt sınırdaki bir iletişim karmaşıklığının işe yaramayacağıdır. Bununla, girdiyi iki parçaya ayırıp iki oyuncuya nasıl verirsek verelim, A ve B, A, permütasyonun paritesini hesaplayabileceği B'ye tek bir bit aktarabilir. (Bu sadece ters çevrmeleri dikkate alarak gerçekleşir.)

Başka bir sınır kullanan kanıtlar zordur. Noam Nisan'ın bu açıklamasına bakınız (deterministik olmayan versiyon için): L_k-differentt için en küçük NFA'nın boyutunu sınırlar ,

Bu soruyu kendi başıma cevapladım Hermann Gruber, iletişim karmaşıklığının alt sınırının gerçeklerden çok uzak olabileceğini gösteriyor (yine deterministik olmayan versiyonda) 3 harfli dili kabul eden NFA için alt sınır .

Ayrıca, permütasyonun tek bir döngü olup olmadığına karar vermek zor gibi görünüyor, Ran Raz ve Boris Spieker'in bu FOCS belgesine bakın: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .

Bu sorunun cevabını öğrenmekle de ilgileniyorum.


"Girdi iki parçaya nasıl kesilirse kesilsin" dediğinizde, argümanınız permütasyon ikiden fazla parçaya bölündüğünde indirimleri de ortadan kaldırıyor mu? Örneğin, ters çevirme sayısını saymayla ilgili bağlantılı makalede, Alice ve Bob'un girişlerine sahip oldukları ve permütasyonlar oluşturdukları set ayrılmalarından bir azalma vardır ¯ A 0 B 1 A 0 ¯ B 1 ve ¯ A 1 B 0 A 1 ¯ B 0 . 0 veya 1 endeksi 2 x dönüşümlerine karşılık gelirA,B[n]bir0¯B1bir0B1¯bir1¯B0bir1B0¯2xve ve çubuk tamamlayıcıyı ifade eder. Başka bir deyişle, iletişim çok yönlü olabilirse ne olur? 2x+1
László Kozma

@laszlo: Bu problemde, permütasyonun paritesi döngü sayısı ile belirlendiği için girişi sadece iki oyuncuya verdiğiniz sürece nasıl keseceğiniz önemli değildir (bu yüzden sayıdan farklıdır. inversiyon).
domotorp

Hangi B'nin pariteyi hesaplayabildiğini kullanarak A'nın girdisinden nasıl bir miktar hesaplayabildiğini görmek kolay mı? Hem A hem de B'nin "parçaları içindeki döngü sayısını" nasıl bildiğini görüyorum. Peki "geçiş" döngülerinin paritesini nasıl buluyorlar?
László Kozma

2
@laszlo: A'nın girdisinin 1-> 7, 2-> 5, 3-> 8, 4-> 6 gibi bir şey olduğunu varsayalım. Bu, 1-> 5, 2-> 6, 3-> 8, 4-> 7 ile aynı sayıda dönüşüme sahiptir. Daha genel olarak, B, A sayılarının hangi sayılarla eşlendiğini bilir. A, çift sayıda ters çevirme kullanarak, bu sayıları büyük olasılıkla son ikisi hariç, artan bir düzene sokabilir. Bu son iki sayının ilişkisi gönderdiği bittir.
domotorp

bir1,...,birnbirn+1,...,bir2nbir2n+1,...,bir3nbir[3n]Ö(n)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.