ŁSławiński

 

16 IX 2001

JUSTYCJA  czyli  Kto tak naprawdę za­grał lepiej ?

Większość turniejów w brydżu (i nie tylko w brydżu) rozgrywana jest systemem „każdy z każ­dym”, a jeśli nie można tego osiągnąć, to – „każdy z niemal każdym” (np w turnieju par to „niemal” wynosi zazwy­czaj po­łowę wszystkich par).

   Choć system ten wydaje się bardzo spra­wiedliwy, ma jednak bardzo istotny man­kament sportowy – zwycięstwo nad słabym przeciwnikiem ma tę samą wartość co zwy­cięstwo nad silnym !  W efekcie para, która z czołówką osiągnie wy­niki raczej mierne, może nadro­bić to z nawiązką dzięki wyso­kiemu ograniu przeciwników słabszych – i zarobić na nich tyle, że w sumarycznym wyniku zdobędzie miej­sce wcale wyso­kie (a może nawet i pierwsze).

W szachach występuje problem „re­misów arcy­mistrzowskich”. Arcymi­strzowie postanawiają nie męczyć się wzajem­nie, lecz zremisować, a potrzebne punkty zdo­być na słab­szych prze­ciw­nikach.  Próbuje się wyrugować to poprzez punktowanie wy­granej 3:0, a remisu 1:1.

Spróbujmy to skorygować po­przez prze­mnożenie każdego poje­dynczego wyniku przez współczyn­nik „siły gry” prze­ciwników = koń­cowej sumie punktów przez nich zdo­bytych.

Turniej teamów

Niech 4 drużyny brydżowe roz­grywają tur­niej systemem „każdy z każ­dym”, a w każ­dym meczu niech będzie do po­działu 10 punktów zwy­cięskich (VP):

 

A

B

C

D

Σ

Pierwsze miejsce dru­żyny A wy­daje się nie­zasłużone, ponieważ:

• zdobyła je tylko dzięki maxy­mal­nym wy­gra­nym z outsi­de­rami

• ma nad dru­żyną B prze­wagę bar­dzo skromną

• prze­grała 4:6 z dru­żyną B.

A

 

4

10

10

24

B

6

 

9

8

23

C

0

1

 

9

10

D

0

2

1

 

3

Przemnóżmy teraz każdy wynik przez siłę przeciwnika równą sumie zdoby­tych przez niego punktów, a otrzy­mamy:

 

A

B

C

D

Σ

Drużyna B awansowała na pierw­sze miejsce.

I chyba słusznie. 

 

Awans D budzi wąt­pliwość, bo przegrała z C aż 1:9.

Jednak „wygrała” ciut wyżej z bardzo silną drużyną B, a to jest być może więcej warte niż wysoka przegrana z C.

A

 

4٠23

10٠10

10٠3

222

B

6٠24

 

9٠10

 8٠3

258

C

24

23

 

 3

50

D

24

23

10

 

56

Trzeba przyznać, że w rozgrywkach ligowych taki system ko­rekty wy­ni­ków budziłby silne zdenerwowanie wielu drużyn. Każda wygrana mo­głaby ulec deprecja­cji; nie można by spo­koj­nie ciułać punktów przez cały sezon, lecz trzeba by nieustannie się wysilać. Ale chyba wła­śnie taka po­winna być punktacja spor­towa.

Inne turnieje (par, indywi­dualne – wszystko jedno czy na maxy czy na impy)

„Justycjujemy” analogicznie jak uprzednio.

Przy okazji osiągnie się to, że bardziej bę­dzie się opłacać do­bra gra do samego końca.

Jest bowiem możliwe, że ci któ­rych uda się wysoko ograć zdobędą wysokie wyniki suma­ryczne.

Turniej 4 par – domowy duplikat

Chyba niesposób zastoso­wać justycję.

Turniej 4 graczy – „dupli­kat” na Zapis Miltonowy

Chyba niesposób zastoso­wać justycję.

 

Jak wytestować ju­stycję ?

Można sprawdzić jak zmienią się wyniki w Drużynowych Mistrzo­stwach Polski

A nuż okaże się, że awansowaliby­śmy do ligi wyższej !?

