Что означает «в постоянном времени»?

Я работаю программистом, но у меня нет опыта в области компьютерных наук, поэтому недавно я следил за отличным введением MIT OpenCourseWare в компьютерные науки и программирование. В ходе этого задается вопрос: «Будет ли любая программа, написанная с использованием только определений и вызовов функций, основных арифметических операторов, присваивания и условных выражений, выполняться в постоянное время?»

Я думал, что ответ был положительным, поскольку все эти операции кажутся довольно простыми. Но, как вы, умные люди, наверное, уже знали, правильный ответ был нет, очевидно, из-за возможности неопределенной рекурсии.

Похоже, я просто не понимаю значения «в постоянном времени». То, как я представлял себе значение, звучало так, как будто это просто означало, что для выполнения простой операции потребуется известное количество времени. Я согласен с тем, что рекурсия может привести к тому, что ваша программа будет работать вечно, но разве отдельные операции по-прежнему не занимают конечное и измеримое количество времени каждая ... даже если их сейчас бесконечное количество? Или ответ просто означает, что нельзя справедливо сказать, что две бесконечно рекурсивные программы требуют для выполнения одинакового количества времени?

Если кто-нибудь может дать мне авторитетное определение термина «в постоянное время» и его последствий, я ' буду очень признателен!

25
задан thesunneversets 1 December 2010 в 21:16
поделиться