Localizando um conjunto de tamanho fixo cujos membros estão contidos no maior número de outros conjuntos

7

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?

HardlyKnowEm
fonte
Creio que esta se enquadra na classe de problemas chamados problemas de otimização
MatthewRock
2
@MatthewRock Yea. Se você me der uma maçã e me perguntar: "que tipo de maçã é essa?" e eu disse: "É algum tipo de fruta", qual seria sua reação?
Raphael
11
"Existe um nome para o problema de cobrir um conjunto com uma quantidade fixa de outros conjuntos?" talvez? Bem, eu perguntaria "Existe um nome para Set Cover com tamanho de solução fixo?" mas como você aparentemente não sabia sobre o Set Cover, isso não faria sentido.
Raphael
@ Rafael Eu acredito que é o contrário; Entrego uma fruta e pergunto o que é. Você me diz que é "algum tipo de maçã" ou (mais provável) que "provavelmente cresce na árvore". Você não respondeu minha pergunta, mas talvez isso possa me ajudar de alguma forma - portanto, um comentário, não uma resposta. Pior: acabei de publicar um comentário inútil. Um caso um pouco realista: alguém aprende algo novo.
precisa saber é o seguinte

Respostas:

6

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 :

Como entrada, você recebe vários conjuntos e um número k . Os conjuntos podem ter alguns elementos em comum. Você deve selecionar no máximo k desses conjuntos para que o número máximo de elementos seja coberto, ou seja, a união dos conjuntos selecionados tenha tamanho máximo.

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.

Soeholm
fonte
Acertou em cheio. Bem vindo ao site!
David Richerby
2

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.

Rafael
fonte
Você não precisa ignorar os falantes nativos: cada pessoa de interesse tem uma lista dos idiomas que eles falam e um deles é presumivelmente o idioma nativo. Além disso, você parece estar otimizando no sentido oposto ao que a pergunta faz. Você está respondendo à pergunta: "Qual é o menor número de traduções que permitirá que todos entendam?"; a pergunta é "Eu tenho um orçamento de tradução fixo: em quais idiomas devo traduzir para maximizar o número de pessoas que podem entender?"
David Richerby
2
Na verdade, isso ainda dá uma prova mais simples de dureza NP do que a minha. Você pode resolver a cobertura do conjunto usando a pesquisa binária para encontrar o valor mínimo dek(o número de traduções realizadas), de modo que o conjunto de pessoas atingido seja todo mundo.
David Richerby
@DavidRicherby eu quis dizer leitores . Isso permanece implícito na pergunta, mas, a partir da descrição que reuni, teríamos dados sobre quantas pessoas podem entender qual idioma, precisamente para otimizar como você declara. Eu aparentemente formulado de uma maneira fácil de entender mal?
Raphael
@DavidRicherby Pode ser que não possamos alcançar todos dentro do orçamento, o que é obviamente o caso interessante. É aí que o problema diverge da Set Cover simples.
Raphael