Como usei IA e NotebookLM para estudar complexidade de algoritmos
- #NotebookLM
- #Inteligência Artificial (IA)
Estudar com IA envolve organizar fontes, formular respostas e revisar o raciocínio. Ilustração gerada por IA.
Eu respondi O(n log n) a um exercício sobre encontrar o maior elemento de um vetor. A resposta parecia familiar: dividir o problema em duas metades, resolver cada parte e combinar os resultados. Mas eu tinha levado o raciocínio do MergeSort para um problema diferente.
Essa confusão ficou registrada na minha conversa com a IA. E é um bom ponto de partida para mostrar como apliquei, na prática, o sistema de estudos que apresentei no artigo Como usar IA para aprender melhor, não apenas para ter respostas prontas.
Sou engenheiro mecatrônico, estou em transição para o desenvolvimento de software e curso Engenharia da Computação. Nesse percurso, usei minhas aulas de complexidade de algoritmos para experimentar uma proposta: reunir fontes confiáveis e conversar com a IA de um jeito que tornasse minhas dúvidas e meus erros visíveis.
Este artigo é o relato dessa aplicação, com os materiais que organizei, os obstáculos que apareceram e alguns exercícios que mostram o que uma resposta minha revelava sobre o meu entendimento.
O conteúdo da disciplina definiu o ponto de partida
Comecei pelos arquivos das aulas. A base incluía introdução à análise de algoritmos, algoritmos gulosos, divisão e conquista, programação dinâmica e backtracking. Depois, acrescentei Branch and Bound, acompanhando a chegada de um novo tema.
Também havia exemplos em C, como os problemas das rainhas, do labirinto e do Sudoku, além de um pacote de códigos. Esse conjunto aproximava as explicações das implementações: eu tinha conceitos para estudar e algoritmos concretos para observar.
Para quem está começando, estudar complexidade significa investigar como a quantidade de trabalho ou de memória de um algoritmo cresce quando aumentamos a entrada. Um programa pode funcionar com poucos dados e se tornar impraticável quando o volume cresce.
As estratégias das aulas ajudavam a explorar esse problema por caminhos diferentes. Em algoritmos gulosos, analisamos escolhas locais; em programação dinâmica, o reaproveitamento de subproblemas; em backtracking, a exploração de possibilidades. O desafio era compreender quando cada raciocínio fazia sentido e como analisar seu custo.
A pesquisa precisava acompanhar o programa das aulas
Pedi à IA até cinco fontes confiáveis para cada tema abordado nos arquivos. Ter o material da disciplina como referência deixou a busca mais específica: cada indicação precisava contribuir para algum assunto que eu realmente estava estudando.
Entre as referências reunidas estavam materiais de instituições como USP, Princeton, Stanford, MIT e Unicamp, além de outras fontes técnicas. O caderno combinou conteúdos em português e inglês, slides, textos e exemplos relacionados aos problemas das aulas.
A quantidade era um limite para organizar a pesquisa. Cinco fontes não garantem qualidade, e um endereço universitário também não dispensa conferir se o conteúdo corresponde ao assunto e ao nível necessário.
Ao revisar o notebook para este relato, ele reunia 36 entradas de fontes, incluindo versões de um mesmo material. Esse número descreve o acervo que montei; não representa 36 obras independentes nem comprova que estudei tudo com a mesma profundidade.
O critério mais útil era conseguir relacionar uma explicação à sua origem. As referências do NotebookLM ajudavam a voltar aos documentos e examinar o contexto, especialmente quando uma resposta parecia simplificar demais um conceito.
Preparar as fontes também deu trabalho
O processo teve dificuldades bem práticas. Páginas do Runestone e da OEIS apareceram como fontes que o NotebookLM não conseguia incluir por restrição. Foi necessário procurar alternativas, como materiais da Universidade de Edimburgo e da Rutgers para os assuntos correspondentes.
Também houve um PDF de divisão e conquista cujo upload não terminava. Na investigação local, apareceram irregularidades na estrutura do arquivo. Foi preparada uma cópia regravada e foram feitas verificações para preservar o texto e a aparência das páginas.
Isso não permite afirmar que a estrutura do PDF era a única causa do problema. Mostra, porém, que preparar um caderno com IA pode envolver conferir arquivos e substituir formatos ou endereços que a ferramenta não consegue processar.
Essa etapa trouxe uma responsabilidade adicional: ao trocar uma fonte, eu precisava manter o assunto coberto. Um arquivo que entra facilmente no notebook só é útil se continuar atendendo à necessidade de estudo.
O erro que separou encontrar o maior de ordenar

