Что вы всегда хотели узнать, но боялись спросить

Аватар пользователя
NT
Сообщений: 3384
Зарегистрирован: 25 янв 2010, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение NT » 06 дек 2012, 17:43

Swetlana писал(а):Source of the post Вообще, по математической модели алгоритма все языки программирования можно разделить на три группы...

По математической модели - может так и деляться.
Вот C/ANSI куда отнести: алгоритмические, функциональные (вычислимая функция), логические (исчисление предикатов)?

A еще обычно языки программирования делять:
-- по способу компиляции,
-- уровню, как бы сказать, приближенным к нормальному языку или к языку машины,
-- структуруальные, обьекто-ориентированные ...
Последний раз редактировалось NT 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 06 дек 2012, 17:45

Детерминированная машина Тьюринга (ДМТ)

Рассмотрим "школьное" определение алгоритма.
1. Алгоритм – любой алгоритм задается последовательностью инструкций.
2. Алгоритм выполняется детерминировано, то есть для одинаковых данных выполняются одинаковые действия.
3. Должен существовать вычислитель, способный выполнить указания в алгоритм инструкции.
4. Вычислитель должен иметь средства для хранения и отображения информации

Детерминированная машина Тьюринга есть ни что иное, как модель абстрактного вычислителя, способного выполнить указанные в алгоритме инструкции.

Опр. 5. ДМТ имеет бесконечную ленту, управляющее устройство и считывающее/пишущую головку. Лента разделена на ячейки, в каждой ячейке записан или пустой символ $$\lambda$$, или символ некоторого конечного алфавита. В каждый момент на ленте может быть только конечное число непустых символов.
Управляющее устройство находится в одном из конечного множества состояний, среди которых выделяются начальное $$q_1$$ и заключительное $$q_z$$. Перед началом работы ДМТ находится в начальном состоянии $$q_1$$, попав в заключительное $$q_z$$, останавливается.

На одном такте работы ДМТ производит следующие действия:
1. Считывает символ из текущей ячейки.
2. Записывает вместо него новый.
3. Остаётся на месте или сдвигается в соседнюю ячейку.
4. В зависимости от текущего состояния и прочитанного символа переходит в новое состояние.
$$Îáîçíà÷èì \ A =\{a_1, \ldots, a_n\} \ - \ ìíîæåñòâî \ ñèìâîëîâ; \\
Q =\{q_1, \ldots, q_n\}\ - \ ìíîæåñòâî \ ñîñòîÿíèé;\ d_k \ – \ êîìàíäà \ ñäâèãà \ \{L, R, E\}$$
.

