Deixe- ser um gráfico aleatório em bordas. Com probabilidade muito alta, tem muitas motos. Nosso objetivo é produzir qualquer uma dessas motos o mais rápido possível.
Supondo que tenhamos acesso a na forma de lista de adjacência, podemos ter sucesso com probabilidade constante em tempo da seguinte forma: escolha qualquer nócomece a gerarcaminhosaleatórios apartir de; uma vez que encontramos duas distintas-paths que compartilham um ponto final, estamos a fazer. Não háendpoints possíveis e, pelo paradoxo do aniversário, teremos sucesso com probabilidade constante após descobrirmos sobre deles.
Podemos fazer melhor? Em particular, é possível um algoritmo de tempo constante que tenha sucesso com probabilidade constante?
Respostas:
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 emi v v,w v,w w v v w ou 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.Ek k w Pr[Eq]=1−o(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|Ek−1] k
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 menosk v 2(k−1) k−1 k ¬Ek Ek k S S v k n−k+1 . A probabilidade de atingir pelo menos um deles é , portanto, neste caso, .≤2(k−1)/(n−k+1) Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Se o th consulta é uma consulta conectividade de teste, então .k Pr[Ek|Ek−1]≥1−1/n−−√
Nos dois casos, se tivermosq=o(n−−√)
Agora,
Se , entãok≤q≤n−−√
tão
O lado direito é aproximadamente . Quando , isso é .exp{−2q2/(n−q)} q=o(n−−√) 1−o(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]=1−o(1) q=o(n−−√) Ω(n−−√)
fonte
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.i n−−√ 1−o(1)
Por favor, corrija-me se estiver errado em algum lugar ou entendendo mal o problema.
fonte