Parità di calcolo di una permutazione in modo streaming-fashion


16

Sto cercando un algoritmo one-pass che calcola la parità di una permutazione. Presumo che una permutazione di input sia data da stream . L'output dovrebbe essere la parità della permutazione. La domanda che mi interessa è la quantità di memoria che un algoritmo deterministico dovrebbe usare. Esiste un algoritmo randomizzato per il problema?π[1],π[2],,π[n]

So che calcolare il numero di inversioni in un passaggio utilizza la memoria . Il limite superiore può essere facilmente ottenuto con qualsiasi BST. Il limite inferiore è presentato qui: http://citeseerx.ist.psu.edu/viewdoc/versions?doi=10.1.1.112.5622Θ(n)

Purtroppo, la prova del limite inferiore nel documento non può essere estesa al caso della parità (o non è così ovvio per me).

Inoltre so che la parità di calcolo in un piccolo spazio con accesso casuale a una permutazione può essere eseguita in tempo e memoria mediante algoritmo deterministico o in tempo e memoria di uno casuale. Vedi http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.29.2256O(nlogn)O(log2n)O(nlogn)O(logn)

L'idea principale è che la parità di una permutazione può essere calcolata con la formula , dove è il numero di cicli e è la dimensione. Gli autori effettuano la decomposizione del ciclo di una permutazione. Quindi si può facilmente calcolare il numero di cicli.sgn(π)=(1)nccn

Qualcuno conosce un algoritmo efficace o un limite inferiore della memoria per il calcolo della parità nel modello di streaming? Gli algoritmi randomizzati migliori delle monete casuali sono interessanti anche per me.


È interessante. Potresti disegnare una prova o nominare un problema, che riduci alla parità?
Vsevolod Oparin,

4
@ András: un algoritmo spaziale O (n) non funziona semplicemente tenendo traccia di quali elementi sono già stati visti (diciamo in un bitvector), e quindi per ogni nuovo elemento x aggiungendo la parità del # di ancora-a- elementi visibili più piccoli di x?
László Kozma,

1
@laszlo il tuo limite superiore ora mi sembra più convincente della mia tesi per un limite inferiore più grande. O(n)
András Salamon,

Un risultato negativo per il limite inferiore. Gli autori del primo documento fornisce permutazione basata su due insiemi e . Lo usano per calcolare se A e B si intersecano. La parità di calcolo della permutazione richiede solo 3 bit di comunicazione unidirezionale. Può essere facilmente ottenuto calcolando il rango della matrice corrispondente. A Bπ=A0¯B1A0B1¯ABAB
Vsevolod Oparin,

Risposte:


2

Vorrei chiedere a tutti di non votare questo, in quanto questa non è una risposta, ma un commento esteso, in cui vorrei discutere perché questa domanda non ha ricevuto alcuna risposta. Il mio punto principale è che un limite inferiore della complessità della comunicazione non funzionerà. Con questo intendo che, indipendentemente dal modo in cui tagliamo l'input in due parti e lo diamo a due giocatori, A e B, A può trasferire un singolo bit in B dal quale può calcolare la parità della permutazione. (Questo segue semplicemente considerando le inversioni.)

Le prove che usano un altro limite sono difficili. Vedi questo commento qui di Noam Nisan (per la versione non deterministica): si lega alla dimensione dell'NFA più piccolo per L_k-distinto ,

a questa mia domanda correlata ho risposto Hermann Gruber, che mostra che la complessità della comunicazione con il limite inferiore può essere molto lontana dalla verità (sempre nella versione non deterministica). Limite inferiore per NFA che accetta un linguaggio di 3 lettere .

Inoltre riferito che per decidere se la permutazione è un singolo ciclo, sembra essere difficile, vedere questo documento FOCS di Ran Raz e Boris Spieker: http://www.computer.org/csdl/proceedings/focs/1993/4370/00 /0366870-abs.html .

Quindi, sono anche molto interessato a imparare la risposta a questa domanda.


Quando dici che "non importa come abbiamo tagliato l'input in due parti" il tuo argomento esclude anche le riduzioni quando la permutazione è divisa in più di due parti? Ad esempio nel documento collegato sul conteggio del numero di inversioni, c'è una riduzione dalla disgiunzione impostata, in cui Alice e Bob hanno input e formano permutazioni ¯ A 0 B 1 A 0 ¯ B 1 e ¯ A 1 B 0 A 1 ¯ B 0 . L'indice 0 o 1 si riferisce alle trasformazioni 2 xA,B[n]A0¯B1A0B1¯A1¯B0A1B0¯2xe e la barra si riferisce al completamento. In altre parole, cosa succede se la comunicazione può essere multi-round? 2x+1
László Kozma,

@laszlo: In questo problema, non importa in che modo tagliare l'input fintanto che lo dai a solo due giocatori poiché la parità della permutazione è determinata dal numero dei suoi cicli (quindi è per questo che differisce dal numero di inversioni).
domotorp,

È facile vedere come A può calcolare un po 'dal suo input usando quale B può calcolare la parità? Vedo come sia A che B conoscono il numero di cicli "all'interno delle loro parti". Ma come trovano la parità del numero di cicli di "attraversamento"?
László Kozma,

2
@laszlo: Supponiamo che l'ingresso di A sia qualcosa di simile a 1-> 7, 2-> 5, 3-> 8, 4-> 6. Questo ha lo stesso numero di inversioni di 1-> 5, 2-> 6, 3-> 8, 4-> 7. Più in generale, B sa in quali numeri sono mappati i numeri di A. Usando un numero pari di inversioni, A può permutare questi numeri in un ordine crescente, tranne forse per gli ultimi due. La relazione di questi ultimi due numeri è quella che invia.
domotorp,

a1,...,un'nun'n+1,...,un'2nun'2n+1,...,un'3nun'[3n]o(n)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.