O problema de alocação de aeronaves a voos, ou tail assignment problem (TAP), consiste em determinar qual aeronave realizará cada voo da malha de uma empresa aérea, visando a minimizar o custo total da operação e respeitando diversas restrições de conectividade de voos, permanência de aeronaves no solo, serviços obrigatórios de manutenção, limitações técnicas e desempenho de aeronaves, conexões de passageiros e tripulantes e famílias com diversos modelos de aeronaves. Este trabalho apresenta um modelo matemático exato e um método heurístico para a solução do TAP considerando todas as restrições citadas, o que não ocorre com os modelos encontrados na literatura. Os modelos desenvolvidos, baseados em programação linear inteira e na meta-heurística Busca Tabu, foram aplicados a problemas reais, extraídos da malha de uma empresa aérea brasileira, operadora de 35 aeronaves e cerca de 210 voos diários. Os resultados obtidos são compatíveis com a operação da empresa e apresentam ganhos em relação ao método de alocação de aeronaves utilizado na operação diária. Os tempos de processamento para solução pelo método exato são excessivamente longos, indicando que o método heurístico é mais adequado para a utilização em empresas aéreas, com resultados adequados obtidos em tempos de processamento satisfatórios.