Przeskocz do treści

Delta mi!

Wielkie granie

O grze w 20 pytań inaczej

Wojciech Guzicki

o artykule ...

  • Publikacja w Delcie: lipiec 1988
  • Publikacja elektroniczna: 25-03-2011
  • Autor: Wojciech Guzicki
    Afiliacja: Instytut Matematyki, Uniwersytet Warszawski

W artykule „Gra w 20 pytań” omówiliśmy sposób gry z graczem, który nie kłamie. A jak postępować z graczem, który kłamie? Czy jesteśmy zupełnie bezradni?

To pytanie postawił Stanisław Ulam w swojej książce Adventures of a Mathematician. Zapytał on mianowicie o to, jaka jest najmniejsza możliwa liczba pytań, które musi zadać Pytający, by odgadnąć pomyślaną liczbę z przedziału math jeżeli wiadomo, że Odpowiadający może raz skłamać? Strategia wygrywająca oczywiścieistnieje: powtarzamy każde pytanie 3 razy.

Zajmiemy się od razu problemem ogólnym: Odpowiadający wybiera liczbę z przedziału domkniętego math Pytający zadaje math pytań, Odpowiadającemu wolno raz skłamać. Podobnie, jak poprzednio, Pytający zadaje pytania typu „czy math ?”, gdzie math jest dowolnym podzbiorem przedziału math W tej postaci problem został niedawno rozwiązany przez Andrzeja Pelca z Kanady. Problem analogiczny, w którym zadawane pytania muszą być porównawcze, nie jest jeszcze rozwiązany do końca. Przedstawimy teraz rozwiązanie oryginalnego problemu Ulama, dowód będzie niewielką modyfikacją dowodu Pelca.

Zauważmy najpierw, że w każdym momencie naszej gry musimy rozpatrywać dwa zbiory dopuszczalnych liczb (a nie jeden zbiór, jak w przypadku gry bez kłamstw). Pierwszy z tych zbiorów składa się z tych liczb, które są zgodne ze wszystkimi dotychczas udzielonymi odpowiedziami – tzn. liczb o tej własności, że gdyby Odpowiadający pomyślał którąś z nich, to w dotychczasowych odpowiedziach jeszcze nie skłamał, ma więc prawo skłamać w dalszym ciągu gry. Drugi z tych zbiorów składa się z liczb, spełniających wszystkie odpowiedzi z wyjątkiem jednej – są to więc liczby, o których Odpowiadający już skłamał. Niech pierwszy zbiór ma math elementów, a drugi math elementów. Parę math nazwiemy stanem gry. Teraz zauważmy, że każde pytanie jest w istocie rzeczy pytaniem o pewną liczbę elementów każdego z rozważanych powyżej zbiorów. Przypuśćmy zatem, że pytamy o math elementów pierwszego zbioru i math elementów drugiego. W zależności od odpowiedzi, gra przejdzie ze stanu math w jeden z dwóch stanów oznaczanych dalej przez TAK i NIE. Zastanówmy się, jaką postać ma stan TAK. Niech math będzie pierwszym zbiorem (ma on math elementów) i math drugim zbiorem (o math elementach). Pytanie „czy math ?” jest pytaniem o math elementów zbioru math i math elementów zbioru math tzn. zbiór math ma math elementów i zbiór math ma math elementów. Zatem zbiory math i math mają odpowiednio po math i math elementów. W przypadku odpowiedzi „tak” pierwszy zbiór będzie się składał z tych elementów zbioru math które są zgodne z ostatnią odpowiedzią, czyli należą do math Jest to zatem zbiór math Do drugiego zbioru należą natomiast te elementy zbioru math o których teraz skłamaliśmy (tzn. math ) oraz te elementy zbioru math o których nie skłamaliśmy (tzn. math). Stan TAK jest zatem równy math Podobnie rozumując stwierdzimy, że stan NIE ma postać math

Z każdym stanem zwiążemy teraz funkcję zwaną jego wagą. Przypuśćmy, że w stanie math Pytający może zadać jeszcze math pytań. Wtedy kładziemy math math Funkcję math nazwiemy właśnie funkcją wagi (dokładniej math-tą wagą) stanu math Funkcja wagi mówi nam, jakie możliwości ma jeszcze Odpowiadający. Ma on do dyspozycji math liczb, o których dotychczas mówił prawdę, może więc o każdej z nich dalej mówić prawdę lub skłamać w jednym z następnych math pytań – daje to math możliwości dla każdej z tych math liczb. Wreszcie ma on do dyspozycji math liczb, o których musi mówić prawdę do końca. Następnie określmy tzw. charakter stanu

