¿Es posible “escribir un programa o algoritmo” para encontrar la complejidad de tiempo de cualquier programa dado como entrada?

De hecho, dicho programa resolvería todas las matemáticas (o al menos los sistemas formales). Prácticamente todas las propiedades no triviales de las máquinas (programas) de Turing son indecidibles, lo cual es desafortunado (o afortunado, dependiendo de su perspectiva) porque resolverían todas las matemáticas (o al menos los sistemas formales). Incluso decidir si un programa toma tiempo constante o lineal podría usarse para este fin. Podría escribir un programa que pase tiempo buscando una prueba de un enunciado y se detenga si lo encuentra. Si la declaración es un teorema en su sistema formal, el tiempo de ejecución será constante, de lo contrario es lineal.

Sin embargo, para un tamaño de entrada dado n, ciertamente es posible calcular el número de pasos de tiempo requeridos para un programa en el peor de los casos, siempre que se detenga. Hacemos esto simplemente simulando el programa en todas las entradas y calculando la cantidad máxima de pasos necesarios.

Ni siquiera es posible calcular si un programa determinado se detendrá, y mucho menos calcular cuánto tardará en detenerse.

Ver, por ejemplo, http://en.wikipedia.org/wiki/Hal

no. Ver problema de detención