Można sprawdzić jak zmienią się wyniki w Mistrzostwach Europy 2001

A nuż okaże się, że Po­lacy zdobyliby miejsce wyższe !?

Po Ju­stycji DME 1995 (32 dru­żyny) w czo­łówce za­mie­niły się miej­scami dru­żyny 3 i 4 oraz 5 i 6. Pol­ska (5) spa­dła o jedno miej­sce.   ( 15 X 2001 )

Można wstawić w programie KOPS opcję obliczania wy­ników „zjustycjowa­nych”.

 

Tematy pokrewne:

Pikier 3 – Jak grali pol­scy za­wodnicy w Olim­pia­dzie1980

Pikier 6 – System Czwór­kowy

Jak grali polscy za­wod­nicy w DME 1995

 

KONTYNUACJA     

Ł.S.

26 IX 2001

Justycja wzbudziła pewne zaintereso­wanie. A oto po­ruszone kwestie:

 Dlaczego to ma się nazy­wać „justy­cją”?  Czy nie le­piej nazwać to jakimiś punktami ?

Nie upieram się przy nazwie „justycja” (czyli „sprawiedli­wość”), ale nie przyszło mi do głowy nic lepszego. Ładny i trafny byłby termin „uspra­wiedliwianie” w zna­czeniu „czynienie wyników bar­dziej spra­wiedliwymi”, lecz niestety „usprawiedli­wianie” nabrało innego zna­czenia.

Natomiast propozycja nazwa­nia tego „ja­kimiś” punktami jest chy­biona, bo justycja może być za­stosowana przy różnych punktowa­niach, jest więc kategorią wyż­szego rzędu niż punkty.

 

Jakim cudem można za­stosować ju­stycję w turnieju na impy, skoro będą wyniki ujemne?

Rzeczywiście – nie można ! (łatwo spraw­dzić, że dochodzi wówczas do absur­dów).

Nie pozostaje więc nic innego jak przeli­czyć wynik każdego poje­dynku na VP (Victory Po­ints = Punkty Zwycięskie). Wprawdzie w ta­belach VP nie przewi­dziano (zdaje się) poje­dynków krót­szych niż 8 roz­dań, ale można to przecież uzu­pełnić (ewentualnie zasto­sować bardzo przyjemną punktację Pattona).                    Nowa wersja VP: patrz Viktorki

 

Skoro justycja ma być tak dobra, to dlaczego nie za­stosować jej dwukrot­nie !?

A jeśli dwukrotnie, to dlaczego nie trzy­krotnie, czterokrotnie itd... Warto to zba­dać.

A oto próba dla początkowego przykła­dowego turnieju:

 

 

 

 

 

 

  ΣΣ w %% po kolejnych justycjach    (0=wyniki przed justycją)

 

A

B

C

D

Σ

0

1

2

3

4

5

6

7

8

9..

A

 

4

10

10

24

40.00

37.88

34.55

35.74

36.31

36.35

36.36

36.26

36.36

36.36

B

6

 

9

8

23

38.33

44.03

42.95

38.24

36.64

36.42

36.38

36.37

36.37

36.36

C

0

1

 

9

10

16.67

8.53

8.46

9.09

9.23

9.18

9.14

9.12

9.10

9.09

D

0

2

1

 

3

5.00

9.56

14.05

16.92

17.83

18.05

18.12

18.15

18.17

18.18

Dalsze justycje już niczego nie zmieniają (wyniki są „ustabili­zowane”).

Czy zawsze dojdzie do „stabili­zacji” ? Może ktoś to rozstrzy­gnie.

Dla kilku innych turniejów okazało się, że zawsze docho­dzi do stabi­lizacji i zawsze otrzymujemy wyniki ex equo (bądź prawie ex equo) dla 2, 3 a nawet wszystkich 4 drużyn ! Czyżby tak miała wyglądać sprawiedliwość ostateczna ? A co będzie gdy w dużym tur­nieju aż połowa przyjdzie ex equo? Perspektywa nieco nie­pokojąca – należy to wnikliwie przemyśleć.

W każdym razie wyniki po jed­nej justycji wydają się sen­sowne i sprawiedliwsze niż przed !

