Проблема Super Mario Galaxy


140

Припустимо, Маріо ходить по поверхні планети. Якщо він починає ходити з відомого місця, у фіксованому напрямку, на заздалегідь задану відстань, то як швидко ми можемо визначити, де він зупиниться?

введіть тут опис зображення

Більш формально, припустимо, нам дають опуклий багатогранник у 3-просторі, вихідну точку на поверхні , вектор напрямку (у площині деякої грані, що містить ), та відстань . Як швидко ми можемо визначити, яка грань Mario зупиниться всередині? (В якості технічного моменту припустимо, що якщо Маріо заходить у вершину , він негайно вибухає; на щастя, цього майже ніколи не відбувається.)s P v p P PPsPvpPP

Або якщо ви віддаєте перевагу: припустимо, нам заздалегідь задають політоп , вихідну точку та вектор напрямку . Як попередньо обробити, як швидко ми можемо відповісти на питання про задану відстань ?s v Psv

Легко простежити сліди Маріо, особливо якщо має лише трикутні грані. Щоразу, коли Маріо входить у грань через один із її країв, ми можемо за час визначити, який із двох інших ребер він повинен залишити. Хоча час роботи цього алгоритму є тільки лінійним по числа ребер перетинів, це необмежено як функція від розміру вхідного, так як відстань може бути як завгодно великим , ніж діаметр . Чи можемо ми зробити краще?О ( 1 ) ПPO(1)P

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

Чи відомо щось нетривіальне про складність цієї проблеми?

Оновлення: У світлі коментаря julkiewicz здається зрозумілим, що час роботи в реальній оперативній пам'яті обмежений суто з точки зору (складність політопа) неможливий. Розглянемо особливий випадок двостороннього одиничного квадрата , Маріо починається з і йде в напрямку . Маріо зупиниться на передній або задній частині квадрата залежно від паритету цілого числа . Ми не можемо обчислити функцію статі в постійна час на реальній пам'яті, якщо ми не будемо щасливі прирівнювання PSPACE і P . Але ми можемо обчислити в[ 0 , 1 ] 2 ( 0 , 1 / 2 ) ( 1 , 0 ) л л Про ( увійти л ) н увійти лn[0,1]2(0,1/2)(1,0)O(log)час шляхом експоненціального пошуку, що є експоненціальним вдосконаленням над наївним алгоритмом. Чи завжди досяжний багаточлен у та ?nlog


5
Я подумав про простішу проблему, а саме: у нас є простий багатокутник і промінь світла, який рухається від заданої точки. Коли вона доходить до краю, вона просто отримує дзеркальне відображення. Ми хочемо знати, де промінь закінчить своє проходження після заданої відстані. Його можна (майже) звести до цього, взявши політоп, який є призмою дуже малої висоти з верхньою і нижньою сторонами у формі заданого многокутника. Можливо, вирішити це спочатку могло б допомогти.
julkiewicz

3
“[T] ім’я многочлена в n та log l” не має для мене сенсу. Якщо це залежить від l, воно також повинно залежати від координат P, і якщо ви додасте журнал усіх чисел у вході, це саме кількість бітів, необхідних для представлення вводу, коли вхідні координати обмежені цілими числами. Я думаю, що ви дивитесь на складність часу на реальній оперативній пам’яті, коли вхід подається як бітова рядок.
Tsuyoshi Ito

4
Навіть вирішити, чи колись Маріо потрапить у вершину (незалежно від ), здається важким. Я думаю, що тут ми стикаємося з безліччю невідомих в області більярдної динаміки.
Джозеф О'Рурк

2
Не дуже пов’язаний, але цей документ про NP-повноту Super Mario є справді дивовижним: arxiv.org/pdf/1203.1895v1.pdf
Lamine

10
"Можливо, тому це так високо оцінено", - сказав хтось із прихильністю щодо теорії складності.
Джефф

Відповіді:


7

Ця проблема дуже дуже складна. Ми могли б спростити це, щоб зробити його простішим, як слід.

  1. Pπ

  2. Можна припустити, що багатогранник не є справді тривимірним, а натомість є "подвійним" багатокутника; це трохи схоже на наволочку. Ми можемо ще більше спростити і припустити, що багатокутник має рівні і паралельні сторони; наприклад квадрат, як в грі Astroids.

O(log())