display-math

Zauważmy na koniec, że

display-math

W dalszym ciągu będziemy wielokrotnie zastanawiali się nad istnieniem strategii wygrywającej dla Pytającego w środkowej fazie gry. Jeżeli gra znalazła się w stanie math i Pytający ma od tego momentu strategię wygrywającą za pomocą co najwyżej math pytań, to będziemy nazywać ją strategią wygrywającą począwszy od tego stanu.

Lemat 1. Jeśli math to Pytający nie ma strategii wygrywającej w math pytaniach w grze począwszy od stanu math

Dowód. Odpowiadający może zastosować diabelską strategię (patrz Mała Delta). Po pierwszym pytaniu będziemy mieli nierówność

display-math

Stąd jeden ze stanów TAK i NIE ma math-szą wagę większą od math Odpowiadający wybiera tę odpowiedź, która ma większą wagę. W ten sposób po math pytaniach dojdzie do stanu, którego zerowa waga jest co najmniej równa 2. Teraz wystarczy zauważyć, że Pytający ma pewność zgadnięcia po zadaniu wszystkich pytań tylko wtedy, gdy stan gry jest jednym ze stanów (1,0) lub (0,1). Oba te stany mają jednak zerową wagę równą 1. Diabelska strategia okazała się zatem skuteczna dla Odpowiadającego, co kończy dowód lematu.


Z powyższego lematu wynika, że Pytający może mieć strategię wygrywającą w math pytaniach tylko wtedy, gdy math-ta waga stanu początkowego jest co najwyżej równa math W szczególności może się zdarzyć, że Pytający ma strategię wygrywającą w math pytaniach począwszy od stanu math Pokażemy teraz, że tak jest w istocie dla bardzo obszernej klasy stanów.

Nazwijmy stan math stanem przyjemnym, jeśli Pytający ma strategię wygrywającą w math pytaniach począwszy od stanu math Stan math nazwiemy stanem typowym, jeśli math

Twierdzenie. Wszystkie stany typowe są przyjemne.

Dowód. Jedynymi stanami o charakterze 0 są stany (1,0) i (0,1). Są one stanami przyjemnymi, bo Pytający zna pomyślaną liczbę bez zadawania jakichkolwiek pytań.

Przypuśćmy teraz, że wszystkie stany typowe o charakterze mniejszym od math są przyjemne. Niech math będzie dowolnym stanem typowym charakteru math Pokażemy, że jest on przyjemny. W tym celu wystarczy znaleźć takie pytanie, że otrzymane w jego wyniku stany mają math-sze wagi różniące się co najwyżej o 1. Mianowicie z założenia o charakterze stanu math wiemy, że math Jeśli teraz math to math Stąd wynika, że charakter stanów TAK i NIE jest co najwyżej równy math Jeśli teraz uda nam się dobrać pytanie tak, aby stany TAK i NIE były typowe, to z założenia będą one przyjemne. Pytający ma zatem strategię wygrywającą w math pytaniach, co łącznie z zadanym już pierwszym pytaniem daje strategię wygrywającą w math pytaniach.

Przypadek 1. Niech math W zależności od parzystości liczby math bierzemy liczbę math tak, by math lub math Wystarczy zadać teraz pytanie o math elementów pierwszego zbioru i math elementów drugiego zbioru. Otrzymamy stany typowe

display-math

których wagi różnią się, oczywiście, co najwyżej o 1.

Przypadek 2. Niech math Udowodnimy najpierw pomocniczy lemat.

Lemat 2. Jeśli math to można dobrać pytanie, którego poszukujemy.

Dowód. Bierzemy takie liczby math i math by math lub math oraz math lub math Zadajemy teraz pytanie o math elementów pierwszego zbioru i math elementów drugiego zbioru. Otrzymamy stany typowe

display-math

różniące się wagami co najwyżej o 1:

display-math

Niech teraz math będzie stanem typowym, takim, że math Pokażemy, że wtedy math czyli spełnione jest założenie lematu 2. Otóż wystarczy pokazać, że math

display-math

Ostatnią nierówność sprawdza się łatwo przez indukcję względem math co skończy dowód lematu.


