離散数学「ものを分ける理論」 問題解決のアルゴリズムをつくる