Перейти до вмісту

Задача Йосипа Флавія

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
Задача Йосипа Флавія на 9 перших натуральних чисел з довжиною кроку 5 (зелений позначає елемент, з якого починається відлік, червоний — елемент, який вилучається на поточному кроці)

Задача Йосипа Флавія — задача в комбінаториці, пов'язана з грою в лічилку.

У загальному вигляді задача виглядає наступним чином: на колі було розміщено задану кількість об'єктів, а потім рухаючись по колу в одному напрямку, пропускаючи фіксоване число об'єктів, вилучали по об'єкту поки не залишився лише один. Потрібно знайти об'єкт, який залишився.

Історія

[ред. | ред. код]
Час рухається всередину по спіралі, зелені крапки позначають живих солдатів, сірі мертвих солдатів, а хрестики — вбивства. Солдати з номерами 16 та 31 залишаються останніми.

Задача названа на честь Йосипа Флавія, римського історика єврейського походження, який жив у I ст. н. е. Згідно з безпосередніми свідченнями Йосипа про облогу Йодфату[en], він, бувши командиром, разом зі своїми 40 воїнами були заблоковані в печері римськими солдатами. Більшість з них не хотіли здаватися, тому вони домовились, що будуть убивати один одного шляхом жеребкування, а той хто залишиться в живих останнім мусить сам себе вбити. І як потім писав сам Йосип Флавій, що завдяки везінню, а можливо, і Божому промислу, він і ще один чоловік залишилися до кінця і, замість того, щоб вбити себе здалися римлянам. Ця історія описана в його книзі «Юдейська війна» (автор пише від третьої особи):

Однак у цій крайній скруті він не був позбавлений своєї звичайної кмітливості; але, довірившись Божому провидінню, він піддав своє життя небезпеці [наступним чином]: «А тепер, — сказав він, — оскільки між вами вирішено, що ви помрете, давайте віддамо нашу взаємну смерть на визначення жереба. Кому випаде жереб першим, нехай буде вбитий тим, кому випаде другий жереб, і таким чином фортуна пройде через усіх нас, і ніхто з нас не загине від власної руки, бо було б несправедливо, якби, коли решти не стане, хтось покаявся і врятувався». Ця пропозиція здалася їм дуже справедливою, і коли він переконав їх розв'язувати це питання жеребкуванням, то витягнув один із жеребків і для себе. Той, кому випав перший жереб, підставив шию тому, кому випав наступний, ніби припускаючи, що полководець помре серед них негайно, бо вони вважали, що смерть, якщо Йосиф помре з ними, солодша за життя; але він залишився з другим до останнього, чи то випадково так сталося, чи то з Божого промислу. Позаяк він дуже хотів не бути засудженим жеребом, ані, якби його залишили до останнього, не заплямувати свою правицю кров'ю своїх земляків, то вмовив його довірити йому свою вірність і жити так само добре, як і він сам.
— Йосип Флавій, Юдейська війна, Книга III, гл. 8, п. 7

Залишається неясним порядок, в якому вони один одного вбивали. У 1612 році Клод Гаспар Баше де Мезіріак[en] запропонував конкретний алгоритм, який полягав у тому, щоб поставити солдат у коло і рахувати по три, щоб визначити порядок вбивства.[1][2] Конкретні деталі цієї історії суттєво відрізняються в різних джерелах. Наприклад, у Натана Герштейна[en] та Ірвінга Капланського[en] (1974) Йосип і його 39 побратимів стоять у колі, а кожного сьомого вбивають.[3]

Хоч Йосип у своїй книзі стверджував, що це трапилося випадково, але збережений його слов'янський рукопис розповідає іншу історію: він хитро вирахував, де йому потрібно стати, і обдурив інших.[4][5] Також стверджується, що другий вцілілий воїн був його спільником; тож задача полягала в тому, щоб знайти такі місця для двох, щоб вони залишилися останніми в живих. Він розмістив себе і другого чоловіка на 31-му і 16-му місці відповідно.[6]

У середньовіччі була придумана інша версія цієї задачі, у якій 15 турків і 15 християн знаходяться на борту корабля під час шторму. Корабель потоне, якщо половина пасажирів не буде викинута за борт. Всі 30 стають у коло, і кожну дев'яту людину кидають у море. Потрібно визначити, де потрібно стояти християнам, щоб тільки турки були викинуті. В інших версіях ролі турків і християн міняються місцями.[6][7]

Розв'язок

[ред. | ред. код]

