Reconstruire un arbre à partir de requêtes de séparation


18

Supposons que soit un arbre à degrés constants dont nous ne connaissons pas la structure. Le problème est de sortir l'arbre en posant des requêtes de la forme: "Le nœud se trouve-t-il sur le chemin du nœud au nœud ?". Supposons que chaque requête puisse recevoir une réponse en temps constant par un oracle. Nous connaissons la valeur de , le nombre de nœuds dans l'arbre. L'objectif est de minimiser le temps nécessaire à la sortie de l'arbre en termes de .TTXunebnn

Existe-t-il un algorithme pour le problème ci-dessus?o(n2)

Supposons que le degré de n'importe quel nœud dans soit au plus 3.T


Ce que je sais

Le boîtier de diamètre borné est facile . Si le diamètre de l'arbre est , alors nous pouvons obtenir un algorithme de division et de conquête:

Tout arbre binaire a un bon séparateur qui divise l'arbre en composants de taille non inférieure à 1 / 3n.

  1. Choisissez un sommet x. Si c'est un bon séparateur, étiquetez-le et recursez.
  2. Trouvez les 3 voisins de x.
  3. Déplacez-vous en direction du voisin qui a le plus grand nombre de nœuds. Répétez l'étape 2 avec le voisin.

Puisque la recherche du séparateur prend au plus étapes, nous obtenons un algorithme .O ( n D log n )O(nJournaln)

Un algorithme randomiséO(nJournal2n) . (déplacé des commentaires ci-dessous)

Choisissez deux sommets x et y au hasard. Avec une probabilité de 1/9, ils se trouveront sur les côtés opposés d'un séparateur. Sélectionnez le nœud central du chemin de à . Voyez s'il s'agit d'un séparateur, sinon faites une recherche binaire.yXy

Il faut temps prévu pour trouver le séparateur. Nous obtenons donc un algorithme randomisé .O ( nO(nJournaln)O(nlog2n)


Contexte. J'ai appris ce problème grâce à un ami qui travaille sur des modèles graphiques probabilistes. Le problème ci-dessus correspond à peu près à l'apprentissage de la structure d'un arbre de jonction à l' aide d'un oracle qui, étant donné trois variables aléatoires X, Y et Z, peut indiquer la valeur des informations mutuelles entre X et Y étant donné la valeur de Z. Si la valeur est proche à zéro, nous pouvons supposer que Z se trouve sur le chemin de X à Y.


7
Veuillez révéler ce que vous savez déjà sur le problème, afin que nous ne perdions pas notre temps à réinventer la roue.
Jeffε

@ Jɛ ff E J'ai édité ma question.
Jagadish

Réponses:


5

Non. La stratégie d'adversaire simple suivante implique que tout algorithme pour reconstruire un arbre à nœuds nécessite au moins ( n - 1nrequêtes "entre-deux".(n12)=n(n1)/2

Nommez arbitrairement les nœuds . L'adversaire répond à toutes les requêtes comme si l'arbre était une étoile avec le sommet au centre; pensez à comme la racine et les autres nœuds comme ses enfants.0,1,2,,n1000

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

Supposons maintenant que l'algorithme s'arrête après avoir exécuté moins de requêtes. Ensuite, il doit y avoir deux sommets et , ni égaux à zéro, de sorte que l'algorithme n'a interrogé aucune permutation du triple . Si l'algorithme prétend que l'arbre n'est pas une étoile de centre , l'adversaire révèle son entrée, ce qui prouve l'algorithme faux. L'adversaire révèle alors que est en fait le seul enfant de , ce qui prouve à nouveau l'algorithme.y z ( 0 , y , z ) 0 x yn(n1)/2yz(0,y,z)0xy

Mise à jour: Oups, je viens de remarquer la contrainte de degré. Heureusement, ce n'est pas un obstacle majeur. Remplacez le nœud par votre arbre binaire préféré, avec les autres nœuds sous forme de feuilles dans un ordre inconnu, puis dévoilez ce sous-arbre à l'algorithme de reconstruction. La reconstruction de l' arbre binaire ( 2 n - 3 ) nœuds résultant nécessite toujours au moins n ( n - 1 ) / 2 requêtes. De manière équivalente, la reconstruction d'un arbre binaire à m nœuds nécessite au moins ( m + 3 ) ( mn - 10n1(2n3)n(n1)/2m requêtes. (Je suis sûr qu'une construction plus subtile améliorerait la constante.)(m+3)(m+2)/8 Comme le souligne Jagadish, cette généralisation ne fonctionne pas; les requêtes sur les nœuds internes de l'arbre imposent un ordre sur les feuilles, ce qui réduit le nombre de requêtes nécessaires.


Ma question concerne les arbres à degrés constants. Cet argument ne fonctionne pas pour ce cas, non?
Jagadish

2
@Jagadish: (1) Je ne pense pas que cette preuve d'une borne inférieure fonctionne pour les algorithmes randomisés. L'adversaire peut toujours construire un exemple défaillant, mais cela ne contredit pas l'hypothèse selon laquelle l'algorithme randomisé fonctionne correctement avec une probabilité élevée. (2) Soit dit en passant, il semble que vous ayez posé la question en connaissant la réponse. Pourquoi as-tu fait ça?
Tsuyoshi Ito

2
Je vois. Merci pour l'explication, et aussi merci d'avoir édité la question!
Tsuyoshi Ito

4
Si vous avez un algorithme randomisé, alors vous avez un algorithme. Le déterminisme est surfait.
Jeffε

1
O(nlogn)O(nlogn)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.