Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Все виды обработки данных могут быть разделены на следующие классы:         




1. Последовательную, использующую повторения                              2. Структурное распараллеливание с помощью сопрограмм                   3. Произвольную обработку с применением параллельных вычислений.

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

Рекурсия метод определения или вычисления функции, процедуры или решения задачи посредством той же функции, процедуры и т.п.

Итерация– это организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя.

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

Итерационные алгоритмы используют методы нахождения по приближенному значению величины следующего приближения (явлющемся более точным)

Итерационные алгоритмы используется для видов обработки, которые лучше определяются выражением типа «выполнить для всехх», а рекурсивные алгоритмы — для получения результирующих данных, для которых можно задать выражение типа «выполнить то же, что и в последний раз». Текущее действие определяется с помощью предыдущего ответа или предыдущих стадий вычислений. Особенностью итерации и рекурсии является их взаимозаменяемость. Так, рекурсивные процедуры могут быть переписаны в итерационном виде в языках, в которых рекурсия невозможна, а итерационные процедуры могут быть переписаны как рекурсивные в языках, в которых невозможна итерация.

Итерационная форма более предпочтительна, чем рекурсивная, для которой требуются дополнительные расходы памяти и времени

Особенности рекурсивной формы

· при каждом рекурсивном вызове содержимое всех регистров ЭВМ сохраняется, а при возврате — восстанавливается, как и при любом вызове подпрограммы;

· должны сохраняться все локальные переменные до момента возврата, так как они могут быть изменены вызываемой подпрограммой;

· в силу многократного обращения из подпрограммы к самой себе создается и сохраняется много копий регистров, переменных и точек возврата.

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

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

МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ

С учетом рассмотренных подходов, принципов и способов разработки алгоритмов для решения различных классов задач, в том числе сортировки, поиска в списке, вычисления биноминальных коэффициентов и других, используется достаточное количество эффективных методов, обеспечивающих получение эффективных алгоритмов решения этих задач. Это методы:

· «разделяй и властвуй»

· последовательных приближений

· наискорейшего спуска

· обратного прохода

· динамического программирования

· поиска с возвратом

· выделения подцелей

· моделирования

· «жадных» алгоритмов

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

Метод «разделяй и властвуй»

Решения задач аддитивного характера можно осуществлять путем их разделения на части и получить решение всей задачи путем решения ее частей. Для этого используется известный метод проектирования эффективных алгоритмов, который называется методом декомпозиции,илиметодом «разделяй и властвуй», методом разбиения. Метод предполагает декомпозицию (разбиение) задачи размера n на частные задачи, решение которых позволяет получить решение общей, исходной задачи. Такой метод может применяться в сортировке слиянием, в деревьях двоичного поиска и других и характеризуется легкостью разработки и достаточной эффективностью.

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

Примерами использования этого метода может быть решение задач:

· численного интегрирования;

· двойного бухгалтерского учета, когда итоги по столбцам вычисляются для различных категорий, включающих дебиты и кредиты, после чего результаты в нужных сочетаниях сравниваются;

· вычисления площади неправильного многоугольника путем разбиения его на треугольники и вычисления их площадей по отдельности с последующим суммированием для определения исходной площади многоугольника;

· сортировки слиянием, выполняющейся разделением n элементов списка на две группы, их отдельной сортировки и последующего слияния;

· сортировки Шелла, основанной на разбиении списка на n/2 подсписков, содержащих по два элемента каждый, их сортировки и на последующих циклах сортировки n/4 четырехэлементных, затем n/8 восьмиэлементных списков;

· поиск пути в лабиринте, при котором лабиринт разделяется на четыре части, через каждую из них отыскивается путь и конечные точки сравниваются между собой, а затем, объединяя в каждом из квадрантов сообщающиеся между собой входные и выходные точки, получают соответствующие пути для всего лабиринта;

· составления графика проведения теннисного турнира и др.










Последнее изменение этой страницы: 2018-06-01; просмотров: 180.

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