Non, vous ne pouvez pas battre les requêtes . Je vais expliquer comment formaliser l' esquisse de preuve exfret de ceci, d'une manière qui fonctionne pour les algorithmes adaptatifs. Tout cela est anticipé dans la réponse d'exfret; Je ne fais que compléter certains détails.Θ(n−−√)
Considérez tout algorithme (éventuellement adaptatif) qui émet une séquence de requêtes, où chaque requête est soit "extraire le ème bord de la liste d'adjacence du sommet " ou "tester si les sommets sont connectés par un bord". Nous pouvons supposer qu'aucune requête n'est répétée, car tout algorithme qui répète une requête peut être transformé en un algorithme qui ne répète jamais aucune requête. De même, nous pouvons supposer que l'algorithme ne fait jamais de requête de connectivité sur une paire de sommets qui sont déjà connus pour être connectés par un bord (à savoir, tester lorsque été précédemment renvoyé par une requête d'extraction sur , ou était précédemment retourné par une requête d'extraction surivv,wv,wwvvw, ou nous avons déjà testé la connectivité de ).w,v
Supposons que désigne l'événement selon lequel, lors des premières requêtes, aucun sommet n'est renvoyé par plus d'une requête d'extraction, et aucune requête d'extraction ne renvoie un sommet qui a été précédemment interrogé, et aucune requête de test de connectivité ne renvoie "connecté ". Nous prouverons que si . Il s'ensuit qu'aucun algorithme qui effectue des requêtes ne peut avoir une probabilité constante de trouver un cycle 4.EkkwPr[Eq]=1−o(1)q=o(n−−√)o(n−−√)
Comment le prouvons-nous? Calculons . Il existe deux cas: soit la ème requête est une requête d'extraction, soit une requête de test de connectivité:Pr[Ek|Ek−1]k
Si la ème requête est une requête d'extraction sur le sommet , il y a sommets mentionnés parmi les requêtes, et si la ème requête renvoie l'une de celles-ci, nous aurons , sinon nous aurons . Maintenant, la réponse à la ème requête est uniformément distribuée sur un ensemble de sommets, où contient tous les sommets qui n'ont pas été retournés par les requêtes de récupération précédentes sur , donc la réponse à la ème requête est uniformément distribuée sur un ensemble de taille au moinskv2(k−1)k−1k¬EkEkkSSvkn−k+1. La probabilité de toucher au moins l'un d'entre eux est , donc dans ce cas, .≤2(k−1)/(n−k+1)Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Si la ème requête est une requête de test de connectivité, alors .kPr[Ek|Ek−1]≥1−1/n−−√
Dans les deux cas, si nous avonsq=o(n−−√)
Pr[Ek|Ek−1]≥1−2(k−1)(n−k+1).
Maintenant,
Pr[Eq]=∏k=1qPr[Ek|Eq−1].
Si , alorsk≤q≤n−−√
Pr[Ek|Ek−1]≥1−2qn−q,
donc
Pr[Eq]≥(1−2qn−q)q.
Le côté droit est environ . Lorsque , c'est .exp{−2q2/(n−q)}q=o(n−−√)1−o(1)
En conclusion: lorsque . Il s'ensuit que vous avez besoin de pour avoir une probabilité constante de trouver n'importe quel cycle (encore moins un cycle 4).Pr[Eq]=1−o(1)q=o(n−−√)Ω(n−−√)