Я написал бы следующее как комментарий, но это было слишком долго, чтобы соответствовать.
Давайте сначала опишем значение «алгоритмов в классе с оракулом для языка A.» (На это указал Цуёси Ито). Мы будем использовать то же соглашение, которое использовали Ладнер и Линч . Соглашение хорошо описано Bennett & Gill :C
могут быть определены различными способами, в зависимости от того, как обрабатывается лента запроса. Мы следуем соглашениям Ladner и Lynch [LL]: лента запроса не взимается с пробела, но, чтобы не использовать его как рабочую ленту, лента запроса односторонняя и доступна только для записи и стирается автоматически после каждого запроса. (Саймон [Si] рассматривает ленту запросов как одну из рабочих лент, ленту двустороннего чтения / записи, которая заряжается на ограниченном пространстве. Определение Ладнера-Линча является менее ограничительным и, возможно, более естественным, поскольку для случайного оракулаA∈ L O G S P A C E ALOGSPACEAA∈LOGSPACEA выполняется с вероятностью 1 для [LL], но не для [Si])
[LL] RE LADNER, NA LYNCH, Релятивизация вопросов о вычислимости лог-пространства , Матем. Теория систем, 10 (1976), с. 19-32.
[Si] Дж. Симон, О некоторых центральных проблемах в вычислительной сложности , Tech. Реп ТР 75-224, кафедра компьютерных наук, Корнельский университет, Итака, Нью-Йорк, 1975.
Стандартное определение классов сложности машин-оракулов следующее: Пусть B и C - классы сложности . Тогда является законным класс сложности, определяется как X = ⋃ L ∈ C B L . Здесь B L представляет класс сложности решений задач, решаемых алгоритмом в классе B с оракулом для языка L.X=BCX=⋃L∈CBLBL
Так как X является законным классом сложности, для любого класса сложности А, можно говорить о классах сложности и X A = ( B C ) A .AX=A(BC)XA=(BC)A
относится к классу сложности задачрешаемых решения алгоритма в классе А с оракулом для любого языка L ' ∈ X = ⋃ L ∈ C B L . Другими словами, A X = ⋃ L ′ ∈ { ⋃ L ∈ C B L } A L ′ .AXL′∈X=⋃L∈CBLAX=⋃L′∈{⋃L∈CBL}AL′
относится к классу сложности задачрешаемых решения алгоритма в классе X = ⋃ L ∈ C B L с оракулом для любого языка L ' ∈ A . Другими словами, X A = ⋃ L ′ ∈ A X L ′ = ⋃ L ′ ∈ A ( ⋃ L ∈ C B L ) L ′ .XAX=⋃L∈CBLL′∈AXA=⋃L′∈AXL′=⋃L′∈A(⋃L∈CBL)L′
Утверждение: .(BL1)L′∪(BL2)L′=(BL′)L1∪L2
Side Note: Since it's 3:00 AM now, I'm too sleepy to check the validity of the above claim! I think it's valid & elementary to prove, yet it's nice to see the actual proof.
Таким образом, можно записать .XA=⋃L′∈A(⋃L∈CBL)L′=⋃L∈C,L′∈A(BL′)L
пример
Пусть . Мы знаем , что C уплотнительное N P ⊆ X . Предоставление как доступ стороны оракула к N P , один получает: с о N P N P ⊆ X N P = ( P N P ) N P .X=PNPcoNP⊆XNPcoNPNP⊆XNP=(PNP)NP
эпилог
Плодотворная дискуссия с Цуёси Ито показала (для меня), что нелегко вдвойне релятивизировать класс сложности. На самом деле, даже определение одного кажется проблематичным. Я должен определенно учиться больше, чтобы видеть, дается ли когда-нибудь удовлетворительное определение. Между тем, я ценю любые комментарии, которые могут быть использованы для решения этой проблемы.