(jeśli tylko uznajemy warto­ściowanie wy­ników ze względu na klasę przeciwni­ków)

 

Sprostowanie:   turniej 4 par (na dwa stoły) bądź 4 graczy (przy jednym stole)

Pomyliłem się !  MOŻNA sto­sować justycję (i chyba warto).

 

A jednak jest para­dox !

22 IX 2002

Wstawiłem kwestię justycji do grupy dys­kusyjnej „Matema­tyka” (Onet.pl), lecz bez­owocnie

(nic zresztą dziwnego, bo nie jest to pro­blem „podręczni­kowy”).

Sam zwojowałem tylko tyle, że wykryłem sprzeczność !

Turniej:

 

A

B

Σ

po ju­sty­cji staje się taki:

 

A

B

Σ

zrobiło się

ex equo !

A

 

6

6

A

 

6٠4

24

B

4

 

4

B

6

 

24

Można by to potraktować jako szczególny przypadek try­wialny, gdyby nie:

 

A

B

C

Σ

drużyna A

jest bez­apela­cyj­nie naj­lepsza,

a po ju­stycji:

 

A

B

C

Σ

spada na

drugie miejsce!

A

 

5

10

15

A

 

5٠14

10٠1

80

B

5

 

9

14

B

15

 

1

84

C

0

1

 

1

C

15

14

 

14

Ponieważ z łatwością można rozszerzyć powyższy paradox na 4 dru­żyny (i najpraw­dopo­dobniej na każde więcej niż 4), ozna­cza to że:  Za­proponowany algorytm justy­cji był błędny !

Być może sensowna jest na­stępująca po­prawka algorytmu:

Punkty zdobyte w meczu mno­żymy nie przez całe saldo prze­ciwników,

ale przez saldo pomniejszone o ich wynik w tym właśnie meczu.

a być może wszelki algorytm justycji pro­wadzi do paradoxu !!?

Czy znajdzie się ktoś, kto po­może to roz­strzygnąć ?

Errare Pikieranum est.

W pierwszej wersji Viktorek też znalazł się pomysł błędny, a wykazanie błęd­ności

(nb wcale nie od razu ją zro­zumia­łem) nastąpiło dzięki Konradowi Ciborowskiemu.

Problem justycji jest intrygujący właśnie ze sportowego punktu widze­nia !

W dużym turnieju para która nie potrafi ograć przeciwników o poziomie przyzwo­itym, może odnieść sukces dzięki nasta­wieniu swych metod na prze­ciwników sła­bych. Wprawdzie para silna powinna niby dosto­sowywać swój sposób gry do po­ziomu przeciwników, ale:

1///)           specjalizacja w ogrywaniu słabych manie­ruje i marno­trawi umiejętno­ści sil­nych,

2///)           poziom gry jest zmienny ! para która uchodziła dotąd za słabą, aku­rat w tym tur­nieju może grać o dwie klasy lepiej, a o tym że stała się silna niesposób prze­konać się przed zakończeniem tur­nieju.

Nie zapobiegają temu całkowi­cie rozgrywki wieloszczeblowe, bo za­zwyczaj liczba uczestni­ków na danym szczeblu jest często wcale nie­mała, a i po­ziom nie jest często dostatecz­nie wyrównany.

Pozatem organizowanie ich jest bardziej kłopotliwe i trwają dłu­żej.

 

 

Fatamorgana !!?

5 XII 2002

Nie mogąc doczekać się znikąd pomocy, zabrałem się w końcu za wni­kliwsze wejrze­nie w Ju­stycję.

Ułożyłem programik (dla kom­putera, oczy­wiście), który kory­gował wy­nik pojedynku dwóch drużyn w zależności od ich (tj tych drużyn) wyni­ków suma­rycznych.

Ilustracja:

Drużyna A zdobyła osta­tecznie w tur­nieju 40% moż­liwych do zdoby­cia punk­tów, a B – 70%.

Mecz A:B zakończył się wy­nikiem 60:40 Viktorek (w skali 100 stop­niowej).

Modyfikujemy wynik na ko­rzyść A, po­nieważ drużyna B okazała się silniejsza, np na 64:36.

