Помощь в написании студенческих работ
Антистрессовый сервис

Понятие об алгоритмах и сложности вычислений

РефератПомощь в написанииУзнать стоимостьмоей работы

Любой вычислительный алгоритм, А отображает исходные (или входные) данные х в выходные данные у, иначе говоря, Л реализует для некоторой функции f: X—>Y и для некоторого х е X вычисление у = /(х). Реализация алгоритма, А на входных данных х описывается характеристиками сложности: числом шагов алгоритма; числом оговоренных вычислительных операций, например числом умножений и сложений чисел… Читать ещё >

Понятие об алгоритмах и сложности вычислений (реферат, курсовая, диплом, контрольная)

Алгоритм относится к важнейшим понятиям как в математике в целом, так и в теории сложности вычислений. Вычислительный алгоритм (не строго) — это правило, данное на некотором языке и определяющее последовательность действий для решения поставленной задачи с использованием исходных данных. Алгоритм должен быть понятным для исполнителя, определенным (все действия должны трактоваться однозначно) и массовым, т. е. применимым к определенному множеству исходных данных. Важность алгоритмов проявляется в различных аспектах. При решении задач алгоритмы являются: формой изложения научных результатов, руководством к действию, средством экономии умственного труда, необходимой компонентой автоматизации, инструментом анализа и решения, элементами доказательной базы математики, средством описания сложных объектов и процессов в науке.

Любой вычислительный алгоритм А отображает исходные (или входные) данные х в выходные данные у, иначе говоря, Л реализует для некоторой функции f:X—>Y и для некоторого х е X вычисление у = /(х). Реализация алгоритма, А на входных данных х описывается характеристиками сложности: числом шагов алгоритма; числом оговоренных вычислительных операций, например числом умножений и сложений чисел некоторого поля;

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

Наиболее распространен подход к оценке сложности алгоритмов, основанный на установлении количественной зависимости характеристик сложности от размера п входных данных, п е N. Характеристики сложности изучаются как функции от п, соответствующие «худшему случаю» (максимуму по х) или среднему случаю, когда на множестве значений х определена некоторая вероятностная мера.

Пусть входные данные алгоритмов представляются словами в некотором алфавите. Алгоритм называется полиномиальным {имеющим полиномиальную сложность), если существует действительный полином р (Х) с положительными коэффициентами такой, что для любого натурального п время работы алгоритма на любом входном слове длины п не превосходит р (п). Класс задач называется полиномиальным, если любая задача из данного класса может быть решена полиномиальным алгоритмом. Заметим, что речь идет о бесконечных классах, так как п е N. Через Р обозначим класс всех полиномиальных задач. К Р относятся, например, задачи решения систем линейных уравнений, обращения матриц и др.

Для распознавания полиномиальности данного класса задач не обязательно находить полином р{Х). Теория сложности вычислений использует в ряде случаев технику математических доказательств, позволяющую установить полиномиальность одного класса задач с помощью сводимости к задачам другого класса, полиномиальность которых уже доказана. Вместе с тем для большинства практических задач не известно, входят ли они в класс Р. Часто такие задачи оказываются в другом классе более сложных задач, обозначаемом NP. К NP относятся, например, задачи распознавания в графе наличия клики заданного размера, гамильтонова цикла и др.

