Сегодня я узнал, что алгоритм анализа отличается в зависимости от вычислительной модели. Это то, о чем я никогда не думал и не слышал.
Пример, данный мне, который проиллюстрировал это далее, пользователем @chi был:
Например, рассмотрим задачу: дано вернуть . В оперативной памяти это может быть решено в так как доступ к массиву постоянен. Используя ТМ, нам нужно сканировать весь ввод, так что этоx i O ( 1 ) O ( n )
Это заставляет меня задуматься о функциональных языках; Насколько я понимаю, «функциональные языки тесно связаны с лямбда-исчислением» (из комментария Ювала Фильмуса здесь ). Итак, если функциональные языки основаны на лямбда-исчислении, но работают на машинах, основанных на ОЗУ, каков правильный способ анализа сложности алгоритмов, реализованных с использованием чисто функциональных структур данных и языков?
У меня не было возможности прочитать чисто функциональные структуры данных, но я заглянул на страницу Википедии для предмета, и кажется, что некоторые структуры данных действительно заменяют традиционные массивы:
«Массивы могут быть заменены картой или списком произвольного доступа, который допускает чисто функциональную реализацию, но время доступа и обновления является логарифмическим».
В этом случае вычислительная модель будет другой, правильно?