Quanto tempo leva para encontrar um ciclo curto em um gráfico aleatório?


9

Deixe- GG(n,n1/2) ser um gráfico aleatório em n3/2 bordas. Com probabilidade muito alta, G tem muitas 4 motos. Nosso objetivo é produzir qualquer uma dessas 4 motos o mais rápido possível.

Supondo que tenhamos acesso a G na forma de lista de adjacência, podemos ter sucesso com probabilidade constante em O(n)tempo da seguinte forma: escolha qualquer nóvcomece a gerar2caminhosaleatórios apartir dev; uma vez que encontramos duas distintas2-paths que compartilham um ponto final, estamos a fazer. Não hánendpoints possíveis e, pelo paradoxo do aniversário, teremos sucesso com probabilidade constante após descobrirmos sobren deles.

Podemos fazer melhor? Em particular, é possível um algoritmo de tempo constante que tenha sucesso com probabilidade constante?


Parece-me que este gráfico tem muito poucas arestas para ter a propriedade desejada, se você estiver usando a terminologia padrão, é como uma amostra G(n,p) com p=(n/C(n,2))=O(n3/2)
kodlu

Graças, você está certo que eu quis dizer (editado). Estes gráficos terá C 4 s qualquer momento dois nós partilhar 2 vizinhos, o que acontece com probabilidade constante por par nó. p=n1/2C42
GMB

Estou usando a terminologia aqui ( en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model ), em que cada borda é incluída independentemente com probabilidade - então, arestas na expectativa. pp(n2)
GMB

Respostas:


6

Não, você não pode superar as consultas . Vou explicar como formalizar o esboço de prova do exfret , de uma maneira que funcione para algoritmos adaptativos. Tudo isso é esperado na resposta do exfret; Estou apenas preenchendo alguns detalhes.Θ(n)

Considere qualquer algoritmo (possivelmente adaptativo) que as questões de uma sequência de consultas, onde cada consulta ou é "buscar o th borda do vértice 's lista de adjacência" ou 'testar se vértices são conectados por uma aresta'. Podemos assumir que nenhuma consulta é repetida, pois qualquer algoritmo que repete uma consulta pode ser transformado em um que nunca repita nenhuma consulta. Da mesma forma, podemos supor que o algoritmo nunca faz uma consulta de conectividade em qualquer par de vértices que já são conhecidas para ser conectado por uma aresta (ou seja, testando , quando anteriormente foi retornado por uma busca consulta em ou era retornado anteriormente por uma consulta de busca emivv,wv,wwvvwou testamos anteriormente a conectividade de ).w,v

Deixe denotar o evento que, durante as primeiras consultas, nenhum vértice é retornado por mais de uma consulta de busca e nenhuma consulta de busca retorna um vértice que foi consultado anteriormente e que nenhuma consulta de teste de conectividade retorna "conectado " Vamos provar que se . Conclui-se que nenhum algoritmo que faz consultas pode ter uma probabilidade constante de encontrar um ciclo de 4.EkkwPr[Eq]=1o(1)q=o(n)o(n)

Como provamos isso? Vamos calcular . Há dois casos: ou o th consulta é uma busca consulta, ou é uma consulta de conectividade de teste:Pr[Ek|Ek1]k

  1. Se a é uma consulta de busca no vértice , existem vértices mencionados entre as primeiras consultas , e se a a consulta retorna uma dessas, teremos , caso contrário teremos . Agora, a resposta à ésima consulta é distribuída uniformemente em um conjunto de vértices, em que contém todos os vértices que não foram retornados pelas consultas de busca anteriores em , portanto, a resposta à ésima consulta é distribuída uniformemente em um conjunto de tamanho pelo menoskv2(k1)k1k¬EkEkkSSvknk+1. A probabilidade de atingir pelo menos um deles é , portanto, neste caso, .2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. Se o th consulta é uma consulta conectividade de teste, então .kPr[Ek|Ek1]11/n

Nos dois casos, se tivermosq=o(n)

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

Agora,

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

Se , entãokqn

Pr[Ek|Ek1]12qnq,

tão

Pr[Eq](12qnq)q.

O lado direito é aproximadamente . Quando , isso é .exp{2q2/(nq)}q=o(n)1o(1)

Em conclusão: quando . Daqui resulta que você precisa para ter probabilidade constante de encontrar qualquer ciclo (sem falar em um ciclo de 4).Pr[Eq]=1o(1)q=o(n)Ω(n)


"Se a consulta k é uma consulta de teste de conectividade, ." Estou pensando em ? (Mesmo em caso afirmativo, a conclusão ainda passa através do curso.)1 - 1 / Pr[Ek|Ek1]11/n11/n
usul

@usul, oops, sim, obrigado! Fixo.
DW

5

Vamos supor que só pode consultar o th borda da lista de adjacência de um determinado vértice (que eu estou supondo que não é classificado) ou se dois vértices dados são adjacentes. Nesse caso, devem ser necessárias consultas para encontrar um ciclo. Isso ocorre porque há uma chance de que todas as nossas consultas do primeiro tipo retornem vértices diferentes e que todas as nossas consultas do segundo tipo retornem que os dois vértices não estejam conectados.in1o(1)

Por favor, corrija-me se estiver errado em algum lugar ou entendendo mal o problema.


11
Esse esboço de prova me parece que só funciona para algoritmos não adaptativos (ou seja, consultas corrigidas antecipadamente).
usul

@usul Por que esse seria o caso? Whp, estamos usando apenas um ramo da árvore de decisão de qualquer maneira.
exfret 21/09/19

Talvez eu deva esclarecer. Deve ficar claro que, se recebermos respostas às nossas perguntas conforme prescrito, não podemos produzir um ciclo de quatro com probabilidade constante. No entanto, para qualquer árvore de decisão de profundidade existe uma chance de sermos enviados por esse ramo. 1-o(1)o(n)1o(1)
exfret 21/09/19

Obrigado! Eu (um tanto arbitrariamente) aceitei a outra versão detalhada, mas parece que você entendeu. Aprecie a resposta.
GMB

11
@GMB Acho que você tomou a decisão correta; a outra é uma resposta de qualidade muito superior e merece ser vista primeiro pelos outros.
exfret 22/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.