Computing Optimal Hypertree Decompositions