Ricostruzione di un albero dalle query di separazione


18

Supponiamo che sia un albero a grado costante di cui non conosciamo la struttura. Il problema è di generare l'albero chiedendo domande del modulo: "Il nodo giace sul percorso dal nodo al nodo ?". Supponiamo che un oracolo possa rispondere a ogni query in tempo costante. Conosciamo il valore di , il numero di nodi nella struttura. L'obiettivo è ridurre al minimo il tempo impiegato per produrre l'albero in termini di .T x a b n nTTxabnn

Esiste un algoritmo per il problema precedente?o(n2)

Supponiamo che il grado di qualsiasi nodo in sia al massimo 3.T


Quello che so

La cassa del diametro limitato è facile . Se il diametro dell'albero è , allora possiamo ottenere un algoritmo di divisione e conquista:D

Ogni albero binario ha un buon separatore che divide l'albero in componenti di dimensioni non inferiori a 1/3 n.

  1. Scegli qualsiasi vertice x. Se si tratta di un buon separatore, etichettarlo e ricorrere.
  2. Trova tutti e 3 i vicini di x.
  3. Spostati nella direzione del vicino che ha il maggior numero di nodi. Ripetere il passaggio 2 con il vicino.

Poiché la ricerca del separatore richiede quasi tutti i passaggi , otteniamo un algoritmo .O ( n D log n )DO(nDlogn)

Un algoritmo randomizzatoO(nlog2n) . (spostato dai commenti qui sotto)

Seleziona due vertici xey in modo casuale. Con 1/9 di probabilità si troveranno sui lati opposti di un separatore. Scegli il nodo centrale del percorso da a . Verifica se si tratta di un separatore, in caso contrario esegui una ricerca binaria.yxy

Ci vuole tempo previsto per trovare il separatore. Quindi otteniamo un algoritmo randomizzato .O ( nO(nlogn)O(nlog2n)


Sfondo. Ho imparato questo problema da un amico che lavora su modelli grafici probabilistici. Il problema sopra riportato corrisponde approssimativamente all'apprendimento della struttura di un albero di giunzione usando un oracolo che, dati tre variabili casuali X, Y e Z, può dire il valore delle informazioni reciproche tra X e Y dato il valore di Z. Se il valore è vicino a zero, possiamo supporre che Z si trovi sul percorso da X a Y.


7
Ti preghiamo di rivelare ciò che già sai del problema, quindi non perdiamo tempo a reinventare la ruota.
Jeffε

@ Jɛ ff E Ho modificato la mia domanda.
Jagadish

Risposte:


5

No. La seguente strategia avversaria semplice implica che qualsiasi algoritmo per ricostruire un albero -node richiede almeno query "Betweenness".( n - 1n(n12)=n(n1)/2

Etichettare arbitrariamente i nodi . L'avversario risponde a tutte le domande come se l'albero fosse una stella con vertice al centro; pensa a come alla radice e agli altri nodi come ai suoi figli.0 00,1,2,,n100

Between?(a,x,b)
    if x=0 return TRUE else return FALSE

Supponiamo ora che l'algoritmo si arresti dopo aver eseguito meno di query. Quindi devono esserci due vertici e , nessuno uguale a zero, in modo tale che l'algoritmo non abbia richiesto alcuna permutazione del triplo . Se l'algoritmo afferma che l'albero non è una stella con il centro , l'avversario rivela il suo input, dimostrando che l'algoritmo è sbagliato. L'avversario rivela quindi che è in realtà l'unico figlio di , dimostrando di nuovo che l'algoritmo è sbagliato.y z ( 0 , y , z ) 0 x yn(n1)/2yz(0,y,z)0xy

Aggiornamento: Spiacenti, ho appena notato il vincolo di laurea. Fortunatamente, questo non è un grosso ostacolo. Sostituisci il nodo con il tuo albero binario preferito, con gli altri nodi come foglie in un ordine sconosciuto, e quindi rivela questa sottostruttura all'algoritmo di ricostruzione. La ricostruzione dell'albero binario nodo risultante richiede ancora almeno query. Allo stesso modo, la ricostruzione di un albero binario -node richiede almeno query. (Sono sicuro che una costruzione più sottile migliorerebbe la costante.)n - 1 ( 2 n - 3 ) n ( n - 1 ) / 2 m ( m + 3 ) ( m + 2 ) / 80n1(2n3)n(n1)/2m(m+3)(m+2)/8 Come sottolinea Jagadish, questa generalizzazione non funziona; le query sui nodi interni nella struttura impongono un ordinamento sulle foglie, che riduce il numero di query necessarie.


La mia domanda riguarda gli alberi a grado costante. Questo argomento non funziona per quel caso, giusto?
Jagadish

2
@Jagadish: (1) Non penso che questa prova di un limite inferiore funzioni per algoritmi randomizzati. L'avversario può ancora costruire un esempio negativo, ma ciò non contraddice l'ipotesi che l'algoritmo randomizzato funzioni correttamente con alta probabilità. (2) A proposito, sembra che tu abbia posto la domanda conoscendo la risposta. Per cosa lo hai fatto?
Tsuyoshi Ito,

2
Vedo. Grazie per la spiegazione e grazie anche per aver modificato la domanda!
Tsuyoshi Ito,

4
Se hai un algoritmo randomizzato, allora hai un algoritmo. Il determinismo è sopravvalutato.
Jeffε

1
Questo problema mi ricorda l'ordinamento / abbinamento di dadi e bulloni. Un algoritmo randomizzato che viene eseguito in tempo con alta probabilità è facile: è solo quicksort randomizzato . Esiste un algoritmo deterministico -time, ma è seriamente non banale . O ( n registro n )O(nlogn)O(nlogn)
Jeffε

5

Anindya Sen e io abbiamo un articolo in ALT '13 in cui diamo un algoritmo per questo problema. Non sappiamo se sia possibile un algoritmo migliore.O~(nn)

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.