(zauważmy że Justycja okazuje się handicapem udzielanym a poste­riori!).

Dla kilku w miarę sensownych metod mody­fikacji (z różnymi indykato­rami) okazało się jed­nak że:

Kolejność końcowa nie ulega zmia­nie, a jedynie łagodzą się róż­nice.

Tak więc Justycja okazuje się majakiem ! a po zastanowieniu się do­chodzimy do wnio­sku, że można było tego się spodzie­wać. Po zakoń­czeniu turnieju cofamy się w czasie, aby zmie­nić teraźniejszość ! A czas nie tole­ruje paradoksów.

 

A jednak coś z tego wyszło !

17 XI 2003

Majak majakiem, ale mimo iż rok upłynął, problem justycji nie dawał mi spokoju.

Przypominam przykładowy tur­niej teamów:

 

A

B

C

D

Σ

Pierwsze miejsce dru­żyny A wy­daje się nie­zasłu­żone, ponie­waż:

• zdobyła je głównie dzięki maxymal­nym wy­gra­nym z out­side­rami

• ma nad drużyną B prze­wagę bardzo skromną

• prze­grała 4:6 z dru­żyną B.

A

 

4

10

10

24

B

6

 

9

8

23

C

0

1

 

9

10

D

0

2

1

 

3

Po zakończeniu turnieju (nie­stety, dopiero po) okazuje się, że niektóre mecze były bardziej ważne, a inne mniej. Np mecz mię­dzy C a D był mało ważny, bo obie drużyny okazały się bardzo słabe, mecz A prze­ciwko B był ważniejszy niż przeciwko C, itp.

Jak mierzyć ważność meczu ?

Otóż dość sensowną miarą jest iloczyn sił obu drużyn (patrz np Prawo Powszechnej Atrakcji).

Wynik meczu należy więc po­mnożyć nie tylko przez siłę przeciwnika, ale także przez własną !

 

A

B

C

D

Σ

Zgodnie z in­tu­icyjnym oczeki­waniem drużyna B wyszła na prowadzenie.

Punkty zdo­byte przez A okazały się w  sumie mniej warto­ściowe niż punkty B.

A

 

23٠24

10٠10٠24

10٠3٠24

5328

B

24٠23

 

10٠23

 3٠23

5934

C

24٠10

23٠10

 

 3٠10

500

D

24٠3

23٠3

10٠3

 

168

Aby powyższa tabelka była czy­telniejsza, przeskalujmy liczby do bar­dziej familiar­nych wymia­rów – przemnóżmy je przez taki współczynnik, by suma wyni­ków wynosiła – jak poprzednio – 60 viktorek.

Po zaokrągleniu do całości, otrzymujemy:

 

A

B

C

D

Σ

Jak widać, suma viktorek rozdzielo­nych za mecz mię­dzy drużyny nie jest już stale równa 10, lecz zależy od ważności meczu !

Np za mecz A z B rozdzielamy aż 28, podczas gdy za C z D tylko 1.

I – ważne ! – pro­porcja rozdziela­nych viktorek nie ulega zmianie ! 

Np 11:17 w meczu A z B to identyczna proporcja co wcze­śniejsze 4:6.

A

 

11

12

4

27 

B

17

 

10

3

30 

C

0

1

 

1

D

0

1

0

 

Wygląda na to, że taka justycja­lizacja jest już dobra !

Drużyna D nie awansowała w tym turnieju na 3 miejsce (awans ten bu­dził wcześniej wątpliwość), a oba wyszczegól­nione wcze­śniej paradoxy teraz nie zachodzą (kto nie wierzy, niech sprawdzi).

I – co najważniejsze – metoda wydaje się bardziej logiczna.

A oto co zmienia justycjalizacja w Elimina­cjach Bermuda Bowl 2003 (22 drużyny):

– zamieniają się miejscami drużyny 6 (Australia) i 7 (Bułgaria)s

– zamieniają się miejscami drużyny 8 (USA2) i 9 (Ka­nada).

Druga zamiana byłaby istotna, bo do Ćwierćfinałów awan­so­wało akurat 8 drużyn.

