Лемата за изпомпване е основен инструмент в областта на теорията на изчислителната сложност, който ни позволява да определим дали даден език е нормален или не. Според лемата за изпомпване, за да бъде един език правилен, трябва да бъдат изпълнени три условия. Тези условия са както следва:
1. Условие за дължина: Първото условие гласи, че за всеки низ в езика, който е достатъчно дълъг, съществува разлагане на низа на три части, u, v и w, така че дължината на v е по-голяма от нула и по-малко или равно на постоянна стойност и конкатенацията на u, v и w все още е в езика. С други думи, езикът трябва да съдържа низове, които могат да бъдат разделени на три части, където средната част може да се повтори произволен брой пъти и полученият низ е все още в езика.
2. Условие за изпомпване: Второто условие гласи, че за всеки низ в езика, който отговаря на условието за дължина, е възможно да се "изпомпва" средната част на низа произволен брой пъти и пак да се получи низ, който е в езика. Това означава, че чрез повтаряне на средната част, полученият низ все още трябва да принадлежи на езика.
3. Условие за членство: Третото условие гласи, че за всеки низ в езика, който отговаря на условията за дължина и изпомпване, трябва да съществува дължина на изпомпване, означена като p, така че всеки низ, по-дълъг от p, да може да бъде изпомпван. Това означава, че за низове, по-дълги от дължината на изпомпване, винаги е възможно да се намери разлагане и да се повтори средната част, за да се получи низ, който все още е в езика.
За да илюстрираме тези условия, нека разгледаме един пример. Да предположим, че имаме език L = {0^n1^n | n ≥ 0}, който се състои от низове от 0, последвани от същия брой 1. Можем да приложим лемата за изпомпване, за да определим дали този език е правилен.
1. Условие за дължина: Да приемем, че дължината на изпомпване е p. Разгледайте низа s = 0^p1^p. Можем да разложим този низ на три части: u = 0^k, v = 0^l и w = 1^p, където k + l ≤ p и l > 0. Тъй като v съдържа само нули, изпомпването на v ще доведе до низ, който съдържа повече 0 от 0, нарушавайки езика L. Следователно условието за дължина не е изпълнено.
Тъй като условието за дължина не е изпълнено, можем да заключим, че езикът L = {0^n1^n | n ≥ 0} не е редовно според лемата за изпомпване.
Трите условия, които трябва да бъдат изпълнени, за да бъде един език правилен според лемата за изпомпване, са условието за дължина, условието за изпомпване и условието за членство. Тези условия предоставят мощен инструмент за определяне на редовността на езиците в областта на теорията на изчислителната сложност.
Други скорошни въпроси и отговори относно EITC/IS/CCTF Основи на теорията на изчислителната сложност:
- Редовните езици еквивалентни ли са на крайните автомати?
- Класът PSPACE не е ли равен на класа EXPSPACE?
- Дали алгоритмично изчислимият проблем е изчислим от машина на Тюринг в съответствие с тезата на Чърч-Тюринг?
- Какво е свойството на затваряне на обикновените езици при конкатенация? Как се комбинират крайните автомати, за да представят обединението на езици, разпознати от две машини?
- Може ли всеки произволен проблем да бъде изразен като език?
- P класът на сложност подмножество на PSPACE клас ли е?
- Всяка многолентова машина на Тюринг има ли еквивалентна еднолентова машина на Тюринг?
- Какви са резултатите от предикатите?
- Изчислими модели ли са ламбда смятането и машините на Тюринг, които отговарят на въпроса какво означава изчислимо?
- Можем ли да докажем, че Np и P клас са едни и същи, като намерим ефективно полиномно решение за всеки NP пълен проблем на детерминистична TM?
Вижте още въпроси и отговори в EITC/IS/CCTF Основи на теорията на изчислителната сложност