it-swarm.dev

NP concluído ou NP problemas difíceis na vida real

Alguém tem exemplos da vida real em que resolve regularmente problemas NP completos ou NP difíceis) (por heurística, ou perseguindo uma solução subótima ou o que seja) em seu trabalho? Sei que eles ocorrem no planejamento, planejamento, design do VLSI etc., mas estou tentando ter uma idéia das principais indústrias que hoje empregam programadores ou engenheiros que fazem isso regularmente: se alguém desenvolver experiência ou uma biblioteca, por exemplo, otimização combinatória, onde alguém poderia usar isso como parte de um trabalho de programação?

Alguma conta pessoal?

17
highBandWidth

Algumas das coisas em que consigo pensar (na maioria das quais estive envolvido mais ou menos):

  • Ambientes de desenvolvimento para idiomas e compiladores. Perguntas como: essa gramática gera uma linguagem ambígua? (Esse problema é realmente indecidível!)
  • Recuperação de dados. Remontagem de pacotes de dados parcialmente perdidos ou recuperação de arquivos fragmentados. (Complexidade fatorial)
  • Segurança de software. Avaliação de todos os caminhos de execução possíveis por meio de um software para determinar se algum comportamento observado pode ser atribuído a ele. (Problema de parada?)
  • Logística. Otimizando o uso de transportes com base em pacotes para transporte, seu tamanho e para onde eles devem ir. (Pelo menos exponencial)

Existem muitos exemplos padrão, como encontrar a rota mais curta, a programação da enfermeira, etc.

8
Deckard

Utilizei o recozimento simulado com restrição de tempo para resolver um problema de vendedor ambulante na fabricação de painéis de toque. A cada milissegundo que podíamos barbear a partir do tempo de ciclo da gravação a laser de cada painel aumentava a taxa de transferência, a utilização e, portanto, a lucratividade da máquina, por isso dediquei muito esforço à minimização do tempo morto (caminhos sem riscagem) entre os caminhos de riscagem (que obviamente não poderia ser otimizado).

Usei um algoritmo com limite de tempo para contornar a dureza NP do problema, pois não tínhamos o risco de o cálculo da otimização demorar mais que o tempo economizado pelo caminho mais otimizado). Enquanto a máquina estava movendo o painel da posição de carregamento para a posição em que a cabeça do laser estava no canto mais próximo, tive tempo de executar algumas simulações.O algoritmo quase nunca foi concluído dentro de algumas centenas de milissegundos de movimento, mas quase sempre retornava um caminho de escriba melhor do que qualquer um dos modelos simples e não adaptativos que sempre usamos antes (como caminhos em espiral ou cobra).

9
Mark Booth

Estou trabalhando (agora, na verdade) no problema de bioinformática do alinhamento de várias seqüências de DNA local. O ponto disso é que, se muitas seqüências de genes com alguma propriedade comum (perfil de expressão semelhante ou a mesma ligação do fator de transcrição em um experimento com chip ChIP) se alinham fortemente em algum momento, então você provavelmente já encontrou a razão de sua propriedade. Por outro lado, estou mais interessado nos aspectos estatísticos do problema. Mesmo que seja difícil para o NP, você não perde muito usando heurísticas na prática. A parte interessante do problema, IMHO, é um problema de relação sinal/ruído.

7
dsimcha

Eu realmente não sei, o que significa NP completo/difícil), mas acho que o planejamento automático de suprimentos é um tipo por essa.

Você tem um plano de demanda com 90 dias de antecedência para 100 SKUs de produtos: cerveja! O SKU de 100 produtos vem de:

  • há 10 a 15 tipos de material cru de base de nível 1, eles são fabricados em latas grandes de milésimos de litro e leva um dia;
  • após a fermentação, alguns materiais devem ser adicionados (fermento?) e devem ser repousados ​​por 10 a 15 dias; então, você tem de 15 a 20 tipos de coisas de nível 2;
  • finalmente, quando estiver pronto, alguns materiais devem ser adicionados, é o material de nível 3, chamado cerveja potável, aí está cc. 30 tipos de cervejas;
  • a cerveja pode ser engarrafada em 3 dl, 5 dl, às vezes recebe uma alça de pescoço especial (nível 4), depois pode ser embalada como caixa 5x4, embalagem de 6 unidades (nível 5).

Existem "linhas" de máquinas para cada operação: da fabricação de cerveja à embalagem. As máquinas podem executar mais operações, digamos, algumas máquinas de embalagem podem fabricar embalagens de 6 e 3 unidades, mas outras podem fazer apenas 6 unidades. Existem restrições, por exemplo velocidade, ou a chaleira grande é para preparar min. 6000, no máximo, 8000 l de cerveja (mas se o tipo de cerveja for leve, o mínimo é 5000 le o máximo é 7000 l). E assim por diante, em todos os níveis.

A tarefa: como mencionei, há um plano de demanda para o tipo 100 do nível 5 (o material engarrafado e empacotado). Faça um plano de fabricação ideal para todos os 5 níveis, todas as máquinas. Minimize as trocas de máquinas (por exemplo, engarrafar .5, .5, .5, .3, .3, .3 é melhor que .3, .5, .3, .5, .3, .5, há menos swithc, menos tempo morto para as máquinas de engarrafamento). Priorizar pelo cliente: alguns clientes precisam enviar a cerveja apenas com mais de 50% do tempo de validade restante. Etc etc.

Descubra gargalos (eh), faça planos alternativos adicionando máquinas inexistentes a esses pontos; então, o melhor cenário virtual pode ser usado para sugerir a compra de um novas máquinas.

Já é difícil o suficiente, ou devo dizer como uma fábrica de tecidos funciona?

(Observação pessoal: a web, o banco e a logística são áreas desafiadoras, mas são brinquedos para bebês em comparação com os problemas de fabricação.)

Isenção de responsabilidade: os números são distorcidos por motivos de segurança, a ordem de magnitude é real.

3
ern0