An effective decomposition approach and heuristics to generate spanning trees with a small number of branch vertices