Existem funções em O (n) que não são nem em (n) todas em Θ (n)?


7

Uma das minhas palestras faz a seguinte declaração:

(f(n)=O(n)f(n)o(n))f(n)=Θ(n)

Talvez esteja faltando algo nas definições, mas, por exemplo, a classificação das bolhas seja e não mas também não é pois é o melhor caso de execução .O(n2)o(n2)θ(n2)Ω(n)

O que estou perdendo aqui?

Respostas:


10

O que está faltando é um ponto muito importante: um algoritmo nunca é O() de qualquer coisa, já que geralmente não é uma função com valor real.

Quando dizemos que o tipo de bolha é O(n2), o que queremos dizer é que na função f, que representa o pior caso de tempo de execução da classificação de bolhas, éO(n2).

Nesse caso, essa função é realmente θ(n2), já que, na pior das hipóteses, o tempo de execução é limitado por baixo e por cima por cn2 para as constantes relevantes c.

Para ser mais preciso, a função que chamamos de pior caso de execução de um algoritmo A é definido por

fA(n)=maxx:|x|=n{runtime of A on input x}
E é essa função que analisamos para o pior caso de tempo de execução.

O melhor caso de tempo de execução também pode ser analisado, é claro. Como você sugere, o melhor caso de tempo de execução da classificação de bolhas não éθ(n2), mas sim θ(n).


Então, quando aplicamos essa notação, sempre a aplicamos no pior ou no melhor caso separadamente? Especificamente, nunca estamos falando de limitar o tempo de execução em geral , mas, em vez disso, geralmente estamos falando de limitar o pior caso de tempo de execução?
Robert S. Barnes

4
Aplicamos essas notações a funções . Você pode aplicá-los a qualquer função que desejar, incluindo o melhor, o pior e o tempo médio de execução. Muitas vezes, estamos interessados ​​no melhor tempo de execução e, depois, podemos analisá-lo. Se você deseja atribuir um limite ao tempo de execução "em geral", como você o define, seu limite superior é o pior caso de execução e o limite inferior é o melhor caso. Normalmente, nos cursos de graduação, você estará interessado no pior caso de tempo de execução (às vezes também na média).
Shaull 7/03/13

Essa resposta seria boa se a afirmação em questão fosse verdadeira.
Raphael

11
De fato. No entanto, é bastante claro que o que confundiu o OP não é o fato de ser verdade, mas o pior / o melhor caso de tempo de execução.
Shaull 7/03/13

14

Diga ao professor que eles estão errados. Tome a função

f(n)={nn is even,1n is odd.
Esta função é O(n) mas nenhum o(n) nem Θ(n).

Aqui está um exemplo monótono, que pode ser mais convincente:

g(n)=expexplnlnn.

11
Cheguei a ver isso como a armadilha padrão dos assintóticos de Landau e gostaria que houvesse uma boa alternativa que produzisse as relações desejadas.
Raphael

Funções logarítmico-exponenciais (funções construídas a partir de exp, log, operações de campo e constantes) são linearmente ordenadas em relação ao f=o(g)ordem (consulte "Ordens do infinito" de Hardy), portanto, para essas funções, esses problemas não podem ocorrer. A função de piso não é, portanto, logarítmico-exponencial.
Yuval Filmus 7/03/13
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.