Jak rozgrywać turnieje tenisowe? Kamila Agnieszka Baten Kamila Agnieszka Baten Strona 1 008-10-16
ISTOTA PROBLEMU Będziemy zajmować się problemem, który został sformułowany w 199 roku przez prof. Hugona Steinhausa. Brzmi on następująco: Ile najmniej meczów tenisowych trzeba rozegrać, aby ustalić kto spośród zawodników zajął pierwsze, a kto drugie miejsce? Problem rozwiąŝemy posiłkując się matematyką, ale równieŝ współczesną informatyką teoretyczną. OZNACZENIA Zdefiniujmy: Relacja być lepszym tenisistą - ma własność przechodniości, jest teŝ antysymetryczna i spójna, zachodzi pomiędzy zawodnikami. Przyporządkujmy kaŝdemu zawodnikowi liczbę naturalną określającą jego umiejętności, im liczba większa tym zawodnik lepszy. Zawodnik - pojedynczy uczestnik turnieju, element listy startowej. Lista startowa - ciąg zawierający wszystkich zawodników, inaczej językiem informatycznym - tablica jednowymiarowa mieszcząca uporządkowany zbiór liczb naturalnych określających umiejętności zawodników. Mecz - pojedyncze porównanie umiejętności pary zawodników (porównanie wartości elementów listy startowej). Wygrywa lepszy. Runda - składowa turnieju, obejmuje: połączenie wszystkich zawodników w pary, mecze pomiędzy nimi i konsekwencje wyników tych meczów (kto odpada a kto przechodzi dalej te zasady są róŝne dla systemu naturalnego i zadania prof. Steinhausa). Pauzowanie - gdy liczba zawodników jest nieparzysta w danej rundzie to jeden zawodnik automatycznie zostaje dopuszczony do kolejnej rundy, kaŝdy zawodnik w całych zawodach moŝe pauzować tylko raz. Turniej to pojęcie obejmuje cały system wyłaniania zwycięzcy. Mistrz zwycięzca turnieju (najlepszy zawodnik spośród wszystkich startujących). Wicemistrz zawodnik zajmujący drugie miejsce w turnieju (zawodnik od którego lepszy jest tylko mistrz). ZAŁOśENIA Zakładamy, Ŝe przy porównaniu umiejętności dwóch dowolnych graczy zawsze jeden z nich jest lepszy (nie mogą być równie dobrymi graczami) i ten właśnie zwycięŝa w takim meczu. Nie bierzemy pod uwagę w turnieju Ŝadnych informacji poza wynikami poszczególnych meczów ( Np. wieku, doświadczenia itp. ). Kamila Agnieszka Baten Strona 008-10-16
SYSTEM NATURALNY IDEA Na początek rozwaŝymy prostszy problem, w którym interesować nas będzie tylko zwycięzca turnieju. Algorytm wyłaniania mistrza nazywamy systemem pucharowym, albo naturalnym. W systemie naturalnym w kaŝdej rundzie odpada z turnieju tylu zawodników ile było meczów, a do następnej rundy przechodzą wszyscy zwycięzcy i pauzujący gracz, jeŝeli liczba zawodników była nieparzysta. Turniej kończy się, gdy na placu boju pozostanie jeden zawodnik, który jest mistrzem. WNIOSEK: kaŝdy zawodnik oprócz mistrza musi co najmniej raz przegrać. SYSTEM NATURALNY ALGORYTM PoniŜej znajduje się algorytm wyłaniania zwycięzcy za pomocą systemu naturalnego zapisany w pseudokodzie. r := 1; lz 1 := n; while lz r > 1 do begin runda(lz r ); lz r+1 := lz r - lz r div ; r := r+1; end Oznaczenia: n liczba zawodników startująca w turnieju r numer rundy lz r liczba zawodników grających w r-tej rundzie lz r+1 liczba zawodników, która przeszła do (r+1)-szej rundy, w wyniku rundy r-tej runda(lz r ) procedura obejmująca wszystko co zachodzi w r-tej rundzie lz r div operator zwracający iloraz z dzielenia z resztą liczby zawodników przez dwa Uwaga matematycy! Zamiast: lz r+1 := lz r - lz r div moŝemy napisać: lz r+1 := lz r, gdzie operator realizuje doskonale nam znaną operację zaokrąglenia w górę do najbliŝszej liczby naturalnej (tzw. sufit ). Kamila Agnieszka Baten Strona 3 008-10-16
SYSTEM NATURALNY ANALIZA przechodzi W r-tej rundzie gra lz r zawodników, więc odbywa się lz r zawodników, a odpada lz r. lz r meczów, do następnej rundy Jw. wspomniałam osoba, która nie ma pary do meczu przechodzi automatycznie do następnej rundy, dlatego liczba zawodników mających moŝliwość dalszego uczestnictwa w turnieju moŝe być większa od ilości zawodników, którzy odpadają. Liczba rozegranych meczów podczas całego turnieju wynosi n-1. Dowód: uzasadnić to moŝna za pomocą indukcji matematycznej, wychodząc z tego, Ŝe przed r-tą rundą liczba juŝ rozegranych meczy wynosi n - lz r, po r-tej rundzie wynosi: n - lz r+1. Ponadto ta liczba rozegranych meczów jest optymalna. Dowód: naleŝy skorzystać z tego, Ŝe kaŝdy zawodnik oprócz mistrza musi raz przegrać i w kaŝdej rundzie kaŝdy zawodnik gra co najwyŝej jeden mecz. Liczba rund w turnieju wynosi: R = logn. Dowód: pokazać, Ŝe prawdziwe: n lzr 1 < lz, korzystając z: ( r lzr 1) < lzr 1< lzr lz r. Wychodząc z udowodnionej nierówności, po prostych przekształceniach otrzymasz: R 1 < log n R. Maksymalna liczba meczy rozegranych w turnieju przez jednego zawodnika równa się co najwyŝej liczbie rund, czyli jest mniejsza lub równa log n (tą liczbę osiągnąć moŝe tylko mistrz w sytuacji, gdy w całym turnieju ani razu nie pauzuje). ALGORYTM WYŁANIANIA WICEMISTRZA IDEA Mamy juŝ odpowiedź na pytanie: Ile najmniej meczów tenisowych trzeba rozegrać, aby ustalić mistrza turnieju? Liczba potrzebnych meczów jest o jeden mniejsza od liczby zawodników startujących w turnieju. Zastanówmy się nad wicemistrzem. Co się stanie jeśli w toku turnieju, jeszcze przed rundą finałową przyszły mistrz natrafi na gracza, któremu naleŝy się wicemistrzostwo? Taki zawodnik odpadnie z meczu i nie otrzyma Ŝadnej nagrody. Jak zapewnić temu uczestnikowi naleŝyte miejsce? Wracamy do problemu prof. Steinhausa: Ile najmniej meczów tenisowych trzeba rozegrać, aby ustalić kto spośród zawodników zajął pierwsze, a kto drugie miejsce? Kamila Agnieszka Baten Strona 4 008-10-16
ALGORYTM WYŁANIANIA WICEMISTRZA KOLEJNE PRÓBY ROZWIĄZANIA 1883 Charles L. Dodgson. Jeszcze przed konkretnym sformułowaniem problemu przez Steinhausa w 199, Dodgson jako pierwszy zauwaŝył, Ŝe przy systemie pucharowym (naturalnym) nie mamy pewności czy drugie i trzecie miejsce zajmują właściwe osoby. Zaproponował następujące rozwiązanie: z turnieju mogą odpaść tylko tacy zawodnicy, którzy przegrali trzy mecze. Zasada ta nie była stosowana. Zapewne z powodu potrzebnej do jej urzeczywistnienia duŝej liczby meczów. Tylko do wyłonienia mistrza i wicemistrza potrzeba 3n przynajmniej meczów, a w najgorszym wypadku n-3 meczów. Lepszy algorytm zauwaŝmy, Ŝe przyszły wicemistrz moŝe przegrać jedynie z mistrzem, który rozgrywa podczas turnieju co najwyŝej log n meczów. Wówczas spośród zawodników którzy przegrali z wicemistrzem moŝemy w drugiej fazie wyłonić wicemistrza ( log n 1 meczów). W sumie liczba meczów potrzebna do ukończenia turnieju wynosi - n + log n. Przypuszczalnie o takim rozwiązaniu wiedział juŝ Steinhaus. 193 Józef Schraier. Twierdził, Ŝe minimalna liczba meczów potrzebna do rozwiązania problemu to n + log n, jednak nie podał poprawnego dowodu. 1951 Jerzy Supecki. Opublikował pracę z dowodem spostrzeŝeń Steinhausa niestety błędnym. 1964 Siergiej Siergiejewicz Kislitsyn. Jako pierwszy rozwiązał problem ilości meczów. ALGORYTM WYŁANIANIA WICEMISTRZA ROZWIĄZANIE Udowodniliśmy, Ŝe do wyłonienia mistrza turnieju, w którym uczestniczy n 1 zawodników potrzeba n-1 meczów. W przypadku algorytmu wyłaniania mistrza i wicemistrza turnieju moŝemy dowieść jedynie słabszej własności: w turnieju w którym bierze udział n zawodników rozegranych zostanie co najwyŝej n + log n meczów. ALGORYTM WYŁANIANIA WICEMISTRZA ZASADY GRY Wszystkie wcześniejsze załoŝenia są wciąŝ aktualne. Ponadto w Ŝadnym poprawnie prowadzonym turnieju: nie moŝe być dwóch zawodników, którzy nie przegrali co najmniej raz (tylko mistrz moŝe ani razu nie przegrać) nie moŝe być dwóch zawodników, którzy przegrali z tylko z mistrzem (wicemistrz jest tylko jeden) zawodnik, który przegra nie odpada z turnieju, ale nie moŝe juŝ zdobyć mistrzostwa Kamila Agnieszka Baten Strona 5 008-10-16
ALGORYTM WYŁANIANIA WICEMISTRZA - ROZWAśANIA Zdefiniujmy: Relacja eliminacji - Zawodnik A zostaje wyeliminowany przez zawodnika B, jeŝeli w meczu B wygra z A i dodatkowo A i B do tej pory ani razu nie przegrali. Zawodnik A i B zostają wyeliminowani przez zawodnika C, jeśli ponadto C wygrał z B i zarówno B jak i C do chwili tego meczu ani razu nie przegrali. Jak widać relacja eliminacji jest przechodnia. W konsekwencji kaŝdy poza mistrzem zostaje w pewnym momencie turnieju wyeliminowany. Natomiast mistrz w całym turnieju wyeliminował wszystkich pozostałych zawodników, pomimo, Ŝe nie ze wszystkimi grał mecze. p 1 liczba zawodników, co przegrali co najmniej raz p - liczba zawodników, co przegrali co najmniej dwa razy Wówczas: p 1 + p najmniejsza liczba meczów, które zostaną rozegrane w turnieju (uwaga Ŝaden mecz nie moŝe się znaleźć w obu grupach) p 1 = n - 1, na podstawie rozwiązania problemu systemu naturalnego p p 1 1 Mistrz rozegra co najmniej log n meczów (przypominam, Ŝe moŝe tylko raz pauzować), wówczas w turnieju odbędzie się przynajmniej p1+ p n + log n meczów. Dowolny zawodnik Z, który wygrał w k-tej rundzie i nie przegrał do tej pory ani razu wyeliminował co najwyŝej k 1 1 i swojego przeciwnika (liczba wyeliminowanych przez Z zawodników osiąga tą wielkość, jeŝeli (1) Z ani razu nie pauzował, () wszyscy przeciwnicy Z byli niezwycięŝeni do chwili meczu z nim oraz zasady (1) i () tyczą się równieŝ wszystkich przeciwników Z, przeciwników jego przeciwników itd.). JeŜeli podczas turnieju mistrz rozegrał p meczów i wyeliminował wszystkich p pozostałych zawodników to 1 1 n, stąd otrzymujemy n p log. Zasady określania zwycięzcy: jeŝeli dwóch graczy nie przegrało dotychczas ani jednego meczu to zwycięzcą zostaje ten, który wcześniej w turnieju pokonał większą liczbę zawodników jeŝeli pozostał tylko jeden zawodnik, który nie został jeszcze pokonany to on zostaje zwycięzcą Ilość meczy potrzebna do wyłonienia 1, i 3 miejsca w turnieju. Minimalna liczba meczów potrzebna do rozwiązania tego zagadnienia nie przekracza n 3 + log ( n 1) + log n. Zachęcam do dalszych rozwaŝań. Kamila Agnieszka Baten Strona 6 008-10-16