Excelente didática professor! Seus 2 videos ensinaram muito mais do que uma matéria inteira da universidade que estou estudando. Grato pelo tempo e conhecimento compartilhado!
Sua explicação é ótima entendi várias coisas que fiquei um ano pra entender . Gostaria de vídeos sobre análise de grafos , seria ótimo. Parabéns continue produzindo estes vídeos.
Gostaria de agradecer pela aula, não tive esse conteúdo na faculdade e descobri ele faz alguns meses. Não tenho conhecimento matemático o suficiente então tento descobrir a complexidade pelas dicas e macetes que encontrei na internet e pelo seu vídeo, muito obrigado!
melhor didática, melhor linguagem, melhor prof., estou passando perrengue pra entender essa análise toda de algoritmo, mas agora estou vendo uma luz no túnel com suas aulas, obgdo, abraço!!
Obrigado 🤖. Fico contente por isso, Eder. Continue firme seus estudos. O canal voltará muito em breve com muitos conteúdos sobre algoritmos, desenvolvimento web e ciência de dados. Fique ligado ✌️
Gostei muito dessas aulas. Mas eu queria saber uma coisa: A finalidade da análise assintotica dentro da programação... No que isso ajudaria no dia a dia de um programador?
Oi, Araujo. Resposta simples: te ajuda a entender o quão eficiente é um dado algoritmo (em termos de tempo e/ou espaço de memória) para avaliar sua aplicabilidade em dada aplicação ou compará-lo com outros algoritmos para a mesma aplicação. Imagine a seguinte situação bem hipotética. Você trabalha numa empresa que desenvolveu um e-commerce. Os usuários podem buscar por determinados produtos, podendo ordenar sua visualização por aqueles com menor preço. A solução mais simples para esse problema seria: 1) O sistema busca todos os produtos relacionados à busca do usuário (e.g., livros de computação) 2) Ordena os produtos pelo menor preço 3) Apresenta na tela os resultados encontrados Imagina que há milhares de produtos relacionados à busca. Há vários algoritmos de ordenação, sendo que cada um possui uma dada complexidade de tempo. Usar um algoritmo "lento" na etapa (2) pode fazer com que o tempo de resposta para o usuário seja muito demora. Imagine o usuário realizar uma busca e demorar minutos pra retornar a resposta. Consequentemente, é provável que você perdesse o cliente. O ideal seria usar o algoritmo mais rápido possível que seja adequado ao seu problema. Saber como identificar a complexidade de algoritmos também lhe faz desenvolver algoritmos mais eficientes. Você pode desenvolver diferentes algoritmos com diferentes estruturas de dados que lhe retornarão o mesmo resultado, porém em tempos de execução diferentes. Conforme você vai ganhando experiência como programador, começará a aprender certas técnicas e estruturas mais eficientes para resolver certos problemas corriqueiros. Saber a complexidade de tempo de tais técnicas/algoritmos lhe ajudará a tomar a melhor escolha.
Olá. Faz sentido o que ele mencionou. E sua observação também faz sentido. Se você compara o valor de 'n' com o valor de 'nlogn', sendo 'n' valores maiores ou iguais a 1 e menores que 10, O(n) será realmente maior que O(nlogn). Por exemplo: - Para n = 5 temos: O(n) = 5 O(nlogn) = 3,49 ~ 3,5 - Para n = 9 temos: O(n) = 9 O(nlogn) = 8,5 - Para n = 10 já temos uma igualdade entre O(n) e O(nlogn). O(n) = 10 O(nlogn) = 10 Então, para qualquer valor de entrada com n > 10, O(nlogn) será maior que O(n). E como estamos falando de análise de pior caso sempre teremos uma quantidade enorme de entradas, o que remeterá a O(nlogn) sendo sempre maior que O(n). Sua observação está correta ao perceber que quando n = 1 tem-se O(n) = 1 e O(nlogn) = 0. Como mencionei, isso só ocorre com 'n' sendo valores entre 1 e 9. Com 'n' sendo valores maiores que 10, O(nlogn) sempre será maior que O(n). Então, quando o professor fala que em 'nlogn', o 'logn' será >= 1, ele está querendo ressaltar que sempre haverá um fator multiplicativo vinculado ao n (que é o logn). Um hora esse fator multiplicativo vai começar a fazer uma grande diferença. E como já mencionado, essa hora é exatamente quando 'n' passar a ser maior que 10. Espero ter ajudado.
Sensacional.
Excelente didática professor! Seus 2 videos ensinaram muito mais do que uma matéria inteira da universidade que estou estudando. Grato pelo tempo e conhecimento compartilhado!
Obrigado, tenho prova de AEDS II amanhã e meu professor é uma ameba.
Aprendi muito com suas explicações. Obrigada!
Sua explicação é ótima entendi várias coisas que fiquei um ano pra entender . Gostaria de vídeos sobre análise de grafos , seria ótimo.
Parabéns continue produzindo estes vídeos.
Gostaria de agradecer pela aula, não tive esse conteúdo na faculdade e descobri ele faz alguns meses. Não tenho conhecimento matemático o suficiente então tento descobrir a complexidade pelas dicas e macetes que encontrei na internet e pelo seu vídeo, muito obrigado!
pq n temos professores assim na faculdade? parece que na faculdade, os professores fazem questão de complicar tudo kkkkkk
vendo em 2024. valeu
Otimo video, só senti falta da explicação de como funciona o O(n Log n)
aula fantastica! simples, direito e objectivo.
Muito obrigado pela explicação, você é bom demais!
exercício:
letra a) O(n^2)
letra b) O(n)
Top!!
Obrigado ✌️
Obrigado pela aula fesor
Aula Fantástica! Ótima didática. 👏👏👏👏👏👏👏
melhor professor de computação do youtube!
Obrigado, Guilherme 🤖
Fico muito feliz pelas palavras.
O canal voltará com vários novos vídeos muito em breve.
Fique ligado ✌️
Obrigada moço ❤
melhor didática, melhor linguagem, melhor prof., estou passando perrengue pra entender essa análise toda de algoritmo, mas agora estou vendo uma luz no túnel com suas aulas, obgdo, abraço!!
Obrigado 🤖.
Fico contente por isso, Eder. Continue firme seus estudos.
O canal voltará muito em breve com muitos conteúdos sobre algoritmos, desenvolvimento web e ciência de dados.
Fique ligado ✌️
Muito didatico! Bom trabalho executado mestre!
Obrigado, Jorge 🤖
O canal voltará com vários novos vídeos muito em breve.
Fique ligado ✌️
Obrigado pela excelente aula
Obrigado 🤖.
O canal voltará muito em breve com muitos conteúdos sobre algoritmos, desenvolvimento web e ciência de dados.
Fique ligado ✌️
Teremos mais aula sobre análise de algoritmos?
Teremos!
O canal voltará muito em breve com muitos conteúdos sobre algoritmos, desenvolvimento web e ciência de dados.
Fique ligado ✌️
@@xavecoding ihaaaa 🤠
ihaaaa 🤠
Errei a O(n²) só porque esqueci de que n*n = n².
Gostei muito dessas aulas. Mas eu queria saber uma coisa: A finalidade da análise assintotica dentro da programação... No que isso ajudaria no dia a dia de um programador?
Oi, Araujo.
Resposta simples: te ajuda a entender o quão eficiente é um dado algoritmo (em termos de tempo e/ou espaço de memória) para avaliar sua aplicabilidade em dada aplicação ou compará-lo com outros algoritmos para a mesma aplicação.
Imagine a seguinte situação bem hipotética. Você trabalha numa empresa que desenvolveu um e-commerce. Os usuários podem buscar por determinados produtos, podendo ordenar sua visualização por aqueles com menor preço.
A solução mais simples para esse problema seria:
1) O sistema busca todos os produtos relacionados à busca do usuário (e.g., livros de computação)
2) Ordena os produtos pelo menor preço
3) Apresenta na tela os resultados encontrados
Imagina que há milhares de produtos relacionados à busca. Há vários algoritmos de ordenação, sendo que cada um possui uma dada complexidade de tempo. Usar um algoritmo "lento" na etapa (2) pode fazer com que o tempo de resposta para o usuário seja muito demora. Imagine o usuário realizar uma busca e demorar minutos pra retornar a resposta. Consequentemente, é provável que você perdesse o cliente.
O ideal seria usar o algoritmo mais rápido possível que seja adequado ao seu problema.
Saber como identificar a complexidade de algoritmos também lhe faz desenvolver algoritmos mais eficientes. Você pode desenvolver diferentes algoritmos com diferentes estruturas de dados que lhe retornarão o mesmo resultado, porém em tempos de execução diferentes. Conforme você vai ganhando experiência como programador, começará a aprender certas técnicas e estruturas mais eficientes para resolver certos problemas corriqueiros. Saber a complexidade de tempo de tais técnicas/algoritmos lhe ajudará a tomar a melhor escolha.
@@xavecoding aah sim, isso faz muito sentido mesmo! Obrigado, cara. E sua didática é muito boa, merece mais reconhecimento! Vlw
Não entendi a explicação pq vc disse nlog(n) é igual ou maior que 1, mas para n=1, log(n)=0 e aí nlog(n) seria zero. Fiquei confusa.
Olá. Faz sentido o que ele mencionou. E sua observação também faz sentido.
Se você compara o valor de 'n' com o valor de 'nlogn', sendo 'n' valores maiores ou iguais a 1 e menores que 10, O(n) será realmente maior que O(nlogn). Por exemplo:
- Para n = 5 temos:
O(n) = 5
O(nlogn) = 3,49 ~ 3,5
- Para n = 9 temos:
O(n) = 9
O(nlogn) = 8,5
- Para n = 10 já temos uma igualdade entre O(n) e O(nlogn).
O(n) = 10
O(nlogn) = 10
Então, para qualquer valor de entrada com n > 10, O(nlogn) será maior que O(n). E como estamos falando de análise de pior caso sempre teremos uma quantidade enorme de entradas, o que remeterá a O(nlogn) sendo sempre maior que O(n).
Sua observação está correta ao perceber que quando n = 1 tem-se O(n) = 1 e O(nlogn) = 0. Como mencionei, isso só ocorre com 'n' sendo valores entre 1 e 9. Com 'n' sendo valores maiores que 10, O(nlogn) sempre será maior que O(n).
Então, quando o professor fala que em 'nlogn', o 'logn' será >= 1, ele está querendo ressaltar que sempre haverá um fator multiplicativo vinculado ao n (que é o logn). Um hora esse fator multiplicativo vai começar a fazer uma grande diferença. E como já mencionado, essa hora é exatamente quando 'n' passar a ser maior que 10.
Espero ter ajudado.