Na teoria da complexidade computacional, os axiomas de Blum ou axiomas de complexidade de Blum são axiomas que especificam propriedades desejáveis de medidas de complexidade no conjunto de funções computáveis. Os axiomas foram inicialmente definidos por Manuel Blum em 1967.[1]

É importante ressaltar que os teoremas da aceleração e do intervalo se mantêm para qualquer medida de complexidade que satisfaz estes axiomas. As medidas mais conhecidas que satisfazem estes axiomas são as medidas de tempo (ou seja, tempo de execução) e espaço (ou seja, uso de memória).

Definições editar

Uma medida de complexidade de Blum é uma tupla   com   um número de Gödel das funções computáveis parciais   e uma função computável

 

que satisfaz os seguintes axiomas de Blum. Nós escrevemos   para a i-ésima função computável parcial sob o número de Gödel  , e   para a função computável parcial  .

  • o domínio de   e o domínio de   é idêntico.
  • o conjunto   é recursivo.

Exemplos editar

  •   é uma medida de complexidade, se   é ou o tempo ou a memória (ou ainda, alguma combinação aceitável dos mesmos) necessária para a computação codificada por i.
  •   não é uma medida de complexidade, uma vez que não satisfaz o segundo axioma.

Notas editar

Uma medida de complexidade de Blum é definida usando funções computáveis sem nenhuma referência a um modelo de computação específico. A fim de tornar a definição mas acessível, reformulamos os axiomas de blum em termos de máquinas de Turing:

Uma medida de complexidade de Blum é uma função   a partir dos pares (máquina de Turing  , entrada   para  ) para os números naturais em união com infinito. Além disso,   deve satisfazer os seguintes axiomas:

  •   é finito se e somente se   pára
  • Existe um algoritmo que, sobre a entrada  , decide se  

Por exemplo, suponha que   dê o número de passos de tempo que a máquina M executa sobre a entrada x antes de parar. O primeiro axioma está claro; o segundo segue porque uma máquina de Turing universal pode simular M sobre x enquanto conta os seus passos. Se M excede os n passos, ela pode parar e rejeitar, então não há necessidade de determinar se M pára sobre x.

Classes de complexidade editar

Para uma função computável total  , as classes de complexidade das funções computáveis podem ser definidas como

 
 

  é o conjunto de todas as funções computáveis com uma complexidade menor do que  .   é o conjunto de todas as funções booleanas com uma complexidade menor do que  . Se nós considerarmos essas funções como funções indicadoras sobre conjuntos,   pode ser pensada como uma classe de complexidade de conjuntos.

Referências