Po przyjrzeniu się tabeli krzy­żowej widać, że rzeczy­wiście – USA2 le­piej się spisywała przeciwko druży­nom słab­szym, a gorzej przeciwko sil­niejszym, niż Kanada.

To że zmiany są niewielkie jest w tak dużym turnieju całkiem zro­zumiałe (staty­styka!).

Stopniowanie justycjali­zacji

Czy wpływ siły drużyn był uwzględniony w dostatecznym stopniu ? A może w zbyt du­żym ?

Wprowadźmy parametr X okre­ślający sto­pień justycjalizacji – im więk­sze X tym sil­niejsza –

a wynik każdego meczu mnóżmy przez jego ważność podniesioną do potęgi X

(dla X = 0 – nie będzie justycjaliza­cji, dla X = 1 – będzie to co robili­śmy dotąd).

Im większe X, tym bardziej bę­dzie wzrastać przewaga me­czów ważniej­szych nad mniej ważnymi.

A oto ilustracja:

X = 0.2

X = 0.7

X = 1

X = 2

 

A

B

C

D

Σ

 

 

A

B

C

D

Σ

 

 

A

B

C

D

Σ

 

 

A

B

C

D

Σ

A

 

5

11

9

25

 

A

 

9

12

5

27 

 

A

 

11

12

4

27 

 

A

 

17

8

1

26

B

8

 

10

7

25

 

B

13

 

11

4

28 

 

B

17

 

10

3

30 

 

B

26

 

7

1

34

C

0

1

 

7

8

 

C

0

1

 

3

 

C

0

1

 

1

 

C

0

1

 

0

1

D

0

2

1

 

3

 

D

0

1

0

 

 

D

0

1

0

 

 

D

0

0

0

 

0

W naszym Turnieju Wzorco­wym drużyna B awansuje na pierwsze miejsce po­cząwszy od X = 0,32,

a w Eliminacjach Bermuda Bowl 2003 obie wspomniane zamiany miejsc poja­wiają się od X = 0,64.

Stopniowe zwiększanie X co­raz silniej zmiany te uwypu­kla.

Czy istnieje jakaś optymalna wartość dla X, czy też należy ją obierać arbitralnie ?

Na razie nie wiadomo, ale naj­prostsze dla obliczeń ręcznych X = 1 wy­daje się całkiem roz­sądne !


Dodajmy na koniec że:

1) Justycjalizacja znacznie re­dukuje skutki „podkładania się” przez tych co źle „idą”, 
bowiem ich przegrana da przeciwnikom znacznie mniej viktorek niż „normal­nie”.

2) Justycjalizację można zasto­sować w tur­nieju na maxy bądź impy
(nawet w turnieju jednostoli­kowym (oczywi­ście na Zapis Miltonowy))

3) i w ogóle w jakimkowiek tur­nieju – nieko­niecznie bry­dżowym.

Uwaga ! Lapsus:

W turnieju jednostoliko­wym (4 graczy, 3 poje­dynki) justycjalizacja jest jałowa, ponieważ wynik każdego pojedynku mnoży się przez to samo (iloczyn wy­ników wszyst­kich czterech graczy).

16 IV 2007

I ostatni PROBLEM:  Czy justy­cjalizacja jest sprawiedliwa ?

ODPOWIEDŹ:  Tak samo jak impy i maxy !


Pod program.pas jest tekst prowizorycz­nego programu komputero­wego do li­czenia justycjalizacji.

Jest to tekst źródłowy (pas) napisany w Turbo Pascalu pod DOS, wy­maga więc po­siadania translatora.

Można go użyć do każdego turnieju, na­wet szachowego i przekonać się czy i co się zmieni.

 

Rozdzielanie na­gród wg wyników justycjaliza­cji !

10 X 2006   

Tak, może właśnie tak powi­nien być roz­dzielany fundusz nagród.

Rozdzielanie nagród wg zaję­tego miejsca sprzeczne jest z naturą brydża, a rozdzie­lanie wg uzy­skanego salda (  Nagrody ) jest z kolei mało atrakcyjne, jako że na­grody są wówczas nieznaczne.


3 V 2008    

Oto przykłady justycjalizacji dla najmniej­szego możliwego tur­nieju:

 

