Süper Mario Galaxy sorunu


140

Diyelim ki Mario bir gezegenin yüzeyinde yürüyor. Bilinen bir yerden, sabit bir yönde, önceden belirlenmiş bir mesafe boyunca yürümeye başlarsa, nerede duracağını ne kadar çabuk belirleyebiliriz?

görüntü tanımını buraya girin

Daha teorik bir dışbükey politop verilir varsayalım 3-boyutlu uzayda bir başlangıç noktası, yüzeyi üzerinde , bir yön vektör (bazı faset içeren düzlemi içinde ) ve bir mesafe . Mario’nun hangi tarafının içinde duracağını ne kadar çabuk bulabiliriz ? (Teknik bir nokta olarak, eğer Mario köşesine girerse , derhal patlar; neyse ki, bu neredeyse hiç olmaz.)s P v p P PPsPvpPP

Veya eğer tercih ederseniz: polipop , kaynak nokta ve yön vektörünün önceden verildiğini varsayalım . Ön işleme sonra, ne kadar hızlı Verilen bir mesafe için soruya cevap verebilir ?s v Psv

Mario'nun ayak izlerini takip etmek kolaydır, özellikle de sadece üçgen yüzeylere sahipse. Mario, bir fasete kenarlarından birinin içinden girdiğinde, zamanda, diğer iki kenardan hangisini geçmesi gerektiğini belirleyebiliriz. Her ne kadar bu algoritmanın çalışma süresi yalnızca kenar geçitlerinin sayısında doğrusal olsa da , giriş boyutunun bir fonksiyonu olarak sınırlandırılmamıştır , çünkü ' mesafesi çapından keyfi olarak daha büyük olabilir . Daha iyisini yapabilir miyiz?O ( 1 ) PPO(1)P

(Uygulamada, yol uzunluğu gerçekte sınırsız değildir; girdiyi temsil etmek için gereken bit sayısı bakımından küresel bir üst sınır vardır. Fakat tamsayı girişlerinde ısrar etmek, oldukça kötü sayısal sorunları ortaya çıkarır - Tam olarak nerede hesaplıyoruz? duralım mı? - öyleyse hadi gerçek girdilere ve gerçek aritmetik işlemlere devam edelim.)

Bu sorunun karmaşıklığı hakkında önemsiz bilinen herhangi bir şey var mı?

Güncelleme: julkiewicz en yorumun ışığında, gerçek RAM çalışma süresi bakımından tamamen sınırlanmış olduğu açıkça görünüyor (politop karmaşıklığını) imkansızdır. Mario, ve yönünde yürürken, iki taraflı birim karenin özel durumunu düşünün . Mario, tamsayısının paritesine bağlı olarak karenin önünde veya arkasında . Zemin işlevini, PSPACE ve P'yi eşitlemekten mutlu olmadıkça, gerçek RAM'de sabit zamanda hesaplayamayız . Ama biz hesaplayabilir içinde[ 0 , 1 ] 2 ( 0 , 1 / 2 ) ( 1 , 0 ) O ( log ) n- log n[0,1]2(0,1/2)(1,0)O(log)saf algoritmaya göre üssel bir gelişme olan üssel arama ile zaman. ve zaman polinomu her zaman başarılabilir mi?nlog


5
Daha basit bir problem düşündüm, yani: düz bir poligon ve belirli bir noktadan hareket eden bir ışık huzmesi var. Bir kenara ulaştığında, sadece yansıtılır. Belirli bir mesafeden sonra ışının hareketini nerede sonlandıracağını bilmek istiyoruz. Belirli bir poligon şeklinde üst ve alt tarafları çok küçük bir yüksekliğe sahip bir prizma olan bir polyto alarak bu (neredeyse) azaltılabilir. Belki bunu ilk çözmenin yardımı olabilir.
julkiewicz

3
“[T] n ve log l'deki polinom ime” bana mantıklı gelmiyor. L'ye bağlıysa, P'nin koordinatlarına da bağlı olmalıdır ve girdideki tüm sayıların günlüğünü eklerseniz, giriş koordinatları tamsayılarla sınırlandırıldığında girişi temsil etmek için gereken bit sayısıdır. Girdi bit dizgisi olarak verildiğinde gerçek bir RAM'deki zaman karmaşıklığına bakıyorsunuz.
Tsuyoshi Ito

4
Mario eğer Hatta karar şimdiye (bağımsız bir köşe vurur ) zor görünüyor. Burada bilardo dinamikleri alanındaki birçok bilinmeyenle karşılaştığımızı düşünüyorum.
Joseph O'Rourke

2
Gerçekten ilgili değil, ama Süper Mario'nun NP Tamamlılığı
Lamine

10
“Belki de bu yüzden bu kadar yüksek puan aldı,” dedi karmaşıklık teorisi konusunda tamamen ilgisiz biri.
Jeffε

Yanıtlar:


7

Bu problem çok çok zor. Aşağıdaki şekilde kolaylaştırmak için basitleştirebiliriz.

  1. Pπ

  2. Polipopun gerçekten üç boyutlu olmadığını, bunun yerine bir poligonun "çift" olduğunu varsayabiliriz; Bu biraz yastık kılıfı gibi görünüyor. Daha da basitleştirebilir ve çokgenin eşit ve paralel kenarlara sahip olduğunu varsayabiliriz; Örneğin Astroids oyununda olduğu gibi bir kare.

O(log())

