Neden bazı oyunlar np-tamamlandı?


50

" NP-komple sorunların listesi " hakkındaki Wikipedia girdisini okudum ve süper mario, pokemon, tetris veya şeker ezmesi destanı gibi oyunların np-tamam olduğunu öğrendim. Bir oyunun np-eksiksizliğini nasıl hayal edebilirim? Cevapların çok kesin olması gerekmez. Sadece oyunların np-tam olabileceği anlamına bir genel bakış elde etmek istiyorum.


4
NP'nin eksiksizliği ile ilgili referans soruya bakınız . Bence, sorunuz yığın borsası biçimi için çok geniş.
Kyle Jones,

5
Minecraft'ta, .... iyi bir bilgisayar ... çalışan .... minecraft oluşturabilirsiniz?
djsmiley2k - CoW

4
Magic kullanarak hesap makineleri oluşturmak: Toplama kartları. Büyük eğlence :-)
Mast

Bu, sorduğunuz soruya tam bir cevap değil, ama şunu belirtmek önemlidir: Çok iyi bilinen bir oyun tasarımcısı (ve oyun tasarımındaki resmi yöntemlerin savunucusu) Raph Koster, oyunların hesaplamalı karmaşıklığı, oyunlardan zevk almamız için çok önemlidir. Tehdit edici olmayan bir ortamda zor bir işin performansını iyileştirmeyi öğrenmeye bir cevap olarak "eğlenceyi" tanımlar ve bunu bir oyun gibi kısıtlı bir sistemde yapmaya devam etmenin, davranış modellerine sahip olan sisteme dayandığına işaret eder. ..
Jules