A

B

C

Σ

Σ

 

 

A

B

C

Σ

Σ

 

 

A

B

C

Σ

Σ

 

A

 

4

10

14

12.7

 

A

 

4

10

14

13.2

 

A

 

4

10

14

13.6

 

B

6

 

8

14

16.7

 

B

6

 

7

13

16.1

 

B

6

 

6

12

14.3

 

C

0

2

 

2

0.7

 

C

0

3

 

3

0.7

 

C

0

4

 

4

2.1

 

W przykładzie 1 i bez justycjali­zacji uzna­jemy zwycięstwo B na zasa­dzie, że przy identycznym wy­niku sumarycznym de­cy­duje wynik poje­dynku bezpośred­niego. Jest to jednak zwyczaj „zdroworoz­sąd­kowy”, nie po­party liczbowo, i dopiero justy­cjalizacja nadaje mu uzasad­nienie ilo­ściowe. Za­uważmy że może się zdarzyć iż bezpo­średni pojedynek był remisowy, a wówczas „zdroworozsąd­kowe” roz­strzy­g­nięcie kto jest zwycięzcą może być bardzo kłopotliwe.

Przykład 3 pokazuje, że zwy­cięzcą można zostać mając wy­nik suma­ryczny nawet o 2 mniejszy, co w tak małym tur­nieju wyda­wałoby się in­tuicyj­nie niemożliwe.

Niestety, jak dotąd niema uza­sadnienia dla tej (czy innej) ju­stycjalizacji na gruncie pro­ba­bilistyki i teo­rii gier. Zauważmy jednak że dla tradycyj­nego ustalania kolejności (wg wyni­ków sumarycznych) też nie ma ta­kiego uza­sad­nie­nia – po pro­stu traktuje się je jako oczywi­ste.

Czy słusznie?

Jeśli potraktujemy turniej, dajmy na to te­amów, jako zbiór pojedynków na pieniądze (wy­grywa się kwotę proporcjonalną do róż­nicy viktorek, czyli od­wrotnie proporcjo­nalną do szansy przypadko­wego osią­gnię­cia takiego wyniku), to żadna justycjalizacja nie jest oczywiście potrzebna – po każ­dym pojedynku następuje rozli­czenie (i nawet nie jest istotne czy wszystkie pojedynki się odbyły!). Jednak w turniejach walczy się zazwyczaj o nagrody kolejnościowe (pie­niężne bądź w postaci awan­su do rozgry­wek wyższych), a w takim przypadku zwykłe sumowanie wy­ników budzi już wątpliwości.

Jest więc prawdopodobne, że to właśnie justycjalizacja po­prawnie sze­reguje graczy wg siły gry !

Stąd smutna konkluzja:

Turnieje których celem jest uszeregowanie uczestników wg siły gry były i są liczone błędnie !

Każdy taki turniej powinien być dodatkowo skorygowany wg Justycja­lizacji!

To jeszcze nie koniec wątliwo­ści ! patrz  Nie wszystkie...

 

Finał (?)

25 V 2008

Zacząłem borykać się z justy­cjalizacją nie­mal 8 lat temu (po­stawienie problemu). Do­piero po 3 latach znalaz­łem poprawne prze­kształcenie „justycjalizu­jące”. Nie zaznałem jed­nak spokoju – męczył mnie nie­ustannie brak uzasadnienia probabilistycznego – niestety, wszelkie podejścia zakończyły się fia­skiem. Dopiero ostatnio uświadomiłem so­bie, że „kla­syczne” ustalenie kolejności (wg zsumowa­nych wyników) też nie ma uzasadnienia (!), i co gorsza – nie uwzględnia siły gry wy­kazanej przez gra­czy. Te­raz już jestem spokojny: wszystko się wyja­śniło – justy­cjalizacja jest dobra !

3 V 2012

Co do uzasadnienia, to zauważmy że uznana i stosowana Metoda Najmniejszych Kwadratów też nie ma uzasadnienia – stosuje się ją z uwagi na prostotę i brak miernika wyraziście lepszego.

Innowacje

Co no­wego... 

do Spisu

16 Wrze­śnia 2001

redakcja@pikier.com

