Wielu kibiców polskiej ligi zastanawia się kto zostanie mistrzem. Jedni ze 100% pewnością mówią, że to drużyna, której kibicują. Inny patrzą z niedowierzaniem na tabelę, na 2 kolejki przed końcem. Bo prawda jest taka, że 4 drużyny – oznaczmy je jako LP, LG, LW, JB – walczą o mistrzostwo oraz miejsce w pucharach. Jedna z drużyn pozostanie z niczym. Kolejna drużyna w kolejności ma taką stratę, że nie trzeba jej brać pod uwagę. Wskazane drużyny są obecnie ułożone w kolejności: LW, JB, LB, LG z dorobkiem punktowym odpowiednio: 40, 38, 38, 38. Jest to punkt wyjściowy do próby określenia szans wybranej drużyny na zwycięstwo. Kroki są opisane na poniższym diagramie.
Po określeniu punktu startowego, trzeba wygenerować wszystkie możliwe układy wyników w 2 kolejkach, z uwzględnieniem tego, że w pierwszej kolejce każda z drużyn walczy z drużyną spoza pierwszej czwórki, a w drugiej kolejce, walczą między sobą. Opieramy się tutaj tylko na wszystkich możliwych wynikach. Można to wygenerować następująco:
lp = 38 lw = 40 lg = 38 jb = 38 |
Określenie puntku startowego, poprzez określenie liczby punktów dla każdej z drużyn, przed kolejką. |
for lp1 in [3,1,0]: for lw1 in [3,1,0]: for lg1 in [3,1,0]: for jb1 in [3,1,0]: (…) |
Generowanie wszystkich możliwych rozstrzygnięć dla pierwszej kolejki, wybierając odpowiedni wynik dla każdej z drużyn. |
for lp2 in [3,1,0]: for lw2 in [3,1,0]: jb2 = wynikiodwr[lp2] lg2 = wynikiodwr[lw2] |
Generowanie dla każdego zestawu wyników z pierwszej kolejki, wszystkich możliwych rozstrzygnięć dla drugiej kolejki, wybierając odpowiedni wynik dla każdej z drużyn, z uwzględnieniem tego, że JB gra z LP oraz LG gra z LW. |
(lp1,lw1,lg1,jb1, lp2,lw2,lg2,jb2, lpk = lp+lp1+lp2, lwk =lw+lw1+lw2, lgk =lg+lg1+lg2, jbk = jb+jb1+jb2) |
Zebranie możliwe zestawu wyników dla 1 I 2 kolejki wraz z osiągniętą liczbą punktów na koniec. Taki rekord jest dodawany do określonej struktury danych – określmy ją jako Wyniki. |
Tym sposobem mamy 729 różnych rozstrzygnięć.
Teraz na bazie utworzonej struktury danych Wyniki możemy sprawdzić jakie rozstrzygnięcia powodują mistrzostwo określonej drużyny. Założmy, ze interesuje nas drużyna LP to wtedy możemy wyszukać wygenerowane pozycje, które spełniają na przykład warunek:
(Wyniki.lpk > Wyniki.lwk) & (Wyniki.lpk >= Wyniki.lgk) & (Wyniki.lpk > Wyniki.jbk)
Dla tego warunku mamy 91 rozstrzygnięć, co stanowi około 12,5% biorąc pod uwagę wszystkie wyniki bez uwzględnienia dotychczasowych rozstrzygnięć między drużynami grającymi w danej kolejce, statystyk, problemów drużyn, zmęczenia, kartek itp. Powyższy warunek nie uwzględnia tez innych relacji z ta samą liczbą punktów, które mogą powodować mistrzostwo określonej drużyny.
Powyższy przykład pokazuje, że pod określonymi krokami w procesie, kryją się określone działania w systemie lub wykonywane przez użytkownika. Wraz z diagramem mógłby być opis, który mniej lub bardziej technicznie pokazuje, na czym polega dany krok. Takie elementy jak powyżej można byłoby potraktować jako warstwę implementacyjną procesu.
Już w niedzielę okaże się, które z wygenerowanych wierszy można pominąć, skupiając się tylko na wynikach drugiej kolejki.