Сложность неполиномиальных задач обычно характеризуется экспоненциальными и субэкспоненциальными оценками, последние занимают промежуточное положение по сложности между полиномиальными и экспоненциальными оценками [4, 9J.

При анализе сложности вычислительной задачи важным является представление чисел. Числа 0,…, b — 1 называют цифрами по основанию Ь. Разложение числа пе N0no основанию {базе) b есть набор {dk_x,…, dx, d())h чисел из N0, где di е{0, b — 1}, i = 0, 1, …, k — 1, и п = {dk_ 1? …, d{, d0)h п = = dk_xbk~x + … + dxb + d0.

Если dk_x > 0, то число п называют k-разрядным b-ичным числом. Любое целое от Ьк~х до Ьк — 1 является-разрядным 6-ичным числом. Число разрядов k определяется для п выражением.

Понятие об алгоритмах и сложности вычислений.

При записи числа п в виде {dk_ifdx, d0)b скобки и индекс (…)/, обычно опускают в случае b = 10 или когда основание системы счисления ясно из контекста.

Рациональные числа также можно разлагать по любому основанию, т. е. представлять в виде (dk_1? …, dv d0> d_{1 d_2, …, d_i)h. При b > 10 принято использовать буквы некоторых алфавитов для обозначения цифр по основанию Ь. Например, при b — 16 используем буквы A—F латинского алфавита для записи цифр 10—15 соответственно.

При вычислениях используются различные системы счисления и переходы от одного основания к другому.

Пример 1.8.

  • а) умножить 160 на 199 в 7-ичной системе счисления. Определим: 160 = (316)7, 199 = (403)7. Умножение «в столбик» дает результат 161 554;
  • б) определить представления: (11 001 001)2 = 201; (BAD)26 = 679; (В, AD)26 = 1—.
  • 676

При вычислении дробных чисел сначала представляется целая часть. Затем дробная часть умножается на основание Ь. Целая часть результата дает d_v далее (умножая на Ь…) находим d_2 и т. д.;

в) выразить 106 в системах счисления, но основаниям 2, 7 и 26. Для разложения п но основанию Ь сначала получаем младший разряд как остаток от деления п на Ь. Потом частное от деления вновь делим на b и получаем следующий разряд и т. д. Результаты: Понятие об алгоритмах и сложности вычислений.

Иногда для записи чисел применяются смешанные системы счисления, использующие различные основания bk_v Ьк_2,Ь0. Например, если число п < < bk_xbk_2…bо, то его можно представить в виде п = (dk_vdk_2,…, d§)bk x bk_2 ^

это означает, что п = dk_xck_x + … + dxcx + d0, где dе {0,…, bt — 1}, ci+x = 60.Д, i = 0,…, k — 1.

При реализации алгоритма важно оценить трудоемкость выполнения его основных операций над числами. К таким операциям относятся, как правило, умножение и сложение чисел; деление и вычитание сводятся к ним. Приведем известные оценки для-разрядных двоичных чисел, которые чаще других чисел используются для представления данных в вычислительных системах. Элементарной операцией при оценке считаем сложение двух битов (слово «бит» возникло как сокращение от английского словосочетания «/лпагу digit»).

Суммирование-разрядных двоичных чисел. Эта операция требует сложения для каждого разряда двух битов и сложения получившейся суммы со знаком переноса из предыдущего разряда. Выражение «а имеет порядок 0(п)» означает, что при п —> °° величина а оценивается как сп, где с — константа. Тогда трудоемкость сложения, обозначаемая t (+k), имеет порядок O (k) или O (logAz) (здесь и далее основание логарифма полагается равным 2).

Умножение-разрядного двоичного числа на /-разрядное двоичное число, / < k. Умножение «в столбик» равносильно сложениям не более / копий-разрядного двоичного числа, где копии записаны с определенным сдвигом. Пренебрегая операциями сдвига как менее сложными, получаем, что для трудоемкости умножения, обозначаемой dxkj), верна оценка.

dxk, /) ~ (/ - l)?<+)(&). Следовательно, умножение двух-разрядных двоичных чисел (его трудоемкость обозначим ?<*)(?)) имеет порядок 0(к2) или 0(og2n). Заметим, что лучшая из известных оценок трудоемкости умножения (используется другой алгоритм умножения) имеет порядок 0(к • log# х х loglog&). Трудоемкость вычитания (деления) чисел по порядку величины та же, что и при сложении (при умножении).

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

Вместо «сложности вычисления» иногда используют как синоним термин «время вычисления», что некорректно при обсуждении сложности параллельных вычислений.

Показать весь текст
Заполнить форму текущей работой