Pytanie związane z tagami: (4 z 6)

pytanie zadane 700 dn. temu przez: witzar  | ostatnia edycja: 697 dn. temu przez wlod

Jak uratować więźniów w grze z żarówką?

Każdy ze 100 więźniów przebywa w odosobnionej celi.
W więzieniu jest również pomieszczenie z żarówką, którego nie widać z żadnej celi.
Strażnik proponuje więźniom następującą grę:
Strażnik będzie codziennie zabierać jednego losowo wybranego więźnia do pomieszczenia z żarówką.
W pomieszczeniu tym więzień będzie mógł oznajmić strażnikowi, że każdy więzień był już w tym pomieszczeniu.
Takie oświadczenie kończy grę: jeśli okaże się prawdziwe - wszyscy więźniowie zostaną natychmiast uwolnieni, a jeśli fałszywe - więźniowie zostaną natychmiast straceni. Jeśli więzień postanowi nie składać oświadczenia, wówczas wraca on do swej celi, ale przed wyjściem pozostawia żarówkę w stanie
(zapalona/zgaszona) zgodnie ze swoim wyborem i gra trwa dalej. W momencie rozpoczęcia gry żarówka będzie zgaszona, a jej stan będą mogli zmieniać wyłącznie więźnionie przebywający w pomieszczeniu.

Przed rozpoczęciem gry więźniom wolno ustalić wspólną strategię, po czym każdy wraca do swojej celi. Po rozpoczęciu gry jakakolwiek komunikacja pomiędzy więźniami jest niemożliwa.
Jaka strategia zapewni więźniom pewne uwolnienie?

14

5

58001

Wartość oczekiwana numeru dnia wyjścia na wolność nieźle mierzy wartość danej strategii (mniej jest lepiej). Celniejsze chyba są inne miary. Niech S będzie numerem dnia, w którym w pokoju pojawił się ostatni więzień. Następnie niech W będzie numerem dnia, w którym zgodnie ze strategią (poprawną) więzień zawołał "wolność!". Miarą wartości strategii jest wartość oczekiwana ilorazu S/W (1 byłoby ideałem :-); inną może być różnica W-S. Więcej one mówią niż wartość oczekiwana numeru dnia wyjścia na wolność. - wlod 697 dn. temu | rozwiń pozostałe (3 więcej) Prosta modyfikacja zadania: strażnik wpuszcza do pokoju losowo, ale nigdy nie żadnego więźnia dwa dni pod rząd. Pełna modyfikacja: ... losowo, ale unikając powtórzenia jakiegokolwiek ciągu dwa razy pod rząd: po xyxzxyx wiezień "z" nie zostanie wpuszczony tego dnia do pokoju. Powstaje oczywiście kwestia istnienia takich aokresowych ciągów. Już w danym przykładzie do pokoju może wejść tylko nowy więzień, nie x y z. - wlod 696 dn. temu |
100% 14

odpowiedź dodana przez: wlod  | ostatnia edycja: 696 dn. temu 700 dn. temu

STRATEGIA 0:

Dla nieśmiertelnych więźniów: Numerują dni 0 ... 98 0 ... 98 ... mod 99, poczynając od pierwszego dnia nastawiania żarówki. Każdego dnia 0 mod 99 więzień zapala żarówkę. Każdego innego, gdy jest zgaszona, to więzień pozostawia ją zgaszoną. Gdy jest zapalona, to więzień ją gasi, gdy był w pokoju wcześniejszego dnia w ramach danych 99; jeżeli był pierwszy raz (w ramach 99), to pozostawia żarówkę tak jak była. Dnia 0 mod 99, ale nie początkowego, gdy żarówka była zapalona, to więzień - o ile nie był w pokoju w czasie poprzednich 99 dni - oświadcza, że wszyscy (licząc też jego) byli w pokoju. Wtedy wszyscy będą wypuszczeni na wolność.

0
 
Faktycznie, dla nieśmiertelnych więźniów to zadziała. Gdy zdarzy się ciąg dni 0, 1, ..., 98, 0, w którym każdy więzień wejdzie do pomieszczenia dokładnie raz - wszyscy wyjdą na wolność. Prawdopodobieństwo że tak się zdarzy przez pierwsze 100 dni wynosi 100/100 * 99/100 * ... * 1/100 = 100!/100^100, zatem można oczekiwać, że trzeba będzie odczekać średnio 100^100/100! studniowych ciągów dni aż tak się stanie. Daje to mniej więcej 3*10^41 lat czekania na wolność. A istnieje rozwiązanie jak najbardziej realne biorąc pod uwagę długość ludzkiego życia. - witzar 700 dn. temu | rozwiń pozostałe (4 więcej) Hm, coś nie tak z guzikiem "odpowiedź". Gdy otwarte jest okienko "Skomentuj odpowiedź", to klikanie na guzik "odpowiedź" chyba nic nie nie daje. Najpierw należy anulować okno edycyjne "Skomentuj odpowiedź". - wlod 695 dn. temu |
100% 6

