Главная » Просмотр файлов » Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений

Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271), страница 72

Файл №1082271 Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (Хопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений) 72 страницаХопкрофт, Джон, Э., Мотвани, Раджив, Ульман, Джеффри, Д. - Введение в теорию автоматов, языков и вычислений (1082271) страница 722018-01-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 72)

проблем, которые не может решить нн один компьютер. Мы покажем, что многие просто формулируемые задачи в действительности неразрешимы. Примером может служить распознавание, является лн данная грамматика неоднозначной, н ряд таких примеров будет продолжен. 8.1. Задачи, не решаемые компьютерами Цель этого раздела — с помощью С-программнровання неформально доказать, что существуют задачи, которые невозможно решить, используя компьютер. Мы рассмотрим частную задачу распознавания, является лн текст Ье11о, ыог1с1 первым, что печатает С-программа, Можно подумать, будто имитация любой программы всегда позволит сказать, что она делает, однако в реальности нам придется "бороться" с программамн, которые работают невообразимо долго, прежде чем что-ннбудь вывести на печать.

Эта про- блема — незнание момента, в который что-то произойдет, если вообще произойдет,— является основной причиной нашей неспособности распознать, что делает программа. Однако доказательство того, что не существует алгоритма решения указанной задачи распознавания, весьма сложно и требует определенного формализма. В этом разделе предпочтение отдается формальным доказательствам, а не интуиции.

8.1.1. Программы печати „НеПо, мгог!да На рис. 8.! показана первая С-программа, представленная в классической книге Кернигана и Ритчи. Несложно обнаружить, что данная программа печатает )зе11о, ыох1с! ! и останавливается. Она настолько прозрачна, что обычно знакомство с языками программирования начинается демонстрацией того, как на этих языках написать программу печати )те11о, игох1с). таугг 1) ! ргйпгй(")зе11о, чгох1с)1п") Рис. 8.!. Программа Керяигаиа и Ритчи, приветствующая мир Однако есть и другие программы, которые тоже печатают Ье11о, игох1с), причем отнюдь не очевидно, что они делают именно это. На рис. 8.2 представлена еще одна программа, которая, возможно, печатает )зе11о, ыох1с). Она получает на вход и и ищет положительные целые решения уравнения х" + у" = х". Если находит, то печатает )зе11о, игох1г1 Не обнаружив целых х, у и х, удовлетворяющих данному уравнению, она продолжает поиск до бесконечности и никогда не печатает)ге11о, ыох1с1.

Для того чтобы понять, как работает эта программа, сначала заметим, что ехр является встроенной функцией вычисления экспоненты. Основной программе нужно искать тройки (х, у, х) в порядке, гарантирующем, что каждая тройка в конце концов достигается. Для корректного поиска используется четвертая переменная, соса1, которая инициируется значением 3 и увеличивается в ччЫ1е-цикле каждый раз на 1, так что ее значение в конце концов достигает любого натурального числа. Внутри !ип1!е-цикла Сога1 разделяется на три положительных целых х, у и х, причем х изменяется в Гог-цикле от 1 до сосе1-2, у внутри этого )ог-цикла изменяется от 1 до соса1-х-1, а остаток значения соса1, между ! и соса1-2, становится значением х.

Во внутреннем цикле для тройки (х, у, х) проверяется равенство х" + у" =- г". Если оно выполняется, то печатается )те11о, ыох1с), а если нет — не печатается ничего. ' В. Ъг. Кегп)8)мп апд О. М. йнсше, Пге С Ргоягатт!пя 2апяиаяе, ! 978, Ргепг)се-На) 1, Епй!еиоос) СЫВ, КЬ (Керниган Б., Ритчи Д, Язык программирования Сн. — Ма Финансы и статистика, 1992. См.

также Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си. Задачи по языку Си. — Мя Финансы н сгатистика, 1985.) 320 ГЛАВА 8. ВВЕДЕНИЕ В ТЕОРИЮ МАШИН ТЬЮРИНГА Ьпс ехр(дпс 1, и) /* вычисление 1 в степени и */ ( Ьпс апя, апя = 1! Еог (3=1; 3<=п; 3++) апя *= гегпгп(апя); па1п () ( Ьпг и, соса1, х, у, ясапЕ("Ъс(", и); соса1 = 3; и)з11е (1) йог (х=1! х<=гога1-2! х++) аког (у=1! х<=сога1-х-1! у++)( Сога1 — х — у! (ехр(х,п) + ехр(у,п) == ехр (х и) ) рг1пСЕ(")зе11о, ыог1Ып")! ) сога1+е; Рис. 8.2 Вея икая теорема Ферма, выражеяпая в программе приветствия мира Если прочитано значение 2, то программа находит набор значений сога1 = 12, х = 3, у= 4 н г = 5, для которого х" + у" = г".

Таким образом, если на входе 2, то программа дейпнительно печатает )зе11о, ыог1о1 Однако для любого и > 2 программа никогда не найдет тройку положительных целых, ' удонлетворяюших х" +у" = е", и )зе11о, гяог1д напечатано не будет. Интересно, что вще несколько лет назад не было известно, печатает ли данная программа )зе11о, вог1с), т.е. имеет ли уравнение х" +у" = х" для некоторого большого и. Утверждение, что зю уравнение не имеет решений, было сформулировано Ферма более 300 лет назад, нодо недавних пор доказательство не было найдено. Данное утверждение часто называется "великой теоремой Ферма" ("гегпза('з!ам ((зеогеш*'). Определим проблему "/ге!!о, ног!с!" следующим образом.

По данной С-программе и ее входу определить, печатает ли она в качестве первых 12 символов )зе11о, ыог1с). В наньнейшем для краткости утверждение о юм, что программа печатает )зе11о, игог1с(, употребляется в смысле;что она печатает )зе11о, ьгог16 как первые 12 символов. Поскольку математикам понадобилось более 300 лет для решения вопроса, выраженного простенькой 22-строчной программой, то представляется правдоподобным, что об- $.1. ЗАДАЧИ, НЕ РЕШАЕМЫЕ КОМПЬЮТЕРАМИ 321 щая задача распознавания, печатает ли 1ге11о, гчот1с1 данная программа с данным входом, должна быть действительно сложной. Таким образом, любую задачу, не решенную математиками до сих пор, можно поставить как вопрос вида "печатает ли 1ге11о, ыот1с! данная программа с данным входом?". Было бы замечательно, если бы нам удалось написать программу, которая проверяет любую программу Р и ее вход! и определяет, печатается ли 1ге11о, гчог1с1 при выполнении Р со входом 1.

Мы докажем, что такой программы не может быть. Почему должны существовать неразрешимые проблемы Нелегко доказать, что какая-то определенная проблема, например, обсуждаемая здесь проблема "!ге!1о, вог1б", должна быть неразрешимой. Однако легко понять, почему почти все проблемы должны быть неразрешимыми в рамках любой системы, включающей программирование. Вспомним, что "проблема" — это в действительности вопрос о принадлежности цепочки языку. Множество различных языков над любым алфавитом, в котором более одного символа, несчетгю. Таким образом, невозможно г пронумеровать языки натуральными числами так, чтобы каждый язык получил номер, и каждое число было назначено одному языку.

С другой стороны, программы, будучи конечными цепочками в конечном алфавите (обычно зто подмножество алфавита АГАСИ), допускают такую нумерацию, т.е. образуют счетное множество. Их можно упорядочить по длине, а программы одной длины расположить в лексикографическом порядке. Таким образом, можно говорить о программе с номером 1, 2 и вообще с номером Л В результате можно утверждать, что проблем существует "бесконечно болыпе", чем программ.

Если случайно выбрать язык, то почти наверняка он окажется неразрешимой проблемой. И то, что проблемы в большинстве своем кажуигся разрешимыми, обусловлено лишь редкостью обращения к случайным проблемам. Наоборот, мы склонны к изучению относительно простых, хорошо структурированных проблем, и, действительно, они часто разрешимы. Однако лаже среди проблем, которые интересуют нас и допускают ясную и краткую формулировку, можно найти много неразрешимых, и в том числе проблему "!ге!! о, в"ог1г!".

