Sou professor e já dei a disciplina de estrutura de dados e eu sempre bato na tecla que o Big O é o conteúdo mais importante, pois o aluno no mínimo tem que saber os impactos e o comportamento do código que ele está desenvolvendo. Para compreender isso eu faço desafios com dados de alta escala e volume, o aluno é obrigado utilizar as estruturas de dados para conseguir poder resolver o problema de forma rápida.
eu achei bem estranho a materia, fizemos codigos em sala de aula, mas não consigo entender como funciona na prática, pra concluir na prática precisamos entregar um programa testado com 4 formas de fazer, vamos ver oq acontece!
🚨 Importante: Sobre a Matriz Se a matriz for uma matriz quadrada (NxN) então a complexidade seria O(N^2) e não O(N*M) ou pra simplificar no video falei O(LINHA*COLUNA). Se o tamanho da matriz quadrada aumentar (ou seja, N aumenta), o tempo de execução crescerá quadráticamente com N. Como falei, é importante comunicar na entrevista se estão falando da quantidade de células ou das dimensões assim como saber se a matriz é quadrada ou não. Sobre a Árvore Binária Como falei se a árvore estiver ordenada (balanceada) vamos ter um O(log(n)) mas se ela não estiver ordenada teremos O(n) ou O(h) onde o h é a altura da árvore. O site para ver todas notações que comentei no video: bigocheatsheet.com
É um bom meio pra levar seu conhecimento em algoritmo para outro nível, porém é apenas uma estatística matemática muito mais comum em meio acadêmico. Em projetos reais é beeem raro ver ela sendo aplicada, e ela tem sido discutida no meio como uma métrica realmente relevante, visto que na pratica os resultados são outros (pesquise por "Big O notation: why it matters, and why it doesn’t"). Então aprenda, vai ser bom para fins de aprendizado e entrevistas, mas n surta com isso.
Lembrando para não ficarem somente na notação O, as notações Theta e Ômega são bastantes importantes também, ou seja em análise de limites assintoticos não analisamos somente até o pior caso, que nesse seria o contexto da notação O().
Caraca, explica bem pra caramba, fui ver pela aula da estácio, já estava endoidando, explicou de forma simples e bem explicado de uma forma que um leigo como eu conseguiu entender a teoria e a pratica, obrigado +1 inscrito
Todos esses conceitos estão descritos no livro Grokking Algorithms (capa com uns ratinhos). Recomendo demais para os iniciantes, uma vez que é um livro super didático e contém até umas ilustrações pra ajudar no entendimento.
Lucas entrou na minha mente agora. Eu tava exatamente estudando sobre complexidade de código, e me chega o Lucas, com um vídeo enviado há 5 mins sobre Big O Notation. O mais brabo apenas
Incrível, esse assunto esta caindo neste período da minha faculdade, eu estava muito confuso e explicou muito bem. Deixou minha mente bem mais clara. Inclusive por conta da faculdade achei que nem era um assunto tão serio, mas agora vou me esforça a buscar mais conhecimento nesse assunto.
Vídeo mais do que necessário. Tem muita gente que se diz Dev Sênior que fica no Twitter dizendo que faculdade é inútil mas não sabe o que é uma simples notação big(o), não sabe como fazer a analise de complexidade de um código, conteúdo básico de segundo período em uma das disciplinas mais importantes do curso de Ciência da Computação. É como meu professor sempre diz: "Tudo na computação muda com o tempo, linguagens deixam de existir, tecnologias morrem, até mesmo a programação estruturada, que foi super consolidada até a década de 90 foi perdendo seu espaço com a chegada da programação orientadas a objetos causando grandes mudanças e fazendo com que os programadores precisassem se atualizar. A única coisa que nunca muda é a base matemática da computação e seus fundamentos, quem não tem isso sempre fica pra trás quando grandes mudanças acontecem. " As IAs representam uma futura mudança, eu tomaria cuidado. Quem possui o real conhecimento por tras da computação, sua base matemática e seus fundamentos consegue com mais facilidade se adaptar quando surgem novas tecnologias como muita gente fez muita gente antes do grande boom do Machine Learning. Demorou anos pra que disponibilizassem bibliotecas que permitissem que outros devs "criem" modelos e facilmente treinem com seus dados, mas a área de estudos de machine learning se iniciou em 1950 e já em 1970 surgiu o perceptron, um modelo de rede neural simples que pode ser usado pra aprender a classificar padrões lineares. Quem teve sua base bem fundada conseguiu aprender antes mesmo do grande boom mas somente hoje a grande massa está tendo acesso. Quem tem as bases bem fundadas e entende bem o inglês consegue pegar os diversos conteúdos que existem pra estudar e caso seja necessário migrar de área consegue se adaptar pois já está meio caminho andado, mas quem não tem, vai precisar ficar esperando seu youtuber favorito fazer vídeo.
Tô lendo nesse momento o livro: Entendendo Algoritmos - Um guia ilustrado para programadores e outros curiosos e esse vídeo veio bem a calhar junto com a leitura, gratidão 🙏
que video bom, desmistificou o bicho de sete cabeças que eu criei na minha mente sobre esse tema, deu até mais vontade de estudar... mandou muito na explicação!
Eu vendo aqui dps de estudar e testar alguns algoritmos de busca linear e busca binaria.. lendo o livro e aplicando nas linhuagens que estudo(java e js) e feliz da vida pq to aprendendo. Vou ta pronto quando a vaga chegar
Mano nunca ouvi falar em BIG O e minha cabeça bugou um pouco e quando perguntou sobre arvore binaria? Fiquei 🥲 F. Ainda bem que comentou oq era. Lucas seus conteúdos são wonderful. Sempre assisto os videos apesar de não entender alguns kkk Abraços.
Um detalhe importante sobre a busca binária é que apesar da busca ser muito rápida ela requer que seus dados estejam ordenados o que faz com que o custo de inserção de novos elementos seja maior que em cenários em que tu não precisa manter a estrutura ordenada. No fim cada caso tem que ser analisado individualmente. Baita vídeo!
ปีที่แล้ว
Sou mais do que iniciante, ainda estou começando a aprender programação, gosto do teu canal.
dependendo da formação, possivelmente existem muitos devs no mercado que não conhecem essa notação( eu mesmo não conhecia) até ser surprendido em um processo de seleção. Mas nunca é tarde para aprender, Lucas mandou muito bem na apresentação e recomendo tbm a galera estudar mais sobre grafos junto com esses conceitos de complexidade.
Esse vídeo me fez lembrar uma matéria na faculdade chamada complexidade de algoritmo. Nela analisávamos se um trecho do código tinha desempenho bom ou não através da formula matemática. fiz essa matéria em 2010 e até hoje faz todo o sentido rsrs
Lucas seu vídeo caiu como uma luva... Estou estudando nesse exato momento na faculdade estrutura de dado e estou vendo Big O e árvore binária. Deu pra perceber enquanto assistia o vídeo que estou entendo do assunto. Valeu e quero mais!
4:36, eu falei que era o for, pq o for seria o que mais iria demorar pra ser resolvido, pq como ele aumenta de forma exponencial, ele é o mais pesado dependendo do tamanho do array. O que entendi até então é que: O big o notation serve para identificar as partes mais demoradas ou que vão custar mais (de desempenho eu acho) no sistema. Não sei se está certo, no final do vídeo eu volto e comento oq estou entendendo e oq acho que é o big o notation!
6:16, OK é O de ENE, pq ele pega o que for maior dentro da função e encapsula toda a função nessa notação, me surgiram duas dúvidas: 1: Quando eu crio uma função inteira O(1) e apenas um trecho dela é O(n), mesmo assim ela vai ser considerada O(n)? r: Pelo que entendi até então sim! (Eu mesmo estou respondendo, mas fiquem a vontade pra responder tbm!) 2: Caso eu tenha um função O(n) aninhada em outra função O(n), eu tenho uma função 2*O(n)? r: Não, o resultado seria O(n^2), pois estaríamos multiplicando O(n) X O(n). (GPT ajuda muito pra aprender haha)
Terminei o vídeo, o que entendi é que Big O Notation serve para nos dizer qual a parte mais pesada do nosso código (seja por tempo ou processamento), os tipos de notações variam desde muito bom até meu Deus do céu me ajuda, agora vou começar a tentar identificar o Big O nos meus futuros códigos e tentar chegar sempre no O(1), ou O(log n) e caso seja muito difícil melhorar, deixar até um O(n) mesmo haha! Obrigado por mais um vídeo incrível senhor Lucas Montano do canal Lucas Montano!
Lucas te confesso que nunca tinha ouvido falar sobre o tema, mas não é novidade pelo meu nível iniciante no mundo dev, mas curto d+ a sua didática e a maneira com que vc conduz os temas aqui no seu canal... assisto a todos os vídeos, ainda que eu não conheça do assunto, assim forço o meu cérebro a se acostumar com as informações!!! muito obrigado...
Explicação foda, me jogaram isso no primeiro semestre da faculdade quase sem explicação kkkk, abriu bastante minha mente esse vídeo. Obrigado Lucas Montano do canal Lucas Montano.
Ficou bacana sim Lucas! Entendi mais um pouco sobre o Big O Notation. No dia a dia a gente acaba não pensando em termos e especificações técnicas, só quer que o código seja o mais performático possível e fácil de entender. O que me quebra são essas coisas mais técnicas que não penso enquanto trabalho desenvolvendo meus sistemas, quando preciso passar por elas em matérias da faculdade, por exemplo. Valeu!
Boa! Quando paguei Estrutura de dados na faculdade eu vi isso dai, mas muita coisa eu fui me esquecendo, implementei pouquissimas vezes uma árvore e tal
Vim pra tentar entender BigO e saí com a cabeça explodindo de tanta informação, HAHAHAH Valeu Montano por sempre explicar tudo nos mííííííínimos detalhes, heheheh. Abraço de Porto Alegre-RS. Obs.: estou lendo o livro "Entendendo Algoritmos - Aditya Y. Bhargava", vi o tema e fui procurar por fora.
Ontem chegou aqui o livro Entendo Algoritmos E aparece o video do lucas sobre bigO Achei que so as bigtechs me espionavam Agora sei que sao as bigT e o Lucas Montano
Bicho, ainda bem que eu conheci "programação" por meio da matemática/ciencia da computação. Lembro que a primeira coisa que meu mestre me ensinou foi sobre Análise e complexidade algoritmos.
Lucas, eu estava fazendo uma liçao do CS50 justamente sobre isso hj e nao estava entendendo mto bem! Agora sei Tudo! Vlw! By the way 7:02 é "contiver". Eu percebi q vc hesitou ao dizer.
Você só vai entender isso de fato (DE VERDADE MESMO) quando já tiver estudado calculo 1, estrutura de dados e quando já compreender filas e listas do SO.
eu simplesmente trabalhava como programador fazia cerca de 1ano e 6 meses quando resolvi me aprofundar nessas questões não faço idéia como que eu progredi tanto até hoje mal mal entendendo big O notation
Então resumidamente Big O Notation nada mais é que um conjunto estatísco que visa ilustrar o desempenho da estrutura de dados que a pessoa está desenvolvendo. Obrigado pelas dicas.
Muito bom o vídeo Lucas, continue trazendo conteúdos como este! A maioria dos devs só estão interessados em ferramentas, coisas que mudam constantemente e são efêmeras (lógico que possuem sua importância). Mas esquecem a importância da Ciência da Computação. Aquilo que é imutável, os conceitos base, e o que realmente importa para se ser um programador com mais qualidade.
Belo trabalho Lucas, gosto bastante do tema, séria ansioso para ver mais assuntos como este aqui. Tentando acrescentar um pouquinho ao vídeo para quem possa ler, o Big O descreve o limite superior do algoritmo, são palavras difíceis mas quer dizer que o Big O não é tão exato, por exemplo se tu tem um algoritmo linear e digo que o o Big O é O(n^2) não esta errado, pois o O(n^2) é um limite superior a 0(n). Para quem tem interesse, pode-se pesquisar por Big O, que ira encontrar outras anotações como Omega e Theta, que assim como o Big O descrevem o comportamento assintótico do algoritmo porém de formas diferentes, O Omega vai ser o limite inferior e o Theta é limite exato que mostrar o comportamento do algoritmo com inputs maiores. Além disso tem mais um tópico importante que não é tão usado, porém Big O é usado para ter uma ideia do uso de recursos de acordo com que o input da tua aplicação cresce, normalmente consideramos recursos sendo somente CPU ou Clocks pois essa dinâmica muda um pouco em multithread, porém o Big também pode ser usado para calcular o uso de memória (RAM) . Enfim, espero não ter cagado a explicação do Lucas e deixado as coisas mais confusas na cabeça de ninguém, e talvez ter sido útil para alguma alma perdida aqui nos comentários.
Importante falar o motivo do qual se descarta as complexidades menores do mam algoritmo, eh importante isso pq quando tu joga n ao infinito o o(1) fica bem descartavel, ou entao o(n) o(n^2) quando tu observa o grafico dessa funcao para o limit de n para o infinito, tu percebe que o n é ínfimo comparado ao n2
Conteúdo excelente meu mano. Se destacando demais dos outros conteúdos que temos na bolha. Fez muito bem em não falar desse assunto da semana no twitter!!
Se eu não estiver enganado. Uma arvore binária é básicamente uma arvore de listas ligadas, onde cada nodo contem alem do dado associado ao nodo, ponteiros para os próximos nodos na arvore, fazendo assim, uma estrutura parecida com uma... arvore, tipo o nodo principal, ou original é como se fosse a raiz, e os outros nodos são galhos, a raiz tem ponteiros para galhos, que por sua vez tem ponteiros para outros galhos, até chegar no final da arvore binária. Eu acho que é isso... assumindo q eu não esteja confundindo com outra estrutura...
Ter ponteiros ou listas ligadas entra muito em detalhe de implementação e não conceitual Acho que dá pra definir recursivamente assim: Uma árvore binária é ou: - vazio (e.g. um ponteiro nulo); - ou um nodo contendo um valor de algum tipo, e duas árvores binárias
@@arsnakehert Tbm, mas é pq eu tô pegando da memória da minha aula de algoritimos q eu tive, a gente tava usando a linguagem C. Por isso que tava incluindo conceitos como ponteiros e listas ligadas.
Meu amigo, eu to iniciando agora na programação e não entendi nada KSKSKKSKSKKSKKS, daqui uns 3 meses eu volto aqui e assisto novamente e tento SKKSKSKKKSKKSKSKKSKSKS
Quando tu falou das formas de crescimento, na hora me veio a mente as gravuras dos graficos e curvas kkkkkkkkk e olha que sinceramente eu nao me lembro de cabeca as notacoes em relacao aos algoritmos (pq eu nao to aplicando para cenarios que precisa e enfim) ah as b-treeeeees....
A árvore binária é uma estrutura de dados onde cada nó pode ter 0, 1 ou 2 filhos, e esta quantidade de filhos equivale ao grau deste nó desta árvore. E cada filho de um nó de uma árvore binária pode ser considerado também como sendo uma árvore binária, de modo propositadamente recursivo! ;)
A minha pergunta não tem nada haver com o vídeo. Então Lucas, me diz oq você realmente pensa sobre o mercado atual. Ainda tem espaço pra estudantes? É possível entrar como júnior ainda? Principalmente home office, pra quem mora em cidades que não tem vagas pra desenvolvimento? Qual você acha que é a maior dificuldade pra quem está começando na área agora e qual é o melhor maneira de se aprender sobre o mercado e oq está em alta? São várias coisas mas eu agradeceria muito uma resposta sua
Não sou o Lucas mano, mas tem sim vagas para junior (não é como se a profissão fosse acabar), a maioria das vagas são remotas, e para ver o que está em alta no mercado procure pelas vagas e o que elas estão exigindo.
@@marcosalves9853 obrigado pela resposta, eu tenho essa dúvida pois tenho visto muita gente reclamar que aplica pra mais de 100 vagas e não consegue de jeito nenhum entrar no mercado de trabalho. Isso me faz questionar um pouco se ainda vale a pena investir anos na área
Assiste o video do Fabio Akita "a bolha de startups estourou ?" Entao aproveita, na verdade a melhor hora pra estudar é agora daqui alguns anos quando o mercado voltar a subir você já estará pronto para o mercado
Essa coisa de "depende do teu hardware" envolve justamente o propósito de notações de complexidade: avaliar o desempenho do algoritmo em si, sem levar em consideração fatores específicos de onde vai ser rodado e tal E pra comparar desempenhos, acho que nem precisava falar de árvores binárias diretamente, só assumir que o array sendo percorrido pra busca está com os elementos ordenados :D Até porque talvez tu esteja querendo falar de árvores binárias de pesquisa, que é um assunto mais específico fldskjf btw acho que a implementação de `std::map` no gcc em C++ usa red-black trees, que é um tipo de árvore binária de busca com balanceamento que se estuda em cadeiras de estruturas de dados na faculdade dlskfj
Ba Lucas, tu podia fazer um vídeo sobre a frase "Não é como se tu fosse, sei lá, um programador e precisasse saber disso"... quais são os dissos além desse disso? hahahah
Fala Lucas! Se esse vídeo continuasse com palavras geradas por uma LLM (não é Inteligência artificial e sim um auto complete poderoso) você falaria "big O" na ordem de O(n!)?
se for uma matriz quadrada sim, do contrário seria O(n*m) como disse, e se tu souber já o tamanho da matriz O(n) onde n é tamanho, mas eu aconselho responder O(n*m)…
Lucas, tava meio bêbado ontem e deixei um comentário que lendo hj ficou rude. A dica e valida, eu tenho esse microfone tbm e ele captura o som muito bem a distância. E quando você agarra ele e fala direto nele o som da minha tv vai lá pra cima. Mas espero que você perdoe o tom do meu comentário de ontem. Curto seus vídeos e torço pelo seu sucesso.
nada melhor que comer lucas montano enquanto assisto almoçando
Tu tá comendo Lucas montano???? Lá ele 😮
@@Diegoreecoba lá ele nada. quem não?
🤔
@@Diegoreecoba 😂😂😂😂😂😂😂😂
@@hideki0000 😮 eu gostuuuuummm
senhor lucas, tu ensina muito bem, sério, parabéns!
valeuuu!
Queremos mais vídeos sobre algoritmos!
Real!
Up!
Up
Sou professor e já dei a disciplina de estrutura de dados e eu sempre bato na tecla que o Big O é o conteúdo mais importante, pois o aluno no mínimo tem que saber os impactos e o comportamento do código que ele está desenvolvendo. Para compreender isso eu faço desafios com dados de alta escala e volume, o aluno é obrigado utilizar as estruturas de dados para conseguir poder resolver o problema de forma rápida.
eu achei bem estranho a materia, fizemos codigos em sala de aula, mas não consigo entender como funciona na prática, pra concluir na prática precisamos entregar um programa testado com 4 formas de fazer, vamos ver oq acontece!
🚨 Importante:
Sobre a Matriz
Se a matriz for uma matriz quadrada (NxN) então a complexidade seria O(N^2) e não O(N*M) ou pra simplificar no video falei O(LINHA*COLUNA).
Se o tamanho da matriz quadrada aumentar (ou seja, N aumenta), o tempo de execução crescerá quadráticamente com N. Como falei, é importante comunicar na entrevista se estão falando da quantidade de células ou das dimensões assim como saber se a matriz é quadrada ou não.
Sobre a Árvore Binária
Como falei se a árvore estiver ordenada (balanceada) vamos ter um O(log(n)) mas se ela não estiver ordenada teremos O(n) ou O(h) onde o h é a altura da árvore.
O site para ver todas notações que comentei no video: bigocheatsheet.com
É um bom meio pra levar seu conhecimento em algoritmo para outro nível, porém é apenas uma estatística matemática muito mais comum em meio acadêmico.
Em projetos reais é beeem raro ver ela sendo aplicada, e ela tem sido discutida no meio como uma métrica realmente relevante, visto que na pratica os resultados são outros (pesquise por "Big O notation: why it matters, and why it doesn’t").
Então aprenda, vai ser bom para fins de aprendizado e entrevistas, mas n surta com isso.
Lembrando para não ficarem somente na notação O, as notações Theta e Ômega são bastantes importantes também, ou seja em análise de limites assintoticos não analisamos somente até o pior caso, que nesse seria o contexto da notação O().
Caraca, explica bem pra caramba, fui ver pela aula da estácio, já estava endoidando, explicou de forma simples e bem explicado de uma forma que um leigo como eu conseguiu entender a teoria e a pratica, obrigado +1 inscrito
Cara, FINALMENTE um vídeo que me fez entender isso de verdade. Thanks!
Todos esses conceitos estão descritos no livro Grokking Algorithms (capa com uns ratinhos). Recomendo demais para os iniciantes, uma vez que é um livro super didático e contém até umas ilustrações pra ajudar no entendimento.
Vim fazer uma revisão rápida para prova e acabou ganhando uma seguidora! Você é muito didático parabéns.
Lucas entrou na minha mente agora. Eu tava exatamente estudando sobre complexidade de código, e me chega o Lucas, com um vídeo enviado há 5 mins sobre Big O Notation. O mais brabo apenas
Incrível, esse assunto esta caindo neste período da minha faculdade, eu estava muito confuso e explicou muito bem. Deixou minha mente bem mais clara. Inclusive por conta da faculdade achei que nem era um assunto tão serio, mas agora vou me esforça a buscar mais conhecimento nesse assunto.
Vídeo mais do que necessário. Tem muita gente que se diz Dev Sênior que fica no Twitter dizendo que faculdade é inútil mas não sabe o que é uma simples notação big(o), não sabe como fazer a analise de complexidade de um código, conteúdo básico de segundo período em uma das disciplinas mais importantes do curso de Ciência da Computação.
É como meu professor sempre diz:
"Tudo na computação muda com o tempo, linguagens deixam de existir, tecnologias morrem, até mesmo a programação estruturada, que foi super consolidada até a década de 90 foi perdendo seu espaço com a chegada da programação orientadas a objetos causando grandes mudanças e fazendo com que os programadores precisassem se atualizar. A única coisa que nunca muda é a base matemática da computação e seus fundamentos, quem não tem isso sempre fica pra trás quando grandes mudanças acontecem. "
As IAs representam uma futura mudança, eu tomaria cuidado. Quem possui o real conhecimento por tras da computação, sua base matemática e seus fundamentos consegue com mais facilidade se adaptar quando surgem novas tecnologias como muita gente fez muita gente antes do grande boom do Machine Learning. Demorou anos pra que disponibilizassem bibliotecas que permitissem que outros devs "criem" modelos e facilmente treinem com seus dados, mas a área de estudos de machine learning se iniciou em 1950 e já em 1970 surgiu o perceptron, um modelo de rede neural simples que pode ser usado pra aprender a classificar padrões lineares. Quem teve sua base bem fundada conseguiu aprender antes mesmo do grande boom mas somente hoje a grande massa está tendo acesso. Quem tem as bases bem fundadas e entende bem o inglês consegue pegar os diversos conteúdos que existem pra estudar e caso seja necessário migrar de área consegue se adaptar pois já está meio caminho andado, mas quem não tem, vai precisar ficar esperando seu youtuber favorito fazer vídeo.
Tô lendo nesse momento o livro: Entendendo Algoritmos - Um guia ilustrado para programadores e outros curiosos e esse vídeo veio bem a calhar junto com a leitura, gratidão 🙏
Muito bom esse livro !!
Livro com uma linguagem muito bacana mesmo! Foi minha primeira leitura desse ano! Linka muito com o vídeo e recomendo demais também!
Exatamente, eu estava lendo também e vi que o Lucas Montana postou esse vídeo e ajudou mais ainda a compreensão.
O Brasil é uma grande árvore binária.
Uma das Matérias que mais amo da Computação.
que video bom, desmistificou o bicho de sete cabeças que eu criei na minha mente sobre esse tema, deu até mais vontade de estudar... mandou muito na explicação!
Eu vendo aqui dps de estudar e testar alguns algoritmos de busca linear e busca binaria.. lendo o livro e aplicando nas linhuagens que estudo(java e js) e feliz da vida pq to aprendendo. Vou ta pronto quando a vaga chegar
uso arvore binaria para extrair attributes dos xml e values para transformar em json.
Eu estudei isso a mil anos na faculdade, surpreendentemente ainda me lembro de boa parte
Mano nunca ouvi falar em BIG O e minha cabeça bugou um pouco e quando perguntou sobre arvore binaria? Fiquei 🥲 F. Ainda bem que comentou oq era.
Lucas seus conteúdos são wonderful. Sempre assisto os videos apesar de não entender alguns kkk Abraços.
Um detalhe importante sobre a busca binária é que apesar da busca ser muito rápida ela requer que seus dados estejam ordenados o que faz com que o custo de inserção de novos elementos seja maior que em cenários em que tu não precisa manter a estrutura ordenada. No fim cada caso tem que ser analisado individualmente.
Baita vídeo!
Sou mais do que iniciante, ainda estou começando a aprender programação, gosto do teu canal.
6:16 mereceu pkrl o like nessa
dependendo da formação, possivelmente existem muitos devs no mercado que não conhecem essa notação( eu mesmo não conhecia) até ser surprendido em um processo de seleção. Mas nunca é tarde para aprender, Lucas mandou muito bem na apresentação e recomendo tbm a galera estudar mais sobre grafos junto com esses conceitos de complexidade.
Grafos é MUITO importante.
Lucas faz uma playlist sobre algoritmos
Obrigado pelos seus conhecimentos compartilhados Big Montan0
Esse vídeo me fez lembrar uma matéria na faculdade chamada complexidade de algoritmo. Nela analisávamos se um trecho do código tinha desempenho bom ou não através da formula matemática.
fiz essa matéria em 2010 e até hoje faz todo o sentido rsrs
unica vez na vida q precisei usar log. Gosto de usar o big para numero de iteracoes, tempo de execução é relativo a vaaaaarios fatores
eu jurava que for de for era o^2 e não o2, mas faz bastante sentido considerando que vai desconsiderar as constantes
Lucas seu vídeo caiu como uma luva... Estou estudando nesse exato momento na faculdade estrutura de dado e estou vendo Big O e árvore binária. Deu pra perceber enquanto assistia o vídeo que estou entendo do assunto. Valeu e quero mais!
Big O é o pesadelo de quem não quer estudar o que trás o pão pra mesa. Compilou? Rodou? Ta baum
4:36, eu falei que era o for, pq o for seria o que mais iria demorar pra ser resolvido, pq como ele aumenta de forma exponencial, ele é o mais pesado dependendo do tamanho do array.
O que entendi até então é que: O big o notation serve para identificar as partes mais demoradas ou que vão custar mais (de desempenho eu acho) no sistema.
Não sei se está certo, no final do vídeo eu volto e comento oq estou entendendo e oq acho que é o big o notation!
6:16, OK é O de ENE, pq ele pega o que for maior dentro da função e encapsula toda a função nessa notação, me surgiram duas dúvidas:
1: Quando eu crio uma função inteira O(1) e apenas um trecho dela é O(n), mesmo assim ela vai ser considerada O(n)?
r: Pelo que entendi até então sim! (Eu mesmo estou respondendo, mas fiquem a vontade pra responder tbm!)
2: Caso eu tenha um função O(n) aninhada em outra função O(n), eu tenho uma função 2*O(n)?
r: Não, o resultado seria O(n^2), pois estaríamos multiplicando O(n) X O(n). (GPT ajuda muito pra aprender haha)
Terminei o vídeo, o que entendi é que Big O Notation serve para nos dizer qual a parte mais pesada do nosso código (seja por tempo ou processamento), os tipos de notações variam desde muito bom até meu Deus do céu me ajuda, agora vou começar a tentar identificar o Big O nos meus futuros códigos e tentar chegar sempre no O(1), ou O(log n) e caso seja muito difícil melhorar, deixar até um O(n) mesmo haha!
Obrigado por mais um vídeo incrível senhor Lucas Montano do canal Lucas Montano!
Acabei de ver que têm um limite dentro de cada estrutura de dados*
Lucas te confesso que nunca tinha ouvido falar sobre o tema, mas não é novidade pelo meu nível iniciante no mundo dev, mas curto d+ a sua didática e a maneira com que vc conduz os temas aqui no seu canal... assisto a todos os vídeos, ainda que eu não conheça do assunto, assim forço o meu cérebro a se acostumar com as informações!!! muito obrigado...
Explicação foda, me jogaram isso no primeiro semestre da faculdade quase sem explicação kkkk, abriu bastante minha mente esse vídeo. Obrigado Lucas Montano do canal Lucas Montano.
Cara muito obrigado pelo video, estou estudando sobre estrutura de dados e esclareceu muito sobre o Big O Notation.
Ficou bacana sim Lucas!
Entendi mais um pouco sobre o Big O Notation.
No dia a dia a gente acaba não pensando em termos e especificações técnicas, só quer que o código seja o mais performático possível e fácil de entender. O que me quebra são essas coisas mais técnicas que não penso enquanto trabalho desenvolvendo meus sistemas, quando preciso passar por elas em matérias da faculdade, por exemplo.
Valeu!
Boa! Quando paguei Estrutura de dados na faculdade eu vi isso dai, mas muita coisa eu fui me esquecendo, implementei pouquissimas vezes uma árvore e tal
Lucas, obrigado por explicar o tema, se possivel outros temas para melhorar a base, grato.
Aguardo ansiosamente o Lucas Desmontano.
Vim pra tentar entender BigO e saí com a cabeça explodindo de tanta informação, HAHAHAH
Valeu Montano por sempre explicar tudo nos mííííííínimos detalhes, heheheh.
Abraço de Porto Alegre-RS.
Obs.: estou lendo o livro "Entendendo Algoritmos - Aditya Y. Bhargava", vi o tema e fui procurar por fora.
Lucas explicou melhor que o meu professor da minha faculdade ks
98% dos assuntos da faculdade encontramos professores melhores no youtube kkk
Perfeito Lucas obrigado pela explicação, com certeza um dos melhores videos sobre o assunto em pt-BR.
Impressionante no começo eu não tava entendendo nada no final eu tava igual ao começo 😢
Ontem chegou aqui o livro Entendo Algoritmos
E aparece o video do lucas sobre bigO
Achei que so as bigtechs me espionavam
Agora sei que sao as bigT e o Lucas Montano
Mais vídeos sobre conteúdo tech de verdade! Parabéns pelo conteúdo!
A tarde toda quebrando a minha cabeça
Bicho, ainda bem que eu conheci "programação" por meio da matemática/ciencia da computação.
Lembro que a primeira coisa que meu mestre me ensinou foi sobre Análise e complexidade algoritmos.
Claro, foi uma abordagem mais "historico-contextual" e BEEEEM introdutória, mas com certeza foi um divisor de águas.
Lucas, eu estava fazendo uma liçao do CS50 justamente sobre isso hj e nao estava entendendo mto bem! Agora sei Tudo! Vlw! By the way 7:02 é "contiver". Eu percebi q vc hesitou ao dizer.
Você só vai entender isso de fato (DE VERDADE MESMO) quando já tiver estudado calculo 1, estrutura de dados e quando já compreender filas e listas do SO.
O conceito caiu como uma luva o entendimento, agora é só decorar e treinar
eu simplesmente trabalhava como programador fazia cerca de 1ano e 6 meses quando resolvi me aprofundar nessas questões
não faço idéia como que eu progredi tanto até hoje mal mal entendendo big O notation
Então resumidamente Big O Notation nada mais é que um conjunto estatísco que visa ilustrar o desempenho da estrutura de dados que a pessoa está desenvolvendo. Obrigado pelas dicas.
Muito bom o vídeo Lucas, continue trazendo conteúdos como este!
A maioria dos devs só estão interessados em ferramentas, coisas que mudam constantemente e são efêmeras (lógico que possuem sua importância).
Mas esquecem a importância da Ciência da Computação. Aquilo que é imutável, os conceitos base, e o que realmente importa para se ser um programador com mais qualidade.
Belo trabalho Lucas, gosto bastante do tema, séria ansioso para ver mais assuntos como este aqui. Tentando acrescentar um pouquinho ao vídeo para quem possa ler, o Big O descreve o limite superior do algoritmo, são palavras difíceis mas quer dizer que o Big O não é tão exato, por exemplo se tu tem um algoritmo linear e digo que o o Big O é O(n^2) não esta errado, pois o O(n^2) é um limite superior a 0(n). Para quem tem interesse, pode-se pesquisar por Big O, que ira encontrar outras anotações como Omega e Theta, que assim como o Big O descrevem o comportamento assintótico do algoritmo porém de formas diferentes, O Omega vai ser o limite inferior e o Theta é limite exato que mostrar o comportamento do algoritmo com inputs maiores. Além disso tem mais um tópico importante que não é tão usado, porém Big O é usado para ter uma ideia do uso de recursos de acordo com que o input da tua aplicação cresce, normalmente consideramos recursos sendo somente CPU ou Clocks pois essa dinâmica muda um pouco em multithread, porém o Big também pode ser usado para calcular o uso de memória (RAM) . Enfim, espero não ter cagado a explicação do Lucas e deixado as coisas mais confusas na cabeça de ninguém, e talvez ter sido útil para alguma alma perdida aqui nos comentários.
eu vi bastante sobre na faculdade de ads, mas essa maneira que tu resumiu me fez entender mto mais do que a cadeira inteira HUAHUAHUSH
Muito bom parabéns, gostei muito do conteúdo achei muito didático
Importante falar o motivo do qual se descarta as complexidades menores do mam algoritmo, eh importante isso pq quando tu joga n ao infinito o o(1) fica bem descartavel, ou entao o(n) o(n^2) quando tu observa o grafico dessa funcao para o limit de n para o infinito, tu percebe que o n é ínfimo comparado ao n2
Valeu pelo trabalho Lucas, muito bom cara.. comecei a reforçar as bases acerca de algoritmos e estrutura de dados após seus vídeos, tamo junto!!
AMEI O VIDEO, MAIS NESSE ESTILO POR FAVOR. MUITO TOOOP E DIFERENCIAL!
Muito bom. Parabéns pelo conteúdo !!
Temas assim é interessante.
Que video incrível, tua didática é sensacional, parabéns! Traz mais conteúdo assim
Obrigado pelo conteúdo !
Conteúdo excelente meu mano. Se destacando demais dos outros conteúdos que temos na bolha. Fez muito bem em não falar desse assunto da semana no twitter!!
Vídeo que todo universitário deveria assistir pra se preparar para o mundo!
Se eu não estiver enganado. Uma arvore binária é básicamente uma arvore de listas ligadas, onde cada nodo contem alem do dado associado ao nodo, ponteiros para os próximos nodos na arvore, fazendo assim, uma estrutura parecida com uma... arvore, tipo o nodo principal, ou original é como se fosse a raiz, e os outros nodos são galhos, a raiz tem ponteiros para galhos, que por sua vez tem ponteiros para outros galhos, até chegar no final da arvore binária.
Eu acho que é isso... assumindo q eu não esteja confundindo com outra estrutura...
Ter ponteiros ou listas ligadas entra muito em detalhe de implementação e não conceitual
Acho que dá pra definir recursivamente assim:
Uma árvore binária é ou:
- vazio (e.g. um ponteiro nulo);
- ou um nodo contendo um valor de algum tipo, e duas árvores binárias
@@arsnakehert Tbm, mas é pq eu tô pegando da memória da minha aula de algoritimos q eu tive, a gente tava usando a linguagem C. Por isso que tava incluindo conceitos como ponteiros e listas ligadas.
Meu amigo, eu to iniciando agora na programação e não entendi nada KSKSKKSKSKKSKKS, daqui uns 3 meses eu volto aqui e assisto novamente e tento SKKSKSKKKSKKSKSKKSKSKS
Muito interessante
Traga mais desse tipo de conteudo! Muito bom
Vídeo sensacional
Vídeo absurdo... bem demais
Mais vídeos sobre Algoritmos por favor
Árvore binária/busca binária seria o mesmo que o método [MERGE SORT]?
Quando tu falou das formas de crescimento, na hora me veio a mente as gravuras dos graficos e curvas kkkkkkkkk
e olha que sinceramente eu nao me lembro de cabeca as notacoes em relacao aos algoritmos (pq eu nao to aplicando para cenarios que precisa e enfim)
ah as b-treeeeees....
CS 50 week3. Exatamente onde estou há 2 semanas 😂
MT bom , vou assistir umas 20x kkkk estudei nesse semestre
A árvore binária é uma estrutura de dados onde cada nó pode ter 0, 1 ou 2 filhos, e esta quantidade de filhos equivale ao grau deste nó desta árvore.
E cada filho de um nó de uma árvore binária pode ser considerado também como sendo uma árvore binária, de modo propositadamente recursivo! ;)
O microfone é tão bom que o meio volume é equivalente ao volume máximo em outros canais, rs.
A minha pergunta não tem nada haver com o vídeo.
Então Lucas, me diz oq você realmente pensa sobre o mercado atual. Ainda tem espaço pra estudantes? É possível entrar como júnior ainda? Principalmente home office, pra quem mora em cidades que não tem vagas pra desenvolvimento? Qual você acha que é a maior dificuldade pra quem está começando na área agora e qual é o melhor maneira de se aprender sobre o mercado e oq está em alta?
São várias coisas mas eu agradeceria muito uma resposta sua
Não sou o Lucas mano, mas tem sim vagas para junior (não é como se a profissão fosse acabar), a maioria das vagas são remotas, e para ver o que está em alta no mercado procure pelas vagas e o que elas estão exigindo.
@@marcosalves9853 obrigado pela resposta, eu tenho essa dúvida pois tenho visto muita gente reclamar que aplica pra mais de 100 vagas e não consegue de jeito nenhum entrar no mercado de trabalho. Isso me faz questionar um pouco se ainda vale a pena investir anos na área
Assiste o video do Fabio Akita "a bolha de startups estourou ?" Entao aproveita, na verdade a melhor hora pra estudar é agora daqui alguns anos quando o mercado voltar a subir você já estará pronto para o mercado
Muito bom, só uma observação: println é O(N) e não O(1)
Eu preciso revisar a matéria que fala disso na faculdade.
Me fez lembrar as provas da faculdade que o professor davas um trecho de codigo e pergunta qual era o BIG O.
Que vídeo bom !!
Essa coisa de "depende do teu hardware" envolve justamente o propósito de notações de complexidade: avaliar o desempenho do algoritmo em si, sem levar em consideração fatores específicos de onde vai ser rodado e tal
E pra comparar desempenhos, acho que nem precisava falar de árvores binárias diretamente, só assumir que o array sendo percorrido pra busca está com os elementos ordenados :D
Até porque talvez tu esteja querendo falar de árvores binárias de pesquisa, que é um assunto mais específico fldskjf
btw acho que a implementação de `std::map` no gcc em C++ usa red-black trees, que é um tipo de árvore binária de busca com balanceamento que se estuda em cadeiras de estruturas de dados na faculdade dlskfj
atualizando os likes e comments
O tempo do like me pegou ahahah
Ba Lucas, tu podia fazer um vídeo sobre a frase "Não é como se tu fosse, sei lá, um programador e precisasse saber disso"... quais são os dissos além desse disso? hahahah
8:32
"big old sh*t"
Quando entra nos algoritmos de busca e ordenação que o Big O fica doido hahaha
Que video brabo
Nada melhor que come o Lucas montano enquanto assisto ao almoço
Fala Lucas!
Se esse vídeo continuasse com palavras geradas por uma LLM (não é Inteligência artificial e sim um auto complete poderoso) você falaria "big O" na ordem de O(n!)?
Dúvida, no exemplo da matriz, não seria O(n^2)? Já que temos dois for/loop aninhados.
se for uma matriz quadrada sim, do contrário seria O(n*m) como disse, e se tu souber já o tamanho da matriz O(n) onde n é tamanho, mas eu aconselho responder O(n*m)…
@@LucasMontano Saquei Lucas, valeu pela reposta.
Me corrija se eu estiver errado por favor, mas entendi que O de linhaXcoluna ou O número total de quadradinhos, seria a mesma coisa certo?!
Lucas, tava meio bêbado ontem e deixei um comentário que lendo hj ficou rude. A dica e valida, eu tenho esse microfone tbm e ele captura o som muito bem a distância. E quando você agarra ele e fala direto nele o som da minha tv vai lá pra cima.
Mas espero que você perdoe o tom do meu comentário de ontem. Curto seus vídeos e torço pelo seu sucesso.
a sara já tinha me alertado sobre esse meu problema hehe não esquenta
Matéria estrutura de dados de sistema de informação, saudades
Nutritivo
Alguem consegue me explicar a parte do loop dentro do outro? Pra mim isso seria um O(n^2), nao?