@@pgdinamica Fiquei me perguntando isso com a variável "i", se possível pra facilitar pra gente quando for ler se puder criar nomes mais claros, facilita pelo menos pra mim. Eu refaço os exercicios e acabo me perdendo no contexto dos nomes das variáveis pq não fica claro o que ela faz :) ai ja me ajuda aqui brigadinhu. Parabéns pelo canal, ajuda mtooooo
@@pgdinamica mas de qualquer forma, canal de vocês é sensacional. Obrigada por compartilhar e ensinar, que farei minha parte aqui do lado, compartilhando e divulgando
Gostei do vídeo. Eu faço pesquisas sobre como aplicar as técnicas da engenharia de sistemas para melhorar a eficiência do serviço público. Atualmente meu foco está nas métricas de complexidade que podem ser usadas para mensurar o trabalho dos agentes públicos. Além do currículo Lattes, eu deixo as minhas pesquisas no canal: Lógica e Complexidade. Tradicionalmente a avaliação de desempenho no serviço público é “proforma”, pois não avalia a complexidade do trabalho, apenas a entrega “binária” das tarefas.
Para quem for tentar fazer as funções mude onde for n-i por n-1-i pois o range sempre vai até o antecessor de n. (n é o tamanho da lista). Ótima aula, parabéns.
Muito bem observado, Rogerio, obrigado! Dessa vez, como não testamos, esses erros me passaram despercebidos Tanto os índices, como o nome da variável. Abração!
Assistido✔️ Que diferença uma boa didática faz, já estudei um pouco sobre complexidade, mas você fez eu entender melhor que outros vídeos que assisti. Bimestre que vem na faculdade vou ter algoritmos e logica de programação 1 e 2 então seus vídeos já estão me preparando.
Vou ter Algoritmos e Estruturas de Dados nesse período e a matéria de Complexidade de Algoritmos é a primeira da ementa, aí vim ver como é, excelente vídeo amigo, obrigado!
Meus algoritmos matemáticos são um complexo de todas as áreas diferentes da disciplina. Álgebra, geometria, teoria dos números, números romanos, combinatória e teoria dos grafos num único fenômeno matemático.
Comecei o Estrutura de Dados e Seus Algoritmos hoje por indicação do Hallison "do futuro" (em relação a essa postagem) e, após buscar no google conteúdos de fixação do capítulo 1, vim parar no Programação Dinâmica novamente que usa o primeiro exemplo do livro em questão. hehehe
Quanto custo tem o seu algoritmo? •Contagem de variáveis e memória -> espaço •Contagem de passos elementares -> tempo ▪︎Passos elementares -> Não escondem um outro algoritmo. N° de passos constantes Como a complexidade muda com o / em função do o tamanho da entrada?
cara desejo todo sucesso profissional pra você, você transmite uma vibe muito boa enquanto explica algo, só senti algo assim antes com o felipe deschamps
Assiste os dois vídeos de complexidade e depois segue pra estruturas de dados ✌🏾. É importante entender a complexidade de buscar, inserir e remover elementos de uma estrutura de dados.
@@pgdinamica ah entendi, às vezes precisamos focar em algo maior e abrir mão de algumas coisas, isso aí! Mas depois de conquistar o título, seria gratificante para um aluno de graduação ter um professor com desenvoltura na didática como vc tem. Eu um dia quero trilhar este caminho, e você já é uma inspiração, abraços!
Me inscrevi hj no canal, primeiro vídeo que vi já fiquei doido:) Caramba que massa pow, da nem pra acreditar que tu fez um trabalho desses, parabéns pelos vídeos mano, tudo de bom pra vcs, vou zerar essa playList igual um viciado haha Esse assunto é muito divertido
Na função "inverter_lista2()" você calculou a complexidade de espaço como sendo igual a " 3 + 2N ". Mas não seria " 2 + 2N " ? Eu não entendi direito de onde foi tirado o 3.
Você está correto, Bruno são apenas 2 mesmo (2 + 2N) por conta das variáveis " tamanho" e "i". Vou adicionar esta nota à descrição do vídeo, obrigado! Note que raramente você vai precisar desse valor exato, pois na notação do O-grande, o mais importante é identificar como ocorre o crescimento da função.
Adorei o vídeo! Meus parabéns pela didática. Uma coisa que eu fiquei em dúvida, mas que o vídeo me sugeriu foi o seguinte: existe um certo equilíbrio entre as complexidades de tempo e de espaço? Quero dizer, sempre que eu conseguir diminuir uma eu terei aumentado a outra?
Obrigado, Frederico! "existe um certo equilíbrio entre as complexidades de tempo e de espaço?" SIM! *Sempre* é uma palavra muito forte, porque pode ser que a solução em análise não seja a mais otimizada, por exemplo. Mas é possível afirmar que geralmente existe, sim, uma troca entre esses dois recursos. Eu fiz um vídeo específico sobre isso: ruclips.net/video/TT8rRUjvzbM/видео.html infelizmente, o áudio não está tão bom :/ mas devo voltar a falar disso novamente.
Fala Vitor! Que bom que você gostou! Estamos fazendo umas modificações bacanas no canal para deixá-lo ainda melhor. Quando puder, dá uma conferida nos conteúdos novos 😉
Boa noite. Fiquei com um pouco de dúvida na função inverter_lista2, na hora dde calcular a complexidade de tempo, o meu ficou: 2 + 1 * N . Sendo: 2 = qtd de operações fora do for + 1 = qtd de operações realizadas dentro do for * N = limite de repetições. Poderia me informar por favor se eu fiz algo de errado?
e quando temos dois FOR dentro de uma mesma função....sem estar aninhado ? pois quando o FOR está aninhado eu ja aprendi que fica O(n^2). e quando não está ?
Oi, FLAVIO 2, nesse caso, a complexidade continua sendo O(N). Quando você adiciona outros FOR não aninhados, o efeito produzido é um aumento no tamanho da constante que multiplica o N, então para a notação do O grande, continua sendo O(N). Se dentro de um FOR você faz 3 operações elementares e dentro de outro FOR não aninhado, faz 5, por exemplo, ao somar o custo de todas as operações você terá 8*N. (3*N + 5*N), o que acaba virando O(N).
O mais completo é o livro "Algoritmos" do Cormen (um livro grosso, capa branca). Acabo de redigir um artigo no Medium sobre o assunto, tem indicações de outros livros e materiais que podem te interessar: medium.com/programacaodinamica/o-caminho-dos-algoritmos-6637282ce061 Vlw!
Fala, MH, blz? Ambos os algoritmos são O(N), pois 4 + 3N = O(N). A alternativa que você apresenta reduz as constantes usadas na complexidade de processamento e aumenta as constantes da complexidade de memória, pois o resultado é gerado em um novo espaço de memória, você mantém a lista original e a invertida. O trade-off ("troca") entre memória e processamento é um "dilema" comum da computação. Tem um vídeo aqui no canal sobre isso. []s
fiz tamanho - 1 já que não existe posição lista[tamanho], pois o python possui posição inicial 0(zero)... lista = [0,1,2,3,4,5,6,7,8,9] tamanho = len(lista) limite = tamanho//2 for i in range(limite): aux = lista[i] lista[i] = lista[(tamanho-1)-i] lista[(tamanho-1)-i] = aux
Opa, que bom que identificou o problema no índice! Como o foco era só análise de complexidade, não testei a função à época, então esse problema de índice passou. Nos algoritmos que se seguem, não temos esse problema 🤙🏾
no alto dos meus 35 anos ta bravo aprender esse trem..kk entender ja entendi os conceitos...mas implementar para resolver problemas ate simples,ta osso
corrigindo as linhas 9 e 10 da função: linha 9 ----> lista[i] = lista[(tamanho - 1) - i] linha 10 ---> lista[(tamanho - 1) - i] = aux da forma como se encontra no vídeo, o laço tentará acessar uma posição da lista que não existe (em outras palavras, uma posição que excede a última posição da lista), ocasionando um erro de IndexError. Abraços!
Boa observação, mas se ajustar a variável *tamanho*, será necessário arredondar o *limite* para cima. Outra opção é deixar *tamanho* como está e adicionar -1 dentro dos colchetes.
Saudações a todos. Por gentileza, o que é esse n ai no código? Seria a variável tamanho? Um grande abraço.
É, sim, bem observado Fábio, obrigado! O correto seria usar a variável "tamanho" no lugar de "n" na função *inverter_lista*.
@@pgdinamica Fiquei me perguntando isso com a variável "i", se possível pra facilitar pra gente quando for ler se puder criar nomes mais claros, facilita pelo menos pra mim. Eu refaço os exercicios e acabo me perdendo no contexto dos nomes das variáveis pq não fica claro o que ela faz :) ai ja me ajuda aqui brigadinhu. Parabéns pelo canal, ajuda mtooooo
@@pgdinamica mas de qualquer forma, canal de vocês é sensacional. Obrigada por compartilhar e ensinar, que farei minha parte aqui do lado, compartilhando e divulgando
Gostei do vídeo. Eu faço pesquisas sobre como aplicar as técnicas da engenharia de sistemas para melhorar a eficiência do serviço público. Atualmente meu foco está nas métricas de complexidade que podem ser usadas para mensurar o trabalho dos agentes públicos. Além do currículo Lattes, eu deixo as minhas pesquisas no canal: Lógica e Complexidade. Tradicionalmente a avaliação de desempenho no serviço público é “proforma”, pois não avalia a complexidade do trabalho, apenas a entrega “binária” das tarefas.
Meu caro... Nunca comento no RUclips, mas você merece. Parabéns pelo trabalho, sua didática é ótima. Um abraço e muito obrigado.
Obrigado pelo reconhecimento! :)
Para quem for tentar fazer as funções mude onde for n-i por n-1-i pois o range sempre vai até o antecessor de n. (n é o tamanho da lista).
Ótima aula, parabéns.
Muito bem observado, Rogerio, obrigado! Dessa vez, como não testamos, esses erros me passaram despercebidos Tanto os índices, como o nome da variável. Abração!
obrigado
Assistido✔️
Que diferença uma boa didática faz, já estudei um pouco sobre complexidade, mas você fez eu entender melhor que outros vídeos que assisti. Bimestre que vem na faculdade vou ter algoritmos e logica de programação 1 e 2 então seus vídeos já estão me preparando.
Vou ter Algoritmos e Estruturas de Dados nesse período e a matéria de Complexidade de Algoritmos é a primeira da ementa, aí vim ver como é, excelente vídeo amigo, obrigado!
Valeu, bons estudos!
Gostei muito do estilo do vídeo e da explicação. Ajudou bastante.
Obrigado, Robson! Bom saber que te ajudou!
Meus algoritmos matemáticos são um complexo de todas as áreas diferentes da disciplina. Álgebra, geometria, teoria dos números, números romanos, combinatória e teoria dos grafos num único fenômeno matemático.
11:48 vale a pena assistir as aulas de matemática elementar, bati o olho na função de primeiro grau e fez completo sentido.
Que ótimo!
Que vídeo maravilhoso! Muito obrigado!
De nada!
Embora eu já tenha uma boa noção do assunto é sempre bom ouvir um pouco mais. Parabéns pela didática.
Também penso assim, obrigado!
Cara, sua didática é incrível, em todos os seus videos o nível de qualidade é extremamente bom, o canal é execelente
Mas é um arraso!!! Cada aula , seja ela qual for , é um mar de novas descobertas ou de aperfeicoamento. Excelente como sempre!
Muitíssimo obrigado!
Maratonando para aprender mais sobre algoritmos
Top! Bons estudos 🙌🏾
Comecei o Estrutura de Dados e Seus Algoritmos hoje por indicação do Hallison "do futuro" (em relação a essa postagem) e, após buscar no google conteúdos de fixação do capítulo 1, vim parar no Programação Dinâmica novamente que usa o primeiro exemplo do livro em questão. hehehe
hahaha, "o bom filho, à casa torna" 😂
Valeu, Felipe!
Muito bom esse vídeo! Me ajudou a entender bem como funciona esse conceito.
Que ótimo! Bons estudos 😉
Um dos melhores professores que já tive me salvando no último período da faculdade kkkkkkkkk. Obrigado Hallison!!
🥰
OBRIGADO AMIGO VC SALVOU MEU BIMESTRE
Quanto custo tem o seu algoritmo?
•Contagem de variáveis e memória -> espaço
•Contagem de passos elementares -> tempo
▪︎Passos elementares -> Não escondem um outro algoritmo. N° de passos constantes
Como a complexidade muda com o / em função do o tamanho da entrada?
obrigado pelo conteúdo, me ajudou a entender mais sobre complexidade de algoritmos
Que ótimo, bons estudos!
Ótima explicação! Tem alguma referência de livro para recomendar?
Como assim eu não conhecia esse canal antes ??????? AMEI
MANO QUE CONTEUDO INCRIVEL, MARAVILHOSO, VC É INCRIVEl. Obrigado pelo conteudo!!!
🥰🥰🥰
Tão didático! Obrigada =)
De nada! 🖖🏾
Sensacional os seus vídeos !
Muito obrigado, Aline! Bons estudos!
Muito obrigado pelo vídeo...
Nós que agradecemos! Bons estudos!
Cara, tu é muito bom explicando. Parabéns!
Obrigado! Bons estudos 😉
Parabéns aos integrantes do canal, qualidade excelente e impecável dos vídeos. A explicação dessa aula ficou top demais!!! Muito bom mesmo. Parabéns.
Valeu! Muito obrigado 😊
CANAL INCRÍVEL...
Agradeço e fico feliz com o comentário, frances Guedal :)
Esse vídeo me ajudou a entender a complexidade de um algoritmo, detalhe ÚNICO CANAL, obrigado e faz mais vídeos por favor rs mais um inscrito
Fico feliz em saber Edd! Também escuto metal 🤘🏾
@@pgdinamica
Metal é bom pra programar as vezes kk
Parabéns pelo canal e obrigado pelo conteúdo que você apresenta no seu canal, tem me ajudado muito
cara desejo todo sucesso profissional pra você, você transmite uma vibe muito boa enquanto explica algo, só senti algo assim antes com o felipe deschamps
Muito obrigado, Antony! 🥰
Devo começar por complexidade de algoritmos ou por estrutura de dados ? grande abraço.
Assiste os dois vídeos de complexidade e depois segue pra estruturas de dados ✌🏾. É importante entender a complexidade de buscar, inserir e remover elementos de uma estrutura de dados.
Obrigade por salvar minha vida, amei !!
De nada! Bons estudos 🙌🏾
Muito obrigado pelo conteúdo! parabéns
De nada! 😁
Seus vídeos são ótimos!!! Muito obrigada!!!
Cara tu explica muito bem! Se garantiu, parabéns!
Valeu, obrigado! 😊
Muito obrigado por compartilhar seu conhecimento conosco, os videos sao muito bons
Valeu, Patrick!
Sua didática é incrível, to adorando a playlist!
Muito obrigado! Bons estudos :)
👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻 Excelente didática !!! Já recebeu minha curtida e inscrição o canal.
Muito obrigado 😃
Muito bom!! Parabéns pelo conteúdo.
Muito obrigado 😁
Cara muito legal seu vídeo, obrigado!!
Valeu! 😁
Boa explicação, curti o vídeo.
Obrigado!
Excelente didática. Parabéns pelo vídeo
Muito obrigado! 😊
Que vídeo excelente amigo, se você não for professor de universidade eu sugiro que seja, porque sua didática é ótima!
Muito obrigado! Dei aula por dois anos em uma faculdade, parei no começo do ano por conta do doutorado :)
@@pgdinamica ah entendi, às vezes precisamos focar em algo maior e abrir mão de algumas coisas, isso aí! Mas depois de conquistar o título, seria gratificante para um aluno de graduação ter um professor com desenvoltura na didática como vc tem. Eu um dia quero trilhar este caminho, e você já é uma inspiração, abraços!
Por enquanto estou entendendo, top
Bons estudos!
Bacana demais! Me salvando na faculdade. Muito obrigada!
De nada! Bons estudos!
Obrigado pelo trampo
De nada!
Vc tá salvando meu semestre,cara
🙌🏾🙌🏾
Me inscrevi hj no canal, primeiro vídeo que vi já fiquei doido:)
Caramba que massa pow, da nem pra acreditar que tu fez um trabalho desses, parabéns pelos vídeos mano, tudo de bom pra vcs, vou zerar essa playList igual um viciado haha
Esse assunto é muito divertido
Seja bem vindo! Bons estudos!
Ba cara, parabéns, muito bom o vídeo.
Obrigado!
Show!
🤩
Voce é muito brabo mano!
Valeu!
muito bom!
Valeu! 😊
Fiquei com uma duvida tentando executar as funcoes aqui, na funcao 1, como retornar a lista invertida?
Ótimo vídeo cara. 👏👏👏📝📈📚 Salvando disciplina do curso de engenharia da computação. Deus te abençoe. Tmj
Valeu 😊 sucesso nos estudos!
Na função "inverter_lista2()" você calculou a complexidade de espaço como sendo igual a " 3 + 2N ". Mas não seria " 2 + 2N " ? Eu não entendi direito de onde foi tirado o 3.
Você está correto, Bruno são apenas 2 mesmo (2 + 2N) por conta das variáveis " tamanho" e "i". Vou adicionar esta nota à descrição do vídeo, obrigado!
Note que raramente você vai precisar desse valor exato, pois na notação do O-grande, o mais importante é identificar como ocorre o crescimento da função.
@@pgdinamica Vou assistir o vídeo sobre a notação do O-Grande.
Muito bom o video, parabéns pelo trabalho
Valeu!
Adorei o vídeo! Meus parabéns pela didática. Uma coisa que eu fiquei em dúvida, mas que o vídeo me sugeriu foi o seguinte: existe um certo equilíbrio entre as complexidades de tempo e de espaço? Quero dizer, sempre que eu conseguir diminuir uma eu terei aumentado a outra?
Obrigado, Frederico! "existe um certo equilíbrio entre as complexidades de tempo e de espaço?" SIM!
*Sempre* é uma palavra muito forte, porque pode ser que a solução em análise não seja a mais otimizada, por exemplo. Mas é possível afirmar que geralmente existe, sim, uma troca entre esses dois recursos. Eu fiz um vídeo específico sobre isso: ruclips.net/video/TT8rRUjvzbM/видео.html infelizmente, o áudio não está tão bom :/ mas devo voltar a falar disso novamente.
Vídeo excelente, ótima explicação!
Muito obrigado!
Obrigado cara. Está clareando. abraços;
Valeu, bons estudos!
parabens. gostei muito do seu cabelo afro-samurai!
Valeu, mano!
Ótimo vídeo
Muito obrigado!
Cara obrigada.parabés
De nada! ;)
Ajudou muito!! Valeu!
De nada!
excelente vídeo
Muito bom vídeo!
Obrigado pelo apoio, Samuel!
Muito bom
ÓTIMA explicação.
Muito obrigado, Nayara!
Você explica bem dms, me ajudando mt na minha prova especial kakaka, obj
Fala Vitor! Que bom que você gostou! Estamos fazendo umas modificações bacanas no canal para deixá-lo ainda melhor. Quando puder, dá uma conferida nos conteúdos novos 😉
muito bom, bastante claro!
Muito bom! Parabéns! Conteúdo incrível!
Parabéns ótimo trabalho
fala bem. parabens pelo conteudo
Muito obrigado!
@@pgdinamica cara,
pq vc nao faz uma serie, fazendo aqueles desafios do hackerrank ou do codiility ia ser bacana!!!
Boa noite. Fiquei com um pouco de dúvida na função inverter_lista2, na hora dde calcular a complexidade de tempo, o meu ficou: 2 + 1 * N .
Sendo: 2 = qtd de operações fora do for + 1 = qtd de operações realizadas dentro do for * N = limite de repetições.
Poderia me informar por favor se eu fiz algo de errado?
acho que ele inverteu as grandezas, também percebi isso
Mutcho bão! Parabéns!
hahah valeeeu!
Canal foda , continua .
Cara, muito bom
Valeu 😊
10:15 a partir daqui tudo o que ele falar faz parte da string
e quando temos dois FOR dentro de uma mesma função....sem estar aninhado ?
pois quando o FOR está aninhado eu ja aprendi que fica O(n^2). e quando não está ?
Oi, FLAVIO 2, nesse caso, a complexidade continua sendo O(N). Quando você adiciona outros FOR não aninhados, o efeito produzido é um aumento no tamanho da constante que multiplica o N, então para a notação do O grande, continua sendo O(N).
Se dentro de um FOR você faz 3 operações elementares e dentro de outro FOR não aninhado, faz 5, por exemplo, ao somar o custo de todas as operações você terá 8*N. (3*N + 5*N), o que acaba virando O(N).
Boa tarde.
Excelente vídeo!! Você recomenda alguma literatura para aprofundar esses conhecimentos? Obrigado!
O mais completo é o livro "Algoritmos" do Cormen (um livro grosso, capa branca). Acabo de redigir um artigo no Medium sobre o assunto, tem indicações de outros livros e materiais que podem te interessar: medium.com/programacaodinamica/o-caminho-dos-algoritmos-6637282ce061
Vlw!
@@pgdinamica muito obrigado pela ajuda. Li o artigo e achei topissimo!!! Obrigado mais uma vez.
@@josehumbertonunes7441 #tmj
para complexidade N:
def invLista(lista):
return lista[::-1]
Fala, MH, blz?
Ambos os algoritmos são O(N), pois 4 + 3N = O(N).
A alternativa que você apresenta reduz as constantes usadas na complexidade de processamento e aumenta as constantes da complexidade de memória, pois o resultado é gerado em um novo espaço de memória, você mantém a lista original e a invertida.
O trade-off ("troca") entre memória e processamento é um "dilema" comum da computação. Tem um vídeo aqui no canal sobre isso.
[]s
Vídeo show! Inscrito + like!
Muito obrigado, Jhow!
Puts que canal tezao, ja vou recomendar pra todos os meus amigos. Valeu pelo conteudo cara show de bola
Que alegria! 😊
Meu caro, você tem certeza que a função inverter_lista realmente inverte uma lista?
pois aqui não funcionou nem a pau
fiz tamanho - 1 já que não existe posição lista[tamanho], pois o python possui posição inicial 0(zero)...
lista = [0,1,2,3,4,5,6,7,8,9]
tamanho = len(lista)
limite = tamanho//2
for i in range(limite):
aux = lista[i]
lista[i] = lista[(tamanho-1)-i]
lista[(tamanho-1)-i] = aux
Opa, que bom que identificou o problema no índice! Como o foco era só análise de complexidade, não testei a função à época, então esse problema de índice passou. Nos algoritmos que se seguem, não temos esse problema 🤙🏾
no alto dos meus 35 anos ta bravo aprender esse trem..kk
entender ja entendi os conceitos...mas implementar para resolver problemas ate simples,ta osso
30 é o novo 20!
caraca.. mesma idade mesmo problema... será q o cerebro buga depois dos 30??
👏👏👏 didática ótima
Muito obrigado!
corrigindo as linhas 9 e 10 da função:
linha 9 ----> lista[i] = lista[(tamanho - 1) - i]
linha 10 ---> lista[(tamanho - 1) - i] = aux
da forma como se encontra no vídeo, o laço tentará acessar uma posição da lista que não existe (em outras palavras, uma posição que excede a última posição da lista), ocasionando um erro de IndexError. Abraços!
tamanho não deveria ser = len(lista) - 1 ao inver de apenas len(lista)?
Boa observação, mas se ajustar a variável *tamanho*, será necessário arredondar o *limite* para cima. Outra opção é deixar *tamanho* como está e adicionar -1 dentro dos colchetes.
show
De onde vem o valor de n no primeiro algoritmo?
Opa! "O correto seria usar a variável "tamanho" no lugar de "n" na função *inverter_lista*."
Me ganhou na string hehehe
mais da onde veio esse N na linha 9?
é pq a lista pode ter n elementos
vai toma no cu vi nem 8 minutos e tive que parar pra comentar, bom pra caralho!
Muito bom!