Eğer rasyonelliğe sahip değiliz, ancak poligonun bir poligonun iki katı olduğunu varsayarsak, o zaman "irrasyonel bilardolarda dizileri kesme" teorisini tartışıyoruz. Burada aslında hiçbir şey bilinmediği anlaşılıyor; Mesela bu konuşmanın son cümlesine Corinna Ulcigrai tarafından bakınız.

Hiçbir varsayımda bulunmazsak, edebiyatta hiçbir şey düşünemiyorum.

O(log())


0

Bence lineerden daha iyisini yapabilirsin. Teorik bilgisayar bilimi konusunda yeniyim, bu yüzden eğer bu çöp ise, beni affet.

Bazı genel fikirler (değişen değerlerde):

  • Her yüze bir sembol verirsek, Mario'nun üzerlerindeki yörüngesi bir dize olarak tanımlanabilir, burada dize içindeki son sembol cevaptır.
  • Mario'nun bir kenardan başladığını genel olarak kaybetmeden kabul edebiliriz (sadece geriye doğru yürü ve kenarı uzat)
  • Başlama pozisyonları ve açıların 2B alanı, bir sonraki kenardan ayrılabilir. Böylece, a kenarından başlayarak, tabandan x birimleri, a açısı ile, bir fasetten geçtikten sonra V kenarına ulaşıyoruz.
  • Bu noktada başka bir oryantasyon ile başka bir kenardayız, bu yüzden alanı 2-sembol dizgilerin bölümlerine ayırmak için fonksiyonu tekrarlı olarak çağırabiliriz.
  • Bu noktada, TM'ye uygulanacak problem için alanın ayrıklaştırılması gerektiğini söylersek bittik. Bu, her yörüngenin periyodik olması gerektiği anlamına gelir, çünkü ayrıklaştırılmış gezegende yalnızca çok sayıda nokta vardır. Yukarıda açıklanan işlevi tüm başlangıç ​​noktaları için bir yörüngeye kavuşana kadar hesaplayabilir ve bu bilgiyi saklayabiliriz. Sonra problem O (1) olur.
  • Belki bu bir polistendir. Bazı googling bana rasyonel dışbükey çokgenlerin içindeki neredeyse tüm bilardo yörüngelerinin periyodik olduğunu (yani periyodik yörüngelerin yoğun olduğunu) söyledi. Bu nedenle, (örneğin) kare gezegenler için aynı yaklaşım işe yarayabilir.
  • Diğer bir yaklaşım, sistemi bir dizi jeneratörü / tanıyıcı olarak düşünmek olacaktır (yine her yüze kendi sembolünü atayarak). Dilin bilinen bir karmaşıklık sınıfı varsa, cevabınız budur. Polytopes ailesini konveks olmayan ve herhangi bir boyuta genişletirseniz, çok geniş bir dil sınıfını yakalayabilirsiniz.

Bu gerçekten bir cevap teşkil etmiyor, fakat işe geri dönmem gerekiyor. :)


10
“Bu noktada, bir TM'ye uygulanacak problem için alanın ayrıklaştırılması gerektiğini söylersek bitiririz. Bu, her yörüngenin periyodik olması gerektiği anlamına gelir çünkü ayrıklaştırılmış gezegende yalnızca çok sayıda nokta vardır.” Sorunun ilginç kısmını henüz yok ettiniz. Ben do not girişi ayrık olduğunu varsaymak istiyorum; Asıl sürekli problemi çözmek istiyorum, bu sabit zamanda tam olarak gerçek aritmetik yapabilen ideal bir bilgisayar gerektirse de. Özellikle, Mario'nun yolunun hiç bir tepe noktasına dokunmasına gerek yoktur.
Jeffε

Bunun çok kolay olduğunu düşündüm. Sürekli sürümü, sınırlı bir makinede, başlangıç ​​noktası ve gezegen kesin olarak tanımlanabildiği sürece yapabilirsiniz. Yolu sembolik olarak (matematik tarzı) temsil edebilirsiniz. Hangi yüze gireceğinizi bulmak için yalnızca belirli sınırları değerlendirmeniz gerekir. Yolun neredeyse kesin olarak periyodik olduğunu ispatlayabilirseniz (rasyonel dışbükey çokgenlerde bilardo için olduğu gibi), yine de aynı numarayı uygulayabilirsiniz, ancak sonuç çok pratik olmazdı.
Peter

12
Ne yazık ki, jenerik polihedrada jenerik jeodezikler periyodik değildir. (Özellikle, genel çokgenler rasyonel değildir.)
Jeffε

Siz (Peter) bence, "Periyodik bilardo yörüngeleri rasyonel çokgenlerde yoğundur" makalesine atıfta bulunuyorsunuz. Bu mu değil periyodik yolları olduğu anlamına jenerik rasyonel çokgen içinde. Aslında, yalnızca sayılabilir birçok periyodik yol vardır (paralelliğe kadar), bu nedenle genel olma şansları yoktur.
Sam Nead

Aslında, "Veech" poligonunda "benzersiz ergodik" yollar tam ölçüdür. Yani eğer Mario’yu rastgele bir yön olarak gönderirsek, (a) asla bir tepe noktasına çarpmaz (Jeffe’in sorun bildirisinde söylediği gibi), (b) yolu asla kapanmayacak ve (c) büyük ölçeklerde, ziyaret edilen yüzler rastgele görünecektir ("zayıf karışım" özelliği nedeniyle). Bu, soruna olumsuz bir cevap vermez - örneğin, pi'nin rakamları da rasgele görünüyor ...
Sam Nead
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.