Sou estudante de graduação em matemática (vou começar meu terceiro ano muito em breve). Estou tentando me ensinar complexidade computacional. Infelizmente, não existem cursos na minha universidade sobre o assunto e não há especialistas (na verdade, parece que minha universidade não tem nenhum especialista em CS teórico). Portanto, não tenho escolha para aprender o tópico, exceto por auto-estudo. Eu já passei pelos primeiros capítulos da complexidade computacional: Uma abordagem moderna [mas não resolvi nenhum dos exercícios (exceto dois ou três no primeiro capítulo, expondo o que são problemas de MT e de Halting)]
Eu enfrento alguns problemas com os exercícios de no texto:
uma coisa é que eu sinto que o tipo de pensamento necessário na complexidade computacional é bem diferente daquele da matemática com a qual estou familiarizado (há ênfase no pensamento algorítmico etc.) e como reduzir problemas a outros problemas e fazer uma TM simulando outra TM etc), o que acho difícil.
Existe alguma maneira que você recomenda para me ajudar a desenvolver esse nível de maturidade sobre algoritmos, reduções, etc.?
Uma das razões da dificuldade "1" é que não sei até que ponto devo ser rigoroso? Por exemplo, quando estou fazendo uma redução ou uma simulação, é possível ver intuitivamente que algo está claro e que pode ser feito, mas os detalhes seriam muito entediantes de se realizar e, portanto, sinto que não entenda a coisa muito bem. O ponto é que, eu sei que deve haver um compromisso entre rigor e pensamento intuitivo. Mas como não tenho guia nem instrutor, não sei onde essa linha deve estar.
quando devo executar todos os detalhes se algo estiver claro e quando devo ficar satisfeito com a intuição? Parece que há muito mais detalhes na complexidade computacional do que normalmente está presente na matemática que conheço e, portanto, onde deveria estar o compromisso?
Eu me pergunto se existe alguma fonte de exercícios \ problemas que são bem mais fáceis do que os fornecidos na complexidade computacional: Uma abordagem moderna para que eu possa me treinar com as noções básicas, construções etc. antes de enfrentar exercícios mais complicados. Além disso, uma fonte de provas (bastante detalhadas) dos principais teoremas seria ótima, pois muitos teoremas têm apenas um esboço da prova no texto.
Para os meus conhecimentos, aprendi noções básicas de programação (treinei por algum tempo em python, C e C ++), mas não muito, mas estou bastante familiarizado com a matemática, especialmente com a lógica matemática (até os teoremas da completude e da incompletude), conjunto avançado teoria (forçar), álgebra (linear, abstrata, álgebra universal e teoria de algumas categorias) e noções básicas de topologia e análise de reais. Também fiz um curso de matemática discreta (combinatória + teoria dos grafos).
Peço desculpas se minha pergunta está fora do tópico, mas não conheço um lugar melhor para propor essa pergunta do que aqui.