|
|
Строка 1: |
Строка 1: |
− | {| class="wikitable" align="center" style="color: red; background-color: black; font-size: 56px; width: 800px;"
| |
− | |+
| |
− | |-align="center"
| |
− | |'''НЕТ ВОЙНЕ'''
| |
− | |-style="font-size: 16px;"
| |
− | |
| |
− | 24 февраля 2022 года российское руководство во главе с Владимиром Путиным развязало агрессивную войну против Украины. В глазах всего мира это военное преступление совершено от лица всей страны, всех россиян.
| |
− |
| |
− | Будучи гражданами Российской Федерации, мы против своей воли оказались ответственными за нарушение международного права, военное вторжение и массовую гибель людей. Чудовищность совершенного преступления не оставляет возможности промолчать или ограничиться пассивным несогласием.
| |
− |
| |
− | Мы убеждены в абсолютной ценности человеческой жизни, в незыблемости прав и свобод личности. Режим Путина — угроза этим ценностям. Наша задача — обьединить все силы для сопротивления ей.
| |
− |
| |
− | Эту войну начали не россияне, а обезумевший диктатор. И наш гражданский долг — сделать всё, чтобы её остановить.
| |
− |
| |
− | ''Антивоенный комитет России''
| |
− | |-style="font-size: 16px;"
| |
− | |Распространяйте правду о текущих событиях, оберегайте от пропаганды своих друзей и близких. Изменение общественного восприятия войны - ключ к её завершению.
| |
− | |-style="font-size: 16px;"
| |
− | |[https://meduza.io/ meduza.io], [https://www.youtube.com/c/popularpolitics/videos Популярная политика], [https://novayagazeta.ru/ Новая газета], [https://zona.media/ zona.media], [https://www.youtube.com/c/MackNack/videos Майкл Наки].
| |
− | |}
| |
− |
| |
| {{Определение | | {{Определение |
| |definition= | | |definition= |
Определение: |
Недетерминированный конечный автомат (НКА) (англ. Nondeterministic finite automaton, NFA) — пятёрка [math]\langle \Sigma , Q, s \in Q, T \subset Q, \delta : Q \times \Sigma \to 2^Q \rangle[/math], где [math]\Sigma[/math] — алфавит, [math]Q[/math] — множество состояний автомата, [math]s[/math] — начальное состояние автомата, [math]T[/math] — множество допускающих состояний автомата, [math]\delta[/math] — функция переходов.
Таким образом, единственное отличие НКА от ДКА — существование нескольких переходов по одному символу из одного состояния. |
Процесс допуска
НКА допускает слово [math] \alpha [/math], если существует путь из начального состояния в какое-то терминальное, такое что буквы, выписанные с переходов на этом пути по порядку, образуют слово [math] \alpha [/math].
Теперь это опишем более формально.
Определение: |
Мгновенное описание (англ. snapshot) — пара [math] \langle p, q \rangle [/math], [math] p \in Q [/math], [math] q \in \Sigma^*[/math]. |
Определим некоторые операции для мгновенных описаний.
Определение: |
Говорят, что [math] \langle p, \beta \rangle[/math] выводится за один шаг (англ. directly yields) из [math]\langle q, \alpha \rangle [/math], если:
- [math]\alpha = c\beta[/math];
- [math]p \in \delta (q, c)[/math].
Это также записывают так: [math]\langle q, \alpha \rangle \vdash \langle p, \beta \rangle[/math]. |
Определение: |
Рефлексивно-транзитивное замыкание отношения [math] \vdash [/math] обозначается как [math] \vdash^*[/math].
И говорят, что [math] \langle p, \beta \rangle[/math] выводится за ноль и более шагов (англ. yields) из [math]\langle q, \alpha \rangle [/math], если [math]\langle q, \alpha \rangle \vdash^* \langle p, \beta \rangle[/math]. |
Определение: |
НКА допускает (англ. accepts) слово [math]\alpha[/math], если [math]\exists t \in T: \langle s, \alpha \rangle \vdash^* \langle t, \varepsilon \rangle[/math]. |
Язык автомата
Определение: |
Множество слов, допускаемых автоматом [math] \mathcal{A} [/math], называется языком НКА [math] \mathcal{A} [/math].
- [math]L(\mathcal{A}) = \lbrace w \ | \ \exists t \in T : \langle s, w \rangle \vdash^* \langle t, \varepsilon \rangle \rbrace [/math].
В этом случае также говорят, что автомат [math] \mathcal{A} [/math] распознаёт (англ. recognize) язык [math] L [/math]. |
Язык НКА является автоматным языком, так как для любого НКА можно построить эквивалентный ему ДКА, а значит, вычислительная мощность этих двух автоматов совпадает.
Пример
Это НКА, который распознает язык из алфавита [math] \lbrace 0, 1 \rbrace [/math], где на четвертой с конца позиции стоит 0.
Алгоритм, определяющий допустимость автоматом слова
Постановка задачи
Пусть заданы НКА и слово [math]w[/math]. Требуется определить, допускает ли НКА данное слово.
Алгоритм
Определим множество всех достижимых состояний из стартового по слову [math] \alpha [/math] : [math] R(\alpha) = \lbrace p \ | \ \langle s, \alpha \rangle \vdash^* \langle p, \varepsilon \rangle \rbrace [/math].
Заметим, что если [math] \exists t \in T : t \in R(w) [/math], то слово допускается, так как [math] \langle s, w \rangle \vdash^* \langle t, \varepsilon \rangle [/math] по определению [math] R(w) [/math]. Таким образом, алгоритм состоит в том, чтобы построить [math] R(w) [/math].
Очевидно, что [math] R(\varepsilon) = \lbrace s \rbrace [/math]. Пусть мы построили [math] R(\alpha) [/math], построим [math] R(\alpha c)[/math], где [math] c \in \Sigma [/math]. Заметим, что
[math] R(\alpha c) = \lbrace q \ | \ q \in \delta(p, c), p \in R(\alpha) \rbrace [/math], так как
[math] \langle s, \alpha \rangle \vdash^* \langle p, \varepsilon \rangle \Rightarrow \langle s, \alpha c \rangle \vdash^* \langle p, c \rangle \vdash \langle q, \varepsilon \rangle \Rightarrow \langle s, \alpha c \rangle \vdash^* \langle q, \varepsilon \rangle [/math], [math] \forall q \in \delta(p, c) [/math].
Теперь, когда мы научились по [math] R(\alpha) [/math] строить [math] R(\alpha c)[/math], возьмем [math] R(\varepsilon) [/math] и будем последовательно вычислять [math]R(w[1 \ldots k])[/math] для [math] k=1 \ldots |w| [/math].
Таким образом, мы получим [math]R(w)[/math], и всё, что осталось — проверить, есть ли в нём терминальное состояние.
Псевдокод
bool accepts([math]\langle \Sigma, Q, s, T, \delta \rangle[/math]: Automaton, [math]\mathtt{w}[/math]: String):
[math] R_0 = \lbrace s \rbrace [/math]
for i = 1 to [math]\mathtt{w}[/math].length
[math] R_i = \varnothing [/math]
for ([math] q [/math] in [math] R_{i - 1} [/math])
[math] R_i = R_i \cup \delta(q, \mathtt{w}[i]) [/math]
return [math] R_{|\mathtt{w}|} \cap T \neq \varnothing [/math]
Время работы алгоритма: [math] \mathop O(|w|\sum\limits_{t \in Q} \sum\limits_{c \in \Sigma} |\delta(t, c)|) [/math].
См. также
Источники информации
- Ю. Громкович Теоретическая информатика. Введение в теорию автоматов, теорию вычислимости, теорию сложности, теорию алгоритмов, рандомизацию, теорию связи и криптографию: Пер. с нем. — СПб.:БХВ-Петербург, 2010. — С. 87. — ISBN 978-5-9775-0406-5
- John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman Introduction to Automata Theory, Languages, and Computation. Second edition. P. 71. ISBN 0-201-02988-X
- Wikipedia — Nondeterministic finite automaton