Niech teraz math będzie stanem typowym, takim, że math Wtedy math i z powyższych rozważań wynika, że istnieje poszukiwane pytanie. Pozostają do rozpatrzenia przypadki stanów math takich, że math math lub math oraz math Znalezienie w każdym z tych przypadków (z wyjątkiem stanu (3,2)) pytania, takiego, że stany TAK NIE mają wagi różniące się co najwyżej o 1, jest łatwym ćwiczeniem dla Czytelnika. W stanie (3,2), który ma charakter 5, zadajemy pytanie o 2 elementy pierwszego zbioru, otrzymując w wyniku stany (2,1) i (1,4). Teraz wystarczy zauważyć, że math oraz math To kończy dowód twierdzenia.


Udowodnione twierdzenie pozwala już na dokładne określenie liczby pytań potrzebnych Pytającemu do odgadnięcia pomyślanej liczby. Ograniczymy się w dalszym ciągu do szczególnego przypadku, gdy liczba math jest parzysta. Rozważmy zatem stan math i przypuśćmy, że jego charakter wynosi math Zatem math Zadamy pytanie o math elementów (gdzie math). Otrzymamy w wyniku tego pytania dwa identyczne stany math każdy o tej samej wadze math Zatem math skąd wynika, że otrzymane stany mają charakter równy co najwyżej math Jednocześnie są one typowe, a więc z twierdzenia wynika, że są one przyjemne. Oznacza to, że Pytający ma strategię wygrywającą w math pytaniach, począwszy od każdego z tych stanów. Łącznie z pierwszym pytaniem daje to strategię wygrywającą w math pytaniach, począwszy od stanu wyjściowego math a więc od przedziału domkniętego math

Z drugiej strony, jeśli math to Odpowiadający ma swoją strategię diabelską. Ostatecznie dostajemy odpowiedź na pytanie, kiedy Pytający ma strategię wygrywającą: strategia ta istnieje dla przedziału domkniętego math (dla math parzystego) i math pytań wtedy i tylko wtedy, gdy math Analogiczne rozwiązanie dla math nieparzystego Czytelnik bez trudu znajdzie samodzielnie – jedyna drobna trudność polega na tym, że po pierwszym pytaniu nie otrzymujemy stanów identycznych. Najrówniejszy podział stanu math dla math otrzymamy pytając o math elementów – wynikiem będą stany math oraz math Z otrzymanej zależności po chwili wynika, że dla math potrzeba 25 pytań. Jako ciekawostkę można podać, że analogiczna gra z dwoma kłamstwami wymaga 29 pytań.

Analiza przedstawionego dowodu pozwala zauważyć, że pytania, które będziemy zadawać, są pytaniami o przedział: „czy pomyślana liczba leży w przedziale domkniętym math?”.

Czytelnikom umiejącym pisać programy komputerowe można teraz zaproponować napisanie programu odgadującego pomyślaną liczbę według opisanego wyżej algorytmu.

Zastosowanie dla tego typu zabaw jest chyba widoczne. Chodzi mianowicie o przesyłanie informacji kanałami, które czasami powodują powstawanie błędów. Wystąpienie dwóch błędów jest bardzo mało prawdopodobne, spróbujmy więc opracować metodę postępowania w przypadku pojawienia się co najwyżej jednego błędu. Zobaczyliśmy pewną metodę postępowania w takich przypadkach, mianowicie wtedy, gdy mamy do czynienia z interakcyjną wymianą informacji. Można teraz wyobrazić sobie, że chcemy odgadnąć pomyślaną liczbę, ale musimy zadać wszystkie pytania od razu. Pytania te będą, oczywiście, znane Odpowiadającemu przed grą. Wystarczy więc, jeśli przyśle on nam ciąg odpowiedzi, zakodowany w postaci ciągu zer i jedynek: zero na math-tej pozycji oznacza, że na to pytanie dał odpowiedź negatywną, jedynka – pozytywną. Problemem będzie teraz znalezienie minimalnej długości kodu (i oczywiście sposobu rozkodowywania, czyli treści kolejnych pytań), tak aby móc przesłać jednoznaczną informację o pomyślanej liczbie, pomimo że zakodowany ciąg po odebraniu go może różnić się na jednym miejscu od ciągu wysłanego. W ten sposób doszliśmy do pojęcia tzw. kodów korygujących błędy, o których innym razem.