Obviamente, como observado por Yuval Filmus, não se deve esperar uma solução geral para esses problemas. Mas, como geralmente é o caso, podem ser encontradas soluções para subconjuntos interessantes do caso geral.
Eu não sou especialista em nada, nem tenho um conhecimento significativo nessa área, pois conheço algum trabalho desse tipo. Trata-se de análise automática de complexidade média, e o trabalho foi realizado por Philippe Flajolet e seus colegas.
Pelo que entendi quando me foi explicado, os autores projetaram uma linguagem pequena (nada de Turing completo como você poderia esperar, mas significativo o suficiente) para que qualquer algoritmo escrito dentro da restrição dessa linguagem pudesse ter sua complexidade média analisada automaticamente. O sistema foi chamado na época Lambda-Upsilon-Omega, ou seja, (eu desamarro).λυ´ω
Um artigo que encontrei na web é o artigo de 1990: análise automática de casos médios de algoritmos por Philippe Flajolet, Paul Zimmermann e Bruno Salvy .
Eu esperaria que trabalhos posteriores estendessem esse trabalho, mas eu realmente não sei. O trabalho foi bastante citado e a pesquisa na Web deve render trabalhos mais recentes sobre o mesmo tópico.
Agora, receio que o trabalho de Flajolet e seus colegas tenha sido muito matemático, e eu não esperaria uma leitura muito fácil.