Estou lendo um livro chamado Principles of Computer Science (2008), de Carl Reynolds e Paul Tymann (publicado pela Schaum's Outlines).
O segundo capítulo apresenta algoritmos com um exemplo de pesquisa sequencial que simplesmente itera através de uma lista de nomes e retorna VERDADEIRO se um determinado nome for encontrado na lista.
O autor continua dizendo (página 17):
Dizemos que a "ordem de crescimento" do algoritmo de busca seqüencial é n. A notação para isso é T (n). Também dizemos que um algoritmo cuja ordem de crescimento está dentro de algum fator constante de T (n) tem um teta de NL. "A pesquisa seqüencial tem um teta de n." O tamanho do problema é n, o comprimento da lista que está sendo pesquisada.
Acho isso muito difícil de seguir. O livro está cheio de erros, por isso não tenho certeza se estou faltando alguma coisa ou se há um erro de digitação no parágrafo acima. Em inglês geral, raramente vejo qualquer frase terminar com "... diga".
Estou muito confuso.
T de quê? O livro não explica. É para o tempo ou para teta?
Se "um theta de NL" significa "A pesquisa seqüencial tem um theta de n". L de quê? 'Linear' ou 'comprimento'?
Escrevi para os editores pedindo uma explicação. Eles disseram que encaminhariam minha mensagem aos autores. Eles não responderam. Também tentei procurar outras fontes, mas ainda sinto que estou entendendo mal alguma coisa - por isso não posso descansar até decodificar este parágrafo.
Se alguém tiver uma cópia desse livro e tiver entendido esse parágrafo. Então, eu apreciaria se você pudesse me informar se esse parágrafo é preciso ou explicá-lo em outras palavras. Obrigado.
Respostas:
O parágrafo está errado. Infelizmente, parece exatamente o tipo de coisa que um aluno que não entende o material escreveria como resposta a um exercício. Esse tipo de bobagem não tem lugar em um livro didático. Não faça movimentos bruscos. Largue o livro. Afaste-se do livro.
Obviamente, isso foi mutilado. Eu acho que os autores pretendiam escrever algo como,
Mas, por favor, não dizemos "tem um teta de ", assim como, se é a sua notação de altura, você não diria "John tem um de 180cm". Não é apenas uma forma correta de palavras. Na verdade, dizemos: "O tempo de execução do algoritmo é theta (ou theta de )". Observe em particular que é uma ferramenta para falar sobre funções matemáticas, não sobre algoritmos. Teta não significa que o tempo de execução seja alguma coisa; é algo que você pode usar para falar sobre o tempo de execução.n h h n n Θ
"NL", a propósito, denota o espaço de registro não determinístico da classe de complexidade , que não faz nenhum sentido na posição em que apareceu na citação original.
fonte
Parece que o autor está tentando explicar a notação Big O , mas a renomeou como por nenhuma razão específica e destruiu completamente o texto.T
Para uma boa descrição da notação Big O (assim como little-o e Theta), recomendo o livro Introdução aos Algoritmos do MIT, do Prof. Leiserson.
Parece que uma distinção importante é que se refere à complexidade total de um algoritmo, que normalmente é tempo , espaço ou ambos. (por exemplo, alguns algoritmos são mais lentos com conjuntos de dados maiores; outros requerem mais espaço de armazenamento com dados maiores; e outros requerem mais tempo e mais espaço) .O−notation
Parece que esta se refere apenas à medição do tempo de um algoritmo e não leva em consideração os requisitos de armazenamento.T−notation
fonte