Complexidade da conectividade st exclusiva

11

Gostaria de saber se o seguinte problema pode ser decidido em (logspace nondeterministic):NL

Dado um gráfico direcionado com dois vértices distintos s e t , existe um caminho único de s para t em G ?GststG

Eu sinto que é provável que seja em , uma vez que pode decidir tanto se há um s - t -caminho e se não há tal caminho. No entanto, contar o número de tais caminhos é P- hard (Valiant, 1979).NLstP

Então, minhas perguntas: você tem referências sobre isso? É óbvio que é em ? Ou que ele não está na N L ?NLNL

Bruno
fonte
5
Você quer dizer caminhos simples? Não está claro que é o mesmo neste contexto.
Lance Fortnow
1
Bom ponto, quero dizer caminhos simples, de fato.
de Bruno

Respostas:

16

Parece que seu problema está no . Aqui está um algoritmo.NL

Primeiro, adivinhe não deterministicamente um caminho de para t . Se você adivinhar incorretamente, rejeite . Chame esse algoritmo A .stA

Considere o seguinte algoritmo não determinístico , que determina se existem pelo menos dois caminhos. Dado um gráfico es , t , para todos os pares de arestas distintas e , f , adivinhe um caminho de s para t que inclua e, mas não f , adivinhe um caminho de s para t que inclua f, mas não e . Se as suposições estiverem corretas, aceite . Se não ocorrer aceitação para todas as opções de e e f , rejeitar . Nota BBs,te,fstefstfeefB é implementável no espaço de registro não determinístico.

Agora, o conjunto é o conjunto de gráficos s - t com pelo menos dois caminhos de s a t . Como N L = c o N L , o complemento de B também está em N L , ou seja, podemos determinar se s e t têm menos de dois caminhos, no espaço de registro não determinístico.L(B)ststNL=coNLBNLst

O algoritmo final é: "Execute Se A aceitar, execute o complemento de B e dê sua resposta".AAB

Eu não sei de uma referência.

ATUALIZAÇÃO: Se você realmente deseja uma referência, consulte o primeiro parágrafo da Seção 3 deste documento . Mas esta é provavelmente apenas uma das muitas referências que citam essa consequência. Seria mais razoável chamar o resultado de "folclore", em vez de citar um artigo que o menciona.

ATUALIZAÇÃO 2: Suponhamos que você queira determinar se existe um caminho simples e único. Nesse caso, o algoritmo não precisa ser alterado: se existe um caminho, existe um caminho simples. Eu acredito que a seguinte modificação vai trabalhar para o algoritmo B .AB

Queremos reescrever o algoritmo para que ele aceite se houver pelo menos dois caminhos simples.B

Primeiro, considere o seguinte algoritmo de tempo polinomial para o problema. Encontre o caminho mais curto de s para t . Para cada aresta e em P , verifique se há outro caminho s - t que não passa por e . Se você encontrar esse caminho, aceite . Se você nunca encontrar outro caminho, rejeite . Como P é o mais curto, ele não possui um ciclo e, se houver outro caminho que não use alguma aresta de P , haverá outro caminho que é simples e não usa alguma aresta de PPstePstePPP. (Este algoritmo é usado para o problema do "segundo caminho mais curto".)

Vamos implementar este algoritmo em . Se tivéssemos uma N L algoritmo para consultar o bordas e em um caminho fixo P , que pode implementar o acima em logspace nondeterministic: a iteração através de todas as arestas e em P , adivinhar um s - t caminho e verificar que, para cada aresta visitado ao longo da Dessa forma, nenhum deles é igual a e .NLNLePePste

Então o que precisamos é um "oráculo caminho", um algoritmo com a propriedade: dada i = 1 , ... , n , em cada caminho computação algoritmo quer relata o i th vantagem sobre um determinado fixo s - t caminho ou rejeitar . Podemos obter um oráculo de caminho usando N L = c o N L para isolar o primeiro caminho lexicograficamente.NLi=1,,nistNL=coNL

Aqui está um esboço do caminho oracle.

Encontrar , o comprimento do caminho mais curto de s a t , por tentar todos k = 1 , ... , n e usando N G = C O N G .kstk=1,,nNL=coNL

Defina as variáveis , x : = 1 , j : = k .u:=sx:=1j:=k

Para todos os vizinhos de u em ordem lexicográfica,vu

Determine se existe ou não um caminho de até t de comprimento j - 1 (usando o resultado N L = c o N L ). Mais precisamente, execute o algoritmo não determinístico para conectividade s - t (de comprimento j - 1 ) e o algoritmo para seu complemento, simultaneamente. Quando um deles aceitar, vá com sua resposta (deve estar correto; ambos não podem aceitar). Se ambos rejeitarem, então rejeite .vtj1NL=coNLstj1

Se não houver caminho, prossiga para o próximo vizinho. Se você esgotou todos os vizinhos, rejeite .

Se existe um caminho, em seguida, se , de saída ( u , v ) como o i th vantagem sobre o caminho de s a t . Caso contrário, incremente x , diminua j , defina u : = v e inicie o loop for novamente se v t .x=i(u,v)istxju:=vvt

Se após atingir t produz um resultado ruim i (o dado i era muito grande).x<itii

Dado , esse algoritmo gera a i- ésima aresta no caminho lexicograficamente mais curto P, de s para t , ou rejeita.iiPst

Ryan Williams
fonte
Eu pensei em algo semelhante, mas usa espaço linear. Obrigado pela sua resposta!
1155 Bruno Bruno
5
Eu concordo que é realmente folclore. É uma consequência imediata do colapso da hierarquia. Além disso, o problema de contagem não está # P-completo. Está em # L, que por sua vez está em N C 2NLNC2
V Vinay
2
Sim, como afirmei acima, o algoritmo não faz distinção entre caminhos simples e caminhos com ciclos.
Ryan Williams
1
P
1
Aliás, o comentário de Allender & Lange é suficiente para concluir diretamente.
1211 Bruno