Тогда один такт работы ДМТ записывается одной командой
$$q_i a_j  \mapsto q_{i} ^{'} a_{j}^{'} d_{k}^{'}$$
Конечная система команд называется ДМТ-программой. Таким образом, алгоритм, детерминированная машина Тьюринга и ДМТ-программа разные названия, обозначающие алгоритм.

Тезис Тьюринга
Всякий алгоритм может быть реализован машиной Тьюринга.
Тезис - не аксиома и не теорема, просто другое определение алгоритма.

Пример 1. На ленте записано слово из 0 и 1. Составить систему команд для машины Тьюринга, которая заменяет 0 на 1, а 1 на 0.
Решение. Изобразим систему команд с помощью графа (диаграммы) переходов.
ДМТ идёт по слову слева направо, переписывая нули и единицы, доходит до пустого символа $$\lambda$$ и двигается налево, как кот учоный, пока не вернётся на первый непустой символ.
(Заметим, что стандартное заключительное состояние любой ДМТ - останов на первом непустом символе. Это нужно для композиций машин Тьюринга.)

Изображение
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 06 дек 2012, 18:20

Функции, правильно вычислимые по Тьюрингу

Заметим, что результативность алгоритма желаемое, но не обязательное свойство. Алгоритм может зациклиться, а машина Тьюринга работать бесконечно.

Пусть слова, записанные на ленте, будут иметь вид словарных векторов $$\alpha_{1}*...*\alpha_{n}$$ , где $$\alpha_{i}$$ - слово в исходном алфавите $$A$$, * - символ-разделитель. Такую запись назовем правильной.
Пусть $$V$$ и $$W$$ - множества словарных векторов над алфавитом $$A$$.
Опр.6. Говорят, что ДМТ перерабатывает слово $$v$$ в слово $$w$$, если начиная из начальной конфигурации $$q_{1}v$$ приходит в заключительную $$q_{z}w$$: $$q_{1}v \mapsto q_{z}w$$
Опр.7. ДМТ правильно вычисляет функцию $$f: V \mapsto W$$, если:
$$1. \ q_{1}v \mapsto q_{z}w \ è \ f(v)=w;$$</span> <span class=$$" title="$$ $$" align="middle" style="border: 0; vertical-align: middle">2. \ Åñëè \ f(v) \ íå \ îïðåäåëåíà \ â \ v, \ òî \ ÄÌÒ, \ çàïóùåííàÿ \ èç \ q_{1}v, \ áóäåò \ ðàáîòàòü \ áåñêîíå÷íî.$$

Опр.8. Если для функции существует ДМТ, которая ее правильно вычисляет, функция называется правильно вычислимой по Тьюрингу.

Заметим, что аналогично тезису Тьюринга существует тезис Чёрча о том, что любой алгоритм можно представить в виде вычислимой функции. Нетрудно доказать теорему о том, что функция, вычислимая по Тьюрингу, вычислима по Чёрчу и наоборот.

Литература

Кузнецов О.П., Адельсон-Вельский Г.М. Дискретная математика для инженера. Учебник. М.: Энергоатомиздат, 1980.
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 06 дек 2012, 19:04

$$Êëàññ \ P$$

Опр.9. Время, требуемое ДМТ для вычисления на входе $$\alpha$$, есть число шагов, выполняемых ДМТ от $$q_1$$ до $$q_z$$. Если ДМТ-программа останавливается на всех входах, то её временная сложность определяется так:
$$T_{ÄÌÒ}(n) = max \{t: \ ñóùåñòâóåò \ òàêîå \ âõîäíîå \ ñëîâî\ \alpha, \ |\alpha|=n,\ ÷òî \\ âû÷èñëåíèå \ ÄÌÒ \ íà \ âõîäå \ \alpha\ òðåáóåò \ t\ øàãîâ \}$$
(Взятие максимума соответствует самому плохому случаю.)

Опр.10. ДМТ называется полиномиальной ДМТ-программой, если существует такой полином $$p$$, что для всех целых положительных $$n$$ $$T_{ÄÌÒ}(n) \leq p(n)$$.

Опр.11. Любая задача из класса $$P$$ решается полиномиальной ДМТ-программой.
Задачи из класса $$P$$ называются легкорешаемыми...

...не потому, что их легко решить, а потому что их можно решить эффективными алгоритмами. Хотя, как верно заметил folk, полиномиальные алгоритмы не всегда бывают эффективными.

Литература
Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М.: Мир, 1982, 416 стр.
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 06 дек 2012, 19:29

NT писал(а):Source of the post
Вот C/ANSI куда отнести: алгоритмические, функциональные (вычислимая функция), логические ..

к алгоритмическим
там, где программа - последовательность команд, матмоделью компилятора является U-машина (универсальная машина Тьюринга).
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Andrew58
Сообщений: 8961
Зарегистрирован: 20 янв 2009, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Andrew58 » 06 дек 2012, 22:46

Немного несвоевременный и совсем детский вопрос. Почему нельзя прологарифмировать сложность задачи и переопределить классы после логарифмирования? Разве не удобнее будет? Полиномы превратятся в... экспоненты превратятся в ...
Последний раз редактировалось Andrew58 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
zykov
Сообщений: 1777
Зарегистрирован: 02 ноя 2009, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение zykov » 07 дек 2012, 01:39

folk писал(а):Source of the post
Cлучай 2: Сложность N^3 - метод гаусса. На практике практически не используется - во первых накапливает ошибки численные, во вторых куб это слишком много. Чаще используются итерационные методы в которых основная операция это умножение матриц а не обращение - то есть N^2 (и меньше нельзя так как элементов в матрице N^2 - если не брать разреженные матрицы и специализированные алгоритмы).


Это совсем не так!

Для плотных матриц метод Гаусса как раз является основным. Накопления ошибок нет при правильном выборе последовательности столбцов (или строк). Здесь итерационные методы почти не используются за редкими случаями (например когда матрица близка к ортонормированной).
Для разреженных матриц наоборот метод Гаусса - редкость. В основном итерационные (например сопряженные градиенты).
Последний раз редактировалось zykov 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 07 дек 2012, 04:59

Andrew58 писал(а):Source of the post
Немного несвоевременный и совсем детский вопрос. Почему нельзя прологарифмировать сложность задачи и переопределить классы после логарифмирования? Разве не удобнее будет? Полиномы превратятся в... экспоненты превратятся в ...

неудобно будет

идёт борьба за выч.сложность, полно алгоритмов, у которых уже не $$n$$, а $$\ln(n)$$
например, сортировка на бинарном дереве $$O(n\ln(n))$$
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Sonic86
Сообщений: 1774
Зарегистрирован: 03 мар 2011, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Sonic86 » 07 дек 2012, 06:07

Svetlana Fainshtein, пишите формулы ТеХом!

Внесу свою маленькую лепту: NP-задачи - это те, у которых решение проверяется за полиномиальное время.
И еще: автоматическое доказательство теорем - NP-полная задача.
Последний раз редактировалось Sonic86 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Swetlana
Сообщений: 2067
Зарегистрирован: 03 май 2012, 21:00

Что вы всегда хотели узнать, но боялись спросить

Сообщение Swetlana » 07 дек 2012, 06:24

Sonic86, а я, по-вашему, чем пишу? :shock
У coNP (дополнительных к NP) неизвестно, можно ли решение проверить за полиномиальное время, я это покажу как в Гэри-Джонсоне, перестановкой состояний "да" и "нет" в НДМТ, чуть позже
Последний раз редактировалось Swetlana 28 ноя 2019, 15:08, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 32 гостей