© Pikier.com

brydż, brydz, bridge, brydż sportowy, brydz sportowy, bridge sportowy, Pikier, Sławiński, Slawinski, Łukasz Sławiński, Lukasz Slawinski,

Nie Kartagina lecz Ograniczenia Systemowe muszą zostać znisz­czone !

28 V 2017  przeliczanie viktorek na siłę gry

             = 1+ pierwiastekkwadratowy(v+1)           = 1 + logarytm(v+1)                

           chyba funkcję należałoby dobrać wg prawdopodobieństwa danej wygranej

PROGRAM

PROGRAM  justycja;   {$E+,N+}    { Turbo Pascal, DOS }

USES  crt;

PROCEDURE  WaitKey( s :string );  { do wstrzymywania wy­świetlania }

var  Ch :char;

begin

   WriteLn( s );

   Ch:=ReadKey;

end;

{ Przykład Pierwotny }

const

   N = 4;

   MaxV = 10;

   Tab :array[ 1..N, 1..N+2 ] of extended = (

        (  0, 4, 10, 10, 0, 24 ),

        (  6, 0,  9,  8, 0, 23 ),

        (  0, 1,  0,  9, 0, 10 ),

        (  0, 2,  1,  0, 0,  3 ) );

{ Objaśnienia:

   N = ilość drużyn

   Tab = tabela krzyżowa wy­ników me­czów:  [ i, j ] = punkty zdo­byte przez i w meczu z j

   kolumna N + 2 = suma wy­ników dru­żyny i

   kolumna N + 1 = extra (?) kara/wyrównanie – na razie zakłada się same 0 }

{ Eliminacje Bermuda Bowl 2003  uwaga! obcięcie wy­granej do max 25 VP }

{

const

   MaxV = 25;

   N = 22;

   Tab :array[ 1..N, 1..N+2 ] of extended = (

(00,6,11,14,15,18,15,17,19,25,16,24,23,25,21,25,23,15,19,25,25,24,0,405),

(24,00,17,18,23,17,15,20.5,7,12,21,21,21,23,16,15,20,15,18,23,14,25,0,385.5),

(19,13,00,11,6.5,17,24,17,19,17,25,12,14,17,18,11,16,21,23,23,24,24,0,371.5),

(16,11,19,00,16,15,17,24,14,19,11,17,25,8,18,18,19,24,12,11,25,25,0,364),

(15,7,22.5,14,00,15,10,14,18,21,16,11,13,21,16,14,22,25,25,17,15,25,0,356.5),

(12,13,13,15,15,00,15,16.5,3,20,25,10,21,16,24,23,25,19,16,9,20,21,0,351.5),

(15,15,6,13,20,15,00,20,18,23,10,11,23,10,23,20,22,14,16,16,16,25,0,351),

(13,8.5,13,6,16,12.5,10,00,5,22,18,23,20,3,22,25,21,15,14,23,24,25,0,339),

(11,23,11,16,12,25,12,25,00,4,15,17,13,18,19,15,16,22,17,14,25,8,0,338),

(3,18,13,11,9,10,7,8,25,00,16.5,17,7,23,17,14,21,25,19,24,17,19,0,323.5),

(14,9,3,19,14,5,20,12,15,13,00,9,10,21,17,24,15,22,13,19,21,23,0,318),

(6,9,18,13,19,20,19,7,13,13,21,00,24,17,14,22,4,13,17,8,18,14,0,309),

(7,9,15,3,17,9,7,10,17,23,20,6,00,17,14,15,15,15,18,21,25,22,0,305),

(5,7,13,22,9,14,20,25,12,7,9,13,13,00,19,16,15,7,15,19,11,25,0,296),

(9,14,12,12,14,6,7,8,11,13,13,16,16,11,00,7,18,25,25,21,13,17,0,288),

(5,15,19,12,16,7,10,5,15,16,6,8,15,14,23,00,19,6,20,16,23,12,0,282),

(7,10,14,11,8,2,8,9,14,9,15,25,15,15,12,11,00,21,24,9,15,24,0,278),

(15,15,9,6,5,11,16,15,8,2,8,17,15,23,3,24,9,00,15,20,13,25,0,274),

(11,12,7,18,4,14,14,16,13,11,17,13,12,15,0,10,6,15,00,16,22,25,0,271),

(5,7,7,19,13,21,14,7,16,6,11,22,9,11,9,14,21,10,14,00,14,20,0,270),

(3,17,6,2,12,10,14,6,4,13,9,12,3,19,17,7,15,17,8,16,00,22,0,232),

(6,3,6,0,5,9,5,0,22,11,7,16,8,3,13,18,6,0,5,10,8,00,0,161) );

}

