Лема про накачку

Лема про накачку (англ. pumping lemma) в теоретичній інформатиці описує властивість певних класів формальних мов. В багатьох випадках за допомогою цієї леми можна довести, що певна формальна мова є не регулярною або не безконтекстною.

Свою назву лема отримала з англійського дієслова to pump (укр. накачувати).В теорії формальних мов, лема про накачку для певної мови стверджує, що мова належить класу мов, якщо будь-який досить довгий рядок в мові що містить проміжок який може бути вилучений, чи повторений довільну кількість разів, і отриманий в результаті рядок теж належить мові. Доведення цих лем зазвичай комбінаторне, і може використовувати принцип Діріхле.

Два найважливіші приклади - лема про накачку для регулярних мов та лема про накачку для контекстно-вільних мов. Лема Огдена - інша, сильніша лема про накачку для контекстно-вільних мов.

Ці леми можуть бути використані для визначення чи дана мова не належить даному класу мов, і не можуть використовуватись для доведення факту приналежності мови класу, через те, що лема про накачку є тільки необхідною, а не достатньою умовою належності класу.

Регулярні мовиРедагувати

Лема про накачку для регулярних мовРедагувати

Для кожної регулярної мови   існує натуральне число  , таким чином, що виконується: Кожне слово   в   з найкоротшою довжиною   можна розкласти як   з наступними властивостями:

  1. Обидва слова   та   разом мають довжину максимум  . Тобто  .
  2. Слово   повинно бути не пустим, іншими словами, складатися з одного чи більше символів. Тобто  .
  3. Для кожного натурального числа (включаючи нуль)   слово   належить мові  , тобто слова  ,  ,  ,   і т.д. всі належать мові  .

Крім регулярних мов існують також нерегулярні мові, для яких ця лема виконується. Необхідну та достасню умову для регулярних мов надають теорема Майхілла-Нероуда чи лема про накачку Яффе.

ДжерелаРедагувати