Главная » Просмотр файлов » 1626435697-9d9ede204f9baad60159c2d6531787c7

1626435697-9d9ede204f9baad60159c2d6531787c7 (844297), страница 77

Файл №844297 1626435697-9d9ede204f9baad60159c2d6531787c7 (Хопкрофт, Ульман 1979 - Построение и анализ вычислительных алгоритмов) 77 страница1626435697-9d9ede204f9baad60159c2d6531787c7 (844297) страница 772021-07-16СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Легко показать индукцией по числу шагов работы алгоритма 9.4, что 1) если ТЕРМ[С1 полагается равным Р, то ]л — терминатор для С, 2) если С добавляется к ПРЕД[Р[, то С=~О, 3) если (С, О) помещается в НОВ, то ТЕРМ[С]=]У. Таким образом, если алгоритм 9.4 обнаруживает, что ТЕРМ[С,]— заключительная конфигурация, то в силу леммы 9А утверждение "вЕ Е(Р)" верно. Кроме того, надо показать, что если ]л — терминатор для С, то ТЕРМ[С] в конце концов становится равным П. Доказательство ') Для простоты мы считаем, что Р ае делает шагов, которые ае следуют яа рас.

9.!7. звэ гл. к ллгогитмы идантификлции проводится индукцией по числу шагов в последовательности С [ — ' 0. Базис, т. е. случай нулевого числа шагов, тривиален, поскольку С=0 и ТЕРМ[С] делается равным 0 на шаге 2 алгоритма 9.4. Для шага индукции предположим, что С 1- Е [-* О, и рассмотрим отдельно два случая. Случай 1. Š— конфигурация, т, е. шаг С [- Е не является ни шагом рпзп, ни шагом рор. Тогда на шаге 3 вызывается КОРРЕКТИР(С, Е). Если к этому моменту ТЕРМ[Е1 было присвоено значение 0, то конфигурация С будет помещена в список ВРЕМ в строке 2 и в конце концов значение ТЕРМ[С] сделается равным 0 в строке 5. Если значение ТЕРМ1Е] еще не равно О, то добавляем С к ПРЕД[Е) в строке 1 процедуры КОРРЕКТИР(С, Е).

По предположению индукции мы в конце концов получим, что ТЕРМ[Е)=0. Если это случится в строке 5 процедуры КОРРЕКТИР, то С добавится к ВРЕМ в строке 7, а значение ТЕРМ[С] сделается равным 0 во время этого вызова процедуры КОРРЕКТИР. Значение ТЕРМ[Е1 не может стать равным 0 на шаге 2 алгоритма 9.4, поскольку Е+0. (Если бы оказалось, что Е=0, то ТЕРМ[Е] уже было бы присвоено значение 0 к тому моменту, когда мы стали рассматривать С ]- Е на шаге 3.) Итак, в случае ] значение ТЕРМ[С] оказывается равным О.

