EDIT: Yanıt verdiğim argüman yanlış değildi, ama biraz yanıltıcıydı, sadece üst sınırın bazıları için sıkı olması gerektiğini gösterdi. n (bu aslında önemsizdir, çünkü n=2 ve sınır 1).
İşte daha kesin bir argüman. Bu gösterir eğer üst sınırılog2n
herhangi bir belirli için gevşek n, o zaman herkes için n gereken oracle çağrılarının sayısı O(1).
(Elbette öyle değil O(1), üst sınır asla gevşek değildir! Ama aslında bunu burada kanıtlamıyorum ve soruna başka bir cevap verildiğinde, takip etmeye değmez gibi görünüyor.)
Maksimum çıktıyı hesaplama problemini düşünün :
Verilen n-tuple (M1,…,Mn) Turing makinelerinin maksimum çıkışını hesaplayın (çalıştığında duran Turing makinelerinin ϵ). Hiçbiri durmazsa, 0'a dönün.
Bir fonksiyonu olarak n, bu işlevi hesaplamak için gereken en kötü sayıda oracle çağrısı hangisinin nverilen makineler durur. (Hangi makinelerin durduğunu bilirsem, maksimum çıktıyı kolayca hesaplayabilirim. Tersine, hangi makinelerin durduğunu bilmek istersem, sorun ifadesindeki yapıyı takip ederek, makineler yapabilirim{M′i} (i=1,2,…,n)
nerede M′i hepsini çalıştırır n paralel olarak verilen makineler, ardından durur ve çıkış i Eğer ihiç durmadı. Maksimum çıktı bana duran sayıyı söyleyecektir. Bundan tam olarak hangi durduğunu hesaplayabilirim.)
Şimdi izin ver n0 en küçük tamsayı ol n (varsa) aşağıdakilerin geçerli olacağı şekilde:
kullanma C(n)=max{k∈Z:2k<n}oracle çağrıları, verilen makinelerin maksimum çıktı hesaplanabilir . (Yani, üst sınır için sıkı değildir .)nn
Açıkça , çünkü . Aslında, de, çünkü , ancak verilen makinenin maksimum çıktısını hesaplamak kararsızdır (oracle çağrıları olmadan). Şimdi daha büyük düşünün :n0>1C(1)=−1n0>2C(2)=02n
İddia: Eğer sonlu, sonra, herhangi , tek bir maksimum çıkış hesaplayabilir verilen makineleri torpil aramaları. n0nnC(n0)( , olduğuna dikkat edin .)n0C(n0)=O(1)
Kanıt. . Biz üzerinde indüksiyon ile kanıtlamak . Temel durumlar, ve tanımı gereği .nn≤n0n0C
, herhangi bir Turing makinesi verildiğinde, sadece çağrılarını kullanarak maksimum çıktıyı hesaplayan TM olsun .Q0n0C(n0)
Herhangi bir . Herhangi bir makine , , maksimum çıktıyı aşağıdaki gibi hesaplayın.n>n0nM1,…,Mn
İlk makinelerine . Bu makinelerde çalıştırmayı düşünün . Not bu yapan oracle aramaları ve orada sadece bu çağrılara oracle mümkün tepkiler. Tanım gereği . Let belirtmek inci olası tepkisi. Her , bu makinelerde aşağıdaki gibi
simüle eden bir makine oluşturun :M1,…,Mn0Q0n0Q0C(n0)n′=2C(n0)n′=2C(n0)<n0oiii=1,…,n′M′iQ0
TM ( girişinde ):M′iϵ
- Benzet üzerinde makineleri , ancak bunun yerine kahini çağıran, uygun oracle cevap vermekte varsayalım .Q0n0(M1,…,Mn0)oi
- Bu simülasyon (örneğin, kehanetin gerçekte geri döneceği şey değilse).oi
- Simülasyon alıkoymalarla Eğer izin o maksimum çıkış olmak verilecek diyor.hiQ0
- Tüm makinelerini kırlangıç . Bunlardan biri çıktısı , durdurun ve çıktısını .n0(M1,…,Mn0)hihi
Şimdi, verilen makine dizisinde , ilk makine yerine bu makine . Bu makine dizisi üzerinde yinelenerek hesaplanan değeri döndürün . (Kehanetin tekrarlamadan önce çağrılmadığına dikkat edin, böylece kehanet sadece temel duruma ulaşıldığında çağrılır.)nn0M1,…,Mn0n′<n0M′1,…,M′n′n−(n0−n′)<n
İşte bu hesaplamanın doğru olmasının nedeni budur. İçin öyle ki Oracle ile `` doğru 'tepki sorgularına, durdurmak ve orijinal doğru maksimum çıkış verecek makineleri. Bu nedenle, makinelerinin maksimum çıkışı
en azından makinelerinin maksimum çıkışıdır . Öte yandan, 4. adımda, hiçbir
maksimum çıktıdan daha büyük bir çıktı veremez . Böylece, makinelerinin maksimum çıktısıioiQ0M′in0n′(M′1,…,M′n′)n0(M1,…,Mn0)M′i(M1,…,Mn0)n′(M′1,…,M′n′) değiştirdikleri makinelerin
maksimum çıktısına eşittir . QEDn0