Регулярні вирази, регулярні граматики і кінцеві автомати - це просто три різних формалізми для однієї і тієї ж речі. Існують алгоритми для перетворення з будь-якого з них в будь-який інший.
Основна причина, що у нас всіх трьох, полягає в тому, що вони були створені незалежно, з першим набором відповідностей (також є кілька інших формалізмів), доведеним Кліном (цей результат або його частина називається теоремою Клінова).
Тож у цьому контексті, залежно від того, в який бік ви хочете запускати моделі, всі вони розпізнають або генерують рядки звичайної мови, і математично, в цьому сенсі немає різниці.
Звичайно, іноді одну модель легше використовувати, ніж іншу, для конкретного завдання, завдяки деталізації формалізму. Крім того, те, як вони працюють в людській голові, часто дещо відрізняється, кінцеві автомати "відчувають", як комп'ютери, регулярні вирази "відчувають" так, ніби ви будуєте рядок з менших підрядків, а звичайні граматики "відчувають" як більш традиційну граматичну виведення або класифікація речення мовою (не дивно, коли ви дивитесь на історію).
Отже, для порівняння двох, давайте визначимо їх:
Регулярні вирази
Тож регулярні вирази рекурсивно визначаються наступним чином:
- ∅ - це регулярний вираз
- ε - регулярний вираз
- a ∈ Σа - регулярний вираз для кожногоa ∈ Σ
- якщо і - регулярні вирази, то
БАБ
- A ⋅ B - регулярний вираз (конденсація)
- A ∣ B - регулярний вираз (чергування)
- А∗ - регулярний вираз (зірка Клінова)
Поряд з деякою семантикою (тобто, як ми інтерпретуємо оператори для отримання рядка), ми отримуємо спосіб генерації рядків із звичайної мови.
Регулярні граматики
Звичайні граматики складаються з чотирьох кортежів де - безліч нетерміналів, - безліч терміналів, - нетермінал початку, а - безліч виробництв, які розповідають нам, як змінити стартовий символ, крок за кроком, на рядок у . може мати свої виробництва з одного з двох типів (не обидва, однак):N Σ S P Σ ∗ P( N, Σ , P, S∈ N)NΣSПΣ∗П
Праві лінійні граматики
БСaε
- B→a
- B→aC
- B→ε
Ліві лінійні граматики
B→Ca
Що задуматися
Отже, дивлячись на ці визначення та граючи з ними, ми можемо побачити, що регулярні вирази виглядають як правила відповідності чи способи поводження з рядками за раз.
S
Однак це дійсно те саме, що ви робите, і як ви бачите метафору їхньої функції, залежить від вас.