PROCEDURE  Pokaz;

var

  i,j :integer;

begin

   FOR  i:=1 to N  do begin

     Write( '  ', i:2, ') ' );

     FOR  j:=1 to N  do

       IF  i = j  then

         Write( '    ****')

       ELSE

         Write( Tab[i,j]:8:2 );

     Write( Tab[i,N+2]:8:2 );

     WriteLn;

     end;

  WriteLn('========================================================');

end;

PROCEDURE  PokazSum;

var

  i :integer;

begin

   FOR  i:=1 to N  do begin

     Write( '  ', i:2, ') ' );

     WriteLn( Tab[i,N+2]:8:2 );

     end;

  WriteLn('========================================================');

end;

PROCEDURE  Justycjalizuj( x :extended);

var

   i,j :integer;

   w, wi, wj, s, pss, ss :extended;

begin

{ Kontrola }

   pss:=0;

   FOR  i:=1 to N  do begin

     IF  Tab[ i, i ] <> 0  then begin

        WriteLn( 'Element [ ', i, ', ', i, ' ]  różny od 0'  );

        WaitKey( 'ERROR !!!' );

        HALT;

        end;

     s:=0;

     FOR  j:=1 to N+1  do be­gin

        s:=s + Tab[ i,j ];

        IF  Tab[ i, j ] > MaxV  then begin

           WriteLn( 'Element [ ', i, ', ', j, ' ]  większy od ', MaxV   );

           WaitKey( 'ERROR !!!' );

           HALT;

           end;

        IF  Tab[ i, j ] < 0  then begin

           WriteLn( 'Element [ ', i, ', ', j, ' ]  mniejszy od 0'  );

           WaitKey( 'ERROR !!!' );

           HALT;

           end;

        end;

     IF  s <> Tab[ i, N+2 ]  then begin

        WriteLn( 'Niezgodna suma ', s:4:2, ' w wierszu ', i );

        WaitKey( 'ERROR !!!' );

        HALT;

        end;

     pss:=pss + s;

     end;

   Pokaz;

{ Normowanie: łączny wynik = ułamek maxymalnej sumy }

   FOR  i:=1 to N  do

     FOR   j:=1 to N+2 do

       Tab[ i, j ]:=Tab[ i, j ] / MaxV;

   Pokaz;

{ Justycjalizacja }

   FOR  i:=1 to N  do

     FOR  j:=1 to N  do

       IF  i <> j  then begin

          {pobranie}

          w:=Tab[ i, j ];

          wi:=Tab[ i, N+2 ];

          wj:=Tab[ j, N+2 ];

          Tab[ i, j ]:=w * exp( x * ln( wi * wj ) );

{  Inne możliwości mnożnika Wyniku:

    Mnożenie przez exp( Ważność * X ) – okazała się niewy­godne.

    Mnożenie przez exp( Ważność * Ln(X) ) – jest złe dla małych X. }

          end;

{ Obliczanie sum i sumy sum }

   ss:=0;

   FOR  i:=1 to N  do begin

      s:=0;

      FOR  j:=1 to N+1  do begin

        s:=s + Tab[ i, j ];

        end;

      Tab[ i, N + 2 ]:=s;

      ss:=ss + s;

      end;

{ Skalowanie do pierwotnej sumy sum }

  FOR  i:=1 to N  do

    FOR   j:=1 to N+2  do

      Tab[ i, j ]:=Tab[ i, j ]  * ( pss / ss );

  Pokaz;

end;

BEGIN

   ClrScr;

   Justycjalizuj( 1 );

   PokazSum;

   WaitKey('*** KONIEC ***');

END.

powrót