Нехай n — початкова кількість об'єктів у колі, а q — розмір кроку вибування, тобто q-1 об'єктів пропускається, а q-тий вибуває. Об'єкти в колі пронумеровані від 1 до n, лічба починається з 1-ї позиції.  — позиція об'єкта, який залишиться останнім, в початковому колі.

Випадок q = 2

[ред. | ред. код]

У цьому випадку задачу можна розв'язати явно.[8]

Розглянемо ситуацію, коли в початковому колі знаходиться об'єктів. Після першого проходження по колу зникнуть об'єкти з парними номерами, об'єкти, які залишаться, перемістяться з k-ої позиції на . В тому числі переміститься на позицію і оскільки розмір нового кола дорівнює n, то номер цієї позиції також дорівнює Звідси

при

Якщо в початковому колі знаходиться об'єктів, то після першого проходження по колу до першого об'єкта включно для того, щоб розмір нового кола став дорівнювавати n, зникнуть об'єкти з парними номерами та перший об'єкт, номери тих об'єктів, які залишаться, перемістяться з k-ої позиції на . Аналогічно до попередньої ситуації буде справедлива рівність

при

Отримані формули можна звести до однієї:[9]

Для зрозуміло, що останнім залишиться об'єкт, з якого складається коло, тобто

Якщо представити у формі де  — найбільший степінь двійки, що не перевищує та то за допомогою математичної індукції можна показати, що[8]

Цю формулу можна переписати так, щоб вона залежала лише від n:[10]

Також можна довести, що відповідає циклічному зсуву  у бінарному вигляді на один розряд вліво. Тобто, якщо

то

[11]

Випадок q = 3

[ред. | ред. код]

Аналогічно до попереднього випадку можна вивести наступну рекурентну формулу:[12]

де

Для цього випадку також можна вивести явну формулу:[13]

де K = 1.62227050288476731595695098289932411…

Загальний випадок

[ред. | ред. код]

У 1899 математик Пітер Тейт запропонував рекурсивний алгоритм, який пов'язує номер об'єкта, який залишиться останнім, на певному кроці з його номером на наступному кроці:[14][15]

при

Більш швидший алгоритм розробив Дональд Кнут:[16]

;
поки  виконувати 

Також для розв'язання цієї задачі існують алгоритми, які використовують масиви, кільцеві списки або бінарні дерева.[17][18][19]

Перестановка Йосипа

[ред. | ред. код]

Перестановка перших n натуральних чисел Jn, q, утворена шляхом застосування процедури вилучення із задачі Йосипа Флавія з довжиною кроку q, називається перестановкою Йосипа.[20][21] Наприклад,

За допомогою китайської теореми про остачі можна показати, що кількість всіх перестановок Йосипа на множині перших n натуральних чисел дорівнює L(n) = НСК(2, …, n).[1]

Для двох перестановок Йосипа та виконується рівність для всіх де t — фіксоване натуральне число, не більше за n, тоді й лише тоді, коли де L(n,t) = НСК(n+1-t, …, n-1, n).[22]

При n = 1, 2, 3 перестановки Йосипа утворюють симетричну групу Sn, при n = 4, 5 — знакозмінну групу An, а при n > 5 ці перестановки групу не утворюють.[23]

Варіації та узагальнення

[ред. | ред. код]

Можна розглянути обернену задачу Йосипа Флавія, коли відомі n та k такі, що та Jq(n) = k, потрібно знайти розмір кроку q. Розв'язок цієї задачі завжди існує.[20][23]

Задача, у якій об'єкти додатково мають по l «життів», тобто об'єкт вибуває тоді, коли його виберуть l разів, називається котячою задачею Йосипа Флавія. При фіксованих n та q об'єкт, який залишиться останнім, буде незмінним при всіх l, не менших за (n+2)-ге число Фібоначчі.[24] Також можна розглянути задачу, де об'єкти мають по різній кількості «життів».[19]

Крім цього, початкову задачу можна узагальнити так, щоб на кожному кроці вилучали по m об'єктів.[25][26]

Застосування

[ред. | ред. код]

