Existem muitos exemplos matemáticos aqui, mas você queria um exemplo do mundo real , então, com um pouco de reflexão, este é possivelmente o melhor que posso oferecer:
Você encontra uma pessoa que contraiu uma determinada infecção contagiosa, que não é fatal, e se corrige rapidamente (Tipo A), exceto uma em cada 5 pessoas (chamaremos de tipo B) que se infectou permanentemente com ela e não mostra sintomas e apenas atua como um propagador.
Isso cria ondas de destruição bastante irritantes sempre que o tipo B infecta uma multidão de tipo A.
Sua tarefa é rastrear todos os tipos B e imunizá-los para interromper a espinha dorsal da doença. Infelizmente, você não pode administrar uma cura nacional para todos, porque as pessoas que são do tipo A também são mortalmente alérgicas à cura que funciona para o tipo B.
A forma como você faria isso, seria a descoberta social, dado uma pessoa infectada (Tipo A), escolher todos os seus contatos na última semana, marcando cada contato em um heap. Quando você testa uma pessoa infectada, adicione-a à fila de "acompanhamento". Quando uma pessoa é do tipo B, adicione-a ao "acompanhamento" na cabeça (porque você deseja interromper isso rapidamente).
Depois de processar uma determinada pessoa, selecione a pessoa na frente da fila e aplique a imunização, se necessário. Obtenha todos os seus contatos não visitados anteriormente e, em seguida, teste para ver se eles estão infectados.
Repita até que a fila de pessoas infectadas chegue a 0 e aguarde outro surto.
(Ok, isso é um pouco iterativo, mas é uma maneira iterativa de resolver um problema recursivo, neste caso, a primeira travessia de uma base populacional tentando descobrir caminhos prováveis para os problemas e, além disso, as soluções iterativas são frequentemente mais rápidas e eficazes , e eu compulsivamente removo a recursão em todos os lugares a ponto de se tornar instintivo. ... droga!)