Certamente, existem maneiras de mostrar que certos algoritmos devem levar um certo tempo ou determinadas estruturas de dados requerem uma certa quantidade de espaço. Uma maneira comum é usar a teoria da informação.
Uma matriz não classificada é uma permutação da matriz classificada. temn !possíveis permutações. O trabalho de classificar, no sentido teórico da informação, é descobrir exatamente qual permutação é essa.
Para transmitir um número entre 1 1 e m requer transmissão registro2mbits de informação. Para transmitir uma permutação den elementos, portanto, requer registro2n !bits de informação. Pela aproximação de Stirling, isso acaba sendonregistro2n + O ( ordem baixa ) bits.
Uma operação de comparação binária descobre um pouco de informação. Daqui resulta que qualquer algoritmo de classificação que use apenas uma operação de comparação binária deve executar pelo menosnregistro2n + o (n logn )comparações. Se assumirmos que uma comparação leva uma quantidade constante de tempo, isso significa que a classificação deve levar pelo menosΩ ( n logn ) Tempo.
Uma classificação radical poderia superar isso descobrindo mais de um bit de informações por consulta.
Um argumento semelhante mostra que a pesquisa binária é ideal. Você está tentando encontrar um número entre1 1 e n, o que significa descobrir registro2nbits de informação. Se sua operação de consulta retornar um pouco de informação, você precisará de pelo menosregistro2n consultas para encontrar um elemento.
É uma história semelhante com o uso do espaço. Suponha que você precise armazenar uma permutação na memória. Por um argumento idêntico, isso requer pelo menosnregistro2n + o ( n logn )pedaços de armazenamento. Desde que você precisaregistro2n bits para armazenar um número inteiro entre 1 1 e n, você basicamente não pode fazer nada melhor do que armazenar n inteiros.