Da fonte à revisão: cada tentativa oferece um ponto concreto para discutir.
O ciclo de estudo seguiu a proposta do primeiro artigo: explicação, pergunta, tentativa de resposta e retorno sobre o raciocínio. Foi nesse processo que apareceu minha confusão com divisão e conquista.
Ao procurar o maior elemento, podemos encontrar o maior de cada metade do vetor. Depois, basta uma comparação entre os dois candidatos. Eu havia atribuído à combinação um trabalho proporcional ao tamanho do vetor, como ocorre na intercalação do MergeSort.
A correção destacou justamente essa diferença. Encontrar o maior dessa forma exige uma quantidade linear de comparações: para n elementos, são n − 1 comparações no total. No MergeSort, combinar as metades ordenadas exige percorrer seus elementos, e o algoritmo tem crescimento de ordem n log n.
Na questão seguinte sobre MergeSort, consegui identificar os dois subproblemas e o custo linear da combinação. O registro das duas respostas permite observar a correção de uma confusão específica. Ele não autoriza concluir que eu já dominava qualquer análise de recorrência.

Encontrar o maior e ordenar compartilham a divisão, mas exigem combinações diferentes.
O detalhe que fez diferença foi olhar para a operação executada ao combinar as soluções. Saber que um algoritmo divide a entrada em duas partes não determina, sozinho, sua complexidade.
Acertar uma conta ainda deixava outra dúvida
Outro exercício envolvia três matrizes: A1 com dimensões 10 × 100, A2 com 100 × 5 e A3 com 5 × 50. A pergunta comparava duas maneiras de agrupar a multiplicação.
Multiplicar primeiro A1 por A2 e depois o resultado por A3 custa 7.500 multiplicações escalares, usando o método usual. Fazer primeiro A2 por A3 e depois multiplicar A1 pelo resultado custa 75.000. A ordem das matrizes permanece igual; muda o agrupamento das operações.
Respondi corretamente aos dois valores. Mas, ao informar a complexidade do algoritmo de programação dinâmica que encontra o melhor agrupamento, escrevi O(nW), misturando o problema com uma formulação típica da mochila.
Para o algoritmo clássico de multiplicação de uma cadeia de n matrizes, o tempo é de ordem n³: ele considera intervalos da cadeia e testa possíveis posições de divisão. Esse custo é diferente da quantidade de multiplicações calculada para uma parentização específica.
O episódio mostrou uma lacuna que o acerto numérico poderia esconder. Eu sabia fazer aquela conta, mas ainda precisava separar o custo de executar uma multiplicação do custo de escolher a melhor maneira de agrupá-la.
Um novo tema entrou no mesmo processo
Quando chegou a aula de Branch and Bound, acrescentei o material e busquei referências para continuar o estudo. A estratégia explora ramos de possibilidades e usa limites para descartar aqueles que não podem melhorar a melhor solução viável encontrada.
Uma pergunta do chat tornou a ideia concreta: em um problema de maximização, a melhor solução conhecida tinha valor 150, enquanto o limite superior de um ramo era 140. Respondi que o ramo deveria ser podado.
A justificativa era o ponto central. Se aquele limite superior é válido, nenhuma solução do ramo pode superar 140. Portanto, ele não consegue melhorar a solução de valor 150 que já temos.
O exercício ajudava a distinguir uma poda fundamentada de simplesmente abandonar uma tentativa porque seu resultado parcial parecia ruim. Para aplicar a estratégia, é preciso entender o que o limite garante.
O Estúdio organizou possibilidades de revisão
O notebook também reuniu sete materiais no Estúdio: duas apresentações, uma síntese técnica, dois guias de estudo, um infográfico e um conjunto de cartões didáticos. Parte deles se concentrava em recursão, divisão e conquista e análise de complexidade.
Os guias traziam perguntas, respostas comentadas e glossários. Esses formatos permitem organizar revisões diferentes: tentar responder antes de consultar o gabarito, reconstruir uma explicação a partir de um slide ou usar um cartão para verificar a lembrança de um conceito.
Ter esses materiais disponíveis, porém, não significa que todas essas atividades tenham sido realizadas. A produção do acervo e o estudo efetivo são etapas que precisam ser acompanhadas separadamente.
Outra observação apareceu na revisão: materiais mais antigos indicavam 30 fontes, enquanto uma apresentação posterior indicava 36. Acrescentar uma aula ao caderno não é motivo para presumir que cada material produzido anteriormente já contempla aquele conteúdo.
Esse detalhe reforça a importância de conferir o alcance de cada recurso antes de usá-lo como revisão de toda a disciplina.
A IA também precisava ser questionada
Minha utilização não foi uma sequência perfeita de tentativas independentes. Em outro momento, pedi a resolução dos exercícios das aulas e, depois, soluções em C acompanhadas de explicações.
Uma resolução comentada pode servir para comparar abordagens e examinar etapas. Mas ler um código explicado não demonstra que consigo reconstruí-lo, testá-lo ou justificar sua complexidade. Essa distinção continua sendo uma responsabilidade minha como estudante.
A revisão dos materiais gerados também revelou uma generalização problemática: uma síntese associava a eficiência exclusivamente à recursão. Existem algoritmos iterativos eficientes. A presença de uma frase em um resumo bem organizado não a torna uma regra correta.
Por isso, as referências e os exercícios precisam funcionar juntos. Posso conferir uma afirmação na fonte, testar sua aplicação em um exemplo pequeno e procurar um caso que contrarie uma conclusão ampla demais.
Também não considero o elogio da ferramenta ou uma mensagem dizendo que os blocos foram concluídos uma avaliação suficiente. O critério mais exigente é conseguir explicar uma escolha e resolver outro problema sem depender da resposta exibida.
Como transformar esse relato em uma experiência de estudo
Para quem quer experimentar o sistema com outra disciplina, o caminho que usei pode ser organizado assim:
1. Comece pelo seu material real. Separe as aulas, os exercícios e os códigos que definem o assunto a estudar.
2. Pesquise para preencher necessidades específicas. Confira autoria, conteúdo e relação de cada referência com os temas da disciplina.
3. Organize um caderno que você consiga revisar. Verifique os arquivos importados e identifique versões repetidas ou assuntos ainda descobertos.
4. Peça perguntas e responda antes de consultar a solução. Inclua a justificativa, porque ela revela mais do que uma alternativa ou fórmula isolada.
5. Registre o motivo da correção. No meu caso, reconhecer o custo da combinação foi mais esclarecedor do que apenas trocar uma notação por outra.
6. Volte ao conteúdo sem a resposta à vista. Use guias e cartões como apoio e confira se os materiais de revisão acompanham as novas fontes.
Essa experiência tornou meus erros mais fáceis de localizar e discutir. A conversa preservou tanto as respostas corretas quanto as confusões entre algoritmos, permitindo voltar ao ponto exato que precisava de atenção.
É algo que eu gostaria de ter colocado no centro do estudo desde o início: guardar a explicação do erro, além da resposta corrigida. Um caderno cheio de soluções ganha mais utilidade quando também mostra quais decisões eu ainda preciso aprender a justificar.
Escolha um conceito da sua área, reúna algumas boas fontes e faça uma tentativa antes de pedir a resolução. Depois, explique com suas palavras o que mudou no seu raciocínio. Qual assunto você colocaria nesse experimento — e qual dúvida gostaria de conseguir resolver sozinho?
#InteligenciaArtificial #AprendizadoAtivo #NotebookLM #Algoritmos #EngenhariaDaComputacao



