Ich bin ein Mathematikstudent (ich werde sehr bald mein drittes Jahr beginnen). Ich versuche mir Rechenkomplexität beizubringen. Leider gibt es an meiner Universität keine Kurse zu diesem Thema und es gibt keine Spezialisten dafür (tatsächlich scheint es, dass meine Universität überhaupt keine Spezialisten für theoretische CS hat). Ich habe also keine andere Wahl, als das Thema selbst zu lernen. Ich habe bereits die ersten Kapitel der Komplexität von Computern durchgearbeitet: Ein moderner Ansatz [aber ich habe keine der Übungen gelöst (außer zwei oder drei im ersten Kapitel, in denen die Probleme von TM und Halting aufgezeigt werden)]
Ich habe einige Probleme mit den Übungen im Text:
Eine Sache ist, dass ich der Meinung bin, dass die Art des Denkens, die für die Komplexität der Berechnungen erforderlich ist, ganz anders ist als die der Mathematik, mit der ich vertraut bin (es liegt ein Schwerpunkt auf algorithmischem Denken usw. und darauf, wie man Probleme auf andere Probleme reduziert und ein TM erstellt ein anderes TM simulieren usw.), was mir schwer fällt.
Können Sie mir helfen, diesen Reifegrad für Algorithmen, Reduzierungen usw. zu entwickeln?
Ein Grund für die Schwierigkeit von "1" ist, dass ich nicht weiß, inwieweit ich streng sein soll? Wenn ich zum Beispiel eine Reduktion oder eine Simulation durchführe, kann ich intuitiv erkennen, dass etwas klar ist und getan werden kann, aber die Details wären sehr, sehr mühsam, um sie tatsächlich auszuführen, und daher habe ich das Gefühl, dass ich dies nicht tue verstehe die Sache sehr gut. Der Punkt ist, dass ich weiß, dass es einen Kompromiss zwischen Strenge und intuitivem Denken geben muss. Aber da ich weder einen Führer noch einen Ausbilder habe, weiß ich nicht, wo diese Zeile sein soll.
Wann sollte ich alle Details ausführen, wenn etwas irgendwie klar ist, und wann sollte ich mit der Intuition zufrieden sein? Es scheint, dass die Komplexität der Berechnungen viel mehr Details enthält, als normalerweise in der mir bekannten Mathematik vorhanden ist, und daher, wo sollte der Kompromiss liegen?
Ich frage mich, ob es eine Quelle für Übungen \ Probleme gibt, die einfacher sind als die in der Komplexität der Berechnungen bereitgestellten : Ein moderner Ansatz , mit dem ich mich mit den Grundbegriffen \ Konstruktionen usw. vertraut machen kann, bevor ich kompliziertere Übungen anpacke. Auch eine Quelle für (recht detaillierte) Beweise der Hauptsätze wäre großartig, da viele Sätze nur eine Skizze des Beweises im Text enthalten.
Für meinen Hintergrund habe ich Grundlagen der Programmierung gelernt (ich habe eine Weile in Python, C und C ++ trainiert), aber nicht viel, aber ich bin ziemlich vertraut mit Mathematik, insbesondere mathematischer Logik (bis hin zu Vollständigkeits- und Unvollständigkeitssätzen), fortgeschrittenem Satz Theorie (Forcen), Algebra (lineare, abstrakte, universelle Algebra und einige Kategorietheorien) und Grundlagen der Topologie und Realanalyse. Ich habe auch einen Kurs über diskrete Mathematik belegt (Kombinatorik + Graphentheorie).
Ich entschuldige mich, wenn meine Frage nicht zum Thema gehört, aber ich kenne keinen besseren Ort, um diese Frage vorzuschlagen als hier.