Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
40
Добавлен:
21.05.2015
Размер:
2.41 Mб
Скачать

Отладка и тестирование программы.

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

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

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

Анализ результатов. Уточнение модели.

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

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

Единого «истинного» определения понятия «алгоритм» нет.

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

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

Исполнитель в роли исполнителя может выступать как компьютер, так и человек. Исполнитель должен неукоснительно следовать предписаниям алгоритма.

Различные определения алгоритма в явной или неявной форме содержат следующий ряд общих требований:

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

  • Понятность — алгоритм для исполнителя должен включать только те команды, которые ему (исполнителю) доступны, которые входят в его систему команд.

  • Завершаемость (конечность) — при корректно заданных исходных данных алгоритм должен завершать работу и выдавать результат за конечное число шагов. С другой стороны, вероятностный алгоритм может и никогда не выдать результат, но вероятность этого равна 0.

  • Массовость — алгоритм должен быть применим к разным наборам исходных данных.

  • Результативность — завершение алгоритма определенными результатами.

Способы записи:

графический (блок-схемы)

ЯП (или псевдокод)

словами

Основные алгоритмические конструкции:

Следование

Ветвление

Цикл

Структурная теорема (Бема-Джакопини): любой алгоритм может быть представлен композицией основных алгоритмических конструкций (следование, ветвление, цикл).

Введенного на интуитивном уровне понятия алгоритма и опытным путем установленных свойств алгоритмов вполне достаточно для решения широкого круга математических задач. Достаточно такого подхода и при решении практических задач программирования компьютеров. Однако, в тех случаях, когда задача оказывается сложной и алгоритмическое решение задачи найти не удается, встает вопрос о ее алгоритмической разрешимости. При этом требуется понятие алгоритма формализовать, т.е. четко определить исполнителя алгоритмов, с помощью которого можно провести доказательство алгоритмической неразрешимости задачи. В первой половине XX века почти параллельно было разработаны несколько подходов к формализации алгоритмов — рекурсивные функции, абстрактные машины Тьюринга и Поста, λ-исчисление, нормальные алгорифмы (так это традиционно называется в математике) Маркова.

Норма́льный алгори́тм Ма́ркова — один из стандартизованных вариантов представления об алгоритме.

Описание

Нормальные алгоритмы являются вербальными, то есть предназначенными для применения к словам в различных алфавитах. Определение всякого нормального алгоритма состоит из двух частей: определения алфавита алгоритма (к словам в котором алгоритм будет применяться) и определения его схемы. Схемой нормального алгоритма называется конечный упорядоченный набор т. н. формул подстановки, каждая из которых может быть простой или заключительной. Простыми формулами подстановки называются слова вида , где L и D — два произвольных слова в алфавите алгоритма (называемые, соответственно, левой и правой частями формулы подстановки). Аналогично, заключительными формулами подстановки называются слова вида, где L и D — два произвольных слова в алфавите алгоритма. При этом предполагается, что вспомогательные буквыине принадлежат алфавиту алгоритма (в противном случае на исполняемую ими роль разделителя левой и правой частей следует избрать другие две буквы).

Машина Тьюринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингомв1936 годудля формализации понятияалгоритма.

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

Устройство машины Тьюринга

В состав машины Тьюринга входит бесконечная в обе стороны лента (возможны машины Тьюринга, которые имеют несколько бесконечных лент), разделённая на ячейки, и управляющее устройство, способное находиться в одном из множества состояний. Число возможных состояний управляющего устройства конечно и точно задано.

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

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

Машина Тьюринга называется детерминированной, если каждой комбинации состояния и ленточного символа в таблице соответствует не более одного правила. Если существует пара (ленточный символ -- состояние), для которой существует 2 и более команд, такая машина Тьюринга называется недетерминированной.

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

Нерешённые пробле́мы (или Открытые проблемы) — проблемы, которые рассматривались математиками, но до сих пор не решены. Часто принимают форму гипотез, которые предположительно верны, но нуждаются в доказательстве.

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

Гипотезы о простых числах

Сильная проблема Гольдбаха. Каждое чётное число, большее 2, можно представить в виде суммы двух простых чисел.

Слабая проблема Гольдбаха. Каждое нечётное число, большее 5, можно представить в виде суммы трёх простых чисел (доказана для всех достаточно больших нечётных чисел).

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

Гипотеза Лежандра(англ.). Для любого натурального n между n2 и (n + 1)2 найдется хотя бы одно простое число.

Гипотеза Брокарда(англ.). Для любого натурального n между (pn)2 и (pn+1)2 (где pn - это n-ое простое число) найдется хотя бы четыре простых числа.

Открытым является вопрос бесконечности количества простых чисел в каждой из следующих последовательностей[1]:

Соседние файлы в папке ГОСы