Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос, значит, к знатокам, По Кнуту. 
:(
    Опции темы
russians
Дата 3.8.2010, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Откуда p?

Присоединённый файл ( Кол-во скачиваний: 79 )
Присоединённый файл  IMAG0051.jpg 127,43 Kb
PM MAIL   Вверх
gustavomarginale
Дата 3.8.2010, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Опечатки бывают даже в Кнутах.
PM MAIL   Вверх
kemiisto
Дата 3.8.2010, 09:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(gustavomarginale @  3.8.2010,  09:34 Найти цитируемый пост)
Опечатки бывают даже в Кнутах.

Там нет никакой опечатки.

russians, поймите одно, труд Кнута - жертва крупномасштабной PR-кампании. Куда ни плюнь, всюду советуют Кнута, советуют бездумно. У этого труда при всех его достоинствах есть пара недостатков:
  • Материал отнюдь не для новичков. С самого начала требуются неплохие математические навыки, материал слишком академичен.
  • Материал избыточен для среднестатистического программиста.

То есть Кнут - для тех, кто всерьёз решил заниматься проектированием и анализом алгоритмов.

В качестве чего-то более полезного рекомендую Н. Вирт, Алгоритмы и структуры данных.

После можно почитать А. Левитин, Алгоритмы. Введение в разработку и анализ.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



gustavomarginale, исключено, книга существует с 1968 года. За это время Кнут успел ввести грант за найденную ошибку в оригинале - 3000$. Но не будем отвлекаться smile 

kemiisto, отлично, только вышеуказанная тирада тут ни к чему, ответьте на вопрос smile


Это сообщение отредактировал(а) russians - 3.8.2010, 13:10
PM MAIL   Вверх
Фантом
Дата 3.8.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 2
Всего: 49



Цитата(russians @  3.8.2010,  13:00 Найти цитируемый пост)

kemiisto, отлично, только вышеуказанная тирада тут ни к чему, ответьте на вопрос 

А как Вы представляете себе ответ на такой вопрос? В его нынешней формулировке он начисто лишен смысла.
PM   Вверх
kemiisto
Дата 3.8.2010, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Кнут использует в качестве метода строгого обоснования понятия алгоритм метод вычислений. Вроде как он и автор этого метода. Там всё написано, собственно.

Q - множество состояний;
I - множество начальных состояний;
Omega - множество конечных состояний;
f - функция перехода.

Ниже приведён вариант формализации алгоритма Евклида. Кнут выбирает Q, I, Omega и f, так как описано в книге. Обратите внимание на слово "пусть" в начале каждого из предложений. Выбранные Кнутом множества и функция перехода - действительно формализация алгоритма Евклида. Единственный ли это способ? Не думаю, это просто пример.



Это сообщение отредактировал(а) kemiisto - 3.8.2010, 14:03


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Фантом, ладно, почему в четвёртой строчке f((m, n, p, 3)) = (n, p, p, 1), а не f((m, n, r, 3)) = (n, r, r, 1)?
Мне хочется понять, откуда взялась p, в алгоритме Евклида её нет…

При этом внизу он пишет, что соответствие записи и алгоритма очевидно smile Издевается?)

Это сообщение отредактировал(а) russians - 3.8.2010, 14:05
PM MAIL   Вверх
kemiisto
Дата 3.8.2010, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(russians @  3.8.2010,  15:03 Найти цитируемый пост)
При этом внизу он пишет, что соответствие записи и алгоритма очевидно

Разве нет?

Цитата(russians @  3.8.2010,  15:03 Найти цитируемый пост)
Мне хочется понять, откуда взялась p, в алгоритме Евклида её нет…

Да ниоткуда. Просто Кнут так определил обсуждаемые множества.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



kemiisto, не думаю, что просто, ведь в третьей строчке он делает отсылку на (m, n, r, 3), на третий шаг, а на третьем шаге у нас (n, p, p, 1), и шагаем на первый шаг... то есть по логике, получается, что p - пустая ни для чего не определённая переменная, а r проскакивает?

если подразумевается, что значение r кладётся в p, так и скажите smile

Добавлено через 7 минут и 14 секунд
Всё, до меня дошло.
В четвёртой строчке мы определяем, что функция делает, а в третьей применяем эту функцию, так?
То есть по логике запись заканчивается на третьей строчке.

Это сообщение отредактировал(а) russians - 3.8.2010, 14:18
PM MAIL   Вверх
kemiisto
Дата 3.8.2010, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Во всех четырёх строках мы даём определение функции f. Так как эта функция определена на множестве Q, мы должны дать определение для всех возможных аргументов из множества Q.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



kemiisto, ну а какие у нас могут быть возможные аргументы по исходному алгоритму? m, n, r, где  
0 <= r  < n
PM MAIL   Вверх
kemiisto
Дата 3.8.2010, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Так, стоп. Начнём с начала. Алгоритм Евклида - нахождение НОД для двух положительных чисел. В начала текста они обозначены m и n.