... bu tahminleri kullanmak için yeterince hızlı bir şekilde tam tahminde bulunmak zor veya imkansız, bu nedenle bizi daha az doğrudan bir şekilde öğrenmeye zorluyoruz (genellikle sezgisel tarama kullanarak). Yüksek karmaşıklığa sahip problemler (genellikle NP Hard'ı önerir), bu tür davranış modellerini oluşturmanın en güvenilir yoludur (eğer doğruysa) muhtemelen bu kadar iyi bilinen oyunlarda ortaya çıktıklarıdır. Daha fazlası için bu konferans slaytlarına ve bu kitaba bakın.
Jules

Yanıtlar:


72

Bu, NP-Zor problemlerini kodlayan bu oyunlarda seviye veya bulmaca oluşturabileceğiniz anlamına gelir. Bir grafik renklendirme problemi alabilir, ilişkili bir Super Mario Bros. seviyesi oluşturabilir ve bu seviye, eğer sadece grafik 3 renklendirilebilir ise dövülebilir.

Eğer görmek istiyorsan özgü NP-Tam problemler oyunların çevrilmiş şeklini, ben kağıt tavsiye "Klasik Nintendo Oyunları vardır (Hesaplamayla) Sabit" . İyi yazılmış ve takip etmesi kolay.

Akılda tutulması gereken önemli bir nokta, NP sertliğinin oyunların “açık” şekilde genelleştirilmesini gerektirmesidir. Örneğin, Tetris normalde sabit boyutlu bir tahtaya sahiptir, ancak sertlik kanıtı oyunun keyfi olarak büyük tahtalara izin vermesini gerektirir. Diğer bir örnek ise Super Mario Bros'taki ekran dışı düşmanlardır: ispat, ekranın dışındaki düşmanların ekrandan çıkmış gibi hareket etmeye devam ettikleri oyunun bir türevi içindir, Mario geri döndüğünde ve Mario geri geldiğinde başlangıç ​​pozisyonlarına sıfırlanır. .


4
Tek başına bir cevaba değmez ama aşağıdakiler güzel bir video dersine sahiptir: courses.csail.mit.edu/6.890/fall14/lectures/L05.html - Kristal açıklayıcı açıklamalar.
user340082710

4
Bağlantılı olduğunuz (son derece ilginç!) Bir makaleden kesin bir teori ifadesi eklemeye değebilir, ki bu bir oyunun NP-zor olduğunu söylemenin ne demek olduğunu tam ve kesin olarak açıklar: Karar vermek NP-zordur. hedefe genelleştirilmiş Super Mario
Bros'taki

belki de ilgisiz, ancak en son Pokemon oyunlarıyla (Güneş ve Ay), makaledeki ispat artık doğru değil (en azından olduğu gibi), düşmanı eğitmenler artık onlarla savaşmak için oyuncuya doğru hareket etmiyor.
simonalexander2005

2
NP-Complete olmak için hem NP-Hard problemlerini kodlayabilmelisiniz, hem de NP'de olmalısınız. İkinci fıkra yukarıdaki cevaptan eksik.
Yakk

Her ne kadar bu cevap teknik olarak iyi olsa da, soruyu en başta sormak için yeterince bilinmeyen birine sorunu gerçekten aydınlatıyor mu? Gerçekten olduğunu sanmıyorum ...
MaxW


1

İşte basit bir el sallayarak açıklama:

O(nlog(n))

Bu tür oyunlar NP zordur, çünkü oyuncunun davranışı çok etkileyicidir. Herhangi bir noktada bir oyuncunun sınırlı, hatta sabit sayıda olası harekete sahip olmasına rağmen, oyun boyunca üssel olan bir davranış veya strateji alanı oluşturmak için yeterlidir; ve yerel olarak bir oyuncunun davranışlarının geçerliliği / yararı / doğruluğu hakkında basit bir koşul veya mantıksal formül sunarken, genel olarak büyük bir kombinasyon devresinde veya bir k-CNF formülünde olduğu gibi benzer bir etki elde edersiniz.

Umarım bu biraz sezgisel bir anlam ifade eder ve ayrıca yeterince CS teorisi zilleri çalar.

PS - Bazı oyunlar bundan çok daha fazla (hesaplamalı) karmaşıktır. Örneğin, Hex , Go ve Reversi pano oyunları PSPACE-complete'dur. Bu esasen, kazanma stratejisi için yerine getirmeniz gereken formülün sürekli olarak değişen nicelleştirici bir formül olması nedeniyle: Oyuncu 1 tarafından bir hamle var, oyuncu 2 tarafından her hamle için, oyuncu 1 vb. Bir hamle var. Öyle ki bütün bu hamle oynanmışsa, oyuncu 2'nin hamlelerinin bazıları geçersizdir veya geçerli bir oyuncu 1 kazandık. NP oyunlarında, genellikle sadece bir oyuncunun davranışı / stratejisi / hamle seçimi var.


"Umarım bu biraz sezgisel bir anlam ifade eder" - bana değil ...
Raphael

1

Tek oyunculu oyunlar için, her zaman "oyuncunun kazanma stratejisi var mıdır" sorusunu sorabilirsiniz ve bu soru genellikle polinom zamanında doğrulanabilen ve "tamamlanmış" bir NP tamamlaması olabilir.

İki oyunculu oyunlar için, cevap çok sık olarak polinom zamanında doğrulanamamaktadır, çünkü A için bir hamlenin kazanan bir hamle olduğunu doğrulamak için, B'nin her cevabı için tekrar A için bir kazanan hamle olacağını göstermelisiniz. yakında.


0

Eh, kesinlikle NP cinsindendir, çünkü olası bir çözüm sadece sınırlı sayıda girdidir (her bir giriş çerçevesindeki k düğmelerinden birini seçebilirsiniz, sizi her kareye ait düğmeler seçimini bir harfle gösteririz) kazan-kazan ekranı. Bu oyunun daha önce yenildiğini biliyoruz, bu yüzden biliyoruz ki, bir çözüm var. Bir NTM kasetinin üzerinden geçer ve sihirli bir şekilde n doğru uzunlukta bir sertifika olduğunu tahmin eder. Sonra girdi ile Super Mario'yu simüle eder ve doğrular. Doğrulama polinom zamanında yapılabilir (doğrusal zaman, eğer çözüm doğruysa, kazanması tam olarak n kare olacaktır).

NP-eksiksiz göstermek için, (rasgele kod çalıştırma yoluyla sağlanarak seviyesi jeneratörü ile bir 3-Cts denetleyicisi yapı kendisine 3-SAT azaltabilecek https://www.youtube.com/watch?v=IOsvuEA2h4w ).

Bu nedenle, önce doğru biçimlendirmeyi kontrol ettiğimiz 3 SAT CNF girişimiz var. Eğer kötü biçimlendirilmişse, onu sadece bir 'atlama' girişine çeviririz (bir atlama yaparak Süper Mario'yu bir kare içinde yenmek mümkün değildir).

3-CNF girişinin uzunluğu n.

Doğru biçimlendirilmişse, bizim için 3-CNF denetleyicisini oluşturan (her zaman aynı uzunluk kodunu k), 3-CNF'yi belirli bir giriş dizgesine dönüştüren bir girdi dizisine çevirir. Kontrolördeki CNF (O (n) cinsinden) ve olası tüm çözümleri kaba kuvvetle kontrol eder. Tüm çözümlerden geçtikten sonra hiçbiri bulunmazsa, boşta kalır ve hiçbir şey yapmaz. Oyunu yeniden başlatır ve Super Mario'nun oyunu yenmesi için bilinen bir çözümü kullanır (bunu yapmak için gereken kod uzunluğu j'dir). Bu yüzden dönüşümümüz O (n) 'dedir, yani polinom içindedir.

Eğer CNF kötü biçimlendirilmişse, kazanamayız (tanımı gereği, uygulamanın ardından bir kare kazanmamışsak, girişimiz kazanmıyordur). Eğer CNF tatmin edici değilse, kazanamayız (seviye üretecinde bir kare boşta kazanarak kazanamazsınız, kodumuzda bunu sağladık). CNF tatmin ediciyse, denetleyici bir çözüm bulur ve oyunu yeniden kazanır. Böylece 3-Sat'ın Süper Mario'ya polinom indirimi tamamlandı ve Süper Mario'nun NP-tamam olduğunu ispatladık.

(Umarım bunu bir yerlere batırmamışımdır. 3-CNF çok uzunsa bir depolama sorunuyla karşı karşıyayız ancak bu bağlamda sınırlı depolama genellikle göz ardı ediliyor, sanırım)


“Eh, kesinlikle NP’de, çünkü olası bir çözüm yalnızca sınırlı sayıda girdidir” NP’de olmak, çözümün girdi boyutunda polinom olarak sınırlandırılmasını gerektirir. Sadece sonlu olmak yeterli değil.
David Richerby

0

Önceki bir versiyondaki bazı yorumları ele almak için bu cevabı tekrar yazdım.

Oyunlara odaklanmayan NP-eksiksizliği için Wikipedia tanımını okuduğunuzu varsayıyorum . NP-bütünlüğünün ve oyun teorisinin tam anlamını bir miktar sulayacağım ve bir NP-Tamamlanan oyunun özünü açıklayacağım.

Alternatif hamleleri olan 2 oyunculu bir oyun düşünelim, daha da kısıtlı olarak bu temelde Kombinatoryal oyunlar hakkında . Temel olarak, yapabileceğiniz bazı hamlelerin olduğu ve bunlardan birini seçmeniz gereken bir oyun. "Mükemmel" olarak oynamak istersiniz, bu da asla "kötü" bir hareket yapamayacağınız anlamına gelir. Bu yüzden izin verilen hareketlerden en iyisini seçmek istersiniz. (Tabii ki rakibiniz aynı hedefe sahip ...)

Mükemmel oyunun her zaman kazanacağınız anlamına gelmediğini unutmayın. Oyunun kuralları, birinci veya ikinci oyuncunun kazanması gereken şekilde olabilir. Ayrıca Tic-Tac-Toe gibi bazı oyunlar berabere bitmelidir. Bu nedenle, "mükemmel oyun" un bu tartışmada anlamı:
(1) Asla kazanan pozisyonda olmayacaksınız ve sonra oyunu kaybedeceksiniz çünkü “kötü” bir hamle yaptınız
(2) Alma şansını asla kaçırmayacaksınız Böyle bir fırsat ortaya çıkarsa kazanan pozisyona.

Oyunun şu anki durumu göz önüne alındığında, en iyi hamleyi hesaplamak için "verimli bir algoritma" kullanabilmek. Öte yandan, oyun ağacının tamamında arama yapmak zorunda olan bir algoritmanın "verimsiz bir algoritma" olduğunu not edelim.

CBnT


  • TaBa+bBα1+cBα2+...+hB0
    α

  • TaBn
    n

Şimdi önemli olan nokta, NP tamamlanmış bir oyun için mükemmel bir şekilde çalışan, etkili bir algoritmaya, polinom zamanına sahip olmanın imkansız olmasıdır . Mükemmel bir şekilde oynamak için NP-tamamlanmış bir problem tanım olarak, polinom olmayan bir zamanda çalışan verimsiz bir algoritma ile çözülmelidir.

Çalışma süresinin bir insan tarafından algılanan tepki süresi değil, gerçek hesaplama sayısı ile ilgili olduğunu unutmayın. Tic-Tac-Toe gibi küçük bir oyun için, bilgisayar gelecekteki tüm hareketleri oynayabilir ve yine de bir insan tarafından algılandığı gibi hızlı bir şekilde yanıt verebilir.

İçin Nim bir polinom zaman algoritması oluşturmak mümkündür. Oyunun herhangi bir noktasında, algoritma hangi oyuncunun kazanan bir hamle olduğunu ve bu hamlenin ne olması gerektiğini hesaplayabilir.

Öte yandan, Qubic oyununu ele alalım . (Bir 3B ızgarada 4 satır yapmaya çalışıyorsunuz. Bu yüzden 4x4x4 ızgara üzerinde aslında tic-tac-toe.) Qubic NP-tamamlandı ve bir sonraki mükemmel hareketi hesaplamak için hiçbir polinom zaman algoritması yok. Halen kazanma şansınız olup olmadığını bilmenin tek yolu, belirli bir hareketin kazanan olduğunu ya da en azından kaybeden olmadığını doğrulamak için her iki oyuncunun tüm olası hareketlerini denemektir.

Gerçekten de, Qubic için oyun ağacının tamamı yeterince küçüktür, böylece mükemmel bir şekilde çalışabilen bir bilgisayar programına kodlanabilir. Kodlamanın anlamı, oyun ağacının tamamının keşfedilmesi ve tüm hamle işlemlerinin önceden yapılmasıdır. Böylece, program esasen geçerli pano durumunu kullanarak hızlı bir veritabanı çağrısı yapabilir ve her bir hamle işlemi yapıldığında ağaç araması yapmak zorunda kalmadan o pano durumu için en iyi hamleyi geri alabilir. Bu gerçekten bizim burada amaçlarımız için bir "hile" dir.

Şimdi satranç oynama programlarının diğer bazı özelliklerini göz ardı ederek değerlendirme işlevini tartışmak için satranç tartışalım . Satranç hala çözülmemiş bir oyundur . Birinci veya ikinci oyuncunun kazanması gerekip gerekmediği bilinmemektedir. Herhangi bir kurul pozisyonu verilmesi ve kimin kazanacağını kesin olarak tahmin etmek mümkün değildir. Aslında satranç o kadar büyük bir oyun ağacına sahiptir ki, tüm oyun ağacını aramak imkansızdır. Geçerli bilgisayarlardan yalnızca 10 veya 100 kat daha hızlı değil, milyarlarca zaman daha hızlı olan bilgisayarlara ihtiyacınız olacak. ( Kuantum hesaplamanın bu Gordian düğümünü kesebileceği umudu var .)

Satranç değerlendirme işlevini mümkün olan her hamleye en iyi hamle olma olasılığını vermek olarak düşünün. Bir satranç programının yaptığı şey, ileride bakışları değerlendirme işleviyle birleştirmek. Böylece, program, tahta pozisyonuna "iyi" bir puan verilebilecek bir noktaya gelinceye kadar gelecekteki muhtemel tüm hareketlere bakar. Bilgisayar, ağaçtaki tüm olası yolları bu şekilde değerlendirir ve sonra yolu en iyi skorla seçer. Araştırma, değerlendirilen tüm yollar için hiçbir zaman oyunun sonuna ulaşmadığından, tüm satranç programları sonuçta kusurlu bir değerlendirme işlevi kullanır. (Oyunun sonuna yaklaştıysanız, bilgisayar gelecekteki tüm hareketlere bakabilir.) Bu, program bir noktada kazanan bir konumda olsa bile, programı yenmek mümkün olabilir.


"NP-tamamlanmış bir oyun için etkili bir algoritma, polinom zamanı olması / imkansız olması / NP-tam bir sorunun tanımı gereği polinom olmayan bir zamanda çalışan verimsiz bir algoritma ile çözülmesi gerekir." - Bu doğru değil. NP-komple problemleri polinom zamanında çözmenin mümkün olup olmadığı bilinmemektedir: çoğu araştırmacı cevabın "hayır" olmasını beklemektedir, ancak kesin olarak bilmiyoruz ve bunun tanımı gereği değil. NP-tamamının gerçek tanımı hakkında daha fazla zaman harcamanızı tavsiye ederim . Bu sitede ve Wikipedia'da bazı kaynaklar bulabilirsiniz.
DW

@DW - Evet, cevabı biraz azalttım. Bunu ilk paragrafta söyledim. Eğer Qubic'in altındaki bitleri okursanız, polinom zaman algoritmasının "küçük" bir oyun için nasıl kullanılabileceğini de açıkladım. OP'nin NP bütünlüğü ve oyun teorisi üzerine bir kitap yazmamasını anlamayacağı bir cevap vermeye çalışıyordum.
MaxW

@@ DW - Anladığım kadarıyla kusursuz bir oyuna katılıyordum. Bu niteliği açıkça ekledim.
MaxW
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.