Wikipedia define que seja
Diz-se que um algoritmo tem tempo polinomial se o seu tempo de execução for delimitado por uma expressão polinomial no tamanho da entrada do algoritmo, ou seja, para alguma constante k.
O algoritmo é executado em tempo fortemente polinomial se [8]
o número de operações no modelo aritmético de computação é limitado por um polinômio no número de números inteiros na instância de entrada; e
o espaço usado pelo algoritmo é delimitado por um polinômio no tamanho da entrada.
Em Bernhard Korte, Jens Vygen, Otimização Combinatória :
Definição 1.4.
Diz-se que um algoritmo com entrada racional é executado em tempo polinomial se
- existe um número inteiro k de modo a que ele funcione em , onde n é o tamanho da entrada, e
- todos os números em cálculos intermediários podem ser armazenados com bits.
Diz-se que um algoritmo com entrada arbitrária é executado em tempo fortemente polinomial se
- existe um número inteiro k de modo a que ele funcione em tempo para qualquer entrada que consiste em n e números
- é executado em tempo polinomial para entrada racional.
Por favor corrija-me se eu estiver errado. A seguir estão as diferenças literais que notei:
Para algoritmos de tempo polinomial, a definição de Korte e Vygen é "a definição da Wikipedia + espaço de armazenamento polinomial".
Para algoritmos de tempo fortemente polinomial, a definição de Korte e Vygen e a definição da Wikipedia exigem tempo polinomial no tamanho do armazenamento de entrada. Mas K e V também requerem tempo polinomial no número de números em qualquer entrada, enquanto o Wikipedia também requer espaço de armazenamento polinomial no tamanho da entrada.
Então, as definições de K e V e da Wikipedia para esses dois conceitos são equivalentes, respectivamente? Que outras diferenças e relações existem entre eles?
Obrigado e cumprimentos!
Respostas:
Antes das definições formais, considere o que a classificação "forte / fraca" visa distinguir.
Primeiro, considere executar qualquer um em uma máquina de Turing. Ambos serão executados em várias etapas polinomiais no comprimento da entrada codificada em binário. Consequentemente, o número de operações aritméticas executadas por ambos teria que ser polinomial no comprimento da entrada codificada em binário . Portanto, tanto para o tempo de execução da máquina de Turing quanto para o polinômio, o número de valores de entrada ou suas magnitudes aumenta. Para enfatizar o último, observe que mesmo o mais forte dará mais passos na TM em magnitudes maiores (ele precisa pelo menos ler os bits extras). Sob nenhuma circunstância alguém se torna exponencial (como é o caso do tempo pseudo-polinomial não relacionado). Com uma máquina de Turing sozinha, uma diferença fundamental não parece detectável.
O conjunto de algoritmos que são executados no número de operações aritméticas polinomiais no número de números de entrada é bem definido, mas se sobrepõe à classe de algoritmos que levam o número de etapas da TM exponencial no comprimento da entrada codificada em binário (veja exemplos ). Portanto, para este conjunto, as propriedades no segundo parágrafo não seriam válidas. Para excluir a interseção indesejada, adicionamos uma condição para um espaço polinomial da TM [*].
Em [1] isso é afirmado de duas maneiras:
Essa subclassificação do que já são algoritmos "eficientes" pode ser útil, pois os computadores físicos se assemelham mais às máquinas aritméticas do que às máquinas de Turing; portanto, a subclasse pode identificar o algoritmo que seria mais rápido em uma máquina física se o seu polinômio tivesse um comprimento maior. de entrada codificada em binário são comparáveis (o que não é o caso em, por exemplo,O ( n3) vs. fraco O ( n2) )
[*] A segunda condição é declarada em todos os lugares como espaço polinomial, enquanto exigir tempo polinomial faz mais sentido para mim. O primeiro é mais inclusivo, mas estranho. Existem algoritmos fortemente polinomiais que levam mais do que tempo polinomial? Observe que o exemplo de quadrado repetido não ocupa tempo polinomial nem espaço polinomial.
[1] Grötschel, Martin; László Lovász, Alexander Schrijver (1988). "Complexidade, Oráculos e Computação Numérica". Algoritmos geométricos e otimização combinatória. Springer. ISBN 0-387-13624-X.
fonte