Якщо ми не припускаємо раціональності, але припускаємо, що багатогранник є двійником багатокутника, то ми обговорюємо теорію "розрізання послідовностей в ірраціональному більярді". Здається, тут по суті нічого не відомо; наприклад, подивіться заключне речення цієї бесіди Корінни Ульчіграй.

Якщо ми не робимо жодного припущення, то я нічого не можу придумати в літературі.

O(log())


0

Я думаю, ти можеш зробити краще, ніж лінійний. Я новачок у теоретичній інформатиці, тож пробачте, якщо це сміття.

Деякі загальні ідеї (різної цінності):

  • Якщо ми дамо кожному грані символ, орбіту Маріо над ними можна описати як рядок, де кінцевим символом у рядку є відповідь.
  • Ми можемо без втрати загальності припустити, що Маріо починається на краю (просто йдіть назад і продовжуйте l до краю)
  • 2D простір вихідних положень і кутів можна розділити наступним краєм. Отже, починаючи з краю a, x одиниць знизу, під кутом a, ми закінчуємо край V після перетину однієї грані.
  • У цей момент ми знаходимося в іншому краї з іншою орієнтацією, тому ми можемо викликати функцію рекурсивно, щоб поділити простір на розділи з 2-х символьних рядків тощо.
  • На цьому ми закінчили, якщо скажемо, що простір потрібно дискретизувати для реалізації проблеми на TM. Це означає, що кожна орбіта повинна бути періодичною, оскільки на дискретизованій планеті є лише кінцево багато точок. Ми можемо обчислити описану вище функцію, поки не будемо мати орбіти для всіх вихідних точок і зберегти цю інформацію. Тоді проблема стає O (1).
  • Можливо, це трохи коп. Деякий гуглінг говорить мені, що майже всі більярдні орбіти всередині раціональних опуклих багатокутників є періодичними (тобто періодичні орбіти щільні). Тож для (скажімо) квадратних планет може працювати той самий підхід.
  • Іншим підходом було б розглянути систему як генератор / розпізнавач рядків (знову ж таки, призначивши кожній грані свій символ). Якщо мова має відомий клас складності, це ваша відповідь. Якщо ви розширите сімейство політопів на невипуклі та будь-які розміри, ви можете захопити дуже широкий клас мов.

Це насправді не відповідає, але мені потрібно повернутися до роботи. :)


10
"На цьому ми закінчили, якщо скажемо, що простір повинен бути дискретизований, щоб проблема реалізувалася на ТМ. Це означає, що кожна орбіта повинна бути періодичною, оскільки на планеті, що дискретизується, є лише кінцево багато". Ви щойно знищили цікаву частину проблеми. Я не хочу вважати, що вхід дискретний; Я хочу вирішити фактичну безперервну задачу, хоча для цього потрібен ідеальний комп'ютер, який може робити точну справжню арифметику за постійний час. Зокрема, шлях Маріо ніколи не повинен торкатися вершини.
Jeffε

Я подумав, що це занадто просто. Ви можете робити безперервну версію на кінцевій машині, доки початкова точка і планета можуть бути остаточно описані. Ви можете просто зобразити шлях символічно (у математиці). Вам потрібно лише оцінити певні межі, щоб знайти, на якій стороні ви опинитеся. Якщо ви зможете довести, що шлях майже напевно періодичний (як це стосується більярду на раціональних опуклих полігонах), ви все одно можете застосувати той самий трюк, але результат було б не дуже практично.
Пітер

12
На жаль, загальна геодезика на родових многогранниках не є періодичною. (Зокрема, родові багатокутники не раціональні.)
Jeffε

Ви (Петро), я думаю, маєте на увазі статтю "Періодичні більярдні орбіти щільні в раціональних полігонах". Це не означає, що періодичні шляхи є загальними для раціональних багатокутників. Насправді існує лише чимало періодичних шляхів (аж до паралелізму), тому вони не мають шансів бути загальними.
Сем Неад

Насправді на полігоні "Віч" "унікально ергодичні" стежки є повною мірою. Отже, якщо ми надішлемо Маріо випадковий напрямок, він (а) ніколи не потрапить у вершину (як говорить Джефф у постановці проблеми), (б) його шлях ніколи не закриється, і (с) у великих масштабах послідовність відвідувані обличчя виглядатимуть випадково (через властивість "слабкого змішування"). Це не пропонує негативної відповіді на проблему - наприклад, цифри pi також виглядають випадковими ...
Сем Неад
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.