Теперь формализуем этот алгоритм методом вычислений. Пусть элементами множества Q ... и далее по тексту.

Во-первых, после определения множеств, m, n, p и r никакого отношения к описанному ранее не имеют. m и n - это не аргументы алгоритма Евклида, r - не остаток от деления. Это просто целые числа. Как и p. Причём m, n, p - положительные, а r - неотрицательное целое число.

Теперь определим функцию перехода для каждой группы элементов множества Q:
  • для величин (n) функция перехода f((n)) = (n)
  • для упорядоченных пар (m, n) - f((m, n)) = (m, n, 0, 1)
  • ...
 

Все определения приведены в книге.

Теперь для любого элемента множества I можно найти соответсвующий элемент множества Omega, использую функцию перехода. Каждое входное значение x из множества I определяет вычисляемую последовательность x0, x1, x2, ... следующим образом

x[0] = x и x[k+1] = f(x[k]) для k >= 0.

Говорят, что вычисляемая последовательность заканчивается через k шагов, если k - наименьшее целое число, для которого x[k] принадлежит Omega...

Пример: элемент множества I пара чисел (2, 3). Найдём соответствующий ему элемент множества Omega. 

Ну вот. x[0] = (3, 2). Теперь будем применять функцию f до тех пор, пока на выходе не получим элемент множества Omega. До тех пор, пока не получим просто величину (а не пару или четвёрку).

k = 1: x[1] = f(x[1-1]) = f(x[0]) = f((3, 2)) = (3, 2, 0, 1) по определению функции f на первой строчке
k = 2: x[2] = f(x[1]) = f((3, 2, 0, 1)) = (3, 2, 1, 2) по определению функции f на второй строчке
k = 3: x[3] = f(x[2]) = f((3, 2, 1, 2)) = (3, 2, 1, 3) ...
k = 4: x[4] = f(x[3]) = f((3, 2, 1, 3)) = (2, 1, 1, 1) ...
k = 5: x[5] = f(x[4]) = f((2, 1, 1, 1)) = (2, 1, 0, 2) ...
k = 6: x[6] = f(x[5]) = f((2, 1, 0, 2)) = 1

Всё. Приплыли. Последовательность закончилась. 

И Кнут прав, что соответствие между данной записью и алгоритмом Евклида очевидно. Элементами множества конченых состояний, полученными из элементов множества начальных состояний применением функции перехода как описано выше, будут значения НОД.

Это сообщение отредактировал(а) kemiisto - 3.8.2010, 16:28


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Цитата

k = 1: x[1] = f(x[1-1]) = f(x[0]) = f((3, 2)) = (3, 2, 1, 1) по определению функции f на первой строчке

k = 1: x[1] = f(x[1-1]) = f(x[0]) = f((3, 2)) = (3, 2, 0, 1) по определению функции f на первой строчке
smile

то, что описание методом вычислений верно для алгоритма евклида, мне понятно smile Очень сильно благодарю вас за то, что потратили время на развёрнутый ответ!

Но у меня вопрос на понимание, какую роль в указанной последовательности имеет p, зачем мы её используем и почему запись вида: f((m, n, r, 3)) = (n, r, r, 1) в четвёртой строчке - неверно? В вышеуказанном описании ответа ИМЕННО на этот вопрос я не нашёл smile Мы же используем в четвёртой строчке значение r из третьей, так? Только оно почему то хранится в p, а не в r.

Это сообщение отредактировал(а) russians - 3.8.2010, 16:21
PM MAIL   Вверх
kemiisto
Дата 3.8.2010, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(russians @  3.8.2010,  17:15 Найти цитируемый пост)
Но у меня вопрос на понимание, какую роль в указанной последовательности имеет p, зачем мы её используем и почему запись вида: f((m, n, r, 3)) = (n, r, r, 1) в четвёртой строчке - неверно?

Итак, среди членов множества Q могут встречаться 3 вида упорядоченных троек:
  • (m, n , r, 1)
  • (m, n , r, 2)
  • (m, n , p, 3)
r - число неотрицательное (r >= 0), а p - положительное (p > 0).

То есть, среди четвёрок множества Q с последним элементом равным 3 нет таких, в которых предпоследний элемент был бы равен нулю. Поэтому нельзя использовать для обозначения этого элемента символ r (ведь r >= 0).


--------------------
PM MAIL WWW GTalk Jabber   Вверх
russians
Дата 3.8.2010, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 6.11.2006

Репутация: нет
Всего: нет



Всё, теперь понятна необходимость использования smile Спасибо smile

Это сообщение отредактировал(а) russians - 3.8.2010, 16:37
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0529 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.