Estou pensando em um problema, inspirado por conhecer um professor de língua estrangeira de nível iniciante no Goethe-Institut que aprendeu os cinco idiomas mais comuns falados pelos alunos para se comunicar com o maior número possível de alunos.
Considere uma população finita de pessoas, cada uma das quais fala qualquer número de idiomas. Para os propósitos do problema, ignoraremos algumas das coisas que tornam os idiomas complexos na vida real (por exemplo, que as pessoas falam vários idiomas, mas em níveis diferentes, que as pessoas que entendem um idioma possam entender intimamente idiomas e assim por diante).
Então, por exemplo:
- P 1 fala
{English, German}
. - P 2 fala
{Spanish, Italian, French}
. - P 3 fala
{Mandarin, English}
. - P 10000 fala
{Afrikaans, Swahili, English}
, e assim por diante.
Estou escrevendo um documento que gostaria de traduzir para ser entendido pelo maior número possível de pessoas. Infelizmente, meu orçamento é limitado e só posso pagar uma tradução para N idiomas diferentes.
Para um determinado valor de N, como calculo o conjunto otimizado de N idiomas para alcançar o maior número de pessoas da população pretendida?
Parece que o problema pode ser facilmente generalizado como um problema de teoria dos conjuntos / combinatória e, portanto, tenho certeza de que alguém já trabalhou em algo assim antes. Gostaria de dar uma olhada na literatura existente, mas não sei como encontrá-la.
Existe um nome para este tipo de problema? Caso contrário, poderia ser reduzido a outro problema conhecido?
fonte
Respostas:
Acredito que seu problema é uma instância direta do Problema de cobertura máxima NP-hard, que está relacionado ao Set Cover.
Da wikipedia, Problema de cobertura máxima :
Portanto, no seu caso, existe um conjunto para cada idioma com cardinalidade igual ao número de alunos que falam esse idioma. A entrada é o número N do número máximo de traduções.
fonte
Se ignorarmos o número de falantes nativos do idioma no momento, seu problema é Definir capa - você pergunta se é possível cobrir todos os idiomas com no máximok tradutores.
A adição de pesos - o número de falantes nativos de cada idioma - adiciona um modo de otimização - podemos cobrir apenas alguns idiomas, mas queremos o peso total máximo. Isso certamente não é mais fácil; a redução do próprio Set Cover é trivial.
Assim, seu problema é NP-difícil.
Como também é fácil expressar usando programação inteira, podemos concluir que é NP-completo.
Quanto aos nomes, eu não conheço um. "Cobertura de conjuntos ponderados" já foi usada para a variante em que os conjuntos têm custos, mas eu inventaria algo em torno dessas linhas. "Cobertura do conjunto de peso máximo", talvez.
fonte