私は数学の学部生です(まもなく3年目に入ります)。私は自分に計算の複雑さを教えようとしています。悲しいことに、私の大学ではこのトピックに関するコースは提供されておらず、専門家もいません(実際、私の大学には理論的なCSの専門家はまったくいないようです)。だから、私は独学以外でトピックを学ぶことはできません。私はすでに計算の複雑さの最初のいくつかの章を通過しました:現代のアプローチ [しかし、どの演習も解決しませんでした(最初の章の2つまたは3つがTMと停止問題を明らかにすることを除く)]
私はテキストの演習でいくつかの問題に直面しています:
1つは、計算の複雑さに必要な考え方は、私がよく知っている数学の考え方とはかなり違うと感じていることです(アルゴリズム的な考え方など、問題を他の問題に縮小してTMを作成する方法に重点が置かれています)別のTMなどをシミュレートする)これは私が難しいと思うものです。
アルゴリズムや削減などについて、このレベルの成熟度を開発するのに役立つ方法はありますか?
「1」の難しさの理由の1つは、どの程度厳格にすべきかわからないことです。たとえば、縮小またはシミュレーションを実行しているときに、何かが明確で実行可能であることが直感的にわかる可能性がありますが、詳細を実際に実行するには非常に面倒なので、私はそうではないと感じますよく理解してください。ポイントは、厳密さと直感的な考え方の間には妥協が必要だということです。しかし、私にはガイドもインストラクターもいないので、この行がどこにあるべきかわかりません。
何か明確なことがあれば、いつすべての詳細を実行する必要がありますか?また、直感にいつ満足すべきですか?計算の複雑さには、私が知っている数学に通常存在する詳細よりもはるかに多くの詳細があるように思われます。
より複雑な演習に取り組む前に、基本的な概念や構成などを使って自分でトレーニングできるように、計算の複雑さで提供されるものよりもはるかに簡単な演習や問題の原因はあるのでしょうか。また、多くの定理は本文に証明のスケッチしか持っていないので、主定理の(かなり詳細な)証明の出典は素晴らしいでしょう。
私の背景として、プログラミングの基本を学びました(私はpython、CおよびC ++でしばらくトレーニングしました)あまり多くはありませんが、数学、特に数学的ロジック(完全性と不完全性の定理まで)、高度なセットにはかなり精通しています理論(強制)、代数(線形、抽象、普遍代数、およびいくつかのカテゴリー理論)、およびトポロジーと実数分析の基礎。私は離散数学(組み合わせ論+グラフ理論)のコースも受講しました。
私の質問がトピックから外れている場合は申し訳ありませんが、これらの質問を提案するのにこれ以上の場所はありません。