-
Notifications
You must be signed in to change notification settings - Fork 2
Lesson 6. Finite machines #6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
|
У нас есть алфавит (конечное множество неделимых символов формального языка) состоящий из 2 символов:
Также, есть три состояния ("ГОЛОДЕН", "ПЕЧАЛЕН", "СЧАСТЛИВ") Детерминированный автоматУ детерминированного конечного автомата переход в каждое из состояний однозначно определен входящим символом. Недетерминированный автоматУ недетерминированного конечного автомата переход из состояния "голоден" уже не может быть известен, поскольку символ "СЪЕЛ БУРБУРОД С СЫРЫМ" приводит систему не в определенное состояние, а в одно из возможных. Лямбда-исчисление - это система Черча, рожденная при решении вопроса о существовании алгоритма, за конечное число шагов определяющего истинность или ложность утверждения, записанного на неком формальном языке. Термы -выражения, вычисление которых даёт значение, которое есть всё тот же терм. У нас есть алфавит, символы которого что-то значат - это основа, это, так сказать, база, на чем строятся последующие вычисления. Символы алфавита - термы. К символам алфавита мы можем применять функции одного аргумента (эти функции тоже являются термами). Возвращаемое функциями значение - некий терм, что значит, что функция может вернуть как значение, так и функцию, которую можно применить к другому терму. Функции задаются записью (λx.M), где x - переменная, M - некая функция. Применение функции - (MN), где M- функция, а N - аргумент. Задаем числа (некоторые скобочки опустил): s - имя функции инкрементирования (+1) z - имя функции, которая представляет 0 0 = λs.λz.z - тут мы определяем, что s это 0, который функция (+1) Получается, чтобы получить 50 надо сделать следующую функцию: 50 = λnλs.λz.s(nsz), где n - функция λs, применённая к функции λz, представляющей собой начальное значение, n раз. Задание tru и folse: tru = λa.λb.a Задание if: if=λp.λt.λe.(pt)e p - функция предиката (условия) У нас выходит: за t возьмём 1, а за e возьмём 0, тогда ((if tru) 1 0) = ((λt.λe.tru t e 1) 0) = (λe.tru 1 e 0) = (tru 1 0) = (λb.1 0) <- тут получается, что наш tru - это λa.λb.a, где в роли a выступила 1, а значит, что в b пойдёт 0, то есть будет функция вида (1 0), возвращающая 1 У Тьюринга машина идет по алфавиту, меняя своё состояние (ленту) в зависимости от пришедшего символа, в то время как у Черча происходит работа с функциями, вычисление которых происходит рекурсивно. Вообще, как я понял, лямбды сводятся к машине Тьюринга, как и наоборот. AST - структура данных, используемая синтаксическим анализатором для представления отношения операторов и операндов согласно грамматике языка.
|
Нарисуйте пример для детерминированной и недетерминированной конечной машины (вставьте картинку с пояснением). Что такое лямбда-исчисление? В чем разница между идеями Черча и Тьюринга для лямбд? Что такое AST (абстрактное синтаксическое дерево)? Приведите пример из реальной жизни Что такое число? |
|
Недетерминированный конечный автомат:
|
The text was updated successfully, but these errors were encountered: