Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
11-20.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
316.93 Кб
Скачать

11. Понятие алгоритма. Основные задачи и направления современной теории алгоритмов.

Неформальное определение алгоритма:

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

Сегодня отсутствует одно исчерпывающе строгое определение понятия «алгоритм», наиболее удачные:

1. Колмогоров: Алгоритм — это всякая система вычислений, выполняемых по строго определенным правилам, которая после какого-либо числа шагов заведомо приводит к решению поставленной задачи.

2. Марков: Алгоритм — это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату.

Основные задачи:

  • Формализация понятия и исследования нормальных алгоритмических систем

  • Доказательство алгоритмической неразрешимости задачи

  • Формальное доказательство правильности и эквивалентности алгоритмов

  • Определение и исследование сложностных классов

  • Доказательство теоретических оценок сложности задач

  • Получение методов разработки эффективных алгоритмов

  • Асимптотический анализ сложности итерационных алгоритмов

  • Анализ рекурсивных алгоритмов

  • Получение явных функций трудоемкости

  • Исследование емкостной сложности алгоритмов

- разработка классификаций алгоритмов;

- разработка критериев сравнительной оценки ресурсной эффективности алгоритмов и методов их сравнительного анализа.

Требования к алгоритмам:

  1. Алгоритм должен содержать конечное количество элементарно выполнимых предписаний

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

  3. Алгоритм должен быть единым для всех допустимых исходных данных, т.е. удовлетворять требованию универсальности

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

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

- классическая теория алгоритмов (формулировка задач в терминах формальных языков, понятие задачи разрешения, описание сложностных классов задач, формулировка в 1965 году Эдмондсом проблемы Р = NP, открытие класса NP-полных задач и его исследование; введение новых моделей вычислений — алгебраического дерева вычислений (Бен-Op), машины с произвольным доступом к памяти, схем алгоритмов Янова, стандартных схем программ Котова и др.);

- теория асимптотического анализа алгоритмов (понятие сложности и трудоемкости алгоритма, критерии оценки алгоритмов, методы получения асимптотических оценок, в частности для рекурсивных алгоритмов, асимптотический анализ трудоемкости или времени выполнения, получение теоретических нижних оценок сложности задач), в развитие которой внесли существенный вклад Кнут, Ахо, Хопкрофт, Ульман, Карп, Мошков, Кудрявцев и др.;

- теория практического анализа вычислительных алгоритмов (получение явных функции трудоемкости, интервальный анализ функций, практически значимые критерии качества алгоритмов, методики выбора рациональных алгоритмов), основополагающей работой в этом направлении, очевидно, следует считать фундаментальный труд Д. Кнута «Искусство программирования для ЭВМ».

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

20 Понятие качества программного средства.

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

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

функциональность,

надежность,

легкость применения,

эффективность,

сопровождаемость,

мобильность.

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

Надежность (reliability) ПС  это его способность безотказно выполнять определенные функции при заданных условиях в течение заданного периода времени с достаточно большой вероятностью

Легкость применения - это характеристики ПС, которые позволяют минимизировать усилия пользователя по подготовке исходных данных, применению ПС и оценке полученных результатов, а также вызывать положительные эмоции определенного или подразумеваемого пользователя.

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

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

Мобильность - это способность ПС быть перенесенным из одной среды (окружения) в другую, в частности, с одной ЭВМ на другую.

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

15.Подход к решению задач недетерминированной полиномиальной сложности

Класс Р (полиномиальные задачи)

Akxk + ak-1xk-1 +…+a0x0

Задача называется полиномиальной, т. е. относится к классу Р, если существует константа k и алгоритм, решающий эту задачу за время O(nk), где п есть длина входа алгоритма в битах . Отметим, что класс задач Р определяется через существование полиномиального по времени алгоритма ее решения, при этом неявно предполагается худший случай по времени для всех различных входов длины n. Задачи класса Р - это, интуитивно, задачи, решаемые за реальное время. Отметим следующие преимущества задач из этого класса:

- для большинства реальных задач из класса Р константа k меньше 6;

- класс Р инвариантен по модели вычислений (для широкого класса моделей);

- класс Р обладает свойством естественной замкнутости (сумма или произведение полиномов есть полином).

Таким образом, задачи класса Р есть уточнение определения «практически разрешимой» задачи для входов больших размерностей.

Класс NP (полиномиально проверяемые задачи)

Понятие NP-полноты было введено независимо Куком (Stephen Cook, 1971) и Левиным (1973) и основывается на понятии сводимости одной задачи к другой. Сводимость задач может быть представлена следующим образом: если мы имеем задачу 1 и решающий эту задачу алгоритм, выдающий правильный ответ для всех конкретных проблем, а для задачи 2 алгоритм решения неизвестен, то если мы можем переформулировать (свести) задачу 2 в терминах задачи 1, то мы решаем задачу 2 с помощью алгоритма решения задачи 1.

Таким образом, если задача 1 задана множеством конкретных проблем DA1,а задача 2 - множеством DA2, и существует функция fs (алгоритм), сводящая конкретную постановку dA2 задачи 2 к конкретной постановке dA1 задачи 1, т.е. fs(dA2 € DA2) = dA1 e DA1 , то задача 2 сводима к задаче 1.

Если при этом временная сложность алгоритма fs есть 0(nk), т.е. алгоритм сведения принадлежит классу Р, то говорят, что задача 2 полиномиально сводится к задаче 1 ([2]).

В теории сложности вычислений принято говорить, что задача задается некоторым языком, тогда если задача 1 задана языком L1, а задача 2 - языком L2, то полиномиальная сводимость языков, задающих задачи, обозначается следующим образом: L2 <=p L1

Определение класса NPC (NP-complete) или класса NP-полных задач требует выполнения следующих двух условий: во-первых, задача должна принадлежать классу NP (L eNP), и, во-вторых, к ней полиномиально должны сводиться все задачи из класса NP (Lx <=р L, для каждого Lx e NP, что схематично представлено на рис. Д.1.2. Для класса NPC доказана следующая теорема:

Теорема Д.1.2. Если существует задача, принадлежащая классу NPC, для которой существует полиномиальный алгоритм решения, то класс Р совпадает с классом NP, т.е. P = NP ([2]).

Схема доказательства состоит в сведении с полиномиальной трудоемкостью любой задачи из класса NP к данной задаче из класса NPC и решении этой задачи за полиномиальное время (по условию теоремы).

В настоящее время доказано существование сотен NP-полных задач ([2, 11]), но ни для одной из них пока не удалось найти полиномиального алгоритма решения. Отметим, что для многих из них предложены приближенные полиномиальные алгоритмы ([2]). Сегодня ученые предполагают следующее соотношение классов, показанное на рис. Д.1.3,

а именно Р <> NP, то есть NP \ Р <> 0, и ни одна задача из класса NPC не может быть решена, по крайней мере, сегодня, с полиномиальной сложностью.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]