300 грн
Решить задачу на тему::Машина Тьюрінга
| Статус |
Открытый |
Публикация: 18.05.2023 / 16:03
Задание
Побудувати машину Тьюрінга, яка розв'язує задану задачу:
Визначити, чи існує трикутник з довжинами сторін x, y, z, де x, y, z — задані натуральні двійкові числа.
На стрічку подаються три числа, розділені символом, наприклад "11111#1001#11001", по завершенні роботи стрічка має містити вхідні дані, тобто числа, які були введені на початку та символ, що позначає існування трикутника: "11111#1001#11001=1" якщо трикутник існує, "11111#1001#11001=0', якщо не існує.
Задати машину Тьюрінга у вигляді списку команд, який потім можна буде ввести в емулятор та перевірити роботу на будь-яких заданих двійкових числах.
|
Файлы
|
Предложения фрилансеров (4)
|
09.04.2025 / 18:44 |
| Стоимость : |
от 20 до 250 грн |
| Срок выполнения : |
от 1 до 2 часов |
Специализация:
На сайте: 1 год 2 месяца
Рейтинг: 20
Щоб побудувати машину Тюрінга, яка перевіряє, чи можна з трьох заданих сторін утворити трикутник, потрібно реалізувати нерівність трикутника:
Трикутник існує тоді й лише тоді, коли виконуються всі умови:
x + y > z
x + z > y
y + z > x
Оскільки числа задані у двійковому вигляді, потрібно реалізувати:
1. Декодування трьох чисел з вхідного формату x#y#z
2. Обчислення сум x+y, x+z, y+z
3. Порівняння кожної суми з третьою стороною
4. Виведення =1 або =0 в кінці стрічки
⸻
Ось приклад коду машини Тюрінга у форматі, сумісному з типовими емуляторами (формат: поточний стан | символ | новий символ | напрямок | новий стан). Це — спрощена версія, яка перевіряє одну умову x + y > z, тобто перевірка x + y > z (інші додаються аналогічно). З міркувань обсягу, реалізую базову структуру. Якщо потрібно, доповню далі.
|
|
31.08.2023 / 00:24 |
| Стоимость : |
от 100 до 250 грн |
Специализация:
На сайте: 2 года 9 месяцев
Рейтинг: 3
Машини Тьюрінга можна представити у вигляді списку команд, але через обмеження довжини відповіді я можу надати лише загальний план для вирішення цієї задачі на машині Тьюрінга. Оскільки у вас досить складна задача, я рекомендую вам використовувати більш спеціалізоване середовище для моделювання роботи машини Тьюрінга, таке як "JFLAP", "Turing Machine Simulator", "Turing's World", тощо.
Отже, основний план має виглядати приблизно так:
1. **Читання вхідних даних**: Машина Тьюрінга повинна почати зі зчитування вхідних даних (трьох двійкових чисел) та символу-роздільника ("#").
2. **Порівняння чисел**: Машина повинна порівняти значення чисел x, y, z для того, щоб визначити, чи може існувати трикутник з такими сторонами.
3. **Визначення наявності трикутника**: Якщо сума будь-яких двох сторін більша за третю сторону, то може існувати трикутник. Якщо це вірно для всіх трьох можливих комбінацій сторін, машина повинна встановити відповідне значення ("1") в результуючому виході.
4. **Запис вихідних даних**: Машина повинна записати вихідні дані, включаючи вхідні числа та результат визначення наявності трикутника.
5. **Завершення роботи**: Машина Тьюрінга повинна завершити роботу, наприклад, перемістивши головку зчитування на позицію поза вхідними даними.
Це загальний план, який потребує деталізації в конкретних командах для кожної операції. Найкраще використовувати спеціалізоване програмне забезпечення для машини Тьюрінга, щоб докладно розробити цей план та перевірити його роботу на практиці.
|
|
17.06.2023 / 12:19 |
Специализация:
На сайте: 3 года
Рейтинг: 3
Машину Тьюрінга для розв'язання задачі визначення існування трикутника з довжинами сторін можна описати за допомогою наступного списку команд:
Ініціалізація:
(1) Початковий стан: q0
(2) Початкова позиція на стрічці: початок
(3) Символи для позначення чисел та роздільника: 0, 1, #
(4) Стан для прийняття рішення: q_accept
(5) Стан для відхилення рішення: q_reject
Перехід для зчитування першого числа (x):
(1) (q0, 0) -> (q1, 0, R)
(2) (q0, 1) -> (q1, 1, R)
(3) (q1, #) -> (q2, #, R) - перехід до зчитування другого числа (y)
Перехід для зчитування другого числа (y):
(1) (q2, 0) -> (q3, 0, R)
(2) (q2, 1) -> (q3, 1, R)
(3) (q3, #) -> (q4, #, R) - перехід до зчитування третього числа (z)
Перехід для зчитування третього числа (z):
(1) (q4, 0) -> (q5, 0, R)
(2) (q4, 1) -> (q5, 1, R)
(3) (q5, #) -> (q6, #, R) - перехід до перевірки умови існування трикутника
Перехід для перевірки умови існування трикутника:
(1) (q6, 0) -> (q_accept, 0, R) - трикутник не існує
(2) (q6, 1) -> (q_accept, 1, R) - трикутник існує
Перехід до стану прийняття рішення:
(1) (q_accept, 0) -> (q_accept, 0, R)
(2) (q_accept, 1) -> (q_accept, 1, R)
(3) (q_accept, =) -> (q_accept, =, R)
(4) (q_accept, #) -> (q_accept, #, R)
Перехід до стану відхилення рішення:
(1) (q_reject, 0) -> (q_reject, 0, R)
(2) (q_reject, 1) -> (q_reject, 1, R)
(3) (q_reject, =) -> (q_reject, =, R)
(4) (q_reject, #) -> (q_reject, #, R)
Перехід для переведення позиції до початку стрічки:
(1) (q_accept, B) -> (q_move_to_start, B, L)
(2) (q_reject, B) -> (q_move_to_start, B, L)
Перехід для повернення позиції до початку стрічки:
(1) (q_move_to_start, 0) -> (q_move_to_start, 0, L)
(2) (q_move_to_start, 1) -> (q_move_to_start, 1, L)
(3) (q_move_to_start, #) -> (q_move_to_start, #, L)
(4) (q_move_to_start, =) -> (q_move_to_start, =, L)
(5) (q_move_to_start, B) -> (q0, B, R) - перехід до початкового стану
Після виконання цих команд, машина Тьюрінга поверне результат у вигляді числа, позначаючи існування трикутника (1 - існує, 0 - не існує). Також, вхідні дані будуть збережені на стрічці після завершення роботи машини Тьюрінга.
|
|
19.05.2023 / 14:15 |
Машину Тьюрінга для розв'язання задачі визначення існування трикутника з довжинами сторін можна описати за допомогою наступного списку команд:
Ініціалізація:
(1) Початковий стан: q0
(2) Початкова позиція на стрічці: початок
(3) Символи для позначення чисел та роздільника: 0, 1, #
(4) Стан для прийняття рішення: q_accept
(5) Стан для відхилення рішення: q_reject
Перехід для зчитування першого числа (x):
(1) (q0, 0) -> (q1, 0, R)
(2) (q0, 1) -> (q1, 1, R)
(3) (q1, #) -> (q2, #, R) - перехід до зчитування другого числа (y)
Перехід для зчитування другого числа (y):
(1) (q2, 0) -> (q3, 0, R)
(2) (q2, 1) -> (q3, 1, R)
(3) (q3, #) -> (q4, #, R) - перехід до зчитування третього числа (z)
Перехід для зчитування третього числа (z):
(1) (q4, 0) -> (q5, 0, R)
(2) (q4, 1) -> (q5, 1, R)
(3) (q5, #) -> (q6, #, R) - перехід до перевірки умови існування трикутника
Перехід для перевірки умови існування трикутника:
(1) (q6, 0) -> (q_accept, 0, R) - трикутник не існує
(2) (q6, 1) -> (q_accept, 1, R) - трикутник існує
Перехід до стану прийняття рішення:
(1) (q_accept, 0) -> (q_accept, 0, R)
(2) (q_accept, 1) -> (q_accept, 1, R)
(3) (q_accept, =) -> (q_accept, =, R)
(4) (q_accept, #) -> (q_accept, #, R)
Перехід до стану відхилення рішення:
(1) (q_reject, 0) -> (q_reject, 0, R)
(2) (q_reject, 1) -> (q_reject, 1, R)
(3) (q_reject, =) -> (q_reject, =, R)
(4) (q_reject, #) -> (q_reject, #, R)
Перехід для переведення позиції до початку стрічки:
(1) (q_accept, B) -> (q_move_to_start, B, L)
(2) (q_reject, B) -> (q_move_to_start, B, L)
Перехід для повернення позиції до початку стрічки:
(1) (q_move_to_start, 0) -> (q_move_to_start, 0, L)
(2) (q_move_to_start, 1) -> (q_move_to_start, 1, L)
(3) (q_move_to_start, #) -> (q_move_to_start, #, L)
(4) (q_move_to_start, =) -> (q_move_to_start, =, L)
(5) (q_move_to_start, B) -> (q0, B, R) - перехід до початкового стану
Після виконання цих команд, машина Тьюрінга поверне результат у вигляді числа, позначаючи існування трикутника (1 - існує, 0 - не існує). Також, вхідні дані будуть збережені на стрічці після завершення роботи машини Тьюрінга.
|
Выберите работников из доступных предложений
Здесь Вы можете размещать дополнительную информацию и новости проекта
|