Не существует ни одной полностью удовлетворительной вычислительной модели, в которой, к сожалению, можно было бы анализировать алгоритмы, даже в том, что можно рассматривать как традиционные условия. Это означает, что все данные легко доступны, а рабочее пространство практически не ограничено.
Многоленточная машина Тьюринга, безусловно, теоретически хорошо определена, и многие алгоритмы были разработаны и проанализированы в этой модели на протяжении многих лет. Однако для некоторых это недостаточно тесно связано с тем, как работают настоящие компьютеры, чтобы быть действительно хорошей моделью для использования в 21 веке. С другой стороны, модель word-RAM стала популярной и, похоже, более точно отражает работу современных компьютеров (операции со словами, а не битами, постоянный доступ к ячейкам памяти). Однако есть аспекты, которые не идеальны. Например, нет модели с одним словом RAM. Сначала нужно указать, какие операции со словами должны быть разрешены в постоянное время. Есть много вариантов для этого без единого принятого ответа. Во-вторых, размер слова w обычно устанавливается с ростом входного размера (который, по крайней мере, так же быстр, как log (n)), чтобы можно было адресовать любой элемент в памяти, используя постоянное количество слов. Это означает, что нужно представить себе бесконечный класс машин, на которых работает ваш алгоритм или, что еще хуже, что машина меняется по мере того, как вы передаете ей больше данных. По крайней мере, эта мысль сбивает с толку самых чистых среди моих учеников. Наконец, вы получаете несколько неожиданные результаты сложности с моделью «слово-память», которая может не совпадать с теми, которые изучаются студентом. Например, умножение двух n-битных чисел в этой модели на O (n) время, а простое чтение в n-битной строке является внезапно сублинейной временной операцией. Это означает, что нужно представить себе бесконечный класс машин, на которых работает ваш алгоритм или, что еще хуже, что машина меняется по мере того, как вы передаете ей больше данных. По крайней мере, эта мысль сбивает с толку самых чистых среди моих учеников. Наконец, вы получаете несколько неожиданные результаты сложности с моделью «слово-память», которая может не совпадать с теми, которые изучаются студентом. Например, умножение двух n-битных чисел в этой модели на O (n) время, а простое чтение в n-битной строке является внезапно сублинейной временной операцией. Это означает, что нужно представить себе бесконечный класс машин, на которых работает ваш алгоритм или, что еще хуже, что машина меняется по мере того, как вы передаете ей больше данных. По крайней мере, эта мысль сбивает с толку самых чистых среди моих учеников. Наконец, вы получаете несколько неожиданные результаты сложности с моделью «слово-память», которая может не совпадать с теми, которые изучаются студентом. Например, умножение двух n-битных чисел в этой модели на O (n) время, а простое чтение в n-битной строке является внезапно сублинейной временной операцией.
Сказав все это, если вы просто хотите знать, будет ли ваш алгоритм работать быстро, то, скорее всего, это будет делать :-)