8Л.2. Гипотетическая программа проверки приветствия мира Докажем невозможность создания программы проверки приветствия мира (печати "!геПо, зчог!г!") методом от противного. Предположим, что существует программа, скажем, Н, которая получает на вход программу Р и ее вход 1 и сообщает, печатает ли Р, имея на входе 7, текст !ге11о, ыаг1с1 Работа Н представлена на рис.

8.3. В частности, Н всегда печатает либо уев (да), либо по (нет), и ничего более. г Это справедливо н для односимвояьного алфавита. — Прим. ред. ГЛАВА 8. ВВедение В теОРию мАшин тьюРинГА 322 Если проблема имеет алгоритм, подобный программе Н, который на любом экземпляре проблемы правильно отвечает "да*' или "нет", то такая проблема называется "разрешимой". В противном случае проблема "неразрешима". Наша цель — доказать, что Н не существует, т.е.

проблема ")те11о, игог1сТ' является неразрешимой. уеи по Рис. 8.3. Гипотетическая программа обиаружеяия "'пейо, иог!й" Для доказательства этого утверждения методом от противного внесем в Н несколько юнеиений, построив в итоге программу Н„и докажем, что ее не существует. Поскольку шнеиения, вносимые в Н, можно совершить с любой С-программой, единственным сонвительным утверждением будет существование Н, т.е. утверждение, которое мы и опровергнем.

Для простоты доказательства сделаем несколько допущений о С-программах. Эти гипотезы упрощают, а не усложняют работу Н, поэтому, если доказать, что программы проверки ")те11о, игог1ср' не существует для таких ограниченных С-программ, то для более широкого класса программ такой программы проверки тем более не может быть. Итак, допустим следующее. 1, Весь выход программ состоит из символов, т.е. графические и иные средства несимвольного представления информации не используются. Все символы печатаются с помощью функции рт1псй, без использования росс)заг ( ) и других. Теперь предположим, что Н существует.

Наша первая модификация изменяет выход по, который является откликом Н, когда ее входная программа Р со своим входом У не печатает)зе11о, ыог1с). Как только Н печатает "п", нам становится понятно, что далее раяо или поздно появится "о".з Таким образом, каждый вызов рс1псб в Н изменим так, чтобы вместо "и" печаталось )зе11о, игог1д. Другие вызовы, которые печатают "о" без "и*', опускаются. В результате получим программу Нь которая ведет себя точно так ке, как и Н, но печатает )зе11о, чеог1д вместо по (рис. 8.4).

Следующее преобразование программы несколько сложнее. Оно, по сути, представляет собой прием, позволивший Алану Тьюрингу доказать свой результат о неразрешииости для машин Тьюринга. Поскольку нас в действительности интересуют программы, ' Наиболее вероятно, что программа печатает по в одном вызове ркьпес, но она мажЕт пЕчапть "и" водном вызове рг1пгс, а "о" — в следующем, 8.1, ЗАДАЧИ, НЕ РЕШАЕМЫЕ КОМПЬЮТЕРАМИ 323 которые получают на вход другие программы и что-то о них сообщают, ограничим Н, следующим образом.

уев Ьещо, иос1д Рис. 84 Н, ведет себя, как Н, но печатает Пе11о, иох1с! вместо по 1. Она получает на входтолько Р, а не Р и1. 2. Она отвечает, что сделала бы Р, если бы ее входом была она сама, т.е. что выдала бы Нь имея на входе Р в качестве как программы, так и входа У. Для создания программы Н,, представленной на рис. 8.5, внесем в Н! следующие изменения. 1. Вначале Нз считывает весь вход Р и запоминает его в массиве А, выделяя память под массив с помощью жа11ос'.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6458
Авторов
на СтудИзбе
305
Средний доход
с одного платного файла
Обучение Подробнее