A fonte dessa pergunta vem de um curso de graduação que estou cursando, que abrange uma introdução à análise de algoritmos. Isso não é para trabalhos de casa, mas para uma pergunta feita no CLRS.
Você tem uma máquina lenta rodando em MIPS e uma máquina rápida rodando em MIPS. Você também tem dois algoritmos da mesma classe, mas diferentes complexidades de tempo de execução: um algoritmo "lento" é executado em considerando que um algoritmo "rápido" é executado em .
Você executa o algoritmo lento na máquina rápida e o algoritmo rápido na máquina lenta. Qual é o maior valor de n de modo que a máquina rápida que executa o algoritmo lento supera a máquina lenta que executa o algoritmo rápido?
Minha solução até agora:
Encontre o conjunto de todos de tal modo que
Este é o meu trabalho até agora:
A única solução que vem à mente agora é conectar todos os valores de até encontrar o primeiro n onde
não é mais válido.
Respostas:
Considere sua última desigualdade:
Agora,Clogn com C=c2yc1x é uma função côncava . Portanto, existem no máximo duas interseções e apenas uma delas é interessante para você; isto é, resolver
e descubra qual algoritmo é mais rápido em qual intervalo, simplesmente calculando os respectivos valores de função em algum momento do respectivo intervalo.
É verdade que resolver explicitamente essa igualdade é difícil / impossível. Para algunsC , álgebra computacional fornece uma expressão em uma função conhecida; interessante interseção (real) acaba sendo
E seC≥eln2 com Wk a continuação analítica da função de log do produto . Esta função não possui um bom formulário fechado, mas pode ser avaliada numericamente por um determinado período.C ; por exemplo, você obtém≈116,74 para C=17 .
fonte