image

Acesso para sempre a +2.150 cursos, inglês e IA

84
%OFF
Article image
Clovis Junior
Clovis Junior01/10/2026 16:18
Compartilhe

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

image

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.

image

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

Compartilhe
Recomendados para você
Reclame AQUI - Dados e IA na Prática
CI&T - Java AI Copilot
Itaú - Java com Inteligência Artificial
Comentários (0)