Acho que encontrei um exemplo útil!
Talvez eu estivesse um pouco vago, mas estava procurando um problema que atendesse às seguintes especificações:
- O problema em si deve ser fácil de explicar para alguém que estuda ciências sociais.
- Deve ter um algoritmo óbvio, mas ineficaz.
- Deveria ter um algoritmo melhor, fácil de explicar para quem estuda ciências sociais.
Para o Ciclo Euleriano, é fácil explicar que é uma condição necessária para que cada nó tenha um grau uniforme, mas não é tão fácil explicar por que é uma condição suficiente.
Este é o problema que, até agora, acho que melhor atende à especificação acima:
FORM_TARGET_SET_WITH_UNIONS
Coleção de conjuntosC= { S1, S2, . . . , Sn}
Conjunto de metasT
Pergunta: É possível formar o conjunto de destino tomando a união de alguns dos conjuntos em ?TC
Algoritmo óbvio, mas ineficaz:
- Forme todas as uniões possíveis2n
- Veja se um deles corresponde aT
Algoritmo melhor
- Marque os conjuntos em que estão contidos emCT
- Forme a união desses conjuntosS∪
- Seresponda , caso contrário responda| S∪| = | T|YESNO
Há também o problema da irmã
FORM_TARGET_SET_WITH_INTERSECTIONS
para o qual o melhor algoritmo é
- Marque os conjuntos em que contêmCT
- Forme a interseção desses conjuntosS∩
- Seresponda , caso contrário responda| S∩| = | T|YESNO
Como você pode ver, eu estava procurando por algo realmente simples (quase tão simples quanto SUBSET_PRODUCT_IS_ZERO).
O problema também pode ser contrastado com SUBSET SUM e SUBSET PRODUCT, que são NP completos, mas similares em sua formulação. Em todos esses problemas, é apresentado um conjunto de objetos e perguntado se uma operação em uma seleção desses objetos pode produzir o resultado desejado.