Estou interessado na auto-redutibilidade do problema do Graph 3-Coloralibity.
Definição do problema do gráfico 3-Coloralibity.
Dado um gráfico não direcionado existe uma maneira de colorir os nós vermelho, verde e azul para que nenhum nó adjacente tenha a mesma cor?
Definição de auto-redutibilidade.
Uma linguagem é auto-redutível se uma máquina Oracle Turing Machine existe tal que e para qualquer entrada de comprimento , consulta o oráculo por palavras de comprimento, no máximo .
Gostaria de mostrar de maneira muito estrita e formal que a coloração do gráfico 3 é auto-redutível.
A prova de auto-redutibilidade do SAT pode ser usada como exemplo ( auto-redutibilidade do SAT ).
Na minha opinião, a idéia geral de prova de auto-redutibilidade do gráfico 3-colorability é diferente da prova de auto-redutibilidade SAT em alguns aspectos.
- O SAT tem duas opções para cada literal (verdadeiro ou falso) e o gráfico 3-colorability tem três opções (a saber, vermelho verde azul).
- As opções do literal SAT são independentes entre si e as opções de cores do gráfico 3 são estritamente dependentes; qualquer nó adjacente deve ter uma cor diferente; essa propriedade pode ajudar a reduzir a iteração entre todas as cores.
A ideia geral de prova .
Vamos denotar por a cor do vértice , que pode assumir um dos seguintes valores (vermelho, verde, azul). Definir gráfico de um dado gráfico colorindo o vértice arbitrário atribuir para 'vermelho' e coloque o gráfico com vértice colorido para a entrada do oráculo. Se o oracle responder 1, o que significa que o gráfico modificado ainda é de três cores, salve as atribuições atuais e inicie uma nova iteração, com o vértice diferente escolhido arbitrariamente, vértice colorido de acordo com as cores dos vértices adjacentes. se o oracle responder 0, o que significa que a tarefa anterior quebrou três cores, escolha uma cor diferente do conjunto de três cores, mas ainda de acordo com as cores dos vértices adjacentes.
A prova anterior não é robusta em matemática, a questão é como melhorá-la e torná-la mais formal e matemática rigorosa. Parece que preciso distinguir com mais cuidado os casos em que o novo vértice não possui arestas com vértices já coloridos e quando o novo vértice é adjacente aos vértices já coloridos.
Além disso, gostaria de provar que a coloração do gráfico 3 é auto-redutível em baixa.
Definição de linguagem auto-redutível para baixo.
O idioma é dito ser auto-redutível para baixo se for possível determinar em tempo polinomial se usando os resultados das consultas mais curtas.
A idéia parece simples e intuitiva: comece colorindo um vértice arbitrário e, em cada iteração, adicione mais um vértice colorido e verifique pelo oracle se o gráfico ainda é de três cores, se não inverter a coloração anterior e verifique outra cor.
Mas como escrever a prova de maneira estrita e mais importante como encontrar uma codificação apropriada de um gráfico.
Em resumo, gostaria de mostrar que a coloração do gráfico 3 é auto-redutível e auto-redutível em sentido estrito e formal.
Eu aprecio compartilhar seus pensamentos conosco.
Atualizar:
auto-redutibilidade descendente
A auto-redutibilidade descendente é aplicada ao problema de decisão e o oracle responde ao mesmo problema de decisão com menos tempo de entrada. No final do processo de auto-redução descendente, devemos ter as atribuições de cores corretas.
A cada 3 - gráfico colorido com mais de três vértices, tem dois vértices com a mesma cor. Aparentemente, existem apenas três cores e mais de três vértices, portanto, um número de vértices não adjacentes pode ter a mesma cor. Se fundirmos e com a mesma cor do resultado, ainda temos um gráfico de 3 cores, apenas porque, se o gráfico é de 3 cores, existe a atribuição correta de todos os vértices adjacentes a e de acordo com a mesma cor de , mesclando não precisamos alterar nenhuma cor de nenhum vértice, precisamos apenas adicionar mais arestas entre os vértices já corretamente coloridos (sei que não é a melhor explicação, aprecio se alguém puder explicar melhor). Em cada iteração, pegamos dois vértices não adjacentes do gráfico mesclar e e obter gráfico qual é a nossa entrada mais curta para o oráculo. A Oracle responde se é de três cores ou não. Agora o problema está antes de configurar na entrada do oracle eu devo colorir o vértice mesclado e testar a colorabilidade de , se não for de três cores, altere a cor, mas como implementá-la corretamente, preciso da codificação correta.
auto-redutibilidade
Primeiro, devemos verificar se um determinado gráfico é de 3 cores, então defina-o na entrada do oracle, e o oracle responderá se for de 3 cores, se sim, inicie o processo. Quaisquer dois vértices não adjacentes podem ter a mesma cor no gráfico de três cores. O processo de auto-redutibilidade que devemos executar em iterações, acho que podemos começar com um pequeno subgrafo de um dado gráfico e em cada iteração adicione mais um vértice de para . Em paralelo, devemos manter a atribuição de vértices já coloridos. Infelizmente, ainda não entendi completamente a idéia. Gostaria de receber ajuda e dicas.
Respostas:
Como Vor menciona em seu comentário, sua redução não funciona, pois a 3 cores não aceita atribuições parciais de cores. O problema é ainda mais profundo, uma vez definindo a cor de um único vértice não faz qualquer progresso para determinar se o gráfico é de 3 colorable: na verdade, o gráfico é 3-colorable sse há uma 3-coloração em que vérticev é atribuído cor c , para qualquer v,c você escolhe.
Aqui está uma dica sobre como resolver seu exercício, segunda parte. Em qualquer coloração 3 de um gráficoG em mais de três vértices, existem dois vértices x,y ficando da mesma cor (por quê?). Se fundirmosx e y , o gráfico resultante ainda é de três cores (por quê?). Tente usar essa idéia para construir um algoritmo de redução automática para 3 cores.
Edit: E aqui está uma dica sobre como resolver o exercício, primeira parte. Considere dois vértices não conectadosx,y . Se houver uma coloração na qual eles tenham a mesma cor, entãoGxy é de 3 cores (por quê?) e uma coloração de G pode ser extraído de uma coloração de Gxy (como?). Quando esse processo será interrompido?
fonte
Talvez assim. Podemos adicionar dois vértices l1 e l2 conectados. Primeiro, nós os conectamos com qualquer vértice v *. Observe que esse comportamento significa que, finalmente, apenas bloqueamos alguns vértices de cores, incluindo v *.
Em seguida, executamos a versão de decisão do 3-colorability, se o algoritmo de decisão aceitar, adicionamos esse vértice em s_1. repetimos esta etapa com todos os vértices (conecte l1 e l2 com outro vértice), descobriremos que, finalmente, são encontrados todos os vértices da mesma cor (denotados por vermelho) e esses vértices com a cor vermelha denotados por s_1.
Se houver algum problema, aponte.🤥
Em seguida, exatamente como fizemos acima, adicione outros dois vértices conectados (l3 l4). Primeiro, nós os conectamos a qualquer vértice, exceto aqueles em s_1, execute o algoritmo de decisão. Então outro.....
fonte