Josifov problem
Josifov problem
[uredi | uredi izvor]U računarstvu i matematici Josifov problem[1] ili Josifova permutacija je teorijski problem vezan za igre eliminacije prebrojavanjem.
Ljudi stoje u krugu čekajući da budu eliminisani. Prebrojavanje počinje od nekoga iz kruga i nastavlja se u fiksnom pravcu(smeru). U svakom koraku jedan broj osoba biva preskočen a sledeća osoba biva eliminisana. Eliminacija se nastavlja nad preostalim osobama čiji broj postaje sve manji i manji sve dok ne ostane samo jedna osoba.
Zadatak je da se izabere položaj igrača u prvom krugu tako da taj igrač izbegne eliminaciju tj., pobedi.
Istorijat
[uredi | uredi izvor]Problem je nazvan po Josifu Flaviju, jevrejskom istoričaru koji je živeo u prvom veku. Prema Josifovom zapisu o opsadi Jodfata, on je zajedno sa još 40 vojnika bio zarobljen u pećini čiji su izlaz blokirali Rimljani. Izabrali su samoubistvo umesto zarobljeništva i odlučili da naprave krug i da međusobno ubijaju svakog trećeg. Josif tvrdi da su, srećom ili možda uz Božiju pomoć, on i još jedan čovek jedini preživeli i predali se Rimljanima.
Sledi odlomak iz 3. knjige, 8. poglavlja, 7. pasusa Josifovog dela ‘’Judejski rat’’(pisanog u trećem licu):
{{quotation|А како Јосифа и покрај тога очајног положаја није напуштала његова присебност, уздајући се у божију заштиту, стави свој живот на коцку па рече: "Пошто је закључено да се умре, то нека коцка одреди који ће сваки пут бити убијен од другога. Нека онај на кога падне коцка буде убијен од оних на које падне коцка после њега(поред њега). Тако ће сваког задесити иста судба а да ниједан не страда од своје руке. Јер не би било право да се после убиства другога неко покаје и спаси се." Овај предлог му врати поверење пошто је и он морао вући коцку. Чим би неко извукао коцку, драговољно је пуштао да га следећи убију свесни да ће тако и војсковођа одмах умрети. Јер су држали да им је смрт са Јосифом много милија од живота. Преостаде ипак он, сретним случајем или божијим одређењем, са још једним другом, па пошто га није ни коцка погодила, а није хтео ни да каља руке крвљу сународника, наговори и овога да се преда и да спаси живот. [2]
Rešenje
[uredi | uredi izvor]U daljem tekstu, označava početni broj ljudi u krugu, a označava indeks izbačenog u svakom koraku, tj. ljudi se preskače a -ti se eliminiše. Ljudi u krugu su označeni brojevima od do .
Slučaj k=2
[uredi | uredi izvor]Eksplicitno ćemo rešiti problem za slučaj kada svaka druga osoba treba da bude eliminisana, odnosno (Za opštiji slučaj, kada dajemo skicu rešenja ispod). Rešenje problema izražavamo rekurzivno. Neka označava poziciju preživelog u prvobitnom krugu. U prvom koraku eliminišu se svi ljudi koji su obeleženi parnim brojevima. U drugom koraku eliminiše se svaki drugi, onda svaki četvrti i tako dalje kao da nije ni bilo prvog koraka.
Ako je prvobitni broj ljudi u krugu bio paran onda osoba koja se našla na poziciji u drugom koraku je prvobitno bila na poziciji (ma kako da izaberemo ) Neka je . Osoba na poziciji koja je preskočena, prvobitno je bila na poziciji . Ovo nam daje rekurentnu vezu:
- :.
Ako je prvobitni broj ljudi u krugu bio neparan, onda razmišljamo ovako: osoba koja je započela igru će ispasti na kraju prvog kruga. I ponovo će u drugom krugu svaka druga osoba ispasti, u trećem svaka četvrta, itd . U ovom slučaju osoba koja je na poziciji prvobitno je bila na poziciji . Ovo nam daje rekurentnu vezu:
- :
Kada prikažemo tabelarno vrednosti i možemo uočiti obrazac:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
1 | 1 | 3 | 1 | 3 | 5 | 7 | 1 | 3 | 5 | 7 | 9 | 11 | 13 | 15 | 1 |
Ovo ukazuje da je sistem rastućih lanaca neparnih brojeva koji se prekida sa vrednošću kad god je stepen broja 2. Zato možemo odabrati tako da , i , tada je . Jasno je da vrednosti u tabeli zadovoljavaju ovu jednačinu. Ili, može i ovako da se kaže: nakon što je ljudi izbačeno, ostalo je samo njih i prelazi se na -vog. On mora da preživi. Zato je . Sledi dokaz indukcijom.
Teorema: Ako , i , onda .
Dokaz: Koristimo potpunu indukciju po . Indukcijska pretpostavka je tačna za . Razlikujemo slučajeve kada je parno i kada je neparno.
Ako je parno, biramo , tako da . Uočimo da . Imamo , gde druga jednakost sledi na osnovu induktivne pretpostavke.
Ako je neparno, onda biramo tako da . Uočimo da je sada . Imamo , pri čemu druga nejednakost sledi iz induktivne hipoteze. Ovim je dokaz završen.
Možemo rešiti po da dobijemo eksplicitan izraz za :
.
Najelegantniji oblik rešenja uključuje binarnu reprezentaciju veličine : se tada dobija cikličnim pomeranjem u levo za jedno mesto binarne reprezentacije broja . Ako je binarna reprezentacija onda je rešenje dato sa . Dokaz sledi iz reprezentacije kao , ili iz prethodnog izraza za
Opšti slučaj
[uredi | uredi izvor]Najlakši način da se reši problem u opštem slučaju je da se koristi dinamičko programiranje izvršavanjem prvog koraka i korišćenjem tog rešenja u preostalom problemu. Počev od prvog, član koji se pomerio mesta od prvog člana je na poziciji gde je ukupan broj osoba. Neka označava poziciju preživelog. Pošto se eliminiše -ta osoba ostaje nam osoba u krugu, a ponovno prebrojavanje počinje od člana koji je u prvobitnom rasporedu bio na poziciji . Pozicija preživelog bi bila ako bi se počelo od prvog; kako se počinje od , ovo daje sledeću rekurentnu vezu:
, uz uslov .
Što se može jednostavnije zapisati:
, uz uslov
ukoliko bismo numerisali pozicije od 0 do n-1.
Varijante i generalizacije
[uredi | uredi izvor]Josif je imao pomagača; u tom slučaju problem se sastoji u tome da se pogodno odaberu mesta za poslednju dvojicu preživelih(čija bi zavera osigurala njihovo preživljavanje). Pokazuje se da je uslov za to da jedan od njih bude na -tom a drugi na -vom mestu.[3] Uopštenje ovog procesa je sledeće. Pretpostavljamo da će svaka -ta osoba biti eliminisana od njih , a da je -ta osoba preživela eliminaciju. Ako se doda još ljudi, onda će pozicija preživelog biti -ta, ukoliko je . Ako je najmanji broj takav da je , tada je pozicija preživelog [4]
.
Još jedna varijanta je da se umesto eliminacije fiksiranog člana u svakom koraku, eliminiše u prvom koraku svaki drugi, u drugom svaki treći, itd , -ti, dok god ima smisla (Josifovo sito)[5].
Proširenje Josifovog problema
[uredi | uredi izvor]Definicija problema: Neka je osoba numerisano od do u krugu. Eliminiše se svaka druga osoba od dve. Za dato naći koja će osoba biti eliminisana -ta[6]
.
Beleške
[uredi | uredi izvor]- ^ https://en.wikipedia.org/wiki/Josephus_problem
- ^ Flavije, Josif (1967). Judejski rat. Prosveta.(Preveo sa latinskog Dušan Glumac)
- ^ Rouse Ball, W. W. (1896). Mathematical Recreations and Essays (2nd izd.). Macmillan. Pristupljeno 1. 8. 2015.
- ^ Robinson, W. J. (1960). „The Josephus Problem”. The Mathematical Gazette. 44 (347): 47—52. doi:10.2307/3608532. Pristupljeno 1. 8. 2015.
- ^ https://oeis.org/A000960
- ^ Armin Shams-Baragh Formulating The Extended Josephus Problem.
Literatura
[uredi | uredi izvor]- Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein (2001). „Chapter 14: Augmenting Data Structures”. Introduction to Algorithms (Second izd.). MIT Press and McGraw-Hill. str. 318. ISBN 0-262-03293-7.
Spoljašnje veze
[uredi | uredi izvor]- Josephus Flavius game (Java Applet) at cut-the-knot allowing selection of every nth out of 50 (maximum).
- Josephus Problem at the MathWorld encyclopedia