Quanto tempo ci vuole per trovare un ciclo breve in un grafico casuale?


9

Let GG(n,n1/2) un grafo casuale n3/2 bordi. Con probabilità molto alta, G ha molti 4 cicli. Il nostro obiettivo è quello di produrre uno di questi 4 cicli il più rapidamente possibile.

Supponendo di avere accesso a G in forma di elenco di adiacenza, possiamo avere successo con probabilità costante in O(n)tempo come segue: selezionare qualsiasi nodove iniziare a generare2percorsicasuali apartire dav; una volta individuati duepercorsi2distintiche condividono un endpoint, abbiamo finito. Esistononpossibili endpoint e dal paradosso del compleanno riusciremo con costante probabilità dopo aver scoperton di loro.

Possiamo fare di meglio? In particolare, è possibile un algoritmo a tempo costante che ha successo con probabilità costante?


Mi sembra che questo grafico abbia troppi spigoli per avere la proprietà desiderata, se stai usando la terminologia standard, è come un campione G(n,p) con p=(n/C(n,2))=O(n3/2)
kodlu

Grazie, hai ragione che volevo dire (a cura). Questi grafici avranno C 4 ogni volta che due nodi condividono 2 vicini, il che accade con probabilità costante per coppia di nodi. p=n1/2C42
GMB

Sto usando la terminologia qui ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), dove ogni fronte è incluso indipendentemente dalla probabilità - così, bordi in attesa. pp(n2)
GMB

Risposte:


6

No, non puoi battere le query . Spiegherò come formalizzare lo schizzo di prova di exfret di questo, in un modo che funzioni per algoritmi adattativi. Tutto ciò è anticipato nella risposta di exfret; Sto solo compilando alcuni dei dettagli.Θ(n)

Prendere in considerazione qualsiasi algoritmo (possibilmente adattivo) che le questioni di una sequenza di query, dove ogni query può essere "recuperano il ° margine del vertice 's lista di adiacenza" o 'verificare se i vertici sono collegati da un bordo'. Possiamo supporre che nessuna query venga ripetuta, poiché qualsiasi algoritmo che ripete una query può essere trasformato in uno che non ripete mai alcuna query. Allo stesso modo, possiamo supporre che l'algoritmo non esegua mai una query di connettività su alcuna coppia di vertici che sono già noti per essere connessi da un bordo (vale a dire, test quando stato precedentemente restituito da una query di recupero su , oppure era precedentemente restituito da una query di recupero suivv,wv,wwvvwo abbiamo precedentemente testato la connettività di ).w,v

Consenti a indicare l'evento che, durante le prime query, nessun vertice viene restituito da più di una query di recupero e nessuna query di recupero restituisce un vertice precedentemente interrogato e che nessuna query di test di connettività restituisce "connesso ". che se . Ne consegue che nessun algoritmo che esegue query può avere una probabilità costante di trovare un ciclo a 4.EkkwPr[Eq]=1o(1)q=o(n)o(n)

Come lo dimostriamo? Calcoliamo . Esistono due casi: o la query è una query di recupero o è una query di test di connettività:Pr[Ek|Ek1]k

  1. Se il esima query è un recupero interrogare vertice , ci sono vertici menzionati fra i primi query, e se i th query restituisce uno di quelli allora avremo , tuttavia avremo . Ora la risposta alla esima query viene distribuita uniformemente su un insieme di vertici, dove contiene tutti i vertici che non sono stati restituiti dal fetch domande prima di , quindi la risposta alla esima query viene distribuito uniformemente su un set di dimensione almenokv2(k1)k1k¬EkEkkSSvknk+1. La probabilità di colpire almeno uno di questi è , quindi in questo caso, .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Se il esima query è una query di connettività-test, quindi .kPr[Ek|Ek1]11/n

In entrambi i casi, se abbiamoq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

Adesso,

Pr[Eq]=k=1qPr[Ek|Eq1].

Se , allorakqn

Pr[Ek|Ek1]12qnq,

così

Pr[Eq](12qnq)q.

Il lato destro è approssimativamente . Quando , questo è .exp{2q2/(nq)}q=o(n)1o(1)

In conclusione: quando . Ne consegue che è necessario per avere una probabilità costante di trovare qualsiasi ciclo (per non parlare di un 4 cicli).Pr[Eq]=1o(1)q=o(n)Ω(n)


"Se la kth query è una query di test di connettività, allora ." Sto pensando ? (Anche se così, la conclusione continua ancora ovviamente.)Pr[Ek|Ek1]11/n11/n
usul

@usul, oops, sì, grazie! Fisso.
DW

5

Supponiamo che siamo in grado di interrogare solo l' esimo bordo della lista di adiacenza di un dato vertice (che io parto dal presupposto non è ordinato) oppure se due date vertici sono adiacenti. In questo caso dovrebbero essere necessarie query per trovare anche un ciclo. Questo perché esiste una possibilità che tutte le nostre query del primo tipo restituiscano vertici diversi e che tutte le nostre query del secondo tipo restituiscano che i due vertici non sono collegati.in1o(1)

Per favore, correggimi se sbaglio da qualche parte o non capisco il problema.


1
Questo schizzo di prova mi suona come se funzionasse solo con algoritmi non adattivi (ovvero query risolte in anticipo).
usul

@usul Perché sarebbe così? Whp stiamo usando comunque solo un ramo dell'albero decisionale.
escreto il

Forse dovrei chiarire. Dovrebbe essere chiaro che se riceviamo le risposte alle nostre domande come prescritto, non possiamo produrre un ciclo di 4 cicli con probabilità costante. Tuttavia, per qualsiasi albero decisionale di profondità esiste una possibilità ci viene inviato in tale ramo. o(n)1o(1)
exfret,

Grazie! Ho (in qualche modo arbitrariamente) accettato l'altra versione arricchita, ma sembra che tu l'abbia ottenuto. Apprezzo la risposta.
GMB,

1
@GMB Penso che tu abbia preso la decisione corretta; l'altro è una risposta di qualità molto più elevata e merita di essere visto per primo dagli altri.
esprimere il
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.