Axiomas de Blum
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 | editar código-fonte]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 .
Exemplos
[editar | editar código-fonte]- é 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 | editar código-fonte]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 | editar código-fonte]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
- ↑ Blum, Manuel (1967). «A Machine-Independent Theory of the Complexity of Recursive Functions» (PDF). Journal of the ACM. 14 (2): 322–336. doi:10.1145/321386.321395