odpowiedź dodana przez: wlod  | ostatnia edycja: 697 dn. temu 697 dn. temu

O! Mogę wpisać odp! Podałem metodę w komentarzu, ale zapomniałem dodać "wolność-hurra!". Otóż każdy więzień ma swój licznik. Pierwszego dnia wszyscy nastawiają na 1 (po najpierwszej wizycie więźnia wylosowanego jako pierwszego). W następnych dniach, więzień, który zostawił światło w pokoju, po wizycie innego więźnia dnia poprzedniego, dodaje tego dnia 1 do swojego licznika (czyli za każdą oświetloną przez siebie serię swoich kolejnych dni dodaje 1, nie więcej). Więzień, który na liczniku ma 100, krzyczy "wolność!" Jest to dobre rozwiązanie, bo:

A. pierwszego dnia był jeden więzień w pokoju ze swiatłem;

B. po pierwszej wizycie każdego innego wieźnia, co najmniej 2 było w pokoju;

C. w okresie pomiędzy dwoma kolejnymi wizytami danego więźnia, gdy pierwszy raz zostawił pokój ciemny, a drugi raz jasny, pewien (inny) więzień musiał złożyć w pokoju swoją pierwszą wizytę.

UWAGI:

  • Kto zastał ciemność w czasie swojej 1' wizyty, może (po zapaleniu światła) nastawić swój licznik na 3.
  • Rozwiązanie działa dla dowolnej liczby więźniów n (w miejsce 100).
0
 
komentarze (2) dodaj komentarz
Nie rozumiem. Załóżmy że strażnik przez pierwsze 101 dni w dniu nr n będzie wpuszczać do pomieszczenia więźnia o numerze (n mod 100). Przez pierwsze 100 dni żarówka będzie zapalona (zasada 1.), po 100 dniach więzień nr 1 będzie mieć na liczniku 1, a pozostali więźniowie 2. W dniu 101 wejdzie nr 1 i zgasi (zasada 4.), liczniki bez zmian. Od tej pory wszyscy będą zostawiać ciemność (zasada 2. lub 3.), liczniki bez zmian, nieważne kogo i kiedy strażnik wprowadzi. Co mi umyka? - witzar 696 dn. temu | Masz rację witzarze - moje (drugie) "rozwiązanie" jest kompletnie bez sensu. Dziękuję za zwrócenie mi uwagi, i przepraszam. - wlod 696 dn. temu |
100% 3

odpowiedź dodana przez: wlod  | ostatnia edycja: 696 dn. temu 696 dn. temu

STRATEGIA 1:

Więźniowie rozdają sobie numery w = 0 ... 99. Dni wizyt w pokoju są ponumerowane n=0 1 ... Każdy więzień-gość w, który odwiedzi pokój w dniu n=w mod 100 zostawia zapalone światło. W przeciwnym wypadku gość w zostawia światło zgaszone.

Każdy więzień w prowadzi swój notesik, w którym notuje dni n-1 mod 100, gdy w dniu n > 0 zastał światło zapalone (nie ważne, czy w=n mod 100 - zapisuje w notesiku tak samo). Gdy wejdzie do pokoju, i w notesiku otrzyma komplet 100 liczb (dołączając ewentualnie siebie, w, niezależnie od zachodzenia kongruencji n=w mod 100 tego dnia), to woła "wolność!".

0
 
brak komentarzy dodaj komentarz
100% 3

odpowiedź dodana przez: wlod 695 dn. temu

ANALIZA (zmiast nowej strategii)

Pytanie jest niby z życia, czyli naukowe, ale nie (czysto) matematyczne. Rozwiązanie składa się z 2 etapów, A & B. Na pierwszym należy wyliczyć (oraz zauważyć, zorganizować i zrozumieć) jak najwięcej jak najsilniejszych środków, prowadzących do modelu matemaycznego o jak najsilniejszyc założeniach (pomagających więźniom). Etap ten jest naukowy - nie matematyczny. Drugi etap, to możliwie optymalne rozwiązanie w ramach uzyskanego modelu.

Etap A (naukowy):

  1. Więźniowie mogą przydzielić sobie numery 0 ... 99, po jednym na głowę.
  2. Więźniowie mogą numerować dni, od początkowej wizyty w pokoju z żarówką: 0 1 2 ...
  3. W dniach 0 ... 98 więźniowie przekazują następnemu tylko 1 bit informacji: światło lub ciemność. Poczynając od dnia 99 przekazują więcej: (a) wychodzimy na wolność (b) światło (c) ciemność.

Uwagi o etapie A:

  • Tylko umowa co do podziału więźniów na dwie rozłączne grupy pozwala więźniowi-gościowi w dniu 0 przekazać pewną informację gościowi z dnia 1. Podział, a najprościej i najlepiej pełne ponumerowanie więźniów, jest pomocne wielu sytuacjach.
  • Posiadanie więcej niż 1 bitu, opisane w powyższym punkcie (c), jest trudne do wykorzystania. Pozwala na przykład ulepszyć STRATEGIĘ 0, z pierwszej odpowiedzi niniejszego wątku.

