Jest tu wiele przykładów matematycznych, ale chciałeś mieć przykład z prawdziwego świata , więc przy odrobinie przemyślenia jest to prawdopodobnie najlepsze, co mogę zaoferować:
Znajdziesz osobę, która zaraziła się daną infekcją zakaźną, która nie jest śmiertelna i szybko ustępuje (typ A), z wyjątkiem jednej na 5 osób (nazwiemy to typ B), która zostaje trwale zakażona i nie wykazuje objawy i działa jedynie jako rozprzestrzenianie.
Powoduje to dość denerwujące fale spustoszenia, gdy kiedykolwiek typ B infekuje wiele typów A.
Twoim zadaniem jest wytropienie wszystkich typów B i uodpornienie ich, aby zatrzymać kręgosłup choroby. Niestety, nie możesz wszystkim podać ogólnokrajowego lekarstwa, ponieważ ludzie z typem A są również śmiertelnie uczuleni na lek, który działa na typ B.
Sposób, w jaki można to zrobić, polegałby na odkryciu społecznym, biorąc pod uwagę zarażoną osobę (typ A), wybranie wszystkich jej kontaktów w ostatnim tygodniu, zaznaczając każdy kontakt na stosie. Kiedy sprawdzasz, czy osoba jest zarażona, dodaj ją do kolejki „follow up”. Kiedy osoba jest typu B, dodaj ją do „kontynuacji” na początku (ponieważ chcesz to szybko zatrzymać).
Po przetworzeniu danej osoby należy wybrać osobę z przodu kolejki i w razie potrzeby zaszczepić. Zbierz wszystkie ich kontakty, które wcześniej nie były odwiedzane, a następnie przetestuj, czy są zainfekowane.
Powtarzaj, aż kolejka zarażonych osób osiągnie wartość 0, a następnie poczekaj na kolejną epidemię.
(Ok, jest to trochę iteracyjne, ale jest to iteracyjny sposób rozwiązywania problemu rekurencyjnego, w tym przypadku szerokość pierwszego przejścia bazy populacji próbującej odkryć prawdopodobne ścieżki problemów, a poza tym rozwiązania iteracyjne są często szybsze i skuteczniejsze i kompulsywnie usuwam rekursję wszędzie, tak bardzo, że stała się ona instynktowna. .... cholera!)