Expandir o comentário do vzn em uma resposta: A redução padrão do CNF-SAT para a cobertura de vértices é bastante fácil: faça um vértice para cada termo (variável ou negação), conecte cada variável à sua negação por uma aresta, faça um clique para cada cláusula e conecte cada vértice na clique ao vértice para um dos termos da cláusula. Se você começar com um problema de satisfação com uma atribuição conhecida satisfatória, isso fornecerá um problema de cobertura de vértice com uma solução ótima conhecida (escolha o termo vértices fornecido pela atribuição e, em cada cláusula, clique em todos, exceto um vértice, para que o A cláusula vértice que não é escolhida é adjacente a um termo que é escolhido).
Portanto, agora você precisa encontrar problemas de satisfação que tenham uma tarefa satisfatória conhecida, mas onde a solução é difícil de encontrar. Existem muitas maneiras conhecidas de gerar problemas difíceis de satisfação (por exemplo, gerar instâncias aleatórias de k-SAT próximas ao limite de satisfação), mas o requisito extra de que você saiba que a atribuição satisfatória restringe as possibilidades. Uma coisa que você pode fazer aqui é passar por outro nível de redução, a partir de um problema criptograficamente difícil, como a fatoração. Ou seja, escolha dois números primos grandes peq, configure um circuito booleano para multiplicar peq como números binários e traduza-o em uma fórmula CNF na qual existe uma variável para cada entrada (peq) e para cada valor intermediário em um fio no circuito, uma cláusula para cada saída, forçando-o a ter o valor certo, e uma cláusula para cada portão forçando as entradas e saídas do portão a serem consistentes entre si. Em seguida, traduza essa fórmula CNF em capa de vértice.
Para uma estratégia mais simples, escolha primeiro a atribuição satisfatória para uma fórmula 3CNF e depois gere cláusulas aleatoriamente, mantendo apenas as cláusulas que são consistentes com a atribuição e, em seguida, converta para a cobertura de vértice. Se as cláusulas tiverem probabilidade uniforme, isso ficará vulnerável a uma heurística baseada em graus (o termo vértices que correspondem à atribuição escolhida terá um grau inferior ao termo que não corresponde a vértices), mas essa falha pode ser evitada ajustando as probabilidades das cláusulas de acordo com quantos termos da cláusula concordam com a tarefa escolhida. Provavelmente, isso é vulnerável a algum tipo de ataque de tempo polinomial, mas pode não ser natural para a cobertura de vértices; portanto, pode criar um bom conjunto de instâncias de teste, apesar de não ter muita garantia de dureza.