Случай 2. Š— это такое МО, что С [ — Е является шагом рпз]ь Тогда можно найти такие конфигурации А, В и Р, что (С, г) лежит ниже (А, В), А 1 — ч В и Р]-* О, причем каждый из этих переходов совершается за меньшее число шагов, чем переход С 1-* 0. (Конфигурация А служит "поверхностью" МО Е.) По предположению индукции, значение ТЕРМ[А) полагается равным В, а значение ТЕРМ[Я вЂ” равным О. Допустим, что последнее происходит раньше первого.

Тогда (А, В) со временем помещается в НОВ, а на шаге 4 вызывается КОРРЕКТИР(С, Р). Так как в этот момент ТЕРМИ=0, то в строке 5 полагаем ТЕРМ[С1=0. Допустим теперь, что ТЕРМ[А1 присвоено значение В до того, как ТЕРМ[Р] присвоено значение 0. Тогда при вызове КОРРЕКТИР(С,Р) ТЕРМ[Я= 8 и С добавляетсь к ПРЕД[Р). Но тогда 0 становится значением ТЕРМ[С] при вычислении ТЕРМ[г]. Это завершает индукцию и доказательство корректности алгоритма 9.4, Проанализируем время работы алгоритма 9.4. Шаги ] и 2 занимают 0(л) времени, поскольку всего конфигураций 0(и). Так как для каждой конфигурации 2ДМА делает не более одного шага, то пар конфигураций (С, 0), в которых С 1- О, всего 0(л). Поэтому процедура КОРРЕКТИР вызывается на шаге 3 не более 0(п) раз. Пара (С', 0') попадает в список НОВ, когда С' =Ф~ 0' и уже найдено, что 0' — терминатор для С'.

Так как каждая конфигурация имеет лишь один терминатор (если она его вообще имеет), то никакая пара не помещается в список НОВ более одного раза. Следователь- рнь ПОЗИЦИОННЫЕ ДЕРЕВЬЯ но, общее число пар, помещаемых в список НОВ, не превосходит 0(л). Ниже каждой пары, попавшей в НОВ, лежит ограниченное число пар, ибо если (С, О) лежит ниже (С', 0'), то положения головок конфигураций С и С', а также 0 и 0', различаются не более чем на 1. Поэтому КОРРЕКТИР вызывается 0(п) раз.

Теперь оценим общее время, затрачиваемое на подпрограмму КОРРЕКТИР. Можно показать, что в массиве ПРЕД каждая конфигурация появляется не более одного раза и в список ВРЕМ никакая конфигурация не попадает более одного раза. Общее время выполнения строк 4 — 6 процедуры КОРРЕКТИР пропорционально количеству конфигураций В, удаляемых из ВРЕМ, а время выполнения строки 7 — количеству конфигураций А, добавляемых к ВРЕМ. Так как КОРРЕКТИР вызывается не более 0(л) раз, то общее время, занимаемое процедурой КОРРЕКТИР, без учета времени на строки 4 — 6 и 7 составляет 0(л). Следовательно, алгоритм 9.4 работает линейное время.

П Результаты настоящего раздела применяются главным образом при доказательстве существования алгоритмов линейной сложности, решающих определенные задачи, Мы уже видели, что некоторые задачи идентификации образов можно сформулировать как задачи распознавания языков. Если мы сможем построить 2ДМА, распознающий язык, соответствующий задаче идентификации образов, то сможем утверждать, что существует алгоритм линейной сложности, решающий ту же задачу. Так как на входе длины и 2ДМА может делать пв или даже 2" шагов, то часто бывает проще найти алгоритм для распознавания языка на 2ДМА, чем алгоритм линейной сложности для решения задачи идентификации образов прямо на РАМ.

9.5. ПОЗИЦИОННЫЕ ДЕРЕВЬЯ И ИДЕНТИФИКАТОРЫ ПОЗИЦИЙ В предыдущем разделе мы показали, что если задачу идентификации образов можно сформулировать как задачу распознавания языка, для которой можно найти решающий ее 2ДМА, то исходную задачу идентификации образов можно решить за линейное время. Можно было бы взять прямо алгоритм 9.4 как алгоритм линейной сложности, решающий исходную задачу. Но мультипликативная постоянная, возникающая при таком моделировании, сделала бы этот подход в лучшем случае непривлекательным.

В настоящем разделе мы изучим структуру данных, которую можно использовать для идентификации образов с помощью более практичных алгоритмов, работающих линейное время. Эта структура данных применима, в частности, к следующим задачам. 1. По данным цепочке-тексту х и цепочке-образу у найти все вхождения у в х. 13 А. Ако, Дж. Хопкрафт. Дж. Увьовв гл. я. ялгооитмы идянтиоикяции 2. По данной цепочке-тексту х найти самую длинную повторяющуюся подцепочку в х. 3. По данным двум цепочкам х и у найти самую длинную подцепочку, входящую как в х, так и в у. Определение. Позицией в цепочке длины и считается любюе число от 1 до и.

Говорят, что символ а входит в цепочку х в позиции 1, если х=уаг и ~у(=1 — 1. Говорят, что подцепочка и идентифицирует позицию 1 в цепочке х, если х=уие, где ~у ~ =1 — 1, и цепочку х можно представить в виде у'их' только при у'=у, т. е. в позиции 1 начинается единственное вхождение цепочки и в х. Например„подцепочка Ьйа идентифицирует позицию 2 вцепочкеаЬЬаЬЬ. Подцепочка 66 не идентифицирует позицию 2. В оставшейся части этой главы положим х=а,а,...а„ вЂ” цепочка в некотором алфавите ! и а„+, ††(яЬ!. Тогда каждая позиция 1 цепочки х$=а,ая...а„а„+, идентифицируется по крайней мере одной цепочкой, а именно а~а,~,...а„~,.

Кратчайшая цепочка, идентифицирующая позицию 1 в х9, называется идентификатором (для) позиции 1 в х и обозначается через з((). Пример 9.19. Рассмотрим цепочку аЬЬа669. Идентификаторы позиций от 1 до 7 приведены на рис. 9.19. С) Идентификаторы позиций в цепочке х9 удобно представлять с помощью дерева, называемого 7-деревом, в котором помечены ребра и некоторые узлы. Определение. !-деревом называют помеченное дерево Т, ребра которого, выходящие из любого внутреннего узла, помечены различными символами из 7.

Если ребро (о, в) Е Т помечено символом а, то в называют аныном узла и. Позиция ~ Идентификатор аЬ6а ЬЬа Ьа а669 669 69 Б Ряс. 9Л9. Идентификаторы для оЬЬоЬЬЯ. В.В. ПОЗИЦИОННЫЕ ДЕРЕВЬЯ Деревом позиций (или позиционным деревом) (для) цепочки х$= =а,...а„а„+„где а, Е1, 1(!<и, и а„+,— — $, называют () О ®)- дерево, для которого выполнены следующие условия. 1) Т имеет и+1 листьев, помеченных числами 1, 2,..., и+!. Листья дерева Т взаимно однозначно соответствуют позициям в х3. 2) Последовательность реберных меток, стоящих на пути из кор- ня в лист с меткой (, служит идентификатором з(1) позиции Е Пример 9.17. Позиционное дерево для цепочки аЬЬаЬЬ$ изображено на рис. 9.20.

Например, путь из корня в лист с меткой 2 помечен цепочкой ЬЬа, являющейся идентификатором позиции 2. П Сформулируем некоторые основные свойства идентификаторов. Лемма 9.3. Пусть з(1) — идентификатор позиции 1 цепочки х$=а,а,...а„+,. (а) Если в(1) имеет длину !', то длина надцепочки з(! — 1) не пре- восходит 1+1.

(б) Никакой идентификатор не является собственным префик- сом другого. Д о к а з а тел ь от в о., (а) Если длина подцепочки з(( — 1) больше 1+1, то найдется такая позиция ЬФ! — 1, что а;,а, ...ащ,— — а,а„+,...а, . ПоэтомУ а;а,+ц ..а+т,=а,+,а„е, ...а„.,м и а;а,~,...а;+~, не идентифицирует позицию й получили противоречие.

(б) Легкое упражнение. П Лемма 9.3(б) гарантирует, что для каждой цепочки х9 действительно существует позиционное дерево. Рнс. 9.20. Повнннонное дерево. 13е гл. к хлгоэнтмы идентивиклции С помощью позиционных деревьев можно решить многие задачи идентификации образов, включая те, что были упомянуты в начале раздела. Пример 9.18. Исследуем основную задачу идентификации образов: "Является ли у=Ь,Ьь ..Ьр подцепочкой цепочки х=а,а,... ...а„?" Допустим, что мы уже построили для х3 позиционное дерево Т. Чтобы узнать, входит ли р=Ь,Ьь ..Ь в х, рассмотрим его как граф переходов некоторого детерминировайного конечного автомата. Иными словами, отправляясь из корня дерева Т, проследим максимально длинный возможный путь в позиционном дереве, которому приписана цепочка Ь,Ь,...Ь~ для некоторого 0(1(р. Пусть этот путь оканчивается в узле о.

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

Тип файла
DJVU-файл
Размер
5,53 Mb
Тип материала
Высшее учебное заведение

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

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