Intuitivamente, um algoritmo de kernelização é um algoritmo que, em tempo polinomial, pré-processa uma determinada instância e gera uma instância cujo tamanho é delimitado no parâmetro. O objetivo da kernelização é (pelo menos) duas vezes. Temos garantias de desempenho comprováveis, ou seja, podemos provar limites superiores na instância de saída, que possui aplicativos tanto no design de algoritmos quanto também como uma medida de complexidade.
Mais formalmente, um algoritmo de kernelização (geralmente chamado de kernel), é um algoritmo para um problema que em uma entrada ( G , k )gera uma instância equivalente (G′,k′) com max { |G′| ,k′} ≤ f( K ) para alguma função f. Além disso, o algoritmo precisa ser executado em tempo polinomial.
O resultado a seguir mostra que o poder dos núcleos é, por assim dizer, equivalente ao poder da rastreabilidade de parâmetros fixos ( PDF )
Teorema (Folclore). Um problema é um parâmetro fixo tratável se e somente se ele admite um kernel e é decidível.
Embora a noção de kernel coincida com a rastreabilidade dos parâmetros fixos, há uma versão mais forte da kernelização em que exigimos a função f acima para ser um polinômio.
Se você quiser ver as definições originais, aconselho que você escolha o livro de Downey e Fellows sobre complexidade parametrizada ou comece na tese de Niedermeier sobre Habilitação mencionada acima. Há também um artigo da Wikipedia sobre Kernelization .