Для шифрування зображень були запропоновані методи на основі хаотичних систем, які для процесу плутанини використовують перестановки Йосипа.[27][28][29]

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. а б Dowdy, James; Mays, Michael E. (1989). Josephus Permutations. Journal of Combinatorial Mathematics and Combinatorial Computing. 6: 125—130.
  2. Bachet, C. G. (1612). Problemes Plaisants ed Delectables qui se font par les Nombres (фр.). с. 174.
  3. Herstein & Kaplansky, 1974, с. 121-126
  4. Cohen, Richard (2022). Making History: The Storytellers Who Shaped the Past. Simon and Schuster. ISBN 9781982195809.
  5. Hailperin, Kaiser & Knight, 1999, с. 65
  6. а б Rouse Ball, W. W. (1905). Mathematical Recreations and Essays (вид. 2nd). London: Macmillan.
  7. Newman, 1988, с. 2403–2405
  8. а б Graham, Knuth & Patashnik, 1994, с. 8-12
  9. Graham, Knuth & Patashnik, 1994, с. 79
  10. Graham, Knuth & Patashnik, 1994, с. 506
  11. Graham, Knuth & Patashnik, 1994, с. 11
  12. Graham, Knuth & Patashnik, 1994, с. 80
  13. Odlyzko, Andrew M.; Wilf, Herbert S. (1991). Functional iteration and the Josephus problem. Glasgow Mathematical Journal. 33 (2): 235—240. doi:10.1017/S0017089500008272.
  14. Theriault, Nicolas (2000). Generalizations of the Josephus problem. Utilitas Mathematica. Citeseer. 58: 161—174.
  15. Tait (1899). On the Generalization of Josephus’ Problem. Proceedings of the Royal Society of Edinburgh. 22: 165—168. doi:10.1017/S0370164600051129.
  16. Graham, Knuth & Patashnik, 1994, с. 81
  17. Lloyd, Errol L (1983). An o (n log m) algorithm for the Josephus problem. Journal of Algorithms. Elsevier. 4 (3): 262—270. doi:10.1016/0196-6774(83)90025-1.
  18. Cosulschi, Mirel; Gabroveanu, Mihai; Constantinescu, Nicolae (2009). Usage of advanced data structure for improving efficiency for large (n, m) permutations inspired from the Josephus problem (PDF). SCIENCE AND TECHNOLOGY. 12 (1): 13—24.
  19. а б Cosulschi, Mirel; Gabroveanu, Mihai; Constantinescu, Nicolae (2013). A Comparative Study on the Algorithms for a Generalized Josephus Problem. Applied Mathematics & Information Sciences. Natural Sciences Publishing Corp. 7 (4): 1451—1457. doi:10.12785/amis/070425.
  20. а б Schumer, Peter (2002). The Josephus Problem: Once More Around. Mathematics Magazine. Taylor & Francis. 75 (1): 12—17. doi:10.1080/0025570X.2002.11953093.
  21. Herstein & Kaplansky, 1974, с. 121-128
  22. Wilson, Gregory L.; Morgan, Christopher L. (2010). An application of Fourier transforms on finite Abelian groups to an enumeration arising from the Josephus problem. Journal of Number Theory. 130 (4): 815—827. doi:10.1016/j.jnt.2009.11.004.
  23. а б Wilson, Gregory (1979). On the Josephus permutation.
  24. Ruskey, Frank; Williams, Aaron (2010). The Feline Josephus Problem. Fun with Algorithms: 5th International Conference: 343—354. doi:10.1007/978-3-642-13122-6_33.
  25. Park, Jang-Woo; Teixeira, Ricardo (2018). Serial execution Josephus problem. Korean Journal of Mathematics. 26 (1): 1—7. doi:10.11568/kjm.2018.26.1.1.
  26. Ariyibi, David; Chang, Kevin; Harris, Pamela E (2019). Generalizations of the Feline and Texas Chainsaw Josephus Problems. Open Journal of Discrete Mathematics. Scientific Research Publishing. 9 (4): 144—158. doi:10.4236/ojdm.2019.94011.
  27. Yang, Gelan; Jin, Huixia; Na, Bai (2014). Image Encryption Using the Chaotic Josephus Matrix. Mathematical Problems in Engineering. 2014 (1). doi:10.1155/2014/632060.
  28. Hua, Zhongyun; Xu, Binxuan; Jin, Fan; Huang, Hejiao (2019). Image Encryption Using Josephus Problem and Filtering Diffusion. IEEE Access. 7: 8660—8674. doi:10.1109/ACCESS.2018.2890116.
  29. Naim, M and Pacha, A Ali and Serief, C (2021). A novel satellite image encryption algorithm based on hyperchaotic systems and Josephus problem. Advances in Space Research. 67 (7): 2077—2103. doi:10.1016/j.asr.2021.01.018.

Література

[ред. | ред. код]

Посилання

[ред. | ред. код]
  • Josephus Flavius game (Java Applet) at cut-the-knot allowing selection of every nth out of 50 (maximum).
  • Weisstein, Eric W. Josephus Problem(англ.) на сайті Wolfram MathWorld.