Suponha que exista uma sessão de tutorial em uma universidade. Temos um conjunto de perguntas e um conjunto de alunos . Cada aluno tem uma dúvida em um determinado subconjunto de perguntas, ou seja, para cada aluno , seja o conjunto de perguntas que um aluno duvida. Assume-se que e .
Todos os alunos entram na sessão do tutorial no início (em ). Agora, um aluno sai da sessão do tutorial assim que todas as perguntas em que ele tiver dúvidas tiverem sido discutidas. Suponha que o tempo necessário para discutir cada questão seja igual, digamos 1 unidade . Seja o tempo gasto por na sessão do tutorial. Queremos encontrar uma permutação ideal na qual questões são discutidas como a quantidade é minimizado.∗ t j s j σ ( q σ ( 1 ) … q σ ( n ) ) T σ = Σ 1 ≤ j ≤ n t j
Não pude projetar um algoritmo de tempo polinomial ou provar a dureza .
Podemos definir uma versão de decisão do problema
onde é o conjunto de 's.
Podemos então descobrir o T_ \ sigma mínimo usando pesquisa binária em e descobrir o \ sigma ideal usando atribuições parciais a em tempo polinomial usando um oracle para . Além disso, porque o \ sigma ideal pode ser usado como um certificado que podemos verificar facilmente em tempo polinomial.
Minha pergunta: concluída ou podemos criar um algoritmo de tempo polinomial para ele?N P
Sidenote: A propósito, pensei nessa questão após uma sessão de tutorial real, na qual o AT discutiu as questões na ordem normal por causa da qual muitos estudantes tiveram que esperar até o final.
Exemplo
Let e . e . Podemos ver que ideal porque, nesse caso, sai depois de e sai depois de , então a soma é 4.
No entanto, se discutirmos as questões em a ordem , então e precisam esperar até o fim e , então a soma é 6.
Q i x i Você é livre para resolver o caso mais geral em que cada pergunta leva unidades para discutir!
fonte
Respostas:
Suspeito que o problema seja NP-difícil. Vou mostrar como transformar o problema de forma que ele esteja fortemente relacionado a um problema que é difícil para o NP. (Sim, tudo isso é bastante vago. Basicamente, acho que minha abordagem geral está correta, mas atualmente não consigo prosseguir.)TUT
Primeiro, observe que o problema pode ser reformulado da seguinte maneira:TUT
Dado um conjunto de perguntas de tamanho k , um conjunto de n subconjuntos F Q ⊆ P ( Q ) e um número inteiro C , não existe uma sequência Σ : ⟨ S 1 , ... , S k ⟩ de tal modo que, para todos os i ∈ { 1 , … , k } :Q k n FQ⊆P(Q) C Σ:⟨S1,…,Sk⟩ i∈{1,…,k}
Observe que o conjunto representa as primeiras i perguntas que serão explicadas. As condições 1 e 2 garantem que os subconjuntos sejam bem formados de acordo com esta interpretação. A condição 3 conta a quantidade de estudantes que não saíram a todo momento, portanto, isso realmente resume o tempo total de espera entre todos os alunos.Si i
Agora, podemos restringir o tamanho dos subconjuntos em a 2 , de modo que pode representar estes subconjuntos como arestas em um gráfico onde os vértices são os elementos de Q . (Um resultado de dureza para este caso especial é suficiente para a dureza do problema geral)FQ 2 Q
Agora, o problema de minimizar para um único i (essa é essencialmente a condição 2 de ignorar) é equivalente ao seguinte problema, que eu chamo de ' Double max k -vertex-cover ':|{q∈FQ∣q⊈Si}| i Double max k-vertex-cover
Esse problema é difícil para o NP, pois o -clique é um caso especial desse problema, como mostra a resposta . No entanto, isso não é suficiente para provar que T U T é NP-difícil, pois precisamos encontrar o máximo para cada i , respeitando a condição 2. Essas condições não são satisfeitas por todas as seqüências Σ que satisfazem apenas as condições 1 e 3: considere o gráfico em 7 vértices com dois ciclos disjuntos, um de tamanho 4 e outro de tamanho 3 . Para i = 3 , selecionar todos os vértices do ciclo 3 fornece o máximo, enquanto selecionar todos os vértices dos 4k TUT i Σ 7 4 3 i=3 3 4 -ciclo é ideal para .i=4
Parece que a condição 2 torna o problema ainda mais difícil e certamente não é mais fácil, o que significa que deve ser NP-difícil, mas eu não vi um método para provar isso formalmente.TUT
Então, para resumir, reduzi a pergunta para o seguinte:
Nota lateral: A formulação que eu dei torna tentador tentar um algoritmo iterativo que encontre na condição 2 de i = 1 … k , encontrando todas as 'extensões' máximas de todos os conjuntos máximos encontrados para i - 1 . Isso não leva a um algoritmo eficiente, pois a quantidade de conjuntos máximos em uma única iteração pode ser exponencial em k . Além disso, eu não vi um método para determinar se um subconjunto para alguns i|{q∈FQ∣q⊈Si}| i=1…k i−1 k i acabaria por se tornar o máximo "global" para impedir a verificação de uma quantidade exponencial de subconjuntos.
fonte