Pająk i mrówki: rozwiązanie zagadki

https://xpil.eu/ifb

Intuicja podpowiada nam, że szansa na to, że obydwie mrówki znajdą się po tej samej stronie pajęczej sieci wynosi 50%. No bo są dwie możliwości: albo będą po tej samej stronie, albo po różnych prawda? A pająk swoją sieć postawi statystycznie rzecz biorąc w okolicach środka... Czyli pół na pół.

Prawda. Z tym, że gówno prawda. To, że są dwie możliwości, nie oznacza automatycznie szans 50%. Gdyby tak było, wygrywałaby połowa grających w totka!

Metoda #1: całkujemy

Przyjmijmy sobie roboczo, że rura ma długość 1.

Sieć pająka jest w odległości x od jednego z końców (czyli 1-x od drugiego), przy czym oczywiście 0<=x<=1.

Szansa, że obydwie mrówki znajdą się w odległości mniejszej od x wynosi x2.

Szansa, że obydwie znajdą się w ogległości większej niż x to (1-x)2.

A więc prawdopodobieństwo, że obydwie wylądują po tej samej stronie wynosi: x2+(1-x)2.

Żeby teraz ustalić prawdopodobieństwo dla każdego możliwego iksa, należy scałkować powyższe wyrażenie w granicach od 0 do 1:

$$P = \int_{0}^{1} x^2+(1-x)^2 \,dx$$

Z całkami jestem na bakier od dawna, ale od czego jest Wolfram:

Wychodzi na to, że szansa na wylądowanie po tej samej stronie wynosi 66.(6)% czyli 2/3.

Metoda #2: kombinujemy

Załóżmy, że pająk ma na imię Adolf, a mrówki Bianka i Celina. Mogą się one ustawić w następujących kolejnościach: ABC, ACB, BAC, BCA, CAB, CBA. Jak widać w dwóch przypadkach A rozdziela B i C, w pozostałych czterech - nie rozdziela. A że każde ustawienie jest jednakowo prawdopodobne, to szansa że pająk będzie "z boku" wynosi 4/6 czyli 2/3 czyli 66.(6)%.

Metoda #3: symulujemy

A jak ktoś nie lubi liczyć prawdopodobieństw ani całek, zawsze może wykonać prostą symulację:

from numpy.random import rand

licznik, max = 0, 1000000
for n in range(max):
    a, b, c = rand(), rand(), rand()
    if (a < b and a < c) or (a > b and a > c):
        licznik += 1
print(licznik/max)

Powyższy kod umieszcza milion pająków oraz milion par mrówek w milionie rur kanalizacyjnych i sprawdza jak często mrówki wylądują po tej samej stronie. Wynik: 0.666248.

A jak Wam poszło?

Przedziwnie!

1Pierwszy odezwał się Jaro, który podał poprawne rozwiązanie, identyczne jak w metodzie #2 powyżej, tylko mrówki nazwał * a pająka - @. Bardzo udane ikonki! Odpowiedzi nie zaliczam, bo należało podać co najmniej dwie różne metody.

2Potem okazało się, że zapomniałem wyłączyć komentarze pod zagadką i Annabel przysłała tamtędy sugestię, że pająk na pewno zbudował sieć z samego końca rury, bo tak pająki robią, skąd też od razu wniosek, że mrówki są po tej samej stronie z prawdopodobieństwem 1. Odpowiedzi nie zaliczam bo nie zgadza się z założeniami zagadki, ale dziękuję za edukację entomologiczną!

I mrówki i pająki śpią. I coś mi się widzi, że pająki mrówek nie konsumują z uwagi na wydzielany przez nie kwas mrówkowy. Nie znam zbyt dobrze pajęczych obyczajów, ale mam wrażenie, że pająk nie “rozpinałby” sieci w głębi owej rury, ale tylko u samego jej wylotu, bo to miejsce, w które coś by się złapało, chcąc do niej wlecieć celem schronienia się i z tego powodu gdy ją tkał one były po tej samej stronie sieci, gdyż spały w tej rurze.

-- Annabel, sierpień 2021

3Trzeci był Waldek, jeden z naczelnych rozwiązywaczy, który podał poprawne rozwiązanie (za pomocą całkowania) - ale tylko jedno. Co prawda wspomniał, że potem być może wyśle drugie jak mu się mózg odmuli, ale nie wysłał. Nie zaliczam.

