Il y a en effet peu de connexion. Pour une compréhension approfondie, permettez-moi d'expliquer le lien entre les programmes et les circuits .
Un programme (ou algorithme ou machine ) est un mécanisme de calcul d'une fonction. Pour être précis, supposons que l' entrée est une chaîne binaire et que la sortie est une sortie booléenne b . La taille de l'entrée est potentiellement illimitée. Un exemple est un programme qui détermine si l'entrée est le codage binaire d'un nombre premier.xb
Un circuit (booléen) est une collection d'instructions pour calculer une fonction finie . Nous pouvons imaginer le circuit comme un circuit électrique, ou le considérer comme une séquence d'instructions (cette vue est appelée confusément un programme en ligne droite ). Concrètement, nous pouvons supposer que l' entrée est une chaîne binaire de longueur n et que la sortie est booléenne. Un exemple est un circuit qui détermine si l'entrée code pour un nombre premier (comme auparavant, seulement maintenant l'entrée doit être de longueur n ).x nn
On peut convertir un programme en un circuit P n qui simule P sur des entrées de longueur n . La séquence correspondante des circuits P 0 , P 1 , P 2 , … n'est pas arbitraire - ils peuvent tous être construits par un programme qui a donné n sorties P n . Nous appelons une telle séquence de circuits un circuit uniforme (de manière confuse, nous considérons souvent la séquence comme un circuit "unique" P n pour un n indéfini ).PPnPnP0,P1,P2,…nPnPnn
Toutes les séquences de circuits ne sont pas uniformes. En effet, une séquence de circuits peut calculer toutes les fonctions, des chaînes aux booléens, calculables ou non calculables! Néanmoins, dans la théorie de la complexité, nous nous intéressons à de tels modèles non uniformes dans lesquels les circuits sont restreints. Par exemple, la question P = NP indique que les problèmes NP-complets ne peuvent pas être résolus par des algorithmes de temps polynomiaux. Cela implique que les problèmes NP-complets ne peuvent pas être résolus par des circuits uniformes de taille polynomiale. On suppose en outre que les problèmes NP-complets ne peuvent pas être résolus par des circuits de taille polynomiale sans l'exigence d'uniformité .
Les modèles de calcul complets de Turing sont des modèles qui réalisent toutes les fonctions calculables (et pas plus). En revanche, des systèmes complets de portes (tels que AND, OR, NOT ou NAND) permettent de calculer des fonctions finies arbitraires en utilisant des circuits constitués de ces portes. De tels systèmes complets peuvent calculer des fonctions complètement arbitraires en utilisant des séquences (illimitées) de circuits.