Etap B (matematyczny)

Matematycznie poprawne rozwiązanie wciąż a priori może być nie do wykonania. Można założyć, że więzień w pokoju z żarówką ma do podjęcia decyzji tylko 23h. Strategia musi być z tego powodu względnie prosta. Następująca strategia, gdyby była poprawna matematycznie (nie wiem czy jest), mogłaby być za mało konstruktywna: w dniu n > 0 więzień zostawia światło, jeżeli jest w pokoju po raz pierwszy, lub gdy wydedukował większą liczbę więźni, którzy odwiedzili pokój, niż za poprzednią wizytą w pokoju. A jak nie, to nie. Coś w tym guście. Może dla poprawności potrzebna jest jakaś bardziej złożona wariacja tego podejścia. Chodzi o to, że tego typu strategia (o ile poprawna) mogłaby więźniów wyprowadzać na wolność chyba optymalnie wcześnie, gdyby potrafili ją stosować za każdą wizytą w ciągu 23h, ale to może być niemożliwe, ze względu na złożoną iterację. Dlatego należy w tym duchu starać się o konstruktywne przybliżenia takiej strategii.

0
 
brak komentarzy dodaj komentarz
100% 6

odpowiedź dodana przez: wlod  | ostatnia edycja: 618 dn. temu 619 dn. temu

Strategia Postępu

Numerujemy dni wizyt w pokoju z żarówką w kólko 0 ... 99 0 ... 99 0 ... czyli mod 100, poczynając od zera. Czyli dni podzielone są na kolejne setki. W ramach każdej setki dni więzień-wizytor w dniu d zostawia światło, gdy wie, że w pokoju było więcej niż d różnych więźniów (wliczając jego samego). Więzień, który złożył więcej niż jedną wizytę liczy się wszystko jedno pojedynczo. Gdy więzień będzie wiedział przy swojej wizycie, że przez pokój przewinęła się (wraz z nim) cała setka więźniów, to ogłasza wygraną.

Mogę tę metodę opisać detalicznie i pedantycznie, ale zamiast tego planuję napisanie programu-symulacji. Jednym z powodów jest także to, że od ręki nie potrafię podać sensownych oszacowań efektywności niniejszej Strategii Postępu. Czuję (łudzę się? :-), że tym razem mój algorytm jest sensowny. Wiedza więźniów rośnie przy tym algorytmie żwawo (mówiąc probabilistycznie). Zakładamy, że więźniowie nie są głupkami.

Wyzywam też wszystkich na (nieformalny :-) pojedynek czy też raczej na zawody. Wymyślcie strategię. Zaprogramujcie. Będziemy programy puszczać dla tej samej funkcji pseudolosowej, z tymi samymi początkowymi "ziarnami", które będą wybrane losowo. W czasie pojedynczych zawodów sprawdziło by się programy dla 10 różnych ziaren.

Każdy program w zawodach powinien podawać feedback (powinien prowadzić tak zwany log) o sensownym rozmiarze, tak by było widać jak algorytm działa i sobie radzi.

 


Oczywiście zamierzam swój program podać na naqnaq (gdzie? jak? chyba można w dowolnym języku? Zacznę od perla, a potem napiszę raz jeszcze w C++, tak planuję).

 

0
 
komentarze (3) dodaj komentarz
Najlepsza znana mi strategia wymaga średnio 10381 odwiedzin (tak mi wyszło z rachunków i symulacja napisana w Javie to z grubsza potwierdziła). - witzar 618 dn. temu | Dziękuję za odzew. Warto symulację puszczać dla różnej liczby więźniów, by zobaczyć tendencję. Bardzo ważny jest dobór funkcji pseudo-losowej! Miałem dramatyczny przykład w pewnym zastosowaniu w przeszłości. - wlod edytowany 618 dn. temu | Zaambarasowany muszę przyznać, że idei Strategii Postępu nie przemyślałem dostatecznie, że jest niepełna i jeszcze nie działa. Nawet napisałem malutki, kompletny program, który mi pomógł (zmusił) zobaczyć kłopot. Mimo wszystko ma chyba zdrowe ziarno. - wlod 617 dn. temu |
100% 3
Strony: 1 2 3

odpowiadasz jako: niezalogowany


Podaj e-mail (wymagany, nie będzie publikowany)

Podpis (opcjonalny)

lub

Reklama


Regulamin
Pytań: 1270 Użytkowników: 439 Odpowiedzi: 1933 Tagów: 3439 Głosów: 3453 Komentarzy: 1076
24h: 0 24h: 2 24h: 1 24h: 0 24h: 0 24h: 1

Zaloguj się lub zarejestruj

 

login

hasło


zapamiętaj mnie

Wybierz dostawcę tożsamości

login

hasło

powtórz hasło

e-mail

Zaakceptuj Regulamin

Adres e-mail lub nazwa użytkownika: