Как превзойти алгоритм
Как превзойти алгоритм
К вопросу о том, как установить истинность математических утверждений, мы вернемся позднее, в связи с теоремой Геделя (см. главу 4). Пока же я бы хотел обратить ваше внимание на то, что доказательство Тьюринга носит гораздо более конструктивный характер и не столь негативно, как могло показаться из предыдущего изложения. Мы ведь не показали, что есть некая определенная машина Тьюринга, для которой абсолютно невозможно решить, останавливается она или нет. Более того, если внимательно проследить за доказательством, то выяснится, что для кажущихся «чрезвычайно сложными» машин сама процедура Тьюринга, использованная для их построения, неявным образом дает ответ! Посмотрим, как это происходит. Допустим, у нас есть алгоритм, который иногда позволяет определить, что машина Тьюринга не остановится. Вышеописанная процедура Тьюринга позволяет явно проследить за вычислениями машины Тьюринга в случае, когда этот конкретный алгоритм не дает ответа на вопрос об остановке вычислительного процесса. Однако тем самым эта процедура дает нам в этом случае возможность узнать ответ! Конкретная машина Тьюринга, за работой которой мы следим, и вправду никогда не остановится.
Чтобы подробно разобраться в этом вопросе, предположим, что у нас есть некий алгоритм, который иногда позволяет решить проблему остановки. Как и ранее, мы обозначим этот алгоритм (машину Тьюринга) через H, но теперь мы допускаем, что этот алгоритм не всегда может точно определить, что машина Тьюринга не остановится:
так что Н(n ; m ) = ? возможно в случае, когда Tn(m) = ?. Существует немало алгоритмов типа Н(n; m). (Например, Н(n; m ) мог бы просто давать на выходе 1, как только машина Tn(m ) останавливается, хотя такой алгоритм едва ли представляет большой практический интерес!)
Мы можем повторить процедуру Тьюринга, следуя уже пройденным путем, с той только разницей, что теперь некоторые из «?» останутся не замененными на нули. Как и ранее, применив диагональный процесс, получим
1 + Tn(n ) х H(n; n )
в качестве n-го элемента диагонали. (Мы будем иметь ? каждый раз, когда H (n; n) = ?.
Отметим, что ?x?=?, 1 + ? = ?.) Это безупречно алгоритмизованное вычисление, поэтому оно может быть произведено некоторой машиной Тьюринга, скажем k-й, и тогда мы получим
1 + Tn(n ) х H(n; n) = Тk(n ).
Для k-го диагонального элемента (т. е. n = k ) мы имеем
1 + Tk(k) x H(k; k) = Tk(k).
Если вычисления Тk(k ) останавливаются, то мы приходим к противоречию (в этом случае Н(k; k) должно равняться единице, но тогда возникнет невыполнимое равенство: 1+Тk(k ) = Тk(k )). Значит, Тk(k ) не может остановиться, т. е.
Тk(k ) = ?.
Но алгоритм не может этого «знать», потому что, если бы он давал Н(k; k) = 0, мы снова пришли бы к противоречию (мы получили бы тогда неверное соотношение 1+0=?).
Таким образом, если мы можем отыскать k, то мы знаем, как построить вычислительную процедуру, для которой алгоритм не дает решения проблемы остановки, но нам ответ известен! А как нам найти k ? Это непростая задача. Необходимо тщательно изучить конструкцию H(n; m ) и Tn(m) и понять, как в точности действует 1 + Тn(n ) х Н(n; n) в качестве машины Тьюринга. Затем надо определить номер этой машины, который и есть k. Конечно, это выполнить трудно, но вполне возможно[54]. Из-за этих трудностей вычисление Тk(k ) нас бы вовсе не интересовало, не будь она специально предназначена для доказательства неэффективности алгоритма H! Важно то, что мы получили строго определенную процедуру, которая для любого наперед заданного алгоритма H позволяет найти такое k, что для Тk(k ) этот алгоритм не может решить проблему остановки, т. е. мы тем самым превзошли его. Возможно, мысль о том, что мы «умнее» каких-то алгоритмов, принесет нам некоторое удовлетворение!
На самом деле, упомянутая процедура настолько хорошо определена, что мы могли бы даже найти алгоритм для нахождения k по заданному H. Поэтому, прежде чем мы «погрязнем» в самодовольстве, мы должны осознать, что этот алгоритм может улучшить H[55], поскольку он, по сути, «знает», что Тk(k) = ?, - или все-таки нет? В предыдущем изложении было удобно использовать антропоморфный термин «знать» по отношению к алгоритму. Однако не мы ли в конечном счете «знаем», тогда как алгоритм просто следует определенным нами правилам? А может быть мы сами просто следуем правилам, запрограммированным в конструкции нашего мозга и в окружающей нас среде? Эта проблема затрагивает не только алгоритмы, но и то, как мы выносим суждения об истинности и ложности. К этим важнейшим проблемам мы вернемся позднее. Вопрос о математической истине (и ее неалгоритмической природе) будет рассмотрен в главе 4. На данный момент мы, по крайней мере, получили некоторое представление о значении слов «алгоритм» и «вычислимость» и достигли понимания некоторых из относящихся к ним вопросов.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
9.3. Алгоритм
9.3. Алгоритм «Принцип обогащения» применительно к решению задачи о коммивояжере (ЗОК) заключается в следующем: с помощью некоторого условия проверить все ветви графа на наличие полезных свойств (в данном случае это «способность» участвовать в оптимальном гамильтоновом
3.2. Способен ли необоснованный алгоритм познаваемым образом моделировать математическое понимание?
3.2. Способен ли необоснованный алгоритм познаваемым образом моделировать математическое понимание? Согласно выводу G, для того чтобы математическое понимание могло оказаться результатом выполнения некоего алгоритма, этот алгоритм должен быть необоснованным
3.3. Способен ли познаваемый алгоритм непознаваемым образом моделировать математическое понимание?
3.3. Способен ли познаваемый алгоритм непознаваемым образом моделировать математическое понимание? Перейдем к случаю II и попытаемся серьезно рассмотреть возможность того, что математическое понимание на деле эквивалентно некоторому сознательно познаваемому
3.5. Может ли алгоритм быть непознаваемым?
3.5. Может ли алгоритм быть непознаваемым? В соответствии с вариантом III, математическое понимание представляет собой результат выполнения некоего непознаваемого алгоритма. Что же конкретно означает определение «непознаваемый» применительно к алгоритму? В
3.7. Алгоритм или алгоритмы?
3.7. Алгоритм или алгоритмы? Прежде всего, необходимо рассмотреть следующий весьма важный вопрос: может ли оказаться, что за различные виды математического понимания, свойственные разным людям, отвечает множество весьма различных, возможно, неэквивалентных алгоритмов? В
Трансформация базальных комплексов: алгоритм
Трансформация базальных комплексов: алгоритм Для начала коротко рассмотрим алгоритм трансформации базального комплекса тоналя на уровне описания (символьно-эмоционального и ментально-манипуляционного, согласно известным "контурам" Тимоти Лири). Трансформация
Алгоритм неотвратимости: к новому Косову
Алгоритм неотвратимости: к новому Косову В домовом лифте Калашникова есть замечательные граффити. Их стоит привести, сохраняя подлинное написание. «Татары — низшая раса!» — гласит одна. «Курить зоприщено» — вторая. «The last Rassian patriots» («Последние русские патриоты») —