4Tywan był pierwszym, który przysłał dwa poprawne rozwiązania (jedno z całkowaniem i drugie identyczne z moją metodą #2). Gratuluję zwycięstwa! Nagród nie ma i nie będzie, ale udzielam oficjalnego zezwolenia na wykonanie jednej sztuki medalu z dowolnie wybranej odmiany ziemniaka (osobiście polecam Russet Burbank).

5Tego samego dnia dwa rozwiązania nadesłał Cichy, również jeden z lokalnych zagadkomistrzów. Rozwiązania Cichego byłyby poprawne... gdyby nie głupia pomyłka. Otóż Cichy policzył prawdopodobieństwo, że mrówki będą po przeciwnych stronach sieci (zamiast po tej samej). Szkoda. Powodzenia następnym razem!

6Kolejny odezwał się Rafał, który podał tę samą metodę dwukrotnie (zmieniając mocno opis za drugim razem). Nie zaliczam 😉

https://xpil.eu/ifb

6 komentarzy

  1. Miałem tylko jedną metodę (#3), więc nie wysyłałem. Wynik, poprawny. Kod analogiczny, tylko bez numpy.
    Moje przemyślenia dot. graficznej wersji rozwiązania pozwolę sobie pominąć dyskretnym milczeniem.

  2. Kiedy będzie kolejna zagadka? Bo jeśli za 100 lat, to ja mam taką jedną na zatkaj-dziurę… 🙂

  3. Zadanie:

    Jedziemy przez pustynię samochodem… Mamy do pokonania 800 km przez wydmy i inne fatamorgany. Ale bak paliwa w naszym pojeździe i wszystkie kanistry, które się tam da upchać, mogą pomieścić paliwo najwyżej na 500 km.
    Na początku trasy jest stacja benzynowa i sklep z kanistrami 🙂 – więc tu możemy czerpać zasoby do woli. A dalej? Dalej kombinuj człowieku, jak dotrzeć na drugi koniec pustyni. Można oczywiście tworzyć po drodze zapasy, czyli zostawiać gdzieś na piasku napełnione kanistry, wracać na start po uzupełnienie paliwa, itp., itd.
    Konkretne pytanie brzmi:

    Ile łącznie musimy przejechać kilometrów, aby przebyć tę cholerną pustynię?

    Uwaga 1:
    Można to rozwiązać dyskretnie i otrzymać (w zależności od metody) jakieś sensowne i przekonujące rozwiązanie. Można też wyliczyć rozwiązanie ciągłe, które będzie granicą wszystkich rozwiązań dyskretnych, więc będzie rozwiązaniem optymalnym (czyli minimalnym).

    Uwaga 2:
    Moim zdaniem rozwiązania dyskretne są trudniejsze (o dziwo), choć zależy to tylko od tego, czy umiemy ładnie całkować, czy raczej wolimy sumować…

    Uwaga 3:
    To zadanie nie jest zbyt popularne, ale i tak udało mi się wygooglować rozwiązanie dyskretne (poprawne, ale słabe). W związku z tym za prawidłowe będą uważane rozwiązania absolutnie minimalne (ciągłe) lub dyskretne, ale lepsze niż te dostępne w sieci (taki dżołk).

    1. Fajna zagadka. Wstyd się przyznać, ale nie mam bladego pojęcia jak się za to zabrać ani dyskretnie, ani ciągle. Pobawiłem się “na piechotę” w Excelu i mi wyszło za pierwszym podejściem 3333 kilometrów, ale pewnie da się dużo lepiej. Tu moje wypociny: https://i.imgur.com/6U2dc7W.png

      1. Mam małe opóźnienie w odpowiedzi, przepraszam, ale, jak co roku, gdy tylko zrobiło się zimno, to od razu zachorowałem. Może to i dobrze, bo kiedy kilka dni temu zamieściłem to zadanie, to napisałem o tym również do syna, który mi to kiedyś podrzucił. Myślałem do tej pory, że to jakeś niszowe zadanie na zaliczenie, ale kiedy dzisiaj, po opadniędnięciu gorączki, przeglądałem zaległą pocztę, przeczytałem wiadomość, że to zadanie ma ponad 1000 lat i pochodzi z czasów kiedy pustynie pokonywało się wielbłądami! Okazuje się, że współczesna wersja zadania nosi nazwę “jeep problem”. Kiedy wklepałem tę frazę do Qwanta wyskoczyły mi setki stron z rozwiązaniami! Krótko mówiąc – dałem plamę… Dwa tygodnie nad tym siedziałem, rozważałem różne warianty, byłem dumny z osiągnięć, a tu taka niespodzianka…

        Nie będę się więc wygłupiał i popisywał swoimi wypocinami, zwłaszcza, że rozwiązanie ciągłe, po porównaniach z tym “oficjalnym”, mam niestety błędne.

        Dla formalności napiszę tylko, że optymalne rozwiązanie dyskretne to 3 7/15 baku = 3,4(6) baku = 1733,(3) litra paliwa. Rozwiązanie ciągłe (to oficjalne) nie za bardzo jeszcze kapuję.

        Syn podesłał mi rozwiązanie, które wrzuciłem do załącznika (miłośnicy łamigłówek zauważą tam zapewne tytuł ciekawej książki).

Leave a Comment

Komentarze mile widziane.

Jeżeli chcesz do komentarza wstawić kod, użyj składni:
[code]
tutaj wstaw swój kod
[/code]

Jeżeli zrobisz literówkę lub zmienisz zdanie, możesz edytować komentarz po jego zatwierdzeniu.