Voici une alternative possible à un argument de remplissage, basé sur la généralisation de Schöning du théorème de Ladner. Pour comprendre l'argument, vous devez avoir accès à ce document (qui sera malheureusement derrière un mur de rémunération pour beaucoup):
Uwe Schöning. Une approche uniforme pour obtenir des ensembles diagonaux dans les classes de complexité. Informatique théorique 18 (1): 95-103, 1982.
Nous appliquerons le théorème principal de cet article pour et A 2 étant des langues et C 1 et C 2 étant des classes de complexité comme suit:A1A2C1C2
- (ou n'importe quelle langue en P )A1=∅P
- A2=SAT
- C1=NPC
- C2=NP∩P/poly
Par souci de clarté, le fait que nous prouverons que implique N P I ⊈ P / p o l y .NP⊈P/polyNPI⊈P/poly
Dans l'hypothèse que nous avons A 1 ∉ C 1 et A 2 ∉ C 2 . Il est clair que C 1 et C 2 sont fermés sous des variations finies. L'article de Schöning comprend une preuve que C 1 est récursivement présentable (dont la définition précise peut être trouvée dans l'article), et la partie la plus difficile de l'argument est de prouver que C 2 est récursivement présentable.NP⊈P/polyA1∉C1A2∉C2C1C2C1C2
Sous ces hypothèses, le théorème implique qu'il existe un langage qui n'est ni en C 1 ni en C 2 ; et étant donné que A 1 ∈ P , il estime que A est Karp réductible à A 2 , et donc A ∈ N P . Étant donné que A est dans N P mais n'est ni N P- complet ni dans N P ∩ P / p o l y , il s'ensuit que N PAC1C2A1∈PAA2A∈NPANPNPNP∩P/poly .NPI⊈P/poly
Il reste à prouver que est présentable récursivement. Fondamentalement, cela signifie qu'il existe une description explicite d'une séquence de machines de Turing déterministes M 1 , M 2 , … qui s'arrêtent toutes sur toutes les entrées et sont telles que N P ∩ P / p o l y = { L ( M k ) : k = 1 , 2 , … }NP∩P/polyM1,M2,…NP∩P/poly={L(Mk):k=1,2,…}. S'il y a une erreur dans mon argument, c'est probablement ici, et si vous avez vraiment besoin d'utiliser ce résultat, vous voudrez le faire avec soin. Quoi qu'il en soit, en alignant sur toutes les machines de Turing non déterministes à temps polynomial (qui peuvent être simulées de manière déterministe parce que nous ne nous soucions pas du temps de fonctionnement de chaque ) et tous les polynômes, représentant les limites supérieures de la taille d'une famille de circuits booléens pour un étant donné la langue, je pense qu'il n'est pas difficile d'obtenir un dénombrement qui fonctionne. En substance, chaque M k peut tester que son NTM à temps polynomial correspondant est en accord avec une famille de circuits de taille polynomiale jusqu'à la longueur de la chaîne d'entrée qui lui est donnée en recherchant sur tous les circuits booléens possibles. S'il y a accord, M kMkMkMk sorties comme le ferait le NTM, sinon il rejette (et en conséquence représente un langage fini).
L'intuition de base derrière l'argument (qui est caché dans le résultat de Schöning) est que vous ne pouvez jamais avoir deux classes de complexité "agréables" (c'est-à-dire, celles avec des présentations récursives) étant disjointes et assises l'une contre l'autre. La "topologie" des classes complexes ne le permet pas: vous pouvez toujours construire correctement un langage entre les deux classes en alternant d'une manière ou d'une autre entre les deux pour des tronçons extrêmement longs de longueurs d'entrée. Le théorème de Ladner le montre pour et N P C , et la généralisation de Schöning vous permet de faire de même pour de nombreuses autres classes.PNPC