0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 5
|
|
1 | |
Построить алгоритм Маркова, который ищет НОД (Алгоритм Евклида)09.11.2015, 06:30. Показов 6448. Ответов 27
Метки нет Все метки)
(
Здравствуйте, ребята, выручайте. Весь инет перерыл, всю голову сломал, но не могу сделать. Суть в чем, надо построить алгорифм Маркова, который ищет наибольший общий делитель (алгоритм Евклида). Заранее спасибо!
0
|
|
09.11.2015, 06:30 | |
Ответы с готовыми решениями:
27
Построить алгоритм Маркова. Вместо символа, который находится на четном месте вставить символ *, остальные буквы НОД . Рекурсивный алгоритм Евклида Построить нормальный алгоритм Маркова, который в любом слове из алфавита А удваивал все буквы, стоящие на четных местах |
Модератор
2976 / 2123 / 451
Регистрация: 26.03.2015
Сообщений: 8,274
|
|
09.11.2015, 13:58 | 2 |
Для вычисления разности двух чисел нужно из обоих чисел вычитать 1, пока меньшее не станет равным нулю.
Вход: два числа. Выход: разность. 5-2: 5-2 => 4-1 => 4-0 => 4 Для вычисления остатка от деления нужно вычитать из делимого делитель, пока делимое не станет равным нулю. Получившееся число нужно вычесть из делимого. 7%3: 7-3 => 4-3 => 1-3 => 0-2 => 3-2 => 1 Так как вычитаемое число теряется, нужно хранить его в другом месте и копировать перед каждым вычитанием. Для вычисления НОД нужно вычислять остаток от деления одного числа на другое, пока остаток не станет равным нулю. Перед каждым вычислением остатка нужно менять числа местами: делитель на место делимого, остаток на место делителя (делимое теряется в процессе вычисления остатка).
0
|
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 5
|
|
13.11.2015, 03:37 [ТС] | 3 |
Что-то я туплю, но я так и не понял как реализовать Евклида в алгоритме Маркова...
0
|
Модератор
2976 / 2123 / 451
Регистрация: 26.03.2015
Сообщений: 8,274
|
|
13.11.2015, 09:51 | 5 |
0
|
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 5
|
|
13.11.2015, 18:14 [ТС] | 6 |
Ну просто ты перечислил остаток и т. д. А мне надо НОД, что бы искало наибольший общий делитель, т. к. это делается в Евклида
0
|
Модератор
2976 / 2123 / 451
Регистрация: 26.03.2015
Сообщений: 8,274
|
||||||
14.11.2015, 18:18 | 7 | |||||
Результатом третьего этапа вычислений и будет НОД.
Вод для примера:
Для НОМ можно упростить алгоритм Евклида: вычитаем из большего числа меньшее до тех пор, пока они не будут равны. Пусть два числа данны в виде "aaaaaaaaaabbbbb". Вычитание реализуется заменами: cb->bc //перемещаем "c" в конец слова (после "b") ab->c //сокращаем, но запоминаем, сколько мы сократили В результате получим "aaaaacccc" или "bbbbbccc" или "ccccc". В первых двух случаях нам надо переименовать к виду "aaaaaaaaaabbbbb" и повторить. В третьем случае переименовываем в "aaaaa" и останавливаемся. Для переименования добавляем символ "*". Во втором случае заменяем его на "%", а в третьем - на "!". *a->%a *b->%b *c->!c Переименование 1/2: %a->a% %b->a% %c->b% %-> Переименование 3: !c->c! !->. Вот всё вместе: Код
//Определение варианта: *a->%a *b->%b *c->!c //Переименование: %a->a% %b->a% %c->b% %-> !c->a! !->. // СТОП // вычитание cb->bc ab->c // символ для переименования ->*
2
|
0 / 0 / 0
Регистрация: 06.11.2015
Сообщений: 5
|
|
15.11.2015, 19:38 [ТС] | 8 |
Понял, огромное спасибо. Нереально помог!)
![]() ![]() ![]()
0
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 15:30 | 9 |
А как реализовать НОД для унарной системы счисления? Для такого задания: Постройте нормальный алгоритм, который находит наибольший общий делитель двух чисел, представленных в унарной системе. Числа разделены *
Например, для 1111*11 ответ 11
0
|
411 / 347 / 107
Регистрация: 23.05.2016
Сообщений: 1,431
|
|
17.05.2017, 15:44 | 10 |
переименовать единички в "а" и "b" можно так:
*1 --> b* * --> 1 --> a Задача сведена к предыдущей?
1
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 16:50 | 11 |
Если под сведена Вы имеете в виду, что я должна получить в итоге, то в общем да, в конце нужно оставить НОД. Но я этот алгоритм Маркова вообще не поняла... точнее принцип работы ясен, но эту задачу воплотить не могу
Добавлено через 57 минут У меня уже почти все готово, осталось c перевести обратно в 1. Вот с этим пока проблема
0
|
Модератор
2976 / 2123 / 451
Регистрация: 26.03.2015
Сообщений: 8,274
|
|
17.05.2017, 16:52 | 12 |
Вычитание реализуется заменами:
c1->1c //перемещаем "c" в конец слова (после "1") 1*1->c //сокращаем, но запоминаем, сколько мы сократили В результате получим "11111*cccc" или "*11111ccc" или "ccccc". В первых двух случаях нам надо переименовать к виду "111111*1111" и повторить. В третьем случае переименовываем в "11111" и останавливаемся.
1
|
411 / 347 / 107
Регистрация: 23.05.2016
Сообщений: 1,431
|
|
17.05.2017, 16:53 | 13 |
___
0
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 16:55 | 14 |
1->a
*a->%a *b->%b *c->!c %a->a% %b->a% %c->b% %-> !c->a! !->. cb->bc ab->c ->* Может есть идеи, как НОД обратно в единицы перевести?
0
|
411 / 347 / 107
Регистрация: 23.05.2016
Сообщений: 1,431
|
|
17.05.2017, 16:57 | 15 |
2
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 16:58 | 16 |
1->a
*a->%a *b->%b *c->!c %a->a% %b->a% %c->b% %-> !c->a! !->. cb->bc ab->c ->* Может есть идеи, как НОД обратно в единицы перевести?
0
|
Модератор
2976 / 2123 / 451
Регистрация: 26.03.2015
Сообщений: 8,274
|
|
17.05.2017, 17:11 | 17 |
0
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 17:18 | 18 |
Последний алгоритм, который я случайно два раза отправила, уже отлично работает, в нем только надо ответ перевести обратно в единички.
0
|
411 / 347 / 107
Регистрация: 23.05.2016
Сообщений: 1,431
|
|
17.05.2017, 17:43 | 19 |
___
0
|
0 / 0 / 0
Регистрация: 17.05.2017
Сообщений: 11
|
|
17.05.2017, 17:45 | 20 |
В конце, кстати, получается НОД не в "с" выдает, а в "а". То есть для 11*11 НОД аа
аа обратно перевести не получается, может все-таки кто-нибудь знает? А то совсем беда прям(
0
|
17.05.2017, 17:45 | |
Помогаю со студенческими работами здесь
20
НОД двух чисел алгоритм Евклида Алгоритм Евклида для нахождения НОД
Найти НОД многочленов, применив алгоритм Евклида Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |