Ось простий аргумент, який показує, що вони не визначаються, тобто немає алгоритмів, щоб перевірити, чи заданий алгоритм є оптимальним щодо його часу роботи або використання пам'яті.
Ми зводимо проблему зупинки на порожній стрічці до вашої проблеми щодо оптимальності виконання часу.
Нехай - дана машина Тьюрінга. Нехай N є наступною машиною Тюрінга:M
n M n M n 2 nN : на вході
1. Виконайте на порожній стрічці протягом (не більше) кроків.
2. Якщо не зупиниться на кроках, запустіть цикл розміром , а потім поверніть NO.
3. В іншому випадку поверніть ТАК.n
Mn
Mn2n
Є два випадки:
Якщо не зупиняється на порожній стрічці, машина запустить для кроків на вході . Отже, його час роботи . У цьому випадку очевидно не є оптимальним.N Θ ( 2 n ) n Θ ( 2 n ) NMNΘ(2n)nΘ(2n)N
Якщо зупиняється на порожній стрічці, то машина буде виконувати постійну кількість кроків для всіх досить великих , тому час роботи . У цьому випадку очевидно є оптимальним.N n O ( 1 ) NMNnO(1)N
Коротко:
M halts on blank tape ⇔N is optimial
Крім того , з огляду на код для ми можемо обчислити код . Тому ми маємо скорочення від проблеми зупинки на порожній стрічці до проблеми оптимальності виконання часу. Якби ми могли вирішити, чи оптимальна дана машина Тьюрінга , ми могли б скористатись вищенаведеним скороченням, щоб перевірити, чи зупиняється дана машина на порожній стрічці. Оскільки зупинка на порожній стрічці неможлива, то ваша проблема також не може бути вирішена.Н Н МMNNM
Аналогічний аргумент може бути використаний і для простору, тобто також не можна визначити, чи дана машина Тьюрінга є оптимальною щодо простору, який він використовує.
Навіть більш сильне твердження вірно: ми не можемо визначити, чи задана обчислювальна функція є верхньою межею часової складності обчислення даної обчислюваної функції. Аналогічно для простору. Тобто навіть теорія базової складності не може бути автоматизована алгоритмами (що можна вважати хорошою новиною для теоретиків складності;).