Bir Turing Machine tarafından tanımlanmış bir dil L verildiğinde, L'nin NP'de olup olmadığını algoritmik olarak belirlemek mümkün müdür?
Bir Turing Machine tarafından tanımlanmış bir dil L verildiğinde, L'nin NP'de olup olmadığını algoritmik olarak belirlemek mümkün müdür?
Yanıtlar:
Hayır. Birincisi, Rice'ın Teoremi ile bu, yalnızca hesapladıkları dile bağlı olan TM'lerin bir özelliğidir, bu yüzden hesaplanamaz.
Ama, daha da fazlası, bu bilinmektedir ki dizin kümesi (bu da, hesaplama dilleri o TM'lerin kümesi N P ) 'dir Σ 0 3 -tamamlamak ( Σ 0 3 içinde aritmetik hesaplanabilirlilik hiyerarşisi değil, polinom hiyerarşisi).
Bunun gibi sorular önce Hajek tarafından araştırıldı . Daha fazla bilgi için, örneğin Ken Regan'ın bu makalesine bakın .
Hajek'in gazetesinden birkaç büyük külçe:
Joshua Grochow'un işaret ettiği gibi, gerçek sorunuzun cevabı hayır.
Bununla birlikte, Holger'in belirttiği gibi, doğrusal olmayan zamanda Turing makinesinin (NTM) kendini "saat" edip etmediğini ve bir sabit k için n ^ k adımlarından sonra bir saati simüle etmenin bazı standart yollarıyla (örneğin, aşağıdaki kod). Genellikle bir makale ya da kitap (yanlış) bir NTM'nin polinom zamanı olup olmadığını belirlemeyi mümkün kılarsa, bu gerçekten demek istedikleri şeydir. Belki de bu yüzden soruyu sordunuz? (Karmaşıklık teorisini ilk öğrendiğimde ve bir yerde bir TM'nin çok zamanlı olup olmadığını kontrol etmenin mümkün olduğu ifadesini gördüğümde aynı soruya sahiptim.) Asıl soru, bunu açıklamaktan sonra aşağıda tartıştığım bir kişinin neden bunu yapmak isteyebileceğidir. nasıl .
Böyle bir saat özelliği eklemenin birçok yolu vardır. Örneğin, dönüşümlü olarak "birincil algoritmanın" bir ifadesini ve sonra n ^ k adımlarında (yakın bir şey) biten aşağıdaki algoritmanın bir ifadesini yürüttüğünüzde, n uzunluğundaki x girişini düşünün:
i_1 = 1'den n'ye i_2 = 1'den n'ye ... i_k = 1'den n'ye -Op bir; dönüş;
Yukarıdaki kod birincil algoritma durmadan dönerse, tüm hesaplamayı durdurun (diyelim ki reddederek).
Bir NTM'nin bu formda olup olmadığına karar veren algoritma, girdisinin bir poli-zaman NTM olup olmadığına karar vermek için bir algoritma girişimi olarak yorumlanırsa, bazı yanlış negatifleri rapor edecektir: bazı NTM'lerin polinom zamanında durması garanti edilmektedir. bir algoritmanın bir ifadesini, yukarıdaki kod gibi bir saatin bir ifadesi ile değiştirmezler (bu nedenle, çoklu zaman olmasına rağmen reddedilir).
Ancak yanlış pozitifler yoktur. Bir NTM testi geçerse, kesinlikle polinom zamanında durur, bu nedenle bazı NP dillerini tanımlar. Bununla birlikte, belki de temel birincil algoritmasının davranışı değiştirilir, eğer saat bazen birincil algoritma durmadan önce biterse, birincil algoritma bitirmek için yeterli zaman verilirse, hesabın reddedilmesine neden olur. Bu nedenle, karar verilen dil birincil algoritmadan farklı olabilir. Fakatve bu anahtardır, yürütülen birincil algoritma aslında p (n) zamanında çalışan bir polinom-zaman algoritmasıysa ve saatteki k sabiti n ^ k> p (n) kadar büyükse, birincil algoritma her zaman saat bitmeden duracaktır. Bu durumda, birincil algoritmanın yanıtı değiştirilmez, bu nedenle birincil algoritma ve onu taklit eden NTM aynı NP diline karar verir.
Bu neden önemli? Bu, "tüm NP dillerini numaralandırmanın" mümkün olduğu anlamına gelir (söylediğim gibi, literatürde genellikle "belirli bir NTM'nin çok zamanlı olup olmadığına karar verin" veya "tüm çok zamanlı NTM'leri numaralandırın" şeklinde ifade edilir). Daha doğrusu, NTM'nin M_1 M_2, ... 'in sonsuz bir listesini numaralandırmak mümkündür.
Gerçekleşmeyen şey, her polinom-zaman NTM'nin listede olmasıdır. Ancak her NP dili, onu temsil eden sonsuz sayıda NTM'ye sahiptir. Bu nedenle, her NP dilinin, en azından bazı temsilci NTM'lerinin, özellikle de n ^ k'nin M_k'nin çalışma süresini aşan k büyük bir dizinindeki tüm NTM'lerinin olması garanti edilir.
Bu, tüm NP dillerinin bu tür sonsuz (veya sınırsız) listelerini algoritmik olarak numaralandırmayı gerektiren köşegenleştirme gibi numaralar yapmak için kullanışlıdır. Ve elbette, tüm bu tartışma, poli-zaman belirleyici TM'ler gibi poli-zaman NTM'lerinin yanı